xref: /Universal-ctags/Units/parser-cxx.r/cxx11enum.cpp.d/input.cpp (revision 3db7df97b8c28327be9cefe72e6ba637ef3ff7f3)
1 
2 #define SOME_MACRO(a,b) 1
3 
4 typedef int whatever_t;
5 typedef unsigned char uint8_t;
6 
7 enum E1 : int { E1_member1, E1_member2 };
8 enum E2 : long { E2_member1 };
9 enum E3 : unsigned int { E3_member1 };
10 enum E4 : unsigned long long int { } E4_var1, E4_var2;
11 enum E5 : whatever_t { E5_member1 } E5_var1;
12 
13 enum class EC1 { };
14 enum class EC2 : short { EC2_member1, EC2_member2 };
15 
16 enum struct ES1 { };
17 enum struct ES2 : unsigned { ES2_member1, ES2_member2 };
18 enum struct ES3 : uint8_t { ES3_member1 = SOME_MACRO(1,whatever appears here), ES3_member2 };
19 enum struct ES4 : unsigned long long int { ES4_member1 = (1234 * 10) << 1 };
20 enum struct ES5 : signed whatever_t { } ES4_var1[10];
21 
22 enum { Anon1_member1, Anon1_member2 };
23 enum : unsigned int { Anon2_member1 };
24 enum : whatever_t { Anon3_member1 };
25 
26 class Class
27 {
28 	enum CE1 : int { CE1_member1 = 10, CE1_member2 = (CE1_member1 << 10) };
29 	enum class CEC1 : unsigned long int { CEC1_member1 };
30 	enum struct CES1 : int { CES1_member1 };
31 	virtual enum CEC1 Function1(enum CE1 parameter);
32 };
33 
34 // Forward declarations: we ignore them.
35 enum F1 : whatever_t;
36 enum class F2;
37 enum class F3 : whatever_t;
38 enum struct F4 : unsigned int;
39 
40 // variable declarations
41 enum E1 E1_var1;
42 enum EC1 EC1_var1[10][10];
43 //enum class EC2 EC2_var1; <-- this is NOT valid C++11
44 
45 
46 
47