Add a section of how to link IE with CMake project (#99)
[platform/upstream/dldt.git] / inference-engine / include / builders / ie_layer_decorator.hpp
1 // Copyright (C) 2018-2019 Intel Corporation
2 // SPDX-License-Identifier: Apache-2.0
3 //
4
5 #pragma once
6
7 #include <builders/ie_layer_builder.hpp>
8 #include <string>
9 #include <vector>
10
11 namespace InferenceEngine {
12 namespace Builder {
13
14 /**
15  * @brief This class defines the basic functional for layer builders
16  */
17 class INFERENCE_ENGINE_API_CLASS(LayerDecorator) {
18 public:
19     /**
20      * @brief The constructor creates layer builders with layer type and layer name
21      * @param type Layer type
22      * @param name Layer name
23      */
24     LayerDecorator(const std::string& type, const std::string& name);
25     /**
26      * @brief The constructor creates layer builders from reference to generic layer builder
27      * @param layer pointer to generic layer builder
28      */
29     explicit LayerDecorator(const Layer::Ptr& layer);
30     /**
31      * @brief The constructor creates layer builders from reference to generic layer builder
32      * @param layer constant pointer to generic layer builder
33      */
34     explicit LayerDecorator(const Layer::CPtr& layer);
35     /**
36      * @brief The copy constructor
37      * @param rval Source builder
38      */
39     LayerDecorator(const LayerDecorator& rval);
40
41     /**
42      * @brief Copy operator for LayerDecorator
43      * @param rval
44      * @return Layer builder
45      */
46     LayerDecorator& operator=(const LayerDecorator& rval);
47
48     /**
49      * @brief Virtual destructor
50      */
51     virtual ~LayerDecorator() = default;
52
53     /**
54      * @brief The operator creates generic builder
55      * @return Generic builder
56      */
57     virtual operator Layer() const;
58
59     /**
60      * @brief The operator creates generic builder
61      * @return Pointer to generic builder
62      */
63     virtual operator Layer::Ptr();
64
65     /**
66      * @brief The operator creates generic builder
67      * @return Constant pointer to generic builder
68      */
69     virtual operator Layer::CPtr() const;
70
71     /**
72      * @brief Returns layer type
73      * @return Layer type
74      */
75     const std::string& getType() const;
76     /**
77      * @brief Returns layer name
78      * @return Layer name
79      */
80     const std::string& getName() const;
81
82 protected:
83     Layer::Ptr& getLayer();
84     const Layer::CPtr getLayer() const;
85     void checkType(const std::string& type) const;
86
87     Layer::CPtr cLayer;
88
89 private:
90     Layer::Ptr layer;
91 };
92
93 }  // namespace Builder
94
95 }  // namespace InferenceEngine