2 // Copyright © 2017 Arm Ltd. All rights reserved.
3 // SPDX-License-Identifier: MIT
8 #include <armnn/ILayerVisitor.hpp>
13 struct VisitorThrowingPolicy
15 static void Apply(const std::string& errorMessage = "") { throw UnimplementedException(errorMessage); }
18 struct VisitorNoThrowPolicy
20 static void Apply(const std::string&) {}
23 // Visitor base class with empty implementations.
24 template<typename DefaultPolicy>
25 class LayerVisitorBase : public ILayerVisitor
29 virtual ~LayerVisitorBase() {}
32 void VisitAbsLayer(const IConnectableLayer*,
33 const char*) override { DefaultPolicy::Apply(__func__); }
35 void VisitActivationLayer(const IConnectableLayer*,
36 const ActivationDescriptor&,
37 const char*) override { DefaultPolicy::Apply(__func__); }
39 void VisitAdditionLayer(const IConnectableLayer*,
40 const char*) override { DefaultPolicy::Apply(__func__); }
42 void VisitArgMinMaxLayer(const IConnectableLayer*,
43 const ArgMinMaxDescriptor&,
44 const char*) override { DefaultPolicy::Apply(__func__); }
46 void VisitBatchNormalizationLayer(const IConnectableLayer*,
47 const BatchNormalizationDescriptor&,
52 const char*) override { DefaultPolicy::Apply(__func__); }
54 void VisitBatchToSpaceNdLayer(const IConnectableLayer*,
55 const BatchToSpaceNdDescriptor&,
56 const char*) override { DefaultPolicy::Apply(__func__); }
58 void VisitConcatLayer(const IConnectableLayer*,
59 const ConcatDescriptor&,
60 const char*) override { DefaultPolicy::Apply(__func__); }
62 void VisitConstantLayer(const IConnectableLayer*,
64 const char*) override { DefaultPolicy::Apply(__func__); }
66 void VisitConvolution2dLayer(const IConnectableLayer*,
67 const Convolution2dDescriptor&,
69 const Optional<ConstTensor>&,
70 const char*) override { DefaultPolicy::Apply(__func__); }
72 void VisitDepthwiseConvolution2dLayer(const IConnectableLayer*,
73 const DepthwiseConvolution2dDescriptor&,
75 const Optional<ConstTensor>&,
76 const char*) override { DefaultPolicy::Apply(__func__); }
78 void VisitDequantizeLayer(const IConnectableLayer*,
79 const char*) override { DefaultPolicy::Apply(__func__); }
81 void VisitDetectionPostProcessLayer(const IConnectableLayer*,
82 const DetectionPostProcessDescriptor&,
84 const char*) override { DefaultPolicy::Apply(__func__); }
86 void VisitDivisionLayer(const IConnectableLayer*,
87 const char*) override { DefaultPolicy::Apply(__func__); }
89 void VisitEqualLayer(const IConnectableLayer*,
90 const char*) override { DefaultPolicy::Apply(__func__); }
92 void VisitFloorLayer(const IConnectableLayer*,
93 const char*) override { DefaultPolicy::Apply(__func__); }
95 void VisitFullyConnectedLayer(const IConnectableLayer*,
96 const FullyConnectedDescriptor&,
98 const Optional<ConstTensor>&,
99 const char*) override { DefaultPolicy::Apply(__func__); }
101 void VisitGatherLayer(const IConnectableLayer*,
102 const char*) override { DefaultPolicy::Apply(__func__); }
104 void VisitGreaterLayer(const IConnectableLayer*,
105 const char*) override { DefaultPolicy::Apply(__func__); }
107 void VisitInputLayer(const IConnectableLayer*,
109 const char*) override { DefaultPolicy::Apply(__func__); }
111 void VisitL2NormalizationLayer(const IConnectableLayer*,
112 const L2NormalizationDescriptor&,
113 const char*) override { DefaultPolicy::Apply(__func__); }
115 void VisitLstmLayer(const IConnectableLayer*,
116 const LstmDescriptor&,
117 const LstmInputParams&,
118 const char*) override { DefaultPolicy::Apply(__func__); }
120 void VisitMaximumLayer(const IConnectableLayer*,
121 const char*) override { DefaultPolicy::Apply(__func__); }
123 void VisitMeanLayer(const IConnectableLayer*,
124 const MeanDescriptor&,
125 const char*) override { DefaultPolicy::Apply(__func__); }
127 void VisitMergeLayer(const IConnectableLayer*,
128 const char*) override { DefaultPolicy::Apply(__func__); }
130 void VisitMergerLayer(const IConnectableLayer*,
131 const MergerDescriptor&,
132 const char*) override { DefaultPolicy::Apply(__func__); }
134 void VisitMinimumLayer(const IConnectableLayer*,
135 const char*) override { DefaultPolicy::Apply(__func__); }
137 void VisitMultiplicationLayer(const IConnectableLayer*,
138 const char*) override { DefaultPolicy::Apply(__func__); }
140 void VisitNormalizationLayer(const IConnectableLayer*,
141 const NormalizationDescriptor&,
142 const char*) override { DefaultPolicy::Apply(__func__); }
144 void VisitOutputLayer(const IConnectableLayer*,
146 const char*) override { DefaultPolicy::Apply(__func__); }
148 void VisitPadLayer(const IConnectableLayer*,
149 const PadDescriptor&,
150 const char*) override { DefaultPolicy::Apply(__func__); }
152 void VisitPermuteLayer(const IConnectableLayer*,
153 const PermuteDescriptor&,
154 const char*) override { DefaultPolicy::Apply(__func__); }
156 void VisitPooling2dLayer(const IConnectableLayer*,
157 const Pooling2dDescriptor&,
158 const char*) override { DefaultPolicy::Apply(__func__); }
160 void VisitPreluLayer(const IConnectableLayer*,
161 const char*) override { DefaultPolicy::Apply(__func__); }
163 void VisitQuantizeLayer(const IConnectableLayer*,
164 const char*) override { DefaultPolicy::Apply(__func__); }
166 void VisitQuantizedLstmLayer(const IConnectableLayer*,
167 const QuantizedLstmInputParams&,
168 const char*) override { DefaultPolicy::Apply(__func__); }
170 void VisitReshapeLayer(const IConnectableLayer*,
171 const ReshapeDescriptor&,
172 const char*) override { DefaultPolicy::Apply(__func__); }
174 void VisitResizeBilinearLayer(const IConnectableLayer*,
175 const ResizeBilinearDescriptor&,
176 const char*) override { DefaultPolicy::Apply(__func__); }
178 void VisitResizeLayer(const IConnectableLayer*,
179 const ResizeDescriptor&,
180 const char*) override { DefaultPolicy::Apply(__func__); }
182 void VisitRsqrtLayer(const IConnectableLayer*,
183 const char*) override { DefaultPolicy::Apply(__func__); }
185 void VisitSoftmaxLayer(const IConnectableLayer*,
186 const SoftmaxDescriptor&,
187 const char*) override { DefaultPolicy::Apply(__func__); }
189 void VisitSpaceToBatchNdLayer(const IConnectableLayer*,
190 const SpaceToBatchNdDescriptor&,
191 const char*) override { DefaultPolicy::Apply(__func__); }
193 void VisitSpaceToDepthLayer(const IConnectableLayer*,
194 const SpaceToDepthDescriptor&,
195 const char*) override { DefaultPolicy::Apply(__func__); }
197 void VisitSplitterLayer(const IConnectableLayer*,
198 const ViewsDescriptor&,
199 const char*) override { DefaultPolicy::Apply(__func__); }
201 void VisitStackLayer(const IConnectableLayer*,
202 const StackDescriptor&,
203 const char*) override { DefaultPolicy::Apply(__func__); }
205 void VisitStridedSliceLayer(const IConnectableLayer*,
206 const StridedSliceDescriptor&,
207 const char*) override { DefaultPolicy::Apply(__func__); }
209 void VisitSubtractionLayer(const IConnectableLayer*,
210 const char*) override { DefaultPolicy::Apply(__func__); }
212 void VisitSwitchLayer(const IConnectableLayer*,
213 const char*) override { DefaultPolicy::Apply(__func__); }
215 void VisitTransposeConvolution2dLayer(const IConnectableLayer*,
216 const TransposeConvolution2dDescriptor&,
218 const Optional<ConstTensor>&,
219 const char*) override { DefaultPolicy::Apply(__func__); }