1 // Copyright (C) 2018-2019 Intel Corporation
2 // SPDX-License-Identifier: Apache-2.0
5 #include <builders/ie_layer_builder.hpp>
6 #include <details/caseless.hpp>
14 using namespace InferenceEngine;
16 Builder::Layer::Layer(const std::string& type, const std::string& name):
17 name(name), type(type), id((std::numeric_limits<idx_t>::max)()) {}
19 Builder::Layer::Layer(const ILayer::CPtr& layer) {
21 name = layer->getName();
22 type = layer->getType();
23 inPorts = layer->getInputPorts();
24 outPorts = layer->getOutputPorts();
25 params = layer->getParameters();
28 Builder::Layer::Layer(idx_t id, const Builder::Layer& layer): Layer(layer) {
32 idx_t Builder::Layer::getId() const noexcept {
36 const std::string& Builder::Layer::getType() const noexcept {
39 Builder::Layer& Builder::Layer::setType(const std::string& type) {
44 const std::string& Builder::Layer::getName() const noexcept {
47 Builder::Layer& Builder::Layer::setName(const std::string& name) {
52 const std::map<std::string, Parameter>& Builder::Layer::getParameters() const noexcept {
55 std::map<std::string, Parameter>& Builder::Layer::getParameters() {
58 Builder::Layer& Builder::Layer::setParameters(const std::map<std::string, Parameter>& params) {
59 getParameters() = params;
63 std::vector<Port>& Builder::Layer::getInputPorts() {
66 const std::vector<Port>& Builder::Layer::getInputPorts() const noexcept {
69 Builder::Layer& Builder::Layer::setInputPorts(const std::vector<Port> &ports) {
70 getInputPorts() = ports;
74 std::vector<Port>& Builder::Layer::getOutputPorts() {
77 const std::vector<Port>& Builder::Layer::getOutputPorts() const noexcept {
80 Builder::Layer& Builder::Layer::setOutputPorts(const std::vector<Port> &ports) {
81 getOutputPorts() = ports;
85 const ILayer::CPtr Builder::Layer::build() const {
87 return std::static_pointer_cast<const ILayer>(shared_from_this());
90 void Builder::Layer::addValidator(const std::string &type, const std::function<void(const Layer::CPtr&, bool)>& validator) {
91 auto holder = getValidatorsHolder();
92 if (holder->validators.find(type) == holder->validators.end())
93 holder->validators[type] = validator;
96 void Builder::Layer::validate(bool partial) const {
97 if (getValidatorsHolder()->validators.find(type) != getValidatorsHolder()->validators.end())
98 getValidatorsHolder()->validators[type](shared_from_this(), partial);
101 std::shared_ptr<Builder::ValidatorsHolder> Builder::Layer::getValidatorsHolder() {
102 static std::shared_ptr<ValidatorsHolder> localHolder;
103 if (localHolder == nullptr) {
104 localHolder = std::make_shared<ValidatorsHolder>();