xref: /aosp_15_r20/external/armnn/src/backends/reference/workloads/StringMapping.hpp (revision 89c4ff92f2867872bb9e2354d150bf0c8c502810)
1 //
2 // Copyright © 2017 Arm Ltd. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5 
6 #pragma once
7 
8 namespace armnn
9 {
10 
11 ///
12 /// StringMapping is helper class to be able to use strings as template
13 /// parameters, so this allows simplifying code which only differs in
14 /// a string, such as a debug string literal.
15 ///
16 struct StringMapping
17 {
18 public:
19     enum Id {
20         RefAdditionWorkload_Execute,
21         RefDivisionWorkload_Execute,
22         RefMaximumWorkload_Execute,
23         RefMinimumWorkload_Execute,
24         RefMultiplicationWorkload_Execute,
25         RefSubtractionWorkload_Execute,
26         MAX_STRING_ID
27     };
28 
Getarmnn::StringMapping29     const char * Get(Id id) const
30     {
31         return m_Strings[id];
32     }
33 
34     static const StringMapping& Instance();
35 
36 private:
StringMappingarmnn::StringMapping37     StringMapping()
38     {
39         m_Strings[RefAdditionWorkload_Execute] = "RefAdditionWorkload_Execute";
40         m_Strings[RefDivisionWorkload_Execute] = "RefDivisionWorkload_Execute";
41         m_Strings[RefMaximumWorkload_Execute] = "RefMaximumWorkload_Execute";
42         m_Strings[RefMinimumWorkload_Execute] = "RefMinimumWorkload_Execute";
43         m_Strings[RefMultiplicationWorkload_Execute] = "RefMultiplicationWorkload_Execute";
44         m_Strings[RefSubtractionWorkload_Execute] = "RefSubtractionWorkload_Execute";
45     }
46 
47     StringMapping(const StringMapping &) = delete;
48     StringMapping& operator=(const StringMapping &) = delete;
49 
50     const char * m_Strings[MAX_STRING_ID];
51 };
52 
53 } //namespace armnn
54