1 | struct CLASS_NAME { \
|
2 | using DataT = DATA_TYPE; \
|
3 | \
|
4 | static volatile DataT* Addr() {return ®_NAME ;} \
|
5 | \
|
6 | static DataT Get () {return REG_NAME ;} \
|
7 | static void Set (auto value){ REG_NAME = DataT(value);} \
|
8 | static void Or (auto value){ REG_NAME |= DataT(value);} \
|
9 | \
|
10 | static void And (auto value){ REG_NAME &= DataT(value);} \
|
11 | static void Xor (auto value){ REG_NAME ^= DataT(value);} \
|
12 | \
|
13 | static void AndOr (auto andMask, \
|
14 | auto orMask ) { REG_NAME = \
|
15 | ( REG_NAME & DataT( andMask)\
|
16 | | DataT(orMask);}\
|
17 | static void ClrSet (auto andMask, \
|
18 | auto orMask ) { REG_NAME = \
|
19 | ( REG_NAME & DataT(~andMask)\
|
20 | | DataT(orMask);}\
|
21 | \
|
22 | static bool BitIsSet (auto mask) {return (REG_NAME & DataT(mask));} \
|
23 | static bool BitIsClear(auto mask) {return!(REG_NAME & DataT(mask));} \
|
24 | };
|