7 changed files with 486 additions and 0 deletions
-
6core/basic/marco/basic.h
-
88core/basic/marco/data.hpp
-
7core/basic/marco/marco.hpp
-
259core/basic/marco/marco_list.h
-
116core/components/config_template/config_template.hpp
-
7core/components/file_util.cpp
-
3core/components/file_util.hpp
@ -0,0 +1,6 @@ |
|||
#pragma once |
|||
#define STR_MARCO(marco) #marco |
|||
#define MARCO_CONNECT2(a, b) a##b |
|||
#ifndef ARRAY_SIZE |
|||
#define ARRAY_SIZE(x) (sizeof(x) / sizeof(x[0])) |
|||
#endif |
@ -0,0 +1,88 @@ |
|||
//
|
|||
// Created by zhaohe on 19-5-30.
|
|||
//
|
|||
|
|||
#pragma once
|
|||
#include "iflytopcpp/core/basic/marco/marco_list.h"
|
|||
|
|||
#define DATA_ID(x) x
|
|||
#define DATA(...) \
|
|||
DATA_ID(DATA_APPLY(DATA_PP_MAP_VAR_COUNT, \ |
|||
ZWSD_PARAMETER_COUNT(__VA_ARGS__))(__VA_ARGS__)) |
|||
#define DATA_PP_MAP_VAR_COUNT(count) DATAM##count
|
|||
#define DATA_APPLY(macro, ...) DATA_ID(macro(__VA_ARGS__))
|
|||
|
|||
#define DATA1(v1) \
|
|||
__typeof__(v1) &v1Value() { return v1; } |
|||
|
|||
#define DATA2(v1, v2) \
|
|||
__typeof__(v1) &v1Value() { return v1; } \ |
|||
__typeof__(v2) &v2Value() { return v2; } |
|||
|
|||
#define DATA3(v1, v2, v3) \
|
|||
__typeof__(v1) &v1Value() { return v1; } \ |
|||
__typeof__(v2) &v2Value() { return v2; } \ |
|||
__typeof__(v3) &v3Value() { return v3; } |
|||
|
|||
#define DATA4(v1, v2, v3, v4) \
|
|||
__typeof__(v1) &v1Value() { return v1; } \ |
|||
__typeof__(v2) &v2Value() { return v2; } \ |
|||
__typeof__(v3) &v3Value() { return v3; } \ |
|||
__typeof__(v4) &v4Value() { return v4; } |
|||
|
|||
#define DATA5(v1, v2, v3, v4, v5) \
|
|||
__typeof__(v1) &v1Value() { return v1; } \ |
|||
__typeof__(v2) &v2Value() { return v2; } \ |
|||
__typeof__(v3) &v3Value() { return v3; } \ |
|||
__typeof__(v4) &v4Value() { return v4; } \ |
|||
__typeof__(v5) &v5Value() { return v5; } |
|||
|
|||
#define DATA6(v1, v2, v3, v4, v5, v6) \
|
|||
__typeof__(v1) &v1Value() { return v1; } \ |
|||
__typeof__(v2) &v2Value() { return v2; } \ |
|||
__typeof__(v3) &v3Value() { return v3; } \ |
|||
__typeof__(v4) &v4Value() { return v4; } \ |
|||
__typeof__(v5) &v5Value() { return v5; } \ |
|||
__typeof__(v6) &v6Value() { return v6; } |
|||
|
|||
#define DATA7(v1, v2, v3, v4, v5, v6, v7) \
|
|||
__typeof__(v1) &v1Value() { return v1; } \ |
|||
__typeof__(v2) &v2Value() { return v2; } \ |
|||
__typeof__(v3) &v3Value() { return v3; } \ |
|||
__typeof__(v4) &v4Value() { return v4; } \ |
|||
__typeof__(v5) &v5Value() { return v5; } \ |
|||
__typeof__(v6) &v6Value() { return v6; } \ |
|||
__typeof__(v7) &v7Value() { return v7; } |
|||
|
|||
#define DATA8(v1, v2, v3, v4, v5, v6, v7, v8) \
|
|||
__typeof__(v1) &v1Value() { return v1; } \ |
|||
__typeof__(v2) &v2Value() { return v2; } \ |
|||
__typeof__(v3) &v3Value() { return v3; } \ |
|||
__typeof__(v4) &v4Value() { return v4; } \ |
|||
__typeof__(v5) &v5Value() { return v5; } \ |
|||
__typeof__(v6) &v6Value() { return v6; } \ |
|||
__typeof__(v7) &v7Value() { return v7; } \ |
|||
__typeof__(v8) &v8Value() { return v8; } |
|||
|
|||
#define DATA9(v1, v2, v3, v4, v5, v6, v7, v8, v9) \
|
|||
__typeof__(v1) &v1Value() { return v1; } \ |
|||
__typeof__(v2) &v2Value() { return v2; } \ |
|||
__typeof__(v3) &v3Value() { return v3; } \ |
|||
__typeof__(v4) &v4Value() { return v4; } \ |
|||
__typeof__(v5) &v5Value() { return v5; } \ |
|||
__typeof__(v6) &v6Value() { return v6; } \ |
|||
__typeof__(v7) &v7Value() { return v7; } \ |
|||
__typeof__(v8) &v8Value() { return v8; } \ |
|||
__typeof__(v9) &v9Value() { return v9; } |
|||
|
|||
#define DATA10(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10) \
|
|||
__typeof__(v1) &v1Value() { return v1; } \ |
|||
__typeof__(v2) &v2Value() { return v2; } \ |
|||
__typeof__(v3) &v3Value() { return v3; } \ |
|||
__typeof__(v4) &v4Value() { return v4; } \ |
|||
__typeof__(v5) &v5Value() { return v5; } \ |
|||
__typeof__(v6) &v6Value() { return v6; } \ |
|||
__typeof__(v7) &v7Value() { return v7; } \ |
|||
__typeof__(v8) &v8Value() { return v8; } \ |
|||
__typeof__(v9) &v9Value() { return v9; } \ |
|||
__typeof__(v10) &v1Value0() { return v10; } |
@ -0,0 +1,7 @@ |
|||
#pragma once
|
|||
//
|
|||
#include "iflytopcpp/core/basic/marco/basic.h"
|
|||
//
|
|||
#include "iflytopcpp/core/basic/marco/marco_list.h"
|
|||
//
|
|||
#include "iflytopcpp/core/basic/marco/data.hpp"
|
@ -0,0 +1,259 @@ |
|||
#pragma once |
|||
// #include "zwtimecpp/core/utils/better-enums/enum.h" |
|||
// #include "/home/zhaohe/workplace/project/MobileWrappingMachines/tmp/enum.h" |
|||
#define ZWSD_MACROS_ID(x) x |
|||
#define ZMID(...) __VA_ARGS__ |
|||
|
|||
#define ZWSD_APPLY(macro, ...) ZWSD_MACROS_ID(macro(__VA_ARGS__)) |
|||
#define MARCO_APPLY ZWSD_APPLY |
|||
/** |
|||
* @brief 参数的数量最大是64个,当大于64的时候会出错 |
|||
*/ |
|||
#define ZWSD_COUNT_BASIC(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, \ |
|||
_13, _14, _15, _16, _17, _18, _19, _20, _21, _22, \ |
|||
_23, _24, _25, _26, _27, _28, _29, _30, _31, _32, \ |
|||
_33, _34, _35, _36, _37, _38, _39, _40, _41, _42, \ |
|||
_43, _44, _45, _46, _47, _48, _49, _50, _51, _52, \ |
|||
_53, _54, _55, _56, _57, _58, _59, _60, _61, _62, \ |
|||
_63, _64, count, ...) \ |
|||
count |
|||
|
|||
#define ZWSD_PARAMETER_COUNT(...) \ |
|||
ZWSD_MACROS_ID(ZWSD_COUNT_BASIC( \ |
|||
__VA_ARGS__, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, \ |
|||
49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, \ |
|||
31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, \ |
|||
13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1)) |
|||
|
|||
/** |
|||
* @brief MARCO_LIST |
|||
* @Usage: |
|||
* |
|||
* 这个工具用来使宏支持多参数功能 |
|||
* 例如定义一个宏LIST实现下面功能 |
|||
* |
|||
* LIST(int,3,a,b,c,d,e) |
|||
* 展开后如下 |
|||
* int a = 3; |
|||
* int b = 3; |
|||
* int c = 3; |
|||
* int d = 3; |
|||
* int e = 3; |
|||
* |
|||
* LIST(int,3,a) |
|||
* 展开后如下 |
|||
* int a = 3; |
|||
* |
|||
* 实现方法 |
|||
* |
|||
* #define EACH_EXPTR(type,initvalue,v3,v4,v5,index,varName) \ |
|||
* type varName = initvalue; |
|||
* |
|||
* #define LIST(type,initvalue,...) \ |
|||
* MARCO_LIST(EACH_EXPTR,type,initvalue,_3,_4,_5,__VA_ARGS__) |
|||
*/ |
|||
/** |
|||
* @brief |
|||
* |
|||
*/ |
|||
#define MARCO_LIST(marco, v1, v2, v3, v4, v5, ...) \ |
|||
ZWSD_MACROS_ID( \ |
|||
V5M_PP_MAP(ZWSD_MACROS_ID(marco), v1, v2, v3, v4, v5, __VA_ARGS__)) |
|||
|
|||
#define V5M_PP_MAP(macro, v1, v2, v3, v4, v5, ...) \ |
|||
ZWSD_MACROS_ID( \ |
|||
ZWSD_APPLY(V5_PP_MAP_VAR_COUNT, ZWSD_PARAMETER_COUNT(__VA_ARGS__))( \ |
|||
macro, v1, v2, v3, v4, v5, __VA_ARGS__)) |
|||
|
|||
#define V5_PP_MAP_VAR_COUNT(count) V5M##count |
|||
#define V5M1(m, v1, v2, v3, v4, v5, x) m(v1, v2, v3, v4, v5, 0, x) |
|||
#define V5M2(m, v1, v2, v3, v4, v5, x, ...) \ |
|||
m(v1, v2, v3, v4, v5, 1, x) \ |
|||
ZWSD_MACROS_ID(V5M1(m, v1, v2, v3, v4, v5, __VA_ARGS__)) |
|||
#define V5M3(m, v1, v2, v3, v4, v5, x, ...) \ |
|||
m(v1, v2, v3, v4, v5, 2, x) \ |
|||
ZWSD_MACROS_ID(V5M2(m, v1, v2, v3, v4, v5, __VA_ARGS__)) |
|||
#define V5M4(m, v1, v2, v3, v4, v5, x, ...) \ |
|||
m(v1, v2, v3, v4, v5, 3, x) \ |
|||
ZWSD_MACROS_ID(V5M3(m, v1, v2, v3, v4, v5, __VA_ARGS__)) |
|||
#define V5M5(m, v1, v2, v3, v4, v5, x, ...) \ |
|||
m(v1, v2, v3, v4, v5, 4, x) \ |
|||
ZWSD_MACROS_ID(V5M4(m, v1, v2, v3, v4, v5, __VA_ARGS__)) |
|||
#define V5M6(m, v1, v2, v3, v4, v5, x, ...) \ |
|||
m(v1, v2, v3, v4, v5, 5, x) \ |
|||
ZWSD_MACROS_ID(V5M5(m, v1, v2, v3, v4, v5, __VA_ARGS__)) |
|||
#define V5M7(m, v1, v2, v3, v4, v5, x, ...) \ |
|||
m(v1, v2, v3, v4, v5, 6, x) \ |
|||
ZWSD_MACROS_ID(V5M6(m, v1, v2, v3, v4, v5, __VA_ARGS__)) |
|||
#define V5M8(m, v1, v2, v3, v4, v5, x, ...) \ |
|||
m(v1, v2, v3, v4, v5, 7, x) \ |
|||
ZWSD_MACROS_ID(V5M7(m, v1, v2, v3, v4, v5, __VA_ARGS__)) |
|||
#define V5M9(m, v1, v2, v3, v4, v5, x, ...) \ |
|||
m(v1, v2, v3, v4, v5, 8, x) \ |
|||
ZWSD_MACROS_ID(V5M8(m, v1, v2, v3, v4, v5, __VA_ARGS__)) |
|||
#define V5M10(m, v1, v2, v3, v4, v5, x, ...) \ |
|||
m(v1, v2, v3, v4, v5, 9, x) \ |
|||
ZWSD_MACROS_ID(V5M9(m, v1, v2, v3, v4, v5, __VA_ARGS__)) |
|||
#define V5M11(m, v1, v2, v3, v4, v5, x, ...) \ |
|||
m(v1, v2, v3, v4, v5, 10, x) \ |
|||
ZWSD_MACROS_ID(V5M10(m, v1, v2, v3, v4, v5, __VA_ARGS__)) |
|||
#define V5M12(m, v1, v2, v3, v4, v5, x, ...) \ |
|||
m(v1, v2, v3, v4, v5, 11, x) \ |
|||
ZWSD_MACROS_ID(V5M11(m, v1, v2, v3, v4, v5, __VA_ARGS__)) |
|||
#define V5M13(m, v1, v2, v3, v4, v5, x, ...) \ |
|||
m(v1, v2, v3, v4, v5, 12, x) \ |
|||
ZWSD_MACROS_ID(V5M12(m, v1, v2, v3, v4, v5, __VA_ARGS__)) |
|||
#define V5M14(m, v1, v2, v3, v4, v5, x, ...) \ |
|||
m(v1, v2, v3, v4, v5, 13, x) \ |
|||
ZWSD_MACROS_ID(V5M13(m, v1, v2, v3, v4, v5, __VA_ARGS__)) |
|||
#define V5M15(m, v1, v2, v3, v4, v5, x, ...) \ |
|||
m(v1, v2, v3, v4, v5, 14, x) \ |
|||
ZWSD_MACROS_ID(V5M14(m, v1, v2, v3, v4, v5, __VA_ARGS__)) |
|||
#define V5M16(m, v1, v2, v3, v4, v5, x, ...) \ |
|||
m(v1, v2, v3, v4, v5, 15, x) \ |
|||
ZWSD_MACROS_ID(V5M15(m, v1, v2, v3, v4, v5, __VA_ARGS__)) |
|||
#define V5M17(m, v1, v2, v3, v4, v5, x, ...) \ |
|||
m(v1, v2, v3, v4, v5, 16, x) \ |
|||
ZWSD_MACROS_ID(V5M16(m, v1, v2, v3, v4, v5, __VA_ARGS__)) |
|||
#define V5M18(m, v1, v2, v3, v4, v5, x, ...) \ |
|||
m(v1, v2, v3, v4, v5, 17, x) \ |
|||
ZWSD_MACROS_ID(V5M17(m, v1, v2, v3, v4, v5, __VA_ARGS__)) |
|||
#define V5M19(m, v1, v2, v3, v4, v5, x, ...) \ |
|||
m(v1, v2, v3, v4, v5, 18, x) \ |
|||
ZWSD_MACROS_ID(V5M18(m, v1, v2, v3, v4, v5, __VA_ARGS__)) |
|||
#define V5M20(m, v1, v2, v3, v4, v5, x, ...) \ |
|||
m(v1, v2, v3, v4, v5, 19, x) \ |
|||
ZWSD_MACROS_ID(V5M19(m, v1, v2, v3, v4, v5, __VA_ARGS__)) |
|||
#define V5M21(m, v1, v2, v3, v4, v5, x, ...) \ |
|||
m(v1, v2, v3, v4, v5, 20, x) \ |
|||
ZWSD_MACROS_ID(V5M20(m, v1, v2, v3, v4, v5, __VA_ARGS__)) |
|||
#define V5M22(m, v1, v2, v3, v4, v5, x, ...) \ |
|||
m(v1, v2, v3, v4, v5, 21, x) \ |
|||
ZWSD_MACROS_ID(V5M21(m, v1, v2, v3, v4, v5, __VA_ARGS__)) |
|||
#define V5M23(m, v1, v2, v3, v4, v5, x, ...) \ |
|||
m(v1, v2, v3, v4, v5, 22, x) \ |
|||
ZWSD_MACROS_ID(V5M22(m, v1, v2, v3, v4, v5, __VA_ARGS__)) |
|||
#define V5M24(m, v1, v2, v3, v4, v5, x, ...) \ |
|||
m(v1, v2, v3, v4, v5, 23, x) \ |
|||
ZWSD_MACROS_ID(V5M23(m, v1, v2, v3, v4, v5, __VA_ARGS__)) |
|||
#define V5M25(m, v1, v2, v3, v4, v5, x, ...) \ |
|||
m(v1, v2, v3, v4, v5, 24, x) \ |
|||
ZWSD_MACROS_ID(V5M24(m, v1, v2, v3, v4, v5, __VA_ARGS__)) |
|||
#define V5M26(m, v1, v2, v3, v4, v5, x, ...) \ |
|||
m(v1, v2, v3, v4, v5, 25, x) \ |
|||
ZWSD_MACROS_ID(V5M25(m, v1, v2, v3, v4, v5, __VA_ARGS__)) |
|||
#define V5M27(m, v1, v2, v3, v4, v5, x, ...) \ |
|||
m(v1, v2, v3, v4, v5, 26, x) \ |
|||
ZWSD_MACROS_ID(V5M26(m, v1, v2, v3, v4, v5, __VA_ARGS__)) |
|||
#define V5M28(m, v1, v2, v3, v4, v5, x, ...) \ |
|||
m(v1, v2, v3, v4, v5, 27, x) \ |
|||
ZWSD_MACROS_ID(V5M27(m, v1, v2, v3, v4, v5, __VA_ARGS__)) |
|||
#define V5M29(m, v1, v2, v3, v4, v5, x, ...) \ |
|||
m(v1, v2, v3, v4, v5, 28, x) \ |
|||
ZWSD_MACROS_ID(V5M28(m, v1, v2, v3, v4, v5, __VA_ARGS__)) |
|||
#define V5M30(m, v1, v2, v3, v4, v5, x, ...) \ |
|||
m(v1, v2, v3, v4, v5, 29, x) \ |
|||
ZWSD_MACROS_ID(V5M29(m, v1, v2, v3, v4, v5, __VA_ARGS__)) |
|||
#define V5M31(m, v1, v2, v3, v4, v5, x, ...) \ |
|||
m(v1, v2, v3, v4, v5, 30, x) \ |
|||
ZWSD_MACROS_ID(V5M30(m, v1, v2, v3, v4, v5, __VA_ARGS__)) |
|||
#define V5M32(m, v1, v2, v3, v4, v5, x, ...) \ |
|||
m(v1, v2, v3, v4, v5, 31, x) \ |
|||
ZWSD_MACROS_ID(V5M31(m, v1, v2, v3, v4, v5, __VA_ARGS__)) |
|||
#define V5M33(m, v1, v2, v3, v4, v5, x, ...) \ |
|||
m(v1, v2, v3, v4, v5, 32, x) \ |
|||
ZWSD_MACROS_ID(V5M32(m, v1, v2, v3, v4, v5, __VA_ARGS__)) |
|||
#define V5M34(m, v1, v2, v3, v4, v5, x, ...) \ |
|||
m(v1, v2, v3, v4, v5, 33, x) \ |
|||
ZWSD_MACROS_ID(V5M33(m, v1, v2, v3, v4, v5, __VA_ARGS__)) |
|||
#define V5M35(m, v1, v2, v3, v4, v5, x, ...) \ |
|||
m(v1, v2, v3, v4, v5, 34, x) \ |
|||
ZWSD_MACROS_ID(V5M34(m, v1, v2, v3, v4, v5, __VA_ARGS__)) |
|||
#define V5M36(m, v1, v2, v3, v4, v5, x, ...) \ |
|||
m(v1, v2, v3, v4, v5, 35, x) \ |
|||
ZWSD_MACROS_ID(V5M35(m, v1, v2, v3, v4, v5, __VA_ARGS__)) |
|||
#define V5M37(m, v1, v2, v3, v4, v5, x, ...) \ |
|||
m(v1, v2, v3, v4, v5, 36, x) \ |
|||
ZWSD_MACROS_ID(V5M36(m, v1, v2, v3, v4, v5, __VA_ARGS__)) |
|||
#define V5M38(m, v1, v2, v3, v4, v5, x, ...) \ |
|||
m(v1, v2, v3, v4, v5, 37, x) \ |
|||
ZWSD_MACROS_ID(V5M37(m, v1, v2, v3, v4, v5, __VA_ARGS__)) |
|||
#define V5M39(m, v1, v2, v3, v4, v5, x, ...) \ |
|||
m(v1, v2, v3, v4, v5, 38, x) \ |
|||
ZWSD_MACROS_ID(V5M38(m, v1, v2, v3, v4, v5, __VA_ARGS__)) |
|||
#define V5M40(m, v1, v2, v3, v4, v5, x, ...) \ |
|||
m(v1, v2, v3, v4, v5, 39, x) \ |
|||
ZWSD_MACROS_ID(V5M39(m, v1, v2, v3, v4, v5, __VA_ARGS__)) |
|||
#define V5M41(m, v1, v2, v3, v4, v5, x, ...) \ |
|||
m(v1, v2, v3, v4, v5, 40, x) \ |
|||
ZWSD_MACROS_ID(V5M40(m, v1, v2, v3, v4, v5, __VA_ARGS__)) |
|||
#define V5M42(m, v1, v2, v3, v4, v5, x, ...) \ |
|||
m(v1, v2, v3, v4, v5, 41, x) \ |
|||
ZWSD_MACROS_ID(V5M41(m, v1, v2, v3, v4, v5, __VA_ARGS__)) |
|||
#define V5M43(m, v1, v2, v3, v4, v5, x, ...) \ |
|||
m(v1, v2, v3, v4, v5, 42, x) \ |
|||
ZWSD_MACROS_ID(V5M42(m, v1, v2, v3, v4, v5, __VA_ARGS__)) |
|||
#define V5M44(m, v1, v2, v3, v4, v5, x, ...) \ |
|||
m(v1, v2, v3, v4, v5, 43, x) \ |
|||
ZWSD_MACROS_ID(V5M43(m, v1, v2, v3, v4, v5, __VA_ARGS__)) |
|||
#define V5M45(m, v1, v2, v3, v4, v5, x, ...) \ |
|||
m(v1, v2, v3, v4, v5, 44, x) \ |
|||
ZWSD_MACROS_ID(V5M44(m, v1, v2, v3, v4, v5, __VA_ARGS__)) |
|||
#define V5M46(m, v1, v2, v3, v4, v5, x, ...) \ |
|||
m(v1, v2, v3, v4, v5, 45, x) \ |
|||
ZWSD_MACROS_ID(V5M45(m, v1, v2, v3, v4, v5, __VA_ARGS__)) |
|||
#define V5M47(m, v1, v2, v3, v4, v5, x, ...) \ |
|||
m(v1, v2, v3, v4, v5, 46, x) \ |
|||
ZWSD_MACROS_ID(V5M46(m, v1, v2, v3, v4, v5, __VA_ARGS__)) |
|||
#define V5M48(m, v1, v2, v3, v4, v5, x, ...) \ |
|||
m(v1, v2, v3, v4, v5, 47, x) \ |
|||
ZWSD_MACROS_ID(V5M47(m, v1, v2, v3, v4, v5, __VA_ARGS__)) |
|||
#define V5M49(m, v1, v2, v3, v4, v5, x, ...) \ |
|||
m(v1, v2, v3, v4, v5, 48, x) \ |
|||
ZWSD_MACROS_ID(V5M48(m, v1, v2, v3, v4, v5, __VA_ARGS__)) |
|||
#define V5M50(m, v1, v2, v3, v4, v5, x, ...) \ |
|||
m(v1, v2, v3, v4, v5, 49, x) \ |
|||
ZWSD_MACROS_ID(V5M49(m, v1, v2, v3, v4, v5, __VA_ARGS__)) |
|||
#define V5M51(m, v1, v2, v3, v4, v5, x, ...) \ |
|||
m(v1, v2, v3, v4, v5, 50, x) \ |
|||
ZWSD_MACROS_ID(V5M50(m, v1, v2, v3, v4, v5, __VA_ARGS__)) |
|||
#define V5M52(m, v1, v2, v3, v4, v5, x, ...) \ |
|||
m(v1, v2, v3, v4, v5, 51, x) \ |
|||
ZWSD_MACROS_ID(V5M51(m, v1, v2, v3, v4, v5, __VA_ARGS__)) |
|||
#define V5M53(m, v1, v2, v3, v4, v5, x, ...) \ |
|||
m(v1, v2, v3, v4, v5, 52, x) \ |
|||
ZWSD_MACROS_ID(V5M52(m, v1, v2, v3, v4, v5, __VA_ARGS__)) |
|||
#define V5M54(m, v1, v2, v3, v4, v5, x, ...) \ |
|||
m(v1, v2, v3, v4, v5, 53, x) \ |
|||
ZWSD_MACROS_ID(V5M53(m, v1, v2, v3, v4, v5, __VA_ARGS__)) |
|||
#define V5M55(m, v1, v2, v3, v4, v5, x, ...) \ |
|||
m(v1, v2, v3, v4, v5, 54, x) \ |
|||
ZWSD_MACROS_ID(V5M54(m, v1, v2, v3, v4, v5, __VA_ARGS__)) |
|||
#define V5M56(m, v1, v2, v3, v4, v5, x, ...) \ |
|||
m(v1, v2, v3, v4, v5, 55, x) \ |
|||
ZWSD_MACROS_ID(V5M55(m, v1, v2, v3, v4, v5, __VA_ARGS__)) |
|||
#define V5M57(m, v1, v2, v3, v4, v5, x, ...) \ |
|||
m(v1, v2, v3, v4, v5, 56, x) \ |
|||
ZWSD_MACROS_ID(V5M56(m, v1, v2, v3, v4, v5, __VA_ARGS__)) |
|||
#define V5M58(m, v1, v2, v3, v4, v5, x, ...) \ |
|||
m(v1, v2, v3, v4, v5, 57, x) \ |
|||
ZWSD_MACROS_ID(V5M57(m, v1, v2, v3, v4, v5, __VA_ARGS__)) |
|||
#define V5M59(m, v1, v2, v3, v4, v5, x, ...) \ |
|||
m(v1, v2, v3, v4, v5, 58, x) \ |
|||
ZWSD_MACROS_ID(V5M58(m, v1, v2, v3, v4, v5, __VA_ARGS__)) |
|||
#define V5M60(m, v1, v2, v3, v4, v5, x, ...) \ |
|||
m(v1, v2, v3, v4, v5, 59, x) \ |
|||
ZWSD_MACROS_ID(V5M59(m, v1, v2, v3, v4, v5, __VA_ARGS__)) |
|||
#define V5M61(m, v1, v2, v3, v4, v5, x, ...) \ |
|||
m(v1, v2, v3, v4, v5, 60, x) \ |
|||
ZWSD_MACROS_ID(V5M60(m, v1, v2, v3, v4, v5, __VA_ARGS__)) |
|||
#define V5M62(m, v1, v2, v3, v4, v5, x, ...) \ |
|||
m(v1, v2, v3, v4, v5, 61, x) \ |
|||
ZWSD_MACROS_ID(V5M61(m, v1, v2, v3, v4, v5, __VA_ARGS__)) |
|||
#define V5M63(m, v1, v2, v3, v4, v5, x, ...) \ |
|||
m(v1, v2, v3, v4, v5, 62, x) \ |
|||
ZWSD_MACROS_ID(V5M62(m, v1, v2, v3, v4, v5, __VA_ARGS__)) |
|||
#define V5M64(m, v1, v2, v3, v4, v5, x, ...) \ |
|||
m(v1, v2, v3, v4, v5, 63, x) \ |
|||
ZWSD_MACROS_ID(V5M63(m, v1, v2, v3, v4, v5, __VA_ARGS__)) |
|||
|
@ -0,0 +1,116 @@ |
|||
//
|
|||
// Created by zhaohe on 19-5-30.
|
|||
//
|
|||
|
|||
#pragma once
|
|||
#include <exception>
|
|||
#include <fstream>
|
|||
#include <iostream>
|
|||
#include <list>
|
|||
#include <map>
|
|||
#include <memory>
|
|||
#include <mutex>
|
|||
#include <set>
|
|||
#include <sstream>
|
|||
#include <string>
|
|||
#include <vector>
|
|||
// #include "zwtimecpp/core/core.hpp"
|
|||
// #include "zwtimecpp/core/exception/base_exception.hpp"
|
|||
// #include "zwtimecpp/core/exception/base_exception.hpp"
|
|||
// #include "zwtimecpp/core/exception/null_expection.hpp"
|
|||
// #include "zwtimecpp/core/logger/logger_factory.hpp"
|
|||
// #include "zwtimecpp/core/utils/data.hpp"
|
|||
#include "iflytopcpp/core/basic/marco/data.hpp"
|
|||
#include "iflytopcpp/core/basic/nlohmann/json.hpp"
|
|||
#include "iflytopcpp/core/components/file_util.hpp"
|
|||
#include "iflytopcpp/core/spdlogfactory/logger.hpp"
|
|||
#include "iflytopcpp/core/zexception/zexception.hpp"
|
|||
// #include "zwtimecpp/core/utils/zmath.hpp"
|
|||
|
|||
// ConfigurationService的实现
|
|||
/*----------------------------------------------------------------*/ |
|||
#define ConfigServiceENABLE_GET_AND_SET2(type, propertyName, defaultValue) \
|
|||
private: \ |
|||
type propertyName = defaultValue; \ |
|||
\ |
|||
public: \ |
|||
virtual const type &get_##propertyName() const { \ |
|||
lock_guard<recursive_mutex> lock(lock_); \ |
|||
return propertyName; \ |
|||
} \ |
|||
virtual void set_##propertyName(const type &propertyName) { \ |
|||
lock_guard<recursive_mutex> lock(lock_); \ |
|||
this->propertyName = propertyName; \ |
|||
flushConfigToFile(); \ |
|||
} |
|||
|
|||
#define configTemplateGET_CONFIG2(type, propertyName, defaultValue) \
|
|||
try { \ |
|||
j3.at(#propertyName).get_to(propertyName); \ |
|||
} catch (const std::exception &e) { \ |
|||
onParseConfigFail(#propertyName, e); \ |
|||
} |
|||
|
|||
#define configTemplateSAVE_CONFIG2(type, propertyName, defaultValue) j[#propertyName] = propertyName;
|
|||
|
|||
#define configTemplateDEFILE_CONFIG_SERVICE2(name, configList, configfilePath, onParseFiale) \
|
|||
namespace iflytop { \ |
|||
using namespace std; \ |
|||
using namespace core; \ |
|||
using namespace nlohmann; \ |
|||
class name { \ |
|||
ENABLE_LOGGER(name) \ |
|||
string configFile; \ |
|||
\ |
|||
mutable recursive_mutex lock_; \ |
|||
bool forTest = false; \ |
|||
\ |
|||
public: \ |
|||
name() {} \ |
|||
\ |
|||
public: \ |
|||
void initialize(string configFile = configfilePath) { \ |
|||
logger->debug("initialize"); \ |
|||
\ |
|||
this->configFile = configFile; \ |
|||
json j3; \ |
|||
\ |
|||
string config; \ |
|||
if (!FileUtil().exist(configFile)) { \ |
|||
logger->error("can't find configfile ,create default config:{}", configFile); \ |
|||
auto defaultConfigFile = FileUtil().openTrunc(configFile); \ |
|||
defaultConfigFile->write("{}", 2); \ |
|||
} \ |
|||
config = FileUtil().readFileAsString(configFile); \ |
|||
if (config.empty()) { \ |
|||
flushConfigToFile(); \ |
|||
config = FileUtil().readFileAsString(configFile); \ |
|||
} \ |
|||
\ |
|||
try { \ |
|||
j3 = json::parse(config); \ |
|||
} catch (const std::exception &e) { \ |
|||
throw zexception("Parse config fail......" + string(e.what())); \ |
|||
} \ |
|||
configList(configTemplateGET_CONFIG2); \ |
|||
flushConfigToFile(); \ |
|||
} \ |
|||
configList(ConfigServiceENABLE_GET_AND_SET2); \ |
|||
\ |
|||
public: \ |
|||
private: \ |
|||
void flushConfigToFile() { \ |
|||
json j; \ |
|||
configList(configTemplateSAVE_CONFIG2); \ |
|||
bool flushSuccess = FileUtil().writeToFile(configFile, j.dump(2)); \ |
|||
if (!flushSuccess) { \ |
|||
logger->error("flush config to logfile fail"); \ |
|||
} \ |
|||
}; \ |
|||
static shared_ptr<name> &instance() { \ |
|||
static shared_ptr<name> value; \ |
|||
return value; \ |
|||
} \ |
|||
void onParseConfigFail(string file_name, const std::exception &e) { onParseFiale; }; \ |
|||
}; \ |
|||
} |
Write
Preview
Loading…
Cancel
Save
Reference in new issue