Publishing 2019 R1 content
[platform/upstream/dldt.git] / inference-engine / include / ie_context.hpp
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 IE Context class
7  * @file ie_context.hpp
8  */
9 #pragma once
10
11 #include <details/caseless.hpp>
12 #include <ie_iextension.h>
13 #include <string>
14 #include <vector>
15 #include <map>
16
17 namespace InferenceEngine {
18
19 /**
20  * @brief This class implements object
21  */
22 class INFERENCE_ENGINE_API_CLASS(Context) {
23 public:
24     Context();
25
26     /**
27      * @brief Registers extension within the context
28      * @param ext Pointer to already loaded extension
29      */
30     void addExtension(const IShapeInferExtensionPtr& ext);
31
32     /**
33      * @brief Registers Shape Infer implementation within the Context
34      * @param type Layer type
35      * @param impl Shape Infer implementation
36      */
37     void addShapeInferImpl(const std::string& type, const IShapeInferImpl::Ptr& impl);
38
39     /**
40      * @brief Returns the shape infer implementation by layer type
41      * @param type Layer type
42      * @return Shape Infer implementation
43      */
44     IShapeInferImpl::Ptr getShapeInferImpl(const std::string& type);
45
46 private:
47     details::caseless_map<std::string, IShapeInferImpl::Ptr> shapeInferImpls;
48 };
49
50 }  // namespace InferenceEngine