IVGCVSW-3687 Add INetworkProperties to LoadNetwork

 * Allows users to specify if Import/Export should be used

Signed-off-by: David Monahan <david.monahan@arm.com>
Change-Id: I64da26a6acbeb91ef72d31b6ccc01bb1447f624d
diff --git a/include/armnn/IRuntime.hpp b/include/armnn/IRuntime.hpp
index 41e1c47..68965cf 100644
--- a/include/armnn/IRuntime.hpp
+++ b/include/armnn/IRuntime.hpp
@@ -23,6 +23,18 @@
 class IRuntime;
 using IRuntimePtr = std::unique_ptr<IRuntime, void(*)(IRuntime* runtime)>;
 
+struct INetworkProperties
+{
+    INetworkProperties(bool importEnabled = false, bool exportEnabled = false)
+        : m_ImportEnabled(importEnabled),
+          m_ExportEnabled(exportEnabled) {}
+
+    const bool m_ImportEnabled;
+    const bool m_ExportEnabled;
+
+    virtual ~INetworkProperties() {}
+};
+
 class IRuntime
 {
 public:
@@ -82,7 +94,12 @@
     /// @return armnn::Status
     virtual Status LoadNetwork(NetworkId& networkIdOut,
                                IOptimizedNetworkPtr network,
-                               std::string & errorMessage) = 0;
+                               std::string& errorMessage) = 0;
+
+    virtual Status LoadNetwork(NetworkId& networkIdOut,
+                               IOptimizedNetworkPtr network,
+                               std::string& errorMessage,
+                               const INetworkProperties& networkProperties) = 0;
 
     virtual TensorInfo GetInputTensorInfo(NetworkId networkId, LayerBindingId layerId) const = 0;
     virtual TensorInfo GetOutputTensorInfo(NetworkId networkId, LayerBindingId layerId) const = 0;
@@ -163,4 +180,4 @@
     virtual ~IGpuAccTunedParameters() {};
 };
 
-}
+} // namespace armnn