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
Definition: ie_argmax_layer.hpp:11