1 /*
2 * Copyright (c) 2021, Intel Corporation
3 *
4 * Permission is hereby granted, free of charge, to any person obtaining a
5 * copy of this software and associated documentation files (the "Software"),
6 * to deal in the Software without restriction, including without limitation
7 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
8 * and/or sell copies of the Software, and to permit persons to whom the
9 * Software is furnished to do so, subject to the following conditions:
10 *
11 * The above copyright notice and this permission notice shall be included
12 * in all copies or substantial portions of the Software.
13 *
14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
15 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
17 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
18 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
19 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
20 * OTHER DEALINGS IN THE SOFTWARE.
21 */
22 //!
23 //! \file media_user_setting_value.cpp
24 //! \brief Implementation for user setting value
25 //!
26 #include "media_user_setting_value.h"
27
28 namespace MediaUserSetting {
NUMERIC_VALUE()29 Value::NUMERIC_VALUE::NUMERIC_VALUE() : m_u64Data(0)
30 {
31 }
NUMERIC_VALUE(const bool value)32 Value::NUMERIC_VALUE::NUMERIC_VALUE(const bool value) : m_u64Data(0)
33 {
34 m_bData = value;
35 }
NUMERIC_VALUE(const uint32_t value)36 Value::NUMERIC_VALUE::NUMERIC_VALUE(const uint32_t value) : m_u64Data(0)
37 {
38 m_u32Data = value;
39 }
NUMERIC_VALUE(const uint64_t value)40 Value::NUMERIC_VALUE::NUMERIC_VALUE(const uint64_t value) : m_u64Data(0)
41 {
42 m_u64Data = value;
43 }
NUMERIC_VALUE(const int32_t value)44 Value::NUMERIC_VALUE::NUMERIC_VALUE(const int32_t value) : m_u64Data(0)
45 {
46 m_i32Data = value;
47 }
NUMERIC_VALUE(const int64_t value)48 Value::NUMERIC_VALUE::NUMERIC_VALUE(const int64_t value) : m_u64Data(0)
49 {
50 m_i64Data = value;
51 }
NUMERIC_VALUE(const float value)52 Value::NUMERIC_VALUE::NUMERIC_VALUE(const float value) : m_u64Data(0)
53 {
54 m_fData = value;
55 }
56
operator =(const int32_t & value)57 Value::NUMERIC_VALUE &Value::NUMERIC_VALUE::operator=(const int32_t &value)
58 {
59 m_i32Data = value;
60 return *this;
61 }
operator =(const int64_t & value)62 Value::NUMERIC_VALUE &Value::NUMERIC_VALUE::operator = (const int64_t &value)
63 {
64 m_i64Data = value;
65 return *this;
66 }
operator =(const uint32_t & value)67 Value::NUMERIC_VALUE &Value::NUMERIC_VALUE::operator = (const uint32_t &value)
68 {
69 m_u32Data = value;
70 return *this;
71 }
operator =(const uint64_t & value)72 Value::NUMERIC_VALUE &Value::NUMERIC_VALUE::operator = (const uint64_t &value)
73 {
74 m_u64Data = value;
75 return *this;
76 }
operator =(const bool & value)77 Value::NUMERIC_VALUE &Value::NUMERIC_VALUE::operator=(const bool &value)
78 {
79 m_bData = value;
80 return *this;
81 }
operator =(const float & value)82 Value::NUMERIC_VALUE &Value::NUMERIC_VALUE::operator=(const float &value)
83 {
84 m_fData = value;
85 return *this;
86 }
87
Value()88 Value::Value()
89 {
90 }
91
~Value()92 Value::~Value()
93 {
94 }
95
Value(const Value & value)96 Value::Value(const Value &value)
97 {
98 m_sValue = value.m_sValue;
99 m_size = value.m_size;
100 m_type = value.m_type;
101 m_numericValue = value.m_numericValue;
102 }
103
Value(const int32_t & value)104 Value::Value(const int32_t &value) : m_numericValue(value)
105 {
106 m_sValue = std::to_string(value);
107 m_size = sizeof(int32_t);
108 m_type = MOS_USER_FEATURE_VALUE_TYPE_INT32;
109 }
110
Value(const int64_t & value)111 Value::Value(const int64_t &value): m_numericValue(value)
112 {
113 m_sValue = std::to_string(value);
114 m_size = sizeof(int64_t);
115 m_type = MOS_USER_FEATURE_VALUE_TYPE_INT64;
116 }
Value(const uint32_t & value)117 Value::Value(const uint32_t &value) : m_numericValue(value)
118 {
119 m_sValue = std::to_string(value);
120 m_size = sizeof(uint32_t);
121 m_type = MOS_USER_FEATURE_VALUE_TYPE_UINT32;
122 }
123
Value(const uint64_t & value)124 Value::Value(const uint64_t &value) : m_numericValue(value)
125 {
126 m_sValue = std::to_string(value);
127 m_size = sizeof(uint64_t);
128 m_type = MOS_USER_FEATURE_VALUE_TYPE_UINT64;
129 }
130
Value(const bool & value)131 Value::Value(const bool &value) : m_numericValue(value)
132 {
133 m_sValue = value ? "1" : "0";
134 m_size = sizeof(uint32_t);
135 m_type = MOS_USER_FEATURE_VALUE_TYPE_BOOL;
136 }
137
Value(const float & value)138 Value::Value(const float &value) : m_numericValue(value)
139 {
140 m_sValue = std::to_string(value);
141 m_size = sizeof(float);
142 m_type = MOS_USER_FEATURE_VALUE_TYPE_FLOAT;
143 }
144
Value(const std::string & value)145 Value::Value(const std::string &value) : m_numericValue(0)
146 {
147 m_sValue = value;
148 m_size = m_sValue.length();
149 m_type = MOS_USER_FEATURE_VALUE_TYPE_STRING;
150 }
151
Value(const char * value)152 Value::Value(const char *value) : m_numericValue(0)
153 {
154 m_sValue = value;
155 m_size = m_sValue.length();
156 m_type = MOS_USER_FEATURE_VALUE_TYPE_STRING;
157 }
158
Value(char * value)159 Value::Value(char *value) : m_numericValue(0)
160 {
161 m_sValue = value;
162 m_size = m_sValue.length();
163 m_type = MOS_USER_FEATURE_VALUE_TYPE_STRING;
164 }
165
operator =(const Value & value)166 Value& Value::operator=(const Value &value)
167 {
168 if (this != &value)
169 {
170 m_sValue = value.m_sValue;
171 m_size = value.m_size;
172 m_type = value.m_type;
173 m_numericValue = value.m_numericValue;
174 }
175 return *this;
176 }
177
operator =(const int32_t & value)178 Value& Value::operator=(const int32_t &value)
179 {
180 m_sValue = std::to_string(value);
181 m_size = sizeof(int32_t);
182 m_type = MOS_USER_FEATURE_VALUE_TYPE_INT32;
183 m_numericValue.m_i32Data = value;
184 return *this;
185 }
186
operator =(const int64_t & value)187 Value& Value::operator=(const int64_t &value)
188 {
189 m_sValue = std::to_string(value);
190 m_size = sizeof(int64_t);
191 m_type = MOS_USER_FEATURE_VALUE_TYPE_INT64;
192 m_numericValue.m_i64Data = value;
193 return *this;
194 }
operator =(const uint32_t & value)195 Value& Value::operator=(const uint32_t &value)
196 {
197 m_sValue = std::to_string(value);
198 m_size = sizeof(uint32_t);
199 m_type = MOS_USER_FEATURE_VALUE_TYPE_UINT32;
200 m_numericValue.m_u32Data = value;
201 return *this;
202 }
operator =(const uint64_t & value)203 Value& Value::operator=(const uint64_t &value)
204 {
205 m_sValue = std::to_string(value);
206 m_size = sizeof(uint64_t);
207 m_type = MOS_USER_FEATURE_VALUE_TYPE_UINT64;
208 m_numericValue.m_u64Data = value;
209 return *this;
210 }
operator =(const bool & value)211 Value& Value::operator=(const bool &value)
212 {
213 m_sValue = value ? "1" : "0";
214 m_size = sizeof(uint32_t);
215 m_type = MOS_USER_FEATURE_VALUE_TYPE_BOOL;
216 m_numericValue.m_bData = value;
217 return *this;
218 }
operator =(const float & value)219 Value& Value::operator=(const float &value)
220 {
221 m_sValue = std::to_string(value);
222 m_size = sizeof(float);
223 m_type = MOS_USER_FEATURE_VALUE_TYPE_FLOAT;
224 m_numericValue.m_fData = value;
225 return *this;
226 }
227
operator =(const std::string & value)228 Value& Value::operator=(const std::string &value)
229 {
230 m_sValue = value;
231 m_size = m_sValue.length();
232 m_type = MOS_USER_FEATURE_VALUE_TYPE_STRING;
233 m_numericValue.m_u64Data = 0;
234 return *this;
235 }
236
operator =(const char * value)237 Value& Value::operator=(const char* value)
238 {
239 m_sValue = value;
240 m_size = m_sValue.length();
241 m_type = MOS_USER_FEATURE_VALUE_TYPE_STRING;
242 m_numericValue.m_u64Data = 0;
243 return *this;
244 }
245
operator =(char * value)246 Value& Value::operator=(char* value)
247 {
248 m_sValue = value;
249 m_size = m_sValue.length();
250 m_type = MOS_USER_FEATURE_VALUE_TYPE_STRING;
251 m_numericValue.m_u64Data = 0;
252 return *this;
253 }
254
255 template <>
Get() const256 bool Value::Get() const
257 {
258 return m_numericValue.m_bData;
259 }
260
261 template <>
Get() const262 uint8_t Value::Get()const
263 {
264 return (uint8_t)m_numericValue.m_u32Data;
265 }
266
267 template <>
Get() const268 uint32_t Value::Get()const
269 {
270 return m_numericValue.m_u32Data;
271 }
272
273 template <>
Get() const274 int32_t Value::Get()const
275 {
276 return m_numericValue.m_i32Data;
277 }
278
279 template <>
Get() const280 int64_t Value::Get()const
281 {
282 return m_numericValue.m_i64Data;
283 }
284
285 template <>
Get() const286 unsigned long Value::Get() const
287 {
288 return (unsigned long) m_numericValue.m_u64Data;
289 }
290
291 template <>
Get() const292 unsigned long long Value::Get()const
293 {
294 return m_numericValue.m_u64Data;
295 }
296
297 template <>
Get() const298 float Value::Get() const
299 {
300 return m_numericValue.m_fData;
301 }
302 }