IVGCVSW-5636 'Implement NNAPI caching functions'

* Get number of inputs and outputs from optimized network.
* Get number of cached files if backend supports caching.

Signed-off-by: Sadik Armagan <sadik.armagan@arm.com>
Change-Id: Ie02ac123bb7df9b0593a2fe46b5bb564a5994780
diff --git a/src/armnn/BackendHelper.cpp b/src/armnn/BackendHelper.cpp
index cc792a0..c3cebdd 100644
--- a/src/armnn/BackendHelper.cpp
+++ b/src/armnn/BackendHelper.cpp
@@ -126,6 +126,18 @@
     return hasCapability;
 }
 
+unsigned int GetNumberOfCacheFiles(const armnn::BackendId& backend)
+{
+    auto const& backendRegistry = armnn::BackendRegistryInstance();
+    if (backendRegistry.IsBackendRegistered(backend))
+    {
+        auto factoryFunc = backendRegistry.GetFactory(backend);
+        auto backendObject = factoryFunc();
+        return backendObject->GetNumberOfCacheFiles();
+    }
+    return 0;
+}
+
 bool LayerSupportHandle::IsBackendRegistered() const
 {
     if (m_LayerSupport)
diff --git a/src/armnn/Network.cpp b/src/armnn/Network.cpp
index b516d51..e00dbfc 100644
--- a/src/armnn/Network.cpp
+++ b/src/armnn/Network.cpp
@@ -524,6 +524,16 @@
     return pOptimizedNetworkImpl->GetGuid();
 }
 
+size_t IOptimizedNetwork::GetNumInputs() const
+{
+    return pOptimizedNetworkImpl->GetNumInputs();
+}
+
+size_t IOptimizedNetwork::GetNumOutputs() const
+{
+    return pOptimizedNetworkImpl->GetNumOutputs();
+}
+
 Status OptimizedNetworkImpl::PrintGraph()
 {
     m_Graph->Print();
@@ -535,6 +545,16 @@
     return m_Graph->SerializeToDot(stream);
 }
 
+size_t OptimizedNetworkImpl::GetNumInputs() const
+{
+    return m_Graph->GetNumInputs();
+}
+
+size_t OptimizedNetworkImpl::GetNumOutputs() const
+{
+    return m_Graph->GetNumOutputs();
+}
+
 void ReportError(const std::string& errorMessage,
                  Optional<std::vector<std::string>&> errorMessages)
 {
diff --git a/src/armnn/OptimizedNetworkImpl.hpp b/src/armnn/OptimizedNetworkImpl.hpp
index d42cff7..112d585 100644
--- a/src/armnn/OptimizedNetworkImpl.hpp
+++ b/src/armnn/OptimizedNetworkImpl.hpp
@@ -21,6 +21,9 @@
 
     virtual profiling::ProfilingGuid GetGuid() const { return m_Guid; };
 
+    virtual size_t GetNumInputs() const;
+    virtual size_t GetNumOutputs() const;
+
     Graph& GetGraph() { return *m_Graph; }
     ModelOptions& GetModelOptions() { return m_ModelOptions; }