ie_plugin_cpp.hpp
Go to the documentation of this file.
1 // Copyright (C) 2018-2019 Intel Corporation
2 // SPDX-License-Identifier: Apache-2.0
3 //
4 
5 /**
6  * @brief This is a header file for the Inference Engine plugin C++ API
7  * @file ie_plugin_cpp.hpp
8  */
9 #pragma once
10 
11 #include <map>
12 #include <string>
13 #include <memory>
14 
15 #include "ie_plugin.hpp"
18 #include "ie_plugin_ptr.hpp"
19 #include "ie_cnn_network.h"
20 
21 
22 namespace InferenceEngine {
23 
24 /**
25  * @brief This class is a C++ API wrapper for IInferencePlugin.
26  * It can throw exceptions safely for the application, where it is properly handled.
27  */
30 
31 public:
32  /** @brief A default constructor */
33  InferencePlugin() = default;
34 
35  /**
36  * @brief Constructs a plugin instance from the given pointer.
37  */
38  explicit InferencePlugin(const InferenceEnginePluginPtr &pointer) : actual(pointer) {}
39 
40  /**
41  * @brief Wraps original method
42  * IInferencePlugin::GetVersion
43  */
44  const Version *GetVersion() {
45  const Version *versionInfo = nullptr;
46  actual->GetVersion(versionInfo);
47  return versionInfo;
48  }
49 
50  /**
51  * @brief Wraps original method
52  * IInferencePlugin::LoadNetwork
53  */
54  void LoadNetwork(ICNNNetwork &network) {
55  CALL_STATUS_FNC(LoadNetwork, network);
56  }
57 
58  /**
59  * @brief Wraps original method
60  * IInferencePlugin::LoadNetwork(IExecutableNetwork::Ptr&, ICNNNetwork&, const std::map<std::string, std::string> &, ResponseDesc*).
61  */
62  ExecutableNetwork LoadNetwork(ICNNNetwork &network, const std::map<std::string, std::string> &config) {
64  CALL_STATUS_FNC(LoadNetwork, ret, network, config);
65  return ExecutableNetwork(ret);
66  }
67 
68  /**
69  * @brief Wraps original method
70  * IInferencePlugin::LoadNetwork(IExecutableNetwork::Ptr&, ICNNNetwork&, const std::map<std::string, std::string> &, ResponseDesc*).
71  */
72  ExecutableNetwork LoadNetwork(CNNNetwork network, const std::map<std::string, std::string> &config) {
74  CALL_STATUS_FNC(LoadNetwork, ret, network, config);
75  if (ret.get() == nullptr) THROW_IE_EXCEPTION << "Internal error: pointer to executable network is null";
76  return ExecutableNetwork(ret);
77  }
78 
79  /**
80  * @deprecated Loads IExecutableNetwork to create IInferRequest.
81  * @brief Wraps original method
82  * IInferencePlugin::Infer(const BlobMap&, BlobMap&, ResponseDesc *resp)
83  */
84  void Infer(const BlobMap &input, BlobMap &result) {
85  CALL_STATUS_FNC(Infer, input, result);
86  }
87 
88  /**
89  * @brief Wraps original method
90  * IInferencePlugin::GetPerformanceCounts
91  */
92  std::map<std::string, InferenceEngineProfileInfo> GetPerformanceCounts() const {
93  std::map<std::string, InferenceEngineProfileInfo> perfMap;
94  CALL_STATUS_FNC(GetPerformanceCounts, perfMap);
95  return perfMap;
96  }
97 
98  /**
99  * @brief Wraps original method
100  * IInferencePlugin::AddExtension
101  */
102  void AddExtension(InferenceEngine::IExtensionPtr extension) {
103  CALL_STATUS_FNC(AddExtension, extension);
104  }
105 
106  /**
107  * @brief Wraps original method
108  * IInferencePlugin::SetConfig
109  */
110  void SetConfig(const std::map<std::string, std::string> &config) {
111  CALL_STATUS_FNC(SetConfig, config);
112  }
113 
114  /**
115  * @brief Wraps original method
116  * IInferencePlugin::ImportNetwork
117  */
118  ExecutableNetwork ImportNetwork(const std::string &modelFileName, const std::map<std::string, std::string> &config) {
120  CALL_STATUS_FNC(ImportNetwork, ret, modelFileName, config);
121  return ExecutableNetwork(ret);
122  }
123 
124  /**
125  * @depricated Use the version with config parameter
126  * @brief Wraps original method
127  * IInferencePlugin::QueryNetwork
128  */
129  void QueryNetwork(const ICNNNetwork &network, QueryNetworkResult &res) const {
130  actual->QueryNetwork(network, res);
131  if (res.rc != OK) THROW_IE_EXCEPTION << res.resp.msg;
132  }
133 
134  /**
135  * @brief Wraps original method
136  * IInferencePlugin::QueryNetwork
137  */
138  void QueryNetwork(const ICNNNetwork &network, const std::map<std::string, std::string> &config, QueryNetworkResult &res) const {
139  actual->QueryNetwork(network, config, res);
140  if (res.rc != OK) THROW_IE_EXCEPTION << res.resp.msg;
141  }
142 
143  /**
144  * @brief Returns wrapped object
145  */
147  return actual;
148  }
149 
150  /**
151  * @return wrapped Hetero object if underlined object is HeteroPlugin instance, nullptr otherwise
152  */
154  return actual;
155  }
156 
157  /**
158  * @brief Shared pointer on InferencePlugin object
159  */
160  using Ptr = std::shared_ptr<InferencePlugin>;
161 };
162 } // namespace InferenceEngine
#define THROW_IE_EXCEPTION
A macro used to throw the exception with a notable description.
Definition: ie_exception.hpp:22
InferenceEngine::details::SOPointer< IInferencePlugin > InferenceEnginePluginPtr
A C++ helper to work with objects created by the plugin. Implements different interfaces.
Definition: ie_plugin_ptr.hpp:50
A header file that provides wrapper classes for IExecutableNetwork.
A header file that provides wrapper for ICNNNetwork object.
ExecutableNetwork LoadNetwork(CNNNetwork network, const std::map< std::string, std::string > &config)
Wraps original method IInferencePlugin::LoadNetwork(IExecutableNetwork::Ptr&, ICNNNetwork&, const std::map<std::string, std::string> &, ResponseDesc*).
Definition: ie_plugin_cpp.hpp:72
Definition: ie_argmax_layer.hpp:11
Represents version information that describes plugins and the inference engine runtime library...
Definition: ie_version.hpp:20
This class is a C++ API wrapper for IInferencePlugin. It can throw exceptions safely for the applicat...
Definition: ie_plugin_cpp.hpp:28
A header file for Main Inference Engine API.
A header file that provides macros to handle no exception methods.
InferencePlugin()=default
A default constructor.
InferenceEngine::details::SOPointer< IHeteroInferencePlugin > HeteroPluginPtr
Definition: ie_plugin_ptr.hpp:53
A header file contains a wrapper class for handling plugin instantiation and releasing resources...
void LoadNetwork(ICNNNetwork &network)
Wraps original method IInferencePlugin::LoadNetwork.
Definition: ie_plugin_cpp.hpp:54
void QueryNetwork(const ICNNNetwork &network, QueryNetworkResult &res) const
Wraps original method IInferencePlugin::QueryNetwork.
Definition: ie_plugin_cpp.hpp:129
std::map< std::string, InferenceEngineProfileInfo > GetPerformanceCounts() const
Wraps original method IInferencePlugin::GetPerformanceCounts.
Definition: ie_plugin_cpp.hpp:92
void AddExtension(InferenceEngine::IExtensionPtr extension)
Wraps original method IInferencePlugin::AddExtension.
Definition: ie_plugin_cpp.hpp:102
void Infer(const BlobMap &input, BlobMap &result)
Wraps original method IInferencePlugin::Infer(const BlobMap&, BlobMap&, ResponseDesc *resp) ...
Definition: ie_plugin_cpp.hpp:84
This is the main interface to describe the NN topology.
Definition: ie_icnn_network.hpp:35
wrapper over IExecutableNetwork
Definition: ie_executable_network.hpp:27
std::shared_ptr< InferencePlugin > Ptr
Shared pointer on InferencePlugin object.
Definition: ie_plugin_cpp.hpp:160
This class contains all the information about the Neural Network and the related binary information...
Definition: ie_cnn_network.h:29
std::map< std::string, Blob::Ptr > BlobMap
This is a convenient type for working with a map containing pairs(string, pointer to a Blob instance)...
Definition: ie_blob.h:259
ExecutableNetwork LoadNetwork(ICNNNetwork &network, const std::map< std::string, std::string > &config)
Wraps original method IInferencePlugin::LoadNetwork(IExecutableNetwork::Ptr&, ICNNNetwork&, const std::map<std::string, std::string> &, ResponseDesc*).
Definition: ie_plugin_cpp.hpp:62
const Version * GetVersion()
Wraps original method IInferencePlugin::GetVersion.
Definition: ie_plugin_cpp.hpp:44
void SetConfig(const std::map< std::string, std::string > &config)
Wraps original method IInferencePlugin::SetConfig.
Definition: ie_plugin_cpp.hpp:110
char msg[256]
A character buffer that holds the detailed information for an error.
Definition: ie_common.h:202
void QueryNetwork(const ICNNNetwork &network, const std::map< std::string, std::string > &config, QueryNetworkResult &res) const
Wraps original method IInferencePlugin::QueryNetwork.
Definition: ie_plugin_cpp.hpp:138
std::shared_ptr< IExecutableNetwork > Ptr
A smart pointer to the current IExecutableNetwork object.
Definition: ie_iexecutable_network.hpp:37
Responce structure encapsulating information about supported layer.
Definition: ie_plugin.hpp:46
ExecutableNetwork ImportNetwork(const std::string &modelFileName, const std::map< std::string, std::string > &config)
Wraps original method IInferencePlugin::ImportNetwork.
Definition: ie_plugin_cpp.hpp:118
InferencePlugin(const InferenceEnginePluginPtr &pointer)
Constructs a plugin instance from the given pointer.
Definition: ie_plugin_cpp.hpp:38