67b6b0710722cb65822b1900214018089189b4d1
[platform/upstream/dldt.git] / inference-engine / src / inference_engine / ie_icore.hpp
1 // Copyright (C) 2018-2019 Intel Corporation
2 // SPDX-License-Identifier: Apache-2.0
3 //
4
5 /**
6  * @brief A header file for ICore interface
7  * @file ie_icore.hpp
8  */
9 #pragma once
10
11 #include <memory>
12 #include <string>
13 #include "ie_plugin_ptr.hpp"
14 #include "cpp_interfaces/ie_itask_executor.hpp"
15
16 namespace InferenceEngine {
17
18 class ITaskExecutor;
19
20 /**
21  * @brief Minimal ICore interface to allow plugin to get information from Core Inference Engine class.
22  */
23 class ICore {
24 public:
25     /**
26      * @brief Returns global to Inference Engine class task executor
27      * @return Reference to task executor
28      */
29     virtual std::shared_ptr<ITaskExecutor> GetTaskExecutor() const = 0;
30
31     /**
32      * @brief Returns reference to plugin by a device name
33      * @param deviceName - a name of device
34      * @return Reference to plugin
35      */
36     virtual InferenceEnginePluginPtr GetPluginByName(const std::string & deviceName) const = 0;
37
38     /**
39      * @brief Default virtual destructor
40      */
41     virtual ~ICore() = default;
42 };
43
44 }  // namespace InferenceEngine