Merge branch 'devel/tizen' into tizen
[platform/core/system/sensord.git] / include / enum_factory.h
1 /*
2  * sensord
3  *
4  * Copyright (c) 2016 Samsung Electronics Co., Ltd.
5  *
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
9  *
10  * http://www.apache.org/licenses/LICENSE-2.0
11  *
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.
17  *
18  */
19
20 #ifndef _ENUM_FACTORY_H_
21 #define _ENUM_FACTORY_H_
22
23 #define ENUM_SENSOR(name) name,
24 #define ENUM_SENSOR_VALUE(name, assign) name = (assign),
25
26 #define ENUM_CASE(name) case (name): return #name;
27 #define ENUM_CASE_VALUE(name, assign) ENUM_CASE(name)
28
29 #define DECLARE_SENSOR_ENUM(ENUM_TYPE, ENUM_DEF) \
30         typedef enum ENUM_TYPE { \
31                 ENUM_DEF(ENUM_SENSOR, ENUM_SENSOR_VALUE) \
32         } ENUM_TYPE;
33
34 #define DECLARE_SENSOR_ENUM_UTIL_NS(ENUM_TYPE) \
35         namespace util_##ENUM_TYPE { \
36                 const char *get_string(ENUM_TYPE type); \
37         };
38
39 #define DECLARE_SENSOR_ENUM_UTIL(ENUM_TYPE, ENUM_DEF) \
40         const char *util_##ENUM_TYPE::get_string(ENUM_TYPE type) { \
41                 switch (type) { \
42                 ENUM_DEF(ENUM_CASE, ENUM_CASE_VALUE) \
43                 } \
44                 return "UNKNOWN"; \
45         }
46
47 #endif /* _ENUM_FACTORY_H_ */