Gast
#6651976
[code struct CLASS_NAME {
\
using DataT = DATA_TYPE;
\
\
static volatile DataT* Addr() {return ®_NAME
;} \
\
static DataT Get () {return REG_NAME
;} \
static void Set (auto value){ REG_NAME =
DataT(value);} \
static void Or (auto value){ REG_NAME |=
DataT(value);} \
\
static void And (auto value){ REG_NAME &=
DataT(value);} \
static void Xor (auto value){ REG_NAME ^=
DataT(value);} \
\
static void AndOr (auto andMask,
\
auto orMask ) { REG_NAME =
\
( REG_NAME & DataT(
andMask)\
|
DataT(orMask);}\
static void ClrSet (auto andMask,
\
auto orMask ) { REG_NAME =
\
( REG_NAME &
DataT(~andMask)\
|
DataT(orMask);}\
\
static bool BitIsSet (auto mask) {return (REG_NAME &
DataT(mask));} \
static bool BitIsClear(auto mask) {return!(REG_NAME &
DataT(mask));} \
};[/code]