1
2
3
4
5
6 #include <sngcpp/ast/Specifier.hpp>
7
8 namespace sngcpp { namespace ast {
9
10 std::u32string SpecifierStr(Specifier specifiers)
11 {
12 std::u32string s;
13 if ((specifiers & Specifier::public_) != Specifier::none)
14 {
15 if (!s.empty())
16 {
17 s.append(1, ' ');
18 }
19 s.append(U"public");
20 }
21 else if ((specifiers & Specifier::protected_) != Specifier::none)
22 {
23 if (!s.empty())
24 {
25 s.append(1, ' ');
26 }
27 s.append(U"protected");
28 }
29 else if ((specifiers & Specifier::private_) != Specifier::none)
30 {
31 if (!s.empty())
32 {
33 s.append(1, ' ');
34 }
35 s.append(U"private");
36 }
37 if ((specifiers & Specifier::const_) != Specifier::none)
38 {
39 if (!s.empty())
40 {
41 s.append(1, ' ');
42 }
43 s.append(U"const");
44 }
45 if ((specifiers & Specifier::constExpr) != Specifier::none)
46 {
47 if (!s.empty())
48 {
49 s.append(1, ' ');
50 }
51 s.append(U"constexpr");
52 }
53 if ((specifiers & Specifier::volatile_) != Specifier::none)
54 {
55 if (!s.empty())
56 {
57 s.append(1, ' ');
58 }
59 s.append(U"volatile");
60 }
61 if ((specifiers & Specifier::explicit_) != Specifier::none)
62 {
63 if (!s.empty())
64 {
65 s.append(1, ' ');
66 }
67 s.append(U"explicit");
68 }
69 if ((specifiers & Specifier::mutable_) != Specifier::none)
70 {
71 if (!s.empty())
72 {
73 s.append(1, ' ');
74 }
75 s.append(U"mutable");
76 }
77 if ((specifiers & Specifier::inline_) != Specifier::none)
78 {
79 if (!s.empty())
80 {
81 s.append(1, ' ');
82 }
83 s.append(U"inline");
84 }
85 if ((specifiers & Specifier::static_) != Specifier::none)
86 {
87 if (!s.empty())
88 {
89 s.append(1, ' ');
90 }
91 s.append(U"static");
92 }
93 if ((specifiers & Specifier::extern_) != Specifier::none)
94 {
95 if (!s.empty())
96 {
97 s.append(1, ' ');
98 }
99 s.append(U"extern");
100 }
101 if ((specifiers & Specifier::register_) != Specifier::none)
102 {
103 if (!s.empty())
104 {
105 s.append(1, ' ');
106 }
107 s.append(U"register");
108 }
109 if ((specifiers & Specifier::threadLocal) != Specifier::none)
110 {
111 if (!s.empty())
112 {
113 s.append(1, ' ');
114 }
115 s.append(U"thread_local");
116 }
117 if ((specifiers & Specifier::pure_) != Specifier::none)
118 {
119 if (!s.empty())
120 {
121 s.append(1, ' ');
122 }
123 s.append(U"pure");
124 }
125 if ((specifiers & Specifier::virtual_) != Specifier::none)
126 {
127 if (!s.empty())
128 {
129 s.append(1, ' ');
130 }
131 s.append(U"virtual");
132 }
133 if ((specifiers & Specifier::override_) != Specifier::none)
134 {
135 if (!s.empty())
136 {
137 s.append(1, ' ');
138 }
139 s.append(U"override");
140 }
141 if ((specifiers & Specifier::final_) != Specifier::none)
142 {
143 if (!s.empty())
144 {
145 s.append(1, ' ');
146 }
147 s.append(U"final");
148 }
149 if ((specifiers & Specifier::new_) != Specifier::none)
150 {
151 if (!s.empty())
152 {
153 s.append(1, ' ');
154 }
155 s.append(U"new");
156 }
157 if ((specifiers & Specifier::default_) != Specifier::none)
158 {
159 if (!s.empty())
160 {
161 s.append(1, ' ');
162 }
163 s.append(U"default");
164 }
165 if ((specifiers & Specifier::delete_) != Specifier::none)
166 {
167 if (!s.empty())
168 {
169 s.append(1, ' ');
170 }
171 s.append(U"delete");
172 }
173 if ((specifiers & Specifier::friend_) != Specifier::none)
174 {
175 if (!s.empty())
176 {
177 s.append(1, ' ');
178 }
179 s.append(U"friend");
180 }
181 return s;
182 }
183
184 } }