Publishing 2019 R1 content
[platform/upstream/dldt.git] / inference-engine / include / ie_plugin_ptr.hpp
1 // Copyright (C) 2018-2019 Intel Corporation
2 // SPDX-License-Identifier: Apache-2.0
3 //
4
5 /**
6  * @brief A header file contains a wrapper class for handling plugin instantiation and releasing resources
7  * @file ie_plugin_ptr.hpp
8  */
9 #pragma once
10
11 #include "details/ie_so_pointer.hpp"
12 #include "ie_plugin.hpp"
13 #include "ie_ihetero_plugin.hpp"
14 #include "ie_extension.h"
15 #include <string>
16
17 namespace InferenceEngine {
18 namespace details {
19
20 /**
21  * @brief This class defines the name of the fabric for creating an IInferencePlugin object in DLL
22  */
23 template<>
24 class SOCreatorTrait<IInferencePlugin> {
25 public:
26     /**
27      * @brief A name of the fabric for creating IInferencePlugin object in DLL
28      */
29     static constexpr auto name = "CreatePluginEngine";
30 };
31
32 /**
33  * @brief This class defines the name of the fabric for creating an IHeteroInferencePlugin object in DLL
34  */
35 template<>
36 class SOCreatorTrait<IHeteroInferencePlugin> {
37 public:
38     /**
39      * @brief A name of the fabric for creating IInferencePlugin object in DLL
40      */
41     static constexpr auto name = "CreatePluginEngine";
42 };
43
44 }  // namespace details
45
46 /**
47  * @brief A C++ helper to work with objects created by the plugin.
48  * Implements different interfaces.
49  */
50 using InferenceEnginePluginPtr = InferenceEngine::details::SOPointer<IInferencePlugin>;
51
52 /** @copybrief InferenceEnginePluginPtr */
53 using HeteroPluginPtr = InferenceEngine::details::SOPointer<IHeteroInferencePlugin>;
54
55 }  // namespace InferenceEngine