blob: 6fd9a66c763b4f779b571b2617fc195ee0d741cc [file] [log] [blame]
//
// Copyright © 2017 Arm Ltd. All rights reserved.
// SPDX-License-Identifier: MIT
//
#pragma once
#include <armnn/ILayerVisitor.hpp>
namespace armnn
{
struct VisitorThrowingPolicy
{
static void Apply(const std::string& errorMessage = "") { throw UnimplementedException(errorMessage); }
};
struct VisitorNoThrowPolicy
{
static void Apply(const std::string&) {}
};
// Visitor base class with empty implementations.
template<typename DefaultPolicy>
class LayerVisitorBase : public ILayerVisitor
{
protected:
LayerVisitorBase() {}
virtual ~LayerVisitorBase() {}
public:
void VisitAbsLayer(const IConnectableLayer*,
const char*) override { DefaultPolicy::Apply(__func__); }
void VisitActivationLayer(const IConnectableLayer*,
const ActivationDescriptor&,
const char*) override { DefaultPolicy::Apply(__func__); }
void VisitAdditionLayer(const IConnectableLayer*,
const char*) override { DefaultPolicy::Apply(__func__); }
void VisitArgMinMaxLayer(const IConnectableLayer*,
const ArgMinMaxDescriptor&,
const char*) override { DefaultPolicy::Apply(__func__); }
void VisitBatchNormalizationLayer(const IConnectableLayer*,
const BatchNormalizationDescriptor&,
const ConstTensor&,
const ConstTensor&,
const ConstTensor&,
const ConstTensor&,
const char*) override { DefaultPolicy::Apply(__func__); }
void VisitBatchToSpaceNdLayer(const IConnectableLayer*,
const BatchToSpaceNdDescriptor&,
const char*) override { DefaultPolicy::Apply(__func__); }
void VisitComparisonLayer(const IConnectableLayer*,
const ComparisonDescriptor&,
const char*) override { DefaultPolicy::Apply(__func__); }
void VisitConcatLayer(const IConnectableLayer*,
const ConcatDescriptor&,
const char*) override { DefaultPolicy::Apply(__func__); }
void VisitConstantLayer(const IConnectableLayer*,
const ConstTensor&,
const char*) override { DefaultPolicy::Apply(__func__); }
void VisitConvolution2dLayer(const IConnectableLayer*,
const Convolution2dDescriptor&,
const ConstTensor&,
const Optional<ConstTensor>&,
const char*) override { DefaultPolicy::Apply(__func__); }
void VisitDepthToSpaceLayer(const IConnectableLayer*,
const DepthToSpaceDescriptor&,
const char*) override { DefaultPolicy::Apply(__func__); }
void VisitDepthwiseConvolution2dLayer(const IConnectableLayer*,
const DepthwiseConvolution2dDescriptor&,
const ConstTensor&,
const Optional<ConstTensor>&,
const char*) override { DefaultPolicy::Apply(__func__); }
void VisitDequantizeLayer(const IConnectableLayer*,
const char*) override { DefaultPolicy::Apply(__func__); }
void VisitDetectionPostProcessLayer(const IConnectableLayer*,
const DetectionPostProcessDescriptor&,
const ConstTensor&,
const char*) override { DefaultPolicy::Apply(__func__); }
void VisitDivisionLayer(const IConnectableLayer*,
const char*) override { DefaultPolicy::Apply(__func__); }
void VisitElementwiseUnaryLayer(const IConnectableLayer*,
const ElementwiseUnaryDescriptor&,
const char*) override { DefaultPolicy::Apply(__func__); }
void VisitEqualLayer(const IConnectableLayer*,
const char*) override { DefaultPolicy::Apply(__func__); }
void VisitFloorLayer(const IConnectableLayer*,
const char*) override { DefaultPolicy::Apply(__func__); }
void VisitFullyConnectedLayer(const IConnectableLayer*,
const FullyConnectedDescriptor&,
const ConstTensor&,
const Optional<ConstTensor>&,
const char*) override { DefaultPolicy::Apply(__func__); }
void VisitGatherLayer(const IConnectableLayer*,
const char*) override { DefaultPolicy::Apply(__func__); }
void VisitGreaterLayer(const IConnectableLayer*,
const char*) override { DefaultPolicy::Apply(__func__); }
void VisitInputLayer(const IConnectableLayer*,
LayerBindingId,
const char*) override { DefaultPolicy::Apply(__func__); }
void VisitInstanceNormalizationLayer(const IConnectableLayer*,
const InstanceNormalizationDescriptor&,
const char*) override { DefaultPolicy::Apply(__func__); }
void VisitL2NormalizationLayer(const IConnectableLayer*,
const L2NormalizationDescriptor&,
const char*) override { DefaultPolicy::Apply(__func__); }
void VisitLogSoftmaxLayer(const IConnectableLayer*,
const LogSoftmaxDescriptor&,
const char*) override { DefaultPolicy::Apply(__func__); }
void VisitLstmLayer(const IConnectableLayer*,
const LstmDescriptor&,
const LstmInputParams&,
const char*) override { DefaultPolicy::Apply(__func__); }
void VisitMaximumLayer(const IConnectableLayer*,
const char*) override { DefaultPolicy::Apply(__func__); }
void VisitMeanLayer(const IConnectableLayer*,
const MeanDescriptor&,
const char*) override { DefaultPolicy::Apply(__func__); }
void VisitMergeLayer(const IConnectableLayer*,
const char*) override { DefaultPolicy::Apply(__func__); }
void VisitMergerLayer(const IConnectableLayer*,
const MergerDescriptor&,
const char*) override { DefaultPolicy::Apply(__func__); }
void VisitMinimumLayer(const IConnectableLayer*,
const char*) override { DefaultPolicy::Apply(__func__); }
void VisitMultiplicationLayer(const IConnectableLayer*,
const char*) override { DefaultPolicy::Apply(__func__); }
void VisitNormalizationLayer(const IConnectableLayer*,
const NormalizationDescriptor&,
const char*) override { DefaultPolicy::Apply(__func__); }
void VisitOutputLayer(const IConnectableLayer*,
LayerBindingId,
const char*) override { DefaultPolicy::Apply(__func__); }
void VisitPadLayer(const IConnectableLayer*,
const PadDescriptor&,
const char*) override { DefaultPolicy::Apply(__func__); }
void VisitPermuteLayer(const IConnectableLayer*,
const PermuteDescriptor&,
const char*) override { DefaultPolicy::Apply(__func__); }
void VisitPooling2dLayer(const IConnectableLayer*,
const Pooling2dDescriptor&,
const char*) override { DefaultPolicy::Apply(__func__); }
void VisitPreluLayer(const IConnectableLayer*,
const char*) override { DefaultPolicy::Apply(__func__); }
void VisitQuantizeLayer(const IConnectableLayer*,
const char*) override { DefaultPolicy::Apply(__func__); }
void VisitQuantizedLstmLayer(const IConnectableLayer*,
const QuantizedLstmInputParams&,
const char*) override { DefaultPolicy::Apply(__func__); }
void VisitReshapeLayer(const IConnectableLayer*,
const ReshapeDescriptor&,
const char*) override { DefaultPolicy::Apply(__func__); }
void VisitResizeBilinearLayer(const IConnectableLayer*,
const ResizeBilinearDescriptor&,
const char*) override { DefaultPolicy::Apply(__func__); }
void VisitResizeLayer(const IConnectableLayer*,
const ResizeDescriptor&,
const char*) override { DefaultPolicy::Apply(__func__); }
void VisitRsqrtLayer(const IConnectableLayer*,
const char*) override { DefaultPolicy::Apply(__func__); }
void VisitSliceLayer(const IConnectableLayer*,
const SliceDescriptor&,
const char*) override { DefaultPolicy::Apply(__func__); }
void VisitSoftmaxLayer(const IConnectableLayer*,
const SoftmaxDescriptor&,
const char*) override { DefaultPolicy::Apply(__func__); }
void VisitSpaceToBatchNdLayer(const IConnectableLayer*,
const SpaceToBatchNdDescriptor&,
const char*) override { DefaultPolicy::Apply(__func__); }
void VisitSpaceToDepthLayer(const IConnectableLayer*,
const SpaceToDepthDescriptor&,
const char*) override { DefaultPolicy::Apply(__func__); }
void VisitSplitterLayer(const IConnectableLayer*,
const ViewsDescriptor&,
const char*) override { DefaultPolicy::Apply(__func__); }
void VisitStackLayer(const IConnectableLayer*,
const StackDescriptor&,
const char*) override { DefaultPolicy::Apply(__func__); }
void VisitStandInLayer(const IConnectableLayer*,
const StandInDescriptor&,
const char*) override { DefaultPolicy::Apply(__func__); }
void VisitStridedSliceLayer(const IConnectableLayer*,
const StridedSliceDescriptor&,
const char*) override { DefaultPolicy::Apply(__func__); }
void VisitSubtractionLayer(const IConnectableLayer*,
const char*) override { DefaultPolicy::Apply(__func__); }
void VisitSwitchLayer(const IConnectableLayer*,
const char*) override { DefaultPolicy::Apply(__func__); }
void VisitTransposeConvolution2dLayer(const IConnectableLayer*,
const TransposeConvolution2dDescriptor&,
const ConstTensor&,
const Optional<ConstTensor>&,
const char*) override { DefaultPolicy::Apply(__func__); }
};
} // namespace armnn