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 | }; |
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.