#include "ie_api.h"
#include "ie_layers.h"
#include "ie_icnn_network.hpp"
+#include "cnn_network_impl.hpp"
+#include "cpp/ie_cnn_network.h"
#include "ie_locked_memory.hpp"
namespace InferenceEngine {
InferenceEngine::CNNLayerPtr currentLayer;
ICNNNetwork* network = nullptr;
+ void init(const ICNNNetwork* network) {
+ if (network == nullptr) THROW_IE_EXCEPTION << "ICNNNetwork object is nullptr";
+ // IE_ASSERT(dynamic_cast<const details::CNNNetworkImpl*>(network) != nullptr);
+ InputsDataMap inputs;
+ network->getInputsInfo(inputs);
+ if (!inputs.empty()) {
+ auto& nextLayers = getInputTo(inputs.begin()->second->getInputData());
+ if (!nextLayers.empty()) {
+ currentLayer = nextLayers.begin()->second;
+ nextLayersTovisit.push_back(currentLayer);
+ visited.insert(currentLayer.get());
+ }
+ }
+ }
+
public:
/**
* iterator trait definitions
* scope.
*/
explicit CNNNetworkIterator(const ICNNNetwork* network) {
- if (network == nullptr) THROW_IE_EXCEPTION << "ICNNNetwork object is nullptr";
- InputsDataMap inputs;
- network->getInputsInfo(inputs);
- if (!inputs.empty()) {
- auto& nextLayers = getInputTo(inputs.begin()->second->getInputData());
- if (!nextLayers.empty()) {
- currentLayer = nextLayers.begin()->second;
- nextLayersTovisit.push_back(currentLayer);
- visited.insert(currentLayer.get());
- }
- }
+ init(network);
+ }
+
+ explicit CNNNetworkIterator(const CNNNetwork & network) {
+ const auto & inetwork = static_cast<const InferenceEngine::ICNNNetwork&>(network);
+ init(&inetwork);
}
/**
FuncTestUtils::compareCNNNetworks(network, cnnNetwork, false);
IE_SUPPRESS_DEPRECATED_START
- auto & inetwork = static_cast<const ICNNNetwork&>(network);
- for (auto it = details::CNNNetworkIterator(&inetwork); it != details::CNNNetworkIterator(); it++) {
+ for (auto it = details::CNNNetworkIterator(network); it != details::CNNNetworkIterator(); it++) {
InferenceEngine::CNNLayerPtr layer = *it;
ASSERT_NE(nullptr, layer->getNode());
}
- auto & icnnnetwork = static_cast<const ICNNNetwork&>(cnnNetwork);
- for (auto it = details::CNNNetworkIterator(&icnnnetwork); it != details::CNNNetworkIterator(); it++) {
+ for (auto it = details::CNNNetworkIterator(cnnNetwork); it != details::CNNNetworkIterator(); it++) {
InferenceEngine::CNNLayerPtr layer = *it;
ASSERT_EQ(nullptr, layer->getNode());
}
IE_SUPPRESS_DEPRECATED_START
template <class T>
inline void compareLayerByLayer(const T& network, const T& refNetwork, bool sameNetVersions = true) {
- auto & inetwork = static_cast<const InferenceEngine::ICNNNetwork&>(network);
- auto iterator = InferenceEngine::details::CNNNetworkIterator(&inetwork);
- auto & irefNetwork = static_cast<const InferenceEngine::ICNNNetwork&>(refNetwork);
- auto refIterator = InferenceEngine::details::CNNNetworkIterator(&irefNetwork);
+ auto iterator = InferenceEngine::details::CNNNetworkIterator(network);
+ auto refIterator = InferenceEngine::details::CNNNetworkIterator(refNetwork);
auto end = InferenceEngine::details::CNNNetworkIterator();
if (network.layerCount() != refNetwork.layerCount())
THROW_IE_EXCEPTION << "CNNNetworks have different number of layers: " << network.layerCount() << " vs " << refNetwork.layerCount();
}
void updatePaddings(const CNNNetwork &network, conv_test_params& p) {
- auto & inetwork = (const ICNNNetwork &)network;
- details::CNNNetworkIterator i(&inetwork), end;
+ details::CNNNetworkIterator i(network), end;
auto found = std::find_if(i, end, [](const CNNLayer::Ptr& layer) {
return layer->type == "Convolution";
});
ConvolutionTestHelper::ConvolutionTestHelper(const CommonTestUtils::conv_common_params &_convParams) : LayerTestHelper("Convolution"), convParams(_convParams) {}
void ConvolutionTestHelper::updatePaddingValues(const CNNNetwork &network) {
- auto & inetwork = (const ICNNNetwork &)network;
- details::CNNNetworkIterator i(&inetwork), end;
+ details::CNNNetworkIterator i(network), end;
auto found = std::find_if(i, end, [this](const CNNLayer::Ptr &layer) {
return layer->type == type;
});
}
void DeformableConvolutionTestHelper::updatePaddingValues(const CNNNetwork &network) {
- auto & inetwork = (const ICNNNetwork &)network;
- details::CNNNetworkIterator i(&inetwork), end;
+ details::CNNNetworkIterator i(network), end;
auto found = std::find_if(i, end, [this](const CNNLayer::Ptr &layer) {
return layer->type == type;
});
}
void PoolingTestHelper::updatePaddingValues(const InferenceEngine::CNNNetwork &network) {
- auto & inetwork = (const ICNNNetwork &)network;
- details::CNNNetworkIterator i(&inetwork), end;
+ details::CNNNetworkIterator i(network), end;
auto found = std::find_if(i, end, [this](const CNNLayer::Ptr &layer) {
return layer->type == type;
});
}
void updatePaddings(const CNNNetwork &network, conv_test_params& p) {
- auto & inetwork = static_cast<const ICNNNetwork &>(network);
- details::CNNNetworkIterator i(&inetwork), end;
+ details::CNNNetworkIterator i(network), end;
auto found = std::find_if(i, end, [](const CNNLayer::Ptr& layer) {
return layer->type == "Convolution";
});
std::vector<InferenceEngine::CNNLayerPtr> tiBodies;
- const auto & inetwork = static_cast<const ICNNNetwork&>(net_original);
- for (auto layerIt = details::CNNNetworkIterator(&inetwork), end = details::CNNNetworkIterator();
+ for (auto layerIt = details::CNNNetworkIterator(net_original), end = details::CNNNetworkIterator();
layerIt != end; ++layerIt) {
auto layer = *layerIt;
if (layer->type == "TensorIterator") {
graph.Infer(srcs, outputBlobs);
- const auto & inetwork = static_cast<const ICNNNetwork&>(network);
- details::CNNNetworkIterator l(&inetwork), end;
+ details::CNNNetworkIterator l(network), end;
for ( ; l != end; ++l) {
(*l)->params["PrimitivesPriority"] = "cpu:ref,cpu:ref_any";
}
auto graphInfer = [](InferenceEngine::CNNNetwork network, InferenceEngine::BlobMap& inBlobs,
InferenceEngine::BlobMap& outBlobs, std::string primitivesPriority) {
- const auto & inetwork = static_cast<const InferenceEngine::ICNNNetwork&>(network);
- for (auto it = InferenceEngine::details::CNNNetworkIterator(&inetwork); !primitivesPriority.empty() &&
+ for (auto it = InferenceEngine::details::CNNNetworkIterator(network); !primitivesPriority.empty() &&
it != InferenceEngine::details::CNNNetworkIterator(); it++) {
(*it)->params["PrimitivesPriority"] = primitivesPriority;
}
auto graphInfer = [](InferenceEngine::CNNNetwork network, InferenceEngine::BlobMap& inBlobs,
InferenceEngine::BlobMap& outBlobs, std::string primitivesPriority) {
- const auto & inetwork = static_cast<const InferenceEngine::ICNNNetwork&>(network);
- for (auto it = InferenceEngine::details::CNNNetworkIterator(&inetwork); !primitivesPriority.empty() &&
+ for (auto it = InferenceEngine::details::CNNNetworkIterator(network); !primitivesPriority.empty() &&
it != InferenceEngine::details::CNNNetworkIterator(); it++) {
(*it)->params["PrimitivesPriority"] = primitivesPriority;
}
})));
std::vector<CNNLayerPtr> resultedOrder;
- const auto & inetwork = static_cast<const ICNNNetwork&>(wrap);
- details::CNNNetworkIterator l(&inetwork), end;
+ details::CNNNetworkIterator l(wrap), end;
for ( ; l != end; ++l) {
resultedOrder.push_back(*l);
}
})));
std::vector<CNNLayerPtr> resultedOrder;
- const auto & inetwork = static_cast<const ICNNNetwork&>(wrap);
- details::CNNNetworkIterator l(&inetwork), end;
+ details::CNNNetworkIterator l(wrap), end;
for (; l != end; ++l) {
resultedOrder.push_back(*l);
}
prepareInputs(maps);
})));
- const auto & inetwork = static_cast<const ICNNNetwork&>(wrap);
- details::CNNNetworkIterator i(&inetwork);
+ details::CNNNetworkIterator i(wrap);
auto i2 = i;
i2++;
prepareInputs(maps);
})));
- const auto & inetwork = static_cast<const ICNNNetwork&>(wrap);
- details::CNNNetworkIterator beg(&inetwork), end;
+ details::CNNNetworkIterator beg(wrap), end;
ASSERT_EQ(beg, end);
}