a47ce5a9705cee2c91ab9105f7de2abd6ab9f4c5
[platform/upstream/armnn.git] / src / armnn / SerializeLayerParameters.hpp
1 //
2 // Copyright © 2017 Arm Ltd. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5 #pragma once
6
7 #include <string>
8 #include <functional>
9 #include <armnn/Descriptors.hpp>
10
11 namespace armnn
12 {
13
14 using ParameterStringifyFunction = std::function<void(const std::string & name, const std::string & value)>;
15
16 ///
17 /// StringifyLayerParameters allows serializing layer parameters to string.
18 /// The default implementation is a no-op because this operation is considered
19 /// non-vital for ArmNN and thus we allow adding new layer parameters without
20 /// supplying the corresponding stringify functionality.
21 ///
22 template <typename LayerParameter>
23 struct StringifyLayerParameters
24 {
25     static void Serialize(ParameterStringifyFunction &, const LayerParameter &) {}
26 };
27
28 template <> struct StringifyLayerParameters<PermuteDescriptor>
29 {
30     static void Serialize(ParameterStringifyFunction & fn, const PermuteDescriptor & desc);
31 };
32
33 template <> struct StringifyLayerParameters<ReshapeDescriptor>
34 {
35     static void Serialize(ParameterStringifyFunction & fn, const ReshapeDescriptor & desc);
36 };
37
38 template <> struct StringifyLayerParameters<ActivationDescriptor>
39 {
40     static void Serialize(ParameterStringifyFunction & fn, const ActivationDescriptor & desc);
41 };
42
43 template <> struct StringifyLayerParameters<Convolution2dDescriptor>
44 {
45     static void Serialize(ParameterStringifyFunction & fn, const Convolution2dDescriptor & desc);
46 };
47
48 template <> struct StringifyLayerParameters<BatchNormalizationDescriptor>
49 {
50     static void Serialize(ParameterStringifyFunction & fn, const BatchNormalizationDescriptor & desc);
51 };
52
53 template <> struct StringifyLayerParameters<DepthwiseConvolution2dDescriptor>
54 {
55     static void Serialize(ParameterStringifyFunction & fn, const DepthwiseConvolution2dDescriptor & desc);
56 };
57
58 template <> struct StringifyLayerParameters<Pooling2dDescriptor>
59 {
60     static void Serialize(ParameterStringifyFunction & fn, const Pooling2dDescriptor & desc);
61 };
62
63 template <> struct StringifyLayerParameters<SoftmaxDescriptor>
64 {
65     static void Serialize(ParameterStringifyFunction & fn, const SoftmaxDescriptor & desc);
66 };
67
68 template <> struct StringifyLayerParameters<FullyConnectedDescriptor>
69 {
70     static void Serialize(ParameterStringifyFunction & fn, const FullyConnectedDescriptor & desc);
71 };
72
73 template <> struct StringifyLayerParameters<OriginsDescriptor>
74 {
75     static void Serialize(ParameterStringifyFunction & fn, const OriginsDescriptor & desc);
76 };
77
78 }