4 * Copyright (c) 2016 Samsung Electronics Co., Ltd.
6 * Licensed under the Apache License, Version 2.0 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
10 * http://www.apache.org/licenses/LICENSE-2.0
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
20 #ifndef _ENUM_FACTORY_H_
21 #define _ENUM_FACTORY_H_
23 #define ENUM_SENSOR(name) name,
24 #define ENUM_SENSOR_VALUE(name, assign) name = (assign),
26 #define ENUM_CASE(name) case (name): return #name;
27 #define ENUM_CASE_VALUE(name, assign) ENUM_CASE(name)
29 #define DECLARE_SENSOR_ENUM(ENUM_TYPE, ENUM_DEF) \
30 typedef enum ENUM_TYPE { \
31 ENUM_DEF(ENUM_SENSOR, ENUM_SENSOR_VALUE) \
34 #define DECLARE_SENSOR_ENUM_UTIL_NS(ENUM_TYPE) \
35 namespace util_##ENUM_TYPE { \
36 const char *get_string(ENUM_TYPE type); \
39 #define DECLARE_SENSOR_ENUM_UTIL(ENUM_TYPE, ENUM_DEF) \
40 const char *util_##ENUM_TYPE::get_string(ENUM_TYPE type) { \
42 ENUM_DEF(ENUM_CASE, ENUM_CASE_VALUE) \
47 #endif /* _ENUM_FACTORY_H_ */