1
2
3
4
5
6 #include <sngcm/ast/Specifier.hpp>
7
8 namespace sngcm { namespace ast {
9
10 std::string SpecifierStr(Specifiers specifiers)
11 {
12 std::string s;
13 if ((specifiers & Specifiers::public_) != Specifiers::none)
14 {
15 s.append("public");
16 }
17 if ((specifiers & Specifiers::protected_) != Specifiers::none)
18 {
19 if (!s.empty())
20 {
21 s.append(1, ' ');
22 }
23 s.append("protected");
24 }
25 if ((specifiers & Specifiers::private_) != Specifiers::none)
26 {
27 if (!s.empty())
28 {
29 s.append(1, ' ');
30 }
31 s.append("private");
32 }
33 if ((specifiers & Specifiers::internal_) != Specifiers::none)
34 {
35 if (!s.empty())
36 {
37 s.append(1, ' ');
38 }
39 s.append("internal");
40 }
41 if ((specifiers & Specifiers::static_) != Specifiers::none)
42 {
43 if (!s.empty())
44 {
45 s.append(1, ' ');
46 }
47 s.append("static");
48 }
49 if ((specifiers & Specifiers::virtual_) != Specifiers::none)
50 {
51 if (!s.empty())
52 {
53 s.append(1, ' ');
54 }
55 s.append("virtual");
56 }
57 if ((specifiers & Specifiers::override_) != Specifiers::none)
58 {
59 if (!s.empty())
60 {
61 s.append(1, ' ');
62 }
63 s.append("override");
64 }
65 if ((specifiers & Specifiers::abstract_) != Specifiers::none)
66 {
67 if (!s.empty())
68 {
69 s.append(1, ' ');
70 }
71 s.append("abstract");
72 }
73 if ((specifiers & Specifiers::inline_) != Specifiers::none)
74 {
75 if (!s.empty())
76 {
77 s.append(1, ' ');
78 }
79 s.append("inline");
80 }
81 if ((specifiers & Specifiers::explicit_) != Specifiers::none)
82 {
83 if (!s.empty())
84 {
85 s.append(1, ' ');
86 }
87 s.append("explicit");
88 }
89 if ((specifiers & Specifiers::external_) != Specifiers::none)
90 {
91 if (!s.empty())
92 {
93 s.append(1, ' ');
94 }
95 s.append("extern");
96 }
97 if ((specifiers & Specifiers::suppress_) != Specifiers::none)
98 {
99 if (!s.empty())
100 {
101 s.append(1, ' ');
102 }
103 s.append("suppress");
104 }
105 if ((specifiers & Specifiers::default_) != Specifiers::none)
106 {
107 if (!s.empty())
108 {
109 s.append(1, ' ');
110 }
111 s.append("default");
112 }
113 if ((specifiers & Specifiers::constexpr_) != Specifiers::none)
114 {
115 if (!s.empty())
116 {
117 s.append(1, ' ');
118 }
119 s.append("constexpr");
120 }
121 if ((specifiers & Specifiers::cdecl_) != Specifiers::none)
122 {
123 if (!s.empty())
124 {
125 s.append(1, ' ');
126 }
127 s.append("cdecl");
128 }
129 if ((specifiers & Specifiers::nothrow_) != Specifiers::none)
130 {
131 if (!s.empty())
132 {
133 s.append(1, ' ');
134 }
135 s.append("nothrow");
136 }
137 if ((specifiers & Specifiers::throw_) != Specifiers::none)
138 {
139 if (!s.empty())
140 {
141 s.append(1, ' ');
142 }
143 s.append("throw");
144 }
145 if ((specifiers & Specifiers::new_) != Specifiers::none)
146 {
147 if (!s.empty())
148 {
149 s.append(1, ' ');
150 }
151 s.append("new");
152 }
153 if ((specifiers & Specifiers::unit_test_) != Specifiers::none)
154 {
155 if (!s.empty())
156 {
157 s.append(1, ' ');
158 }
159 s.append("unit_test");
160 }
161 return s;
162 }
163
164 bool StaticConstructorSpecifiers(Specifiers specifiers)
165 {
166 if ((specifiers & Specifiers::static_) == Specifiers::none) return false;
167 return true;
168 }
169
170 } }