IVGCVSW-5592 Implement Pimpl Idiom for Caffe and Onnx Parsers

Signed-off-by: Kevin May <kevin.may@arm.com>
Change-Id: I760dc4f33c0f87113cda2fa924da70f2e8c19025
diff --git a/include/armnnOnnxParser/IOnnxParser.hpp b/include/armnnOnnxParser/IOnnxParser.hpp
index d6b9399..f9d6927 100644
--- a/include/armnnOnnxParser/IOnnxParser.hpp
+++ b/include/armnnOnnxParser/IOnnxParser.hpp
@@ -16,6 +16,7 @@
 
 using BindingPointInfo = armnn::BindingPointInfo;
 
+class OnnxParserImpl;
 class IOnnxParser;
 using IOnnxParserPtr = std::unique_ptr<IOnnxParser, void(*)(IOnnxParser* parser)>;
 
@@ -27,22 +28,25 @@
     static void Destroy(IOnnxParser* parser);
 
     /// Create the network from a protobuf binary file on disk
-    virtual armnn::INetworkPtr CreateNetworkFromBinaryFile(const char* graphFile) = 0;
+    armnn::INetworkPtr CreateNetworkFromBinaryFile(const char* graphFile);
 
     /// Create the network from a protobuf text file on disk
-    virtual armnn::INetworkPtr CreateNetworkFromTextFile(const char* graphFile) = 0;
+    armnn::INetworkPtr CreateNetworkFromTextFile(const char* graphFile);
 
     /// Create the network directly from protobuf text in a string. Useful for debugging/testing
-    virtual armnn::INetworkPtr CreateNetworkFromString(const std::string& protoText) = 0;
+    armnn::INetworkPtr CreateNetworkFromString(const std::string& protoText);
 
     /// Retrieve binding info (layer id and tensor info) for the network input identified by the given layer name
-    virtual BindingPointInfo GetNetworkInputBindingInfo(const std::string& name) const = 0;
+    BindingPointInfo GetNetworkInputBindingInfo(const std::string& name) const;
 
     /// Retrieve binding info (layer id and tensor info) for the network output identified by the given layer name
-    virtual BindingPointInfo GetNetworkOutputBindingInfo(const std::string& name) const = 0;
+    BindingPointInfo GetNetworkOutputBindingInfo(const std::string& name) const;
 
-  protected:
-      virtual ~IOnnxParser() {};
+private:
+    IOnnxParser();
+    ~IOnnxParser();
+
+    std::unique_ptr<OnnxParserImpl> pOnnxParserImpl;
   };
 
   }