diff options
Diffstat (limited to 'include/armnn/StrategyBase.hpp')
-rw-r--r-- | include/armnn/StrategyBase.hpp | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/include/armnn/StrategyBase.hpp b/include/armnn/StrategyBase.hpp new file mode 100644 index 0000000000..78f393f44f --- /dev/null +++ b/include/armnn/StrategyBase.hpp @@ -0,0 +1,55 @@ +// +// Copyright © 2021 Arm Ltd and Contributors. All rights reserved. +// SPDX-License-Identifier: MIT +// +#pragma once + + +#include <armnn/INetwork.hpp> +#include <armnn/IStrategy.hpp> +#include <armnn/utility/IgnoreUnused.hpp> + +namespace armnn +{ + +struct ThrowingStrategy +{ + void Apply(const std::string& errorMessage = "") { throw UnimplementedException(errorMessage); }; +}; + +struct NoThrowStrategy +{ + void Apply(const std::string&) {}; +}; + +/// Strategy base class with empty implementations. +template <typename DefaultStrategy> +class StrategyBase : public IStrategy +{ +protected: + virtual ~StrategyBase() {}; + +public: + virtual void ExecuteStrategy(const armnn::IConnectableLayer* layer, + const armnn::BaseDescriptor& descriptor, + const std::vector<armnn::ConstTensor>& constants, + const char* name, + const armnn::LayerBindingId id = 0) override + { + armnn::IgnoreUnused(descriptor, constants, id, name); + switch (layer->GetType()) + { + default: + { + m_DefaultStrategy.Apply(GetLayerTypeAsCString(layer->GetType())); + } + } + } + +protected: + DefaultStrategy m_DefaultStrategy; + +}; + + +} // namespace armnn |