| #pragma once |
| |
| #define TESTMACRO |
| |
| class Test { |
| int m_int; |
| double m_double; |
| public: |
| static const char* name(); |
| Test(int foo); |
| Test(double foo); |
| |
| static const int COUNTDOWN[]; |
| static const int* COUNTDOWN_PTR; |
| static const int* countdown(); |
| }; |
| |
| class ITest { |
| virtual void foo() = 0; |
| }; |
| |
| namespace testing { |
| |
| typedef Test TypeAlias; |
| |
| } // namespace testing |
| |
| typedef testing::TypeAlias TypeAlias; |
| |
| namespace bitfields { |
| |
| struct First { |
| unsigned char three_bits_byte_one : 3; |
| // This starts a new byte, leaving 5 bits unused. |
| unsigned char :0; |
| |
| unsigned char six_bits_byte_two : 6; |
| unsigned char two_bits_byte_two : 2; |
| |
| /// Returns true if the bitfields match the arguments, false otherwise. |
| bool assert(unsigned char first, |
| unsigned char second, |
| unsigned char third); |
| }; |
| |
| struct Second { |
| int thirty_one_bits : 31; |
| bool one_bit : 1; |
| |
| /// Returns true if the bitfields match the arguments, false otherwise. |
| bool assert(int first, |
| bool second); |
| }; |
| |
| enum ItemKind { |
| ITEM_KIND_UNO = 0, |
| ITEM_KIND_DOS, |
| ITEM_KIND_TRES, |
| }; |
| |
| struct Third { |
| int flags : 28; |
| bool is_whatever : 1; |
| ItemKind kind : 3; |
| |
| /// Returns true if the bitfields match the arguments, false otherwise. |
| bool assert(int first, bool second, ItemKind third); |
| }; |
| |
| enum MyEnum { |
| ONE = 0, |
| TWO, |
| THREE, |
| FOUR, |
| }; |
| |
| struct Fourth { |
| MyEnum tag: 2; |
| unsigned long ptr: 48; |
| |
| /// Returns true if the bitfields match the arguments, false otherwise. |
| bool assert(MyEnum tag, unsigned long ptr); |
| }; |
| |
| struct Date2 { |
| unsigned short nWeekDay : 3; // 0..7 (3 bits) |
| unsigned short nMonthDay : 6; // 0..31 (6 bits) |
| unsigned short nMonth : 5; // 0..12 (5 bits) |
| unsigned short nYear : 8; // 0..100 (8 bits) |
| unsigned char byte : 8; |
| |
| bool assert(unsigned short nWeekDay, |
| unsigned short nMonthDay, |
| unsigned short nMonth, |
| unsigned short nYear, |
| unsigned short byte); |
| }; |
| |
| |
| struct Fifth { |
| unsigned short nWeekDay : 3; // 0..7 (3 bits) |
| unsigned short nMonthDay : 6; // 0..31 (6 bits) |
| unsigned short nMonth : 5; // 0..12 (5 bits) |
| unsigned short nYear : 8; // 0..100 (8 bits) |
| unsigned char byte; |
| |
| /// Returns true if the bitfields match the arguments, false otherwise. |
| bool assert(unsigned short nWeekDay, |
| unsigned short nMonthDay, |
| unsigned short nMonth, |
| unsigned short nYear, |
| unsigned char byte); |
| }; |
| |
| struct Sixth { |
| unsigned char byte; |
| unsigned char nWeekDay : 3; |
| unsigned char nMonth : 5; |
| unsigned char nMonthDay : 6; |
| |
| /// Returns true if the bitfields match the arguments, false otherwise. |
| bool assert(unsigned char byte, |
| unsigned char nWeekDay, |
| unsigned char nMonth, |
| unsigned char nMonthDay); |
| }; |
| |
| struct Seventh { |
| bool first_one_bit : 1; |
| unsigned int second_thirty_bits : 30; |
| unsigned short third_two_bits : 2; |
| unsigned int fourth_thirty_bits : 30; |
| unsigned short fifth_two_bits : 2; |
| bool sixth_one_bit : 1; |
| unsigned int seventh_thirty_bits : 30; |
| |
| /// Returns true if the bitfields match the arguments, false otherwise. |
| bool assert(bool first, |
| int second, |
| unsigned short third, |
| unsigned int fourth, |
| unsigned short fifth, |
| bool sixth, |
| int seventh); |
| }; |
| |
| } // namespace bitfields |
| |
| struct AutoRestoreBool { |
| bool* m_ptr; |
| bool m_value; |
| |
| AutoRestoreBool(bool*); |
| ~AutoRestoreBool(); |
| }; |