#ifndef __BITFIELDS_HPP__ #define __BITFIELDS_HPP__ #include #define get_bit(__bit_field, __bit_n ) __bit_field.bits.b##__bit_n #define set_bit(__bit_field, __bit_n ) __bit_field.bits.b##__bit_n = true #define clr_bit(__bit_field, __bit_n ) __bit_field.bits.b##__bit_n = false #define tgl_bit(__bit_field, __bit_n ) __bit_field.bits.b##__bit_n = !__bit_field.bits.b##__bit_n #define val_bit(__bit_field, __bit_n, __val ) __bit_field.bits.b##__bit_n = __val namespace ostd { union BitField_8 { uint8_t value = 0; struct { bool b0 : 1; bool b1 : 1; bool b2 : 1; bool b3 : 1; bool b4 : 1; bool b5 : 1; bool b6 : 1; bool b7 : 1; } bits; }; union BitField_16 { uint16_t value = 0; struct { bool b0 : 1; bool b1 : 1; bool b2 : 1; bool b3 : 1; bool b4 : 1; bool b5 : 1; bool b6 : 1; bool b7 : 1; bool b8 : 1; bool b9 : 1; bool b10 : 1; bool b11 : 1; bool b12 : 1; bool b13 : 1; bool b14 : 1; bool b15 : 1; } bits; }; union BitField_32 { uint32_t value = 0; struct { bool b0 : 1; bool b1 : 1; bool b2 : 1; bool b3 : 1; bool b4 : 1; bool b5 : 1; bool b6 : 1; bool b7 : 1; bool b8 : 1; bool b9 : 1; bool b10 : 1; bool b11 : 1; bool b12 : 1; bool b13 : 1; bool b14 : 1; bool b15 : 1; bool b16 : 1; bool b17 : 1; bool b18 : 1; bool b19 : 1; bool b20 : 1; bool b21 : 1; bool b22 : 1; bool b23 : 1; bool b24 : 1; bool b25 : 1; bool b26 : 1; bool b27 : 1; bool b28 : 1; bool b29 : 1; bool b30 : 1; bool b31 : 1; } bits; }; union BitField_64 { uint64_t value = 0; struct { bool b0 : 1; bool b1 : 1; bool b2 : 1; bool b3 : 1; bool b4 : 1; bool b5 : 1; bool b6 : 1; bool b7 : 1; bool b8 : 1; bool b9 : 1; bool b10 : 1; bool b11 : 1; bool b12 : 1; bool b13 : 1; bool b14 : 1; bool b15 : 1; bool b16 : 1; bool b17 : 1; bool b18 : 1; bool b19 : 1; bool b20 : 1; bool b21 : 1; bool b22 : 1; bool b23 : 1; bool b24 : 1; bool b25 : 1; bool b26 : 1; bool b27 : 1; bool b28 : 1; bool b29 : 1; bool b30 : 1; bool b31 : 1; bool b32 : 1; bool b33 : 1; bool b34 : 1; bool b35 : 1; bool b36 : 1; bool b37 : 1; bool b38 : 1; bool b39 : 1; bool b40 : 1; bool b41 : 1; bool b42 : 1; bool b43 : 1; bool b44 : 1; bool b45 : 1; bool b46 : 1; bool b47 : 1; bool b48 : 1; bool b49 : 1; bool b50 : 1; bool b51 : 1; bool b52 : 1; bool b53 : 1; bool b54 : 1; bool b55 : 1; bool b56 : 1; bool b57 : 1; bool b58 : 1; bool b59 : 1; bool b60 : 1; bool b61 : 1; bool b62 : 1; bool b63 : 1; } bits; } ; class Bits { public: //8-Bit field static inline bool get(const BitField_8& bf, const uint8_t& bit) { switch (bit) { case 0: return get_bit(bf, 0); case 1: return get_bit(bf, 1); case 2: return get_bit(bf, 2); case 3: return get_bit(bf, 3); case 4: return get_bit(bf, 4); case 5: return get_bit(bf, 5); case 6: return get_bit(bf, 6); case 7: return get_bit(bf, 7); default: return false; } } static inline void set(BitField_8& bf, const uint8_t& bit) { switch (bit) { case 0: set_bit(bf, 0); break; case 1: set_bit(bf, 1); break; case 2: set_bit(bf, 2); break; case 3: set_bit(bf, 3); break; case 4: set_bit(bf, 4); break; case 5: set_bit(bf, 5); break; case 6: set_bit(bf, 6); break; case 7: set_bit(bf, 7); break; default: break; } } static inline void clr(BitField_8& bf, const uint8_t& bit) { switch (bit) { case 0: clr_bit(bf, 0); break; case 1: clr_bit(bf, 1); break; case 2: clr_bit(bf, 2); break; case 3: clr_bit(bf, 3); break; case 4: clr_bit(bf, 4); break; case 5: clr_bit(bf, 5); break; case 6: clr_bit(bf, 6); break; case 7: clr_bit(bf, 7); break; default: break; } } static inline void tgl(BitField_8& bf, const uint8_t& bit) { switch (bit) { case 0: tgl_bit(bf, 0); break; case 1: tgl_bit(bf, 1); break; case 2: tgl_bit(bf, 2); break; case 3: tgl_bit(bf, 3); break; case 4: tgl_bit(bf, 4); break; case 5: tgl_bit(bf, 5); break; case 6: tgl_bit(bf, 6); break; case 7: tgl_bit(bf, 7); break; default: break; } } static inline void val(BitField_8& bf, const uint8_t& bit, bool value) { switch (bit) { case 0: val_bit(bf, 0, value); break; case 1: val_bit(bf, 1, value); break; case 2: val_bit(bf, 2, value); break; case 3: val_bit(bf, 3, value); break; case 4: val_bit(bf, 4, value); break; case 5: val_bit(bf, 5, value); break; case 6: val_bit(bf, 6, value); break; case 7: val_bit(bf, 7, value); break; default: break; } } //16-Bit field static inline bool get(const BitField_16& bf, const uint8_t& bit) { switch (bit) { case 0: return get_bit(bf, 0); case 1: return get_bit(bf, 1); case 2: return get_bit(bf, 2); case 3: return get_bit(bf, 3); case 4: return get_bit(bf, 4); case 5: return get_bit(bf, 5); case 6: return get_bit(bf, 6); case 7: return get_bit(bf, 7); case 8: return get_bit(bf, 8); case 9: return get_bit(bf, 9); case 10: return get_bit(bf, 10); case 11: return get_bit(bf, 11); case 12: return get_bit(bf, 12); case 13: return get_bit(bf, 13); case 14: return get_bit(bf, 14); case 15: return get_bit(bf, 15); default: return false; } } static inline void set(BitField_16& bf, const uint8_t& bit) { switch (bit) { case 0: set_bit(bf, 0); break; case 1: set_bit(bf, 1); break; case 2: set_bit(bf, 2); break; case 3: set_bit(bf, 3); break; case 4: set_bit(bf, 4); break; case 5: set_bit(bf, 5); break; case 6: set_bit(bf, 6); break; case 7: set_bit(bf, 7); break; case 8: set_bit(bf, 8); break; case 9: set_bit(bf, 9); break; case 10: set_bit(bf, 10); break; case 11: set_bit(bf, 11); break; case 12: set_bit(bf, 12); break; case 13: set_bit(bf, 13); break; case 14: set_bit(bf, 14); break; case 15: set_bit(bf, 15); break; default: break; } } static inline void clr(BitField_16& bf, const uint8_t& bit) { switch (bit) { case 0: clr_bit(bf, 0); break; case 1: clr_bit(bf, 1); break; case 2: clr_bit(bf, 2); break; case 3: clr_bit(bf, 3); break; case 4: clr_bit(bf, 4); break; case 5: clr_bit(bf, 5); break; case 6: clr_bit(bf, 6); break; case 7: clr_bit(bf, 7); break; case 8: clr_bit(bf, 8); break; case 9: clr_bit(bf, 9); break; case 10: clr_bit(bf, 10); break; case 11: clr_bit(bf, 11); break; case 12: clr_bit(bf, 12); break; case 13: clr_bit(bf, 13); break; case 14: clr_bit(bf, 14); break; case 15: clr_bit(bf, 15); break; default: break; } } static inline void tgl(BitField_16& bf, const uint8_t& bit) { switch (bit) { case 0: tgl_bit(bf, 0); break; case 1: tgl_bit(bf, 1); break; case 2: tgl_bit(bf, 2); break; case 3: tgl_bit(bf, 3); break; case 4: tgl_bit(bf, 4); break; case 5: tgl_bit(bf, 5); break; case 6: tgl_bit(bf, 6); break; case 7: tgl_bit(bf, 7); break; case 8: tgl_bit(bf, 8); break; case 9: tgl_bit(bf, 9); break; case 10: tgl_bit(bf, 10); break; case 11: tgl_bit(bf, 11); break; case 12: tgl_bit(bf, 12); break; case 13: tgl_bit(bf, 13); break; case 14: tgl_bit(bf, 14); break; case 15: tgl_bit(bf, 15); break; default: break; } } static inline void val(BitField_16& bf, const uint8_t& bit, bool value) { switch (bit) { case 0: val_bit(bf, 0, value); break; case 1: val_bit(bf, 1, value); break; case 2: val_bit(bf, 2, value); break; case 3: val_bit(bf, 3, value); break; case 4: val_bit(bf, 4, value); break; case 5: val_bit(bf, 5, value); break; case 6: val_bit(bf, 6, value); break; case 7: val_bit(bf, 7, value); break; case 8: val_bit(bf, 8, value); break; case 9: val_bit(bf, 9, value); break; case 10: val_bit(bf, 10, value); break; case 11: val_bit(bf, 11, value); break; case 12: val_bit(bf, 12, value); break; case 13: val_bit(bf, 13, value); break; case 14: val_bit(bf, 14, value); break; case 15: val_bit(bf, 15, value); break; default: break; } } //32-Bit field static inline bool get(const BitField_32& bf, const uint8_t& bit) { switch (bit) { case 0: return get_bit(bf, 0); case 1: return get_bit(bf, 1); case 2: return get_bit(bf, 2); case 3: return get_bit(bf, 3); case 4: return get_bit(bf, 4); case 5: return get_bit(bf, 5); case 6: return get_bit(bf, 6); case 7: return get_bit(bf, 7); case 8: return get_bit(bf, 8); case 9: return get_bit(bf, 9); case 10: return get_bit(bf, 10); case 11: return get_bit(bf, 11); case 12: return get_bit(bf, 12); case 13: return get_bit(bf, 13); case 14: return get_bit(bf, 14); case 15: return get_bit(bf, 15); case 16: return get_bit(bf, 16); case 17: return get_bit(bf, 17); case 18: return get_bit(bf, 18); case 19: return get_bit(bf, 19); case 20: return get_bit(bf, 20); case 21: return get_bit(bf, 21); case 22: return get_bit(bf, 22); case 23: return get_bit(bf, 23); case 24: return get_bit(bf, 24); case 25: return get_bit(bf, 25); case 26: return get_bit(bf, 26); case 27: return get_bit(bf, 27); case 28: return get_bit(bf, 28); case 29: return get_bit(bf, 29); case 30: return get_bit(bf, 30); case 31: return get_bit(bf, 31); default: return false; } } static inline void set(BitField_32& bf, const uint8_t& bit) { switch (bit) { case 0: set_bit(bf, 0); break; case 1: set_bit(bf, 1); break; case 2: set_bit(bf, 2); break; case 3: set_bit(bf, 3); break; case 4: set_bit(bf, 4); break; case 5: set_bit(bf, 5); break; case 6: set_bit(bf, 6); break; case 7: set_bit(bf, 7); break; case 8: set_bit(bf, 8); break; case 9: set_bit(bf, 9); break; case 10: set_bit(bf, 10); break; case 11: set_bit(bf, 11); break; case 12: set_bit(bf, 12); break; case 13: set_bit(bf, 13); break; case 14: set_bit(bf, 14); break; case 15: set_bit(bf, 15); break; case 16: set_bit(bf, 16); break; case 17: set_bit(bf, 17); break; case 18: set_bit(bf, 18); break; case 19: set_bit(bf, 19); break; case 20: set_bit(bf, 20); break; case 21: set_bit(bf, 21); break; case 22: set_bit(bf, 22); break; case 23: set_bit(bf, 23); break; case 24: set_bit(bf, 24); break; case 25: set_bit(bf, 25); break; case 26: set_bit(bf, 26); break; case 27: set_bit(bf, 27); break; case 28: set_bit(bf, 28); break; case 29: set_bit(bf, 29); break; case 30: set_bit(bf, 30); break; case 31: set_bit(bf, 31); break; default: break; } } static inline void clr(BitField_32& bf, const uint8_t& bit) { switch (bit) { case 0: clr_bit(bf, 0); break; case 1: clr_bit(bf, 1); break; case 2: clr_bit(bf, 2); break; case 3: clr_bit(bf, 3); break; case 4: clr_bit(bf, 4); break; case 5: clr_bit(bf, 5); break; case 6: clr_bit(bf, 6); break; case 7: clr_bit(bf, 7); break; case 8: clr_bit(bf, 8); break; case 9: clr_bit(bf, 9); break; case 10: clr_bit(bf, 10); break; case 11: clr_bit(bf, 11); break; case 12: clr_bit(bf, 12); break; case 13: clr_bit(bf, 13); break; case 14: clr_bit(bf, 14); break; case 15: clr_bit(bf, 15); break; case 16: clr_bit(bf, 16); break; case 17: clr_bit(bf, 17); break; case 18: clr_bit(bf, 18); break; case 19: clr_bit(bf, 19); break; case 20: clr_bit(bf, 20); break; case 21: clr_bit(bf, 21); break; case 22: clr_bit(bf, 22); break; case 23: clr_bit(bf, 23); break; case 24: clr_bit(bf, 24); break; case 25: clr_bit(bf, 25); break; case 26: clr_bit(bf, 26); break; case 27: clr_bit(bf, 27); break; case 28: clr_bit(bf, 28); break; case 29: clr_bit(bf, 29); break; case 30: clr_bit(bf, 30); break; case 31: clr_bit(bf, 31); break; default: break; } } static inline void tgl(BitField_32& bf, const uint8_t& bit) { switch (bit) { case 0: tgl_bit(bf, 0); break; case 1: tgl_bit(bf, 1); break; case 2: tgl_bit(bf, 2); break; case 3: tgl_bit(bf, 3); break; case 4: tgl_bit(bf, 4); break; case 5: tgl_bit(bf, 5); break; case 6: tgl_bit(bf, 6); break; case 7: tgl_bit(bf, 7); break; case 8: tgl_bit(bf, 8); break; case 9: tgl_bit(bf, 9); break; case 10: tgl_bit(bf, 10); break; case 11: tgl_bit(bf, 11); break; case 12: tgl_bit(bf, 12); break; case 13: tgl_bit(bf, 13); break; case 14: tgl_bit(bf, 14); break; case 15: tgl_bit(bf, 15); break; case 16: tgl_bit(bf, 16); break; case 17: tgl_bit(bf, 17); break; case 18: tgl_bit(bf, 18); break; case 19: tgl_bit(bf, 19); break; case 20: tgl_bit(bf, 20); break; case 21: tgl_bit(bf, 21); break; case 22: tgl_bit(bf, 22); break; case 23: tgl_bit(bf, 23); break; case 24: tgl_bit(bf, 24); break; case 25: tgl_bit(bf, 25); break; case 26: tgl_bit(bf, 26); break; case 27: tgl_bit(bf, 27); break; case 28: tgl_bit(bf, 28); break; case 29: tgl_bit(bf, 29); break; case 30: tgl_bit(bf, 30); break; case 31: tgl_bit(bf, 31); break; default: break; } } static inline void val(BitField_32& bf, const uint8_t& bit, bool value) { switch (bit) { case 0: val_bit(bf, 0, value); break; case 1: val_bit(bf, 1, value); break; case 2: val_bit(bf, 2, value); break; case 3: val_bit(bf, 3, value); break; case 4: val_bit(bf, 4, value); break; case 5: val_bit(bf, 5, value); break; case 6: val_bit(bf, 6, value); break; case 7: val_bit(bf, 7, value); break; case 8: val_bit(bf, 8, value); break; case 9: val_bit(bf, 9, value); break; case 10: val_bit(bf, 10, value); break; case 11: val_bit(bf, 11, value); break; case 12: val_bit(bf, 12, value); break; case 13: val_bit(bf, 13, value); break; case 14: val_bit(bf, 14, value); break; case 15: val_bit(bf, 15, value); break; case 16: val_bit(bf, 16, value); break; case 17: val_bit(bf, 17, value); break; case 18: val_bit(bf, 18, value); break; case 19: val_bit(bf, 19, value); break; case 20: val_bit(bf, 20, value); break; case 21: val_bit(bf, 21, value); break; case 22: val_bit(bf, 22, value); break; case 23: val_bit(bf, 23, value); break; case 24: val_bit(bf, 24, value); break; case 25: val_bit(bf, 25, value); break; case 26: val_bit(bf, 26, value); break; case 27: val_bit(bf, 27, value); break; case 28: val_bit(bf, 28, value); break; case 29: val_bit(bf, 29, value); break; case 30: val_bit(bf, 30, value); break; case 31: val_bit(bf, 31, value); break; default: break; } } //64-Bit field static inline bool get(const BitField_64& bf, const uint8_t& bit) { switch (bit) { case 0: return get_bit(bf, 0); case 1: return get_bit(bf, 1); case 2: return get_bit(bf, 2); case 3: return get_bit(bf, 3); case 4: return get_bit(bf, 4); case 5: return get_bit(bf, 5); case 6: return get_bit(bf, 6); case 7: return get_bit(bf, 7); case 8: return get_bit(bf, 8); case 9: return get_bit(bf, 9); case 10: return get_bit(bf, 10); case 11: return get_bit(bf, 11); case 12: return get_bit(bf, 12); case 13: return get_bit(bf, 13); case 14: return get_bit(bf, 14); case 15: return get_bit(bf, 15); case 16: return get_bit(bf, 16); case 17: return get_bit(bf, 17); case 18: return get_bit(bf, 18); case 19: return get_bit(bf, 19); case 20: return get_bit(bf, 20); case 21: return get_bit(bf, 21); case 22: return get_bit(bf, 22); case 23: return get_bit(bf, 23); case 24: return get_bit(bf, 24); case 25: return get_bit(bf, 25); case 26: return get_bit(bf, 26); case 27: return get_bit(bf, 27); case 28: return get_bit(bf, 28); case 29: return get_bit(bf, 29); case 30: return get_bit(bf, 30); case 31: return get_bit(bf, 31); case 32: return get_bit(bf, 32); case 33: return get_bit(bf, 33); case 34: return get_bit(bf, 34); case 35: return get_bit(bf, 35); case 36: return get_bit(bf, 36); case 37: return get_bit(bf, 37); case 38: return get_bit(bf, 38); case 39: return get_bit(bf, 39); case 40: return get_bit(bf, 40); case 41: return get_bit(bf, 41); case 42: return get_bit(bf, 42); case 43: return get_bit(bf, 43); case 44: return get_bit(bf, 44); case 45: return get_bit(bf, 45); case 46: return get_bit(bf, 46); case 47: return get_bit(bf, 47); case 48: return get_bit(bf, 48); case 49: return get_bit(bf, 49); case 50: return get_bit(bf, 50); case 51: return get_bit(bf, 51); case 52: return get_bit(bf, 52); case 53: return get_bit(bf, 53); case 54: return get_bit(bf, 54); case 55: return get_bit(bf, 55); case 56: return get_bit(bf, 56); case 57: return get_bit(bf, 57); case 58: return get_bit(bf, 58); case 59: return get_bit(bf, 59); case 60: return get_bit(bf, 60); case 61: return get_bit(bf, 61); case 62: return get_bit(bf, 62); case 63: return get_bit(bf, 63); default: return false; } } static inline void set(BitField_64& bf, const uint8_t& bit) { switch (bit) { case 0: set_bit(bf, 0); break; case 1: set_bit(bf, 1); break; case 2: set_bit(bf, 2); break; case 3: set_bit(bf, 3); break; case 4: set_bit(bf, 4); break; case 5: set_bit(bf, 5); break; case 6: set_bit(bf, 6); break; case 7: set_bit(bf, 7); break; case 8: set_bit(bf, 8); break; case 9: set_bit(bf, 9); break; case 10: set_bit(bf, 10); break; case 11: set_bit(bf, 11); break; case 12: set_bit(bf, 12); break; case 13: set_bit(bf, 13); break; case 14: set_bit(bf, 14); break; case 15: set_bit(bf, 15); break; case 16: set_bit(bf, 16); break; case 17: set_bit(bf, 17); break; case 18: set_bit(bf, 18); break; case 19: set_bit(bf, 19); break; case 20: set_bit(bf, 20); break; case 21: set_bit(bf, 21); break; case 22: set_bit(bf, 22); break; case 23: set_bit(bf, 23); break; case 24: set_bit(bf, 24); break; case 25: set_bit(bf, 25); break; case 26: set_bit(bf, 26); break; case 27: set_bit(bf, 27); break; case 28: set_bit(bf, 28); break; case 29: set_bit(bf, 29); break; case 30: set_bit(bf, 30); break; case 31: set_bit(bf, 31); break; case 32: set_bit(bf, 32); break; case 33: set_bit(bf, 33); break; case 34: set_bit(bf, 34); break; case 35: set_bit(bf, 35); break; case 36: set_bit(bf, 36); break; case 37: set_bit(bf, 37); break; case 38: set_bit(bf, 38); break; case 39: set_bit(bf, 39); break; case 40: set_bit(bf, 40); break; case 41: set_bit(bf, 41); break; case 42: set_bit(bf, 42); break; case 43: set_bit(bf, 43); break; case 44: set_bit(bf, 44); break; case 45: set_bit(bf, 45); break; case 46: set_bit(bf, 46); break; case 47: set_bit(bf, 47); break; case 48: set_bit(bf, 48); break; case 49: set_bit(bf, 49); break; case 50: set_bit(bf, 50); break; case 51: set_bit(bf, 51); break; case 52: set_bit(bf, 52); break; case 53: set_bit(bf, 53); break; case 54: set_bit(bf, 54); break; case 55: set_bit(bf, 55); break; case 56: set_bit(bf, 56); break; case 57: set_bit(bf, 57); break; case 58: set_bit(bf, 58); break; case 59: set_bit(bf, 59); break; case 60: set_bit(bf, 60); break; case 61: set_bit(bf, 61); break; case 62: set_bit(bf, 62); break; case 63: set_bit(bf, 63); break; default: break; } } static inline void clr(BitField_64& bf, const uint8_t& bit) { switch (bit) { case 0: clr_bit(bf, 0); break; case 1: clr_bit(bf, 1); break; case 2: clr_bit(bf, 2); break; case 3: clr_bit(bf, 3); break; case 4: clr_bit(bf, 4); break; case 5: clr_bit(bf, 5); break; case 6: clr_bit(bf, 6); break; case 7: clr_bit(bf, 7); break; case 8: clr_bit(bf, 8); break; case 9: clr_bit(bf, 9); break; case 10: clr_bit(bf, 10); break; case 11: clr_bit(bf, 11); break; case 12: clr_bit(bf, 12); break; case 13: clr_bit(bf, 13); break; case 14: clr_bit(bf, 14); break; case 15: clr_bit(bf, 15); break; case 16: clr_bit(bf, 16); break; case 17: clr_bit(bf, 17); break; case 18: clr_bit(bf, 18); break; case 19: clr_bit(bf, 19); break; case 20: clr_bit(bf, 20); break; case 21: clr_bit(bf, 21); break; case 22: clr_bit(bf, 22); break; case 23: clr_bit(bf, 23); break; case 24: clr_bit(bf, 24); break; case 25: clr_bit(bf, 25); break; case 26: clr_bit(bf, 26); break; case 27: clr_bit(bf, 27); break; case 28: clr_bit(bf, 28); break; case 29: clr_bit(bf, 29); break; case 30: clr_bit(bf, 30); break; case 31: clr_bit(bf, 31); break; case 32: clr_bit(bf, 32); break; case 33: clr_bit(bf, 33); break; case 34: clr_bit(bf, 34); break; case 35: clr_bit(bf, 35); break; case 36: clr_bit(bf, 36); break; case 37: clr_bit(bf, 37); break; case 38: clr_bit(bf, 38); break; case 39: clr_bit(bf, 39); break; case 40: clr_bit(bf, 40); break; case 41: clr_bit(bf, 41); break; case 42: clr_bit(bf, 42); break; case 43: clr_bit(bf, 43); break; case 44: clr_bit(bf, 44); break; case 45: clr_bit(bf, 45); break; case 46: clr_bit(bf, 46); break; case 47: clr_bit(bf, 47); break; case 48: clr_bit(bf, 48); break; case 49: clr_bit(bf, 49); break; case 50: clr_bit(bf, 50); break; case 51: clr_bit(bf, 51); break; case 52: clr_bit(bf, 52); break; case 53: clr_bit(bf, 53); break; case 54: clr_bit(bf, 54); break; case 55: clr_bit(bf, 55); break; case 56: clr_bit(bf, 56); break; case 57: clr_bit(bf, 57); break; case 58: clr_bit(bf, 58); break; case 59: clr_bit(bf, 59); break; case 60: clr_bit(bf, 60); break; case 61: clr_bit(bf, 61); break; case 62: clr_bit(bf, 62); break; case 63: clr_bit(bf, 63); break; default: break; } } static inline void tgl(BitField_64& bf, const uint8_t& bit) { switch (bit) { case 0: tgl_bit(bf, 0); break; case 1: tgl_bit(bf, 1); break; case 2: tgl_bit(bf, 2); break; case 3: tgl_bit(bf, 3); break; case 4: tgl_bit(bf, 4); break; case 5: tgl_bit(bf, 5); break; case 6: tgl_bit(bf, 6); break; case 7: tgl_bit(bf, 7); break; case 8: tgl_bit(bf, 8); break; case 9: tgl_bit(bf, 9); break; case 10: tgl_bit(bf, 10); break; case 11: tgl_bit(bf, 11); break; case 12: tgl_bit(bf, 12); break; case 13: tgl_bit(bf, 13); break; case 14: tgl_bit(bf, 14); break; case 15: tgl_bit(bf, 15); break; case 16: tgl_bit(bf, 16); break; case 17: tgl_bit(bf, 17); break; case 18: tgl_bit(bf, 18); break; case 19: tgl_bit(bf, 19); break; case 20: tgl_bit(bf, 20); break; case 21: tgl_bit(bf, 21); break; case 22: tgl_bit(bf, 22); break; case 23: tgl_bit(bf, 23); break; case 24: tgl_bit(bf, 24); break; case 25: tgl_bit(bf, 25); break; case 26: tgl_bit(bf, 26); break; case 27: tgl_bit(bf, 27); break; case 28: tgl_bit(bf, 28); break; case 29: tgl_bit(bf, 29); break; case 30: tgl_bit(bf, 30); break; case 31: tgl_bit(bf, 31); break; case 32: tgl_bit(bf, 32); break; case 33: tgl_bit(bf, 33); break; case 34: tgl_bit(bf, 34); break; case 35: tgl_bit(bf, 35); break; case 36: tgl_bit(bf, 36); break; case 37: tgl_bit(bf, 37); break; case 38: tgl_bit(bf, 38); break; case 39: tgl_bit(bf, 39); break; case 40: tgl_bit(bf, 40); break; case 41: tgl_bit(bf, 41); break; case 42: tgl_bit(bf, 42); break; case 43: tgl_bit(bf, 43); break; case 44: tgl_bit(bf, 44); break; case 45: tgl_bit(bf, 45); break; case 46: tgl_bit(bf, 46); break; case 47: tgl_bit(bf, 47); break; case 48: tgl_bit(bf, 48); break; case 49: tgl_bit(bf, 49); break; case 50: tgl_bit(bf, 50); break; case 51: tgl_bit(bf, 51); break; case 52: tgl_bit(bf, 52); break; case 53: tgl_bit(bf, 53); break; case 54: tgl_bit(bf, 54); break; case 55: tgl_bit(bf, 55); break; case 56: tgl_bit(bf, 56); break; case 57: tgl_bit(bf, 57); break; case 58: tgl_bit(bf, 58); break; case 59: tgl_bit(bf, 59); break; case 60: tgl_bit(bf, 60); break; case 61: tgl_bit(bf, 61); break; case 62: tgl_bit(bf, 62); break; case 63: tgl_bit(bf, 63); break; default: break; } } static inline void val(BitField_64& bf, const uint8_t& bit, bool value) { switch (bit) { case 0: val_bit(bf, 0, value); break; case 1: val_bit(bf, 1, value); break; case 2: val_bit(bf, 2, value); break; case 3: val_bit(bf, 3, value); break; case 4: val_bit(bf, 4, value); break; case 5: val_bit(bf, 5, value); break; case 6: val_bit(bf, 6, value); break; case 7: val_bit(bf, 7, value); break; case 8: val_bit(bf, 8, value); break; case 9: val_bit(bf, 9, value); break; case 10: val_bit(bf, 10, value); break; case 11: val_bit(bf, 11, value); break; case 12: val_bit(bf, 12, value); break; case 13: val_bit(bf, 13, value); break; case 14: val_bit(bf, 14, value); break; case 15: val_bit(bf, 15, value); break; case 16: val_bit(bf, 16, value); break; case 17: val_bit(bf, 17, value); break; case 18: val_bit(bf, 18, value); break; case 19: val_bit(bf, 19, value); break; case 20: val_bit(bf, 20, value); break; case 21: val_bit(bf, 21, value); break; case 22: val_bit(bf, 22, value); break; case 23: val_bit(bf, 23, value); break; case 24: val_bit(bf, 24, value); break; case 25: val_bit(bf, 25, value); break; case 26: val_bit(bf, 26, value); break; case 27: val_bit(bf, 27, value); break; case 28: val_bit(bf, 28, value); break; case 29: val_bit(bf, 29, value); break; case 30: val_bit(bf, 30, value); break; case 31: val_bit(bf, 31, value); break; case 32: val_bit(bf, 32, value); break; case 33: val_bit(bf, 33, value); break; case 34: val_bit(bf, 34, value); break; case 35: val_bit(bf, 35, value); break; case 36: val_bit(bf, 36, value); break; case 37: val_bit(bf, 37, value); break; case 38: val_bit(bf, 38, value); break; case 39: val_bit(bf, 39, value); break; case 40: val_bit(bf, 40, value); break; case 41: val_bit(bf, 41, value); break; case 42: val_bit(bf, 42, value); break; case 43: val_bit(bf, 43, value); break; case 44: val_bit(bf, 44, value); break; case 45: val_bit(bf, 45, value); break; case 46: val_bit(bf, 46, value); break; case 47: val_bit(bf, 47, value); break; case 48: val_bit(bf, 48, value); break; case 49: val_bit(bf, 49, value); break; case 50: val_bit(bf, 50, value); break; case 51: val_bit(bf, 51, value); break; case 52: val_bit(bf, 52, value); break; case 53: val_bit(bf, 53, value); break; case 54: val_bit(bf, 54, value); break; case 55: val_bit(bf, 55, value); break; case 56: val_bit(bf, 56, value); break; case 57: val_bit(bf, 57, value); break; case 58: val_bit(bf, 58, value); break; case 59: val_bit(bf, 59, value); break; case 60: val_bit(bf, 60, value); break; case 61: val_bit(bf, 61, value); break; case 62: val_bit(bf, 62, value); break; case 63: val_bit(bf, 63, value); break; default: break; } } }; } // namesoace ox #endif