summaryrefslogtreecommitdiff
path: root/src/bin/eolian_mono/eolian
diff options
context:
space:
mode:
authorFelipe Magno de Almeida <felipe@expertisesolutions.com.br>2019-01-26 21:11:14 +0900
committerFelipe Magno de Almeida <felipe@expertisesolutions.com.br>2019-01-31 16:16:00 +0900
commited9a9f1fb8bf6c4f578617d98b516dd4d27850ba (patch)
tree0d3f0b733b716e1b89a729249b8107d46e4a150b /src/bin/eolian_mono/eolian
parenta50b97da885b8a20798d8abbde5750ca85cef00d (diff)
efl-mono: Use only one marshal_annotate
Diffstat (limited to 'src/bin/eolian_mono/eolian')
-rw-r--r--src/bin/eolian_mono/eolian/mono/function_definition.hh12
-rw-r--r--src/bin/eolian_mono/eolian/mono/function_pointer.hh8
-rw-r--r--src/bin/eolian_mono/eolian/mono/marshall_annotation.hh230
-rw-r--r--src/bin/eolian_mono/eolian/mono/marshall_type.hh80
4 files changed, 167 insertions, 163 deletions
diff --git a/src/bin/eolian_mono/eolian/mono/function_definition.hh b/src/bin/eolian_mono/eolian/mono/function_definition.hh
index 915b12e..77fda50 100644
--- a/src/bin/eolian_mono/eolian/mono/function_definition.hh
+++ b/src/bin/eolian_mono/eolian/mono/function_definition.hh
@@ -41,7 +41,8 @@ struct native_function_definition_generator
41 { 41 {
42 if(!as_generator 42 if(!as_generator
43 ("\n\n" << scope_tab 43 ("\n\n" << scope_tab
44 << eolian_mono::marshall_native_annotation(true) 44 << eolian_mono::marshall_annotation(true)
45 // << eolian_mono::marshall_native_annotation(true)
45 << " private delegate " 46 << " private delegate "
46 << eolian_mono::marshall_type(true) 47 << eolian_mono::marshall_type(true)
47 << " " 48 << " "
@@ -49,14 +50,15 @@ struct native_function_definition_generator
49 << "_delegate(System.IntPtr obj, System.IntPtr pd" 50 << "_delegate(System.IntPtr obj, System.IntPtr pd"
50 << *grammar::attribute_reorder<-1, -1> 51 << *grammar::attribute_reorder<-1, -1>
51 ( 52 (
52 (", " << marshall_native_annotation << " " << marshall_parameter) 53 (", " << marshall_annotation /*marshall_native_annotation*/ << " " << marshall_parameter)
53 ) 54 )
54 << ");\n") 55 << ");\n")
55 .generate(sink, std::make_tuple(f.return_type, f.return_type, f.c_name, f.parameters), context)) 56 .generate(sink, std::make_tuple(f.return_type, f.return_type, f.c_name, f.parameters), context))
56 return false; 57 return false;
57 if(!as_generator 58 if(!as_generator
58 ("\n\n" << scope_tab 59 ("\n\n" << scope_tab
59 << eolian_mono::marshall_native_annotation(true) 60 << eolian_mono::marshall_annotation(true)
61 // << eolian_mono::marshall_native_annotation(true)
60 << " public delegate " 62 << " public delegate "
61 << eolian_mono::marshall_type(true) 63 << eolian_mono::marshall_type(true)
62 << " " 64 << " "
@@ -64,7 +66,7 @@ struct native_function_definition_generator
64 << "_api_delegate(System.IntPtr obj" 66 << "_api_delegate(System.IntPtr obj"
65 << *grammar::attribute_reorder<-1, -1> 67 << *grammar::attribute_reorder<-1, -1>
66 ( 68 (
67 (", " << marshall_native_annotation << " " << marshall_parameter) 69 (", " << marshall_annotation /*marshall_native_annotation*/ << " " << marshall_parameter)
68 ) 70 )
69 << ");\n") 71 << ");\n")
70 .generate(sink, std::make_tuple(f.return_type, f.return_type, f.c_name, f.parameters), context)) 72 .generate(sink, std::make_tuple(f.return_type, f.return_type, f.c_name, f.parameters), context))
@@ -131,7 +133,7 @@ struct native_function_definition_generator
131 133
132 // This is the delegate that will be passed to Eo to be called from C. 134 // This is the delegate that will be passed to Eo to be called from C.
133 if(!as_generator( 135 if(!as_generator(
134 scope_tab << "private " << f.c_name << "_delegate " << f.c_name << "_static_delegate;\n" 136 scope_tab << "private static " << f.c_name << "_delegate " << f.c_name << "_static_delegate;\n"
135 ).generate(sink, attributes::unused, context)) 137 ).generate(sink, attributes::unused, context))
136 return false; 138 return false;
137 return true; 139 return true;
diff --git a/src/bin/eolian_mono/eolian/mono/function_pointer.hh b/src/bin/eolian_mono/eolian/mono/function_pointer.hh
index 2c62abe..4339600 100644
--- a/src/bin/eolian_mono/eolian/mono/function_pointer.hh
+++ b/src/bin/eolian_mono/eolian/mono/function_pointer.hh
@@ -47,9 +47,9 @@ struct function_pointer {
47 .generate(sink, std::make_tuple(f, f.return_type, f_name, f.parameters), funcptr_ctx)) 47 .generate(sink, std::make_tuple(f, f.return_type, f_name, f.parameters), funcptr_ctx))
48 return false; 48 return false;
49 // "Internal" delegate, 1-to-1 with the Unamaged function type 49 // "Internal" delegate, 1-to-1 with the Unamaged function type
50 if (!as_generator(marshall_native_annotation(true) 50 if (!as_generator(marshall_annotation(true) //marshall_native_annotation(true)
51 << "public delegate " << marshall_type(true) << " " << string // public? 51 << "public delegate " << marshall_type(true) << " " << string // public?
52 << "Internal(IntPtr data" << *grammar::attribute_reorder<-1, -1>((", " << marshall_native_annotation << " " << marshall_parameter)) << ");\n") 52 << "Internal(IntPtr data" << *grammar::attribute_reorder<-1, -1>((", " << marshall_annotation /*marshall_native_annotation*/ << " " << marshall_parameter)) << ");\n")
53 .generate(sink, std::make_tuple(f.return_type, f.return_type, f_name, f.parameters), funcptr_ctx)) 53 .generate(sink, std::make_tuple(f.return_type, f.return_type, f_name, f.parameters), funcptr_ctx))
54 return false; 54 return false;
55 55
@@ -80,8 +80,8 @@ struct function_pointer {
80 << scope_tab << "}\n\n" 80 << scope_tab << "}\n\n"
81 81
82 82
83 << scope_tab << marshall_native_annotation(true) 83 << scope_tab << marshall_annotation(true) /*marshall_native_annotation(true)*/
84 << scope_tab << "internal static " << marshall_type(true) << " Cb(IntPtr cb_data" << *grammar::attribute_reorder<-1, -1>((", " << marshall_native_annotation << " " << marshall_parameter)) << ")\n" 84 << scope_tab << "internal static " << marshall_type(true) << " Cb(IntPtr cb_data" << *grammar::attribute_reorder<-1, -1>((", " << marshall_annotation /*marshall_native_annotation*/ << " " << marshall_parameter)) << ")\n"
85 << scope_tab << "{\n" 85 << scope_tab << "{\n"
86 << scope_tab << scope_tab << "GCHandle handle = GCHandle.FromIntPtr(cb_data);\n" 86 << scope_tab << scope_tab << "GCHandle handle = GCHandle.FromIntPtr(cb_data);\n"
87 << scope_tab << scope_tab << string << " cb = (" << string << ")handle.Target;\n" 87 << scope_tab << scope_tab << string << " cb = (" << string << ")handle.Target;\n"
diff --git a/src/bin/eolian_mono/eolian/mono/marshall_annotation.hh b/src/bin/eolian_mono/eolian/mono/marshall_annotation.hh
index ee4c474..619efe2 100644
--- a/src/bin/eolian_mono/eolian/mono/marshall_annotation.hh
+++ b/src/bin/eolian_mono/eolian/mono/marshall_annotation.hh
@@ -112,10 +112,10 @@ struct marshall_annotation_visitor_generate
112 return " [return: MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(Eina.ValueMarshaler))]"; 112 return " [return: MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(Eina.ValueMarshaler))]";
113 }}, 113 }},
114 {"strbuf", true, [&] { 114 {"strbuf", true, [&] {
115 return " [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(Efl.Eo.StrbufPassOwnershipMarshaler))]"; 115 return " [return: MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(Efl.Eo.StrbufPassOwnershipMarshaler))]";
116 }}, 116 }},
117 {"strbuf", false, [&] { 117 {"strbuf", false, [&] {
118 return " [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(Efl.Eo.StrbufKeepOwnershipMarshaler))]"; 118 return " [return: MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(Efl.Eo.StrbufKeepOwnershipMarshaler))]";
119 }}, 119 }},
120 }; 120 };
121 121
@@ -123,6 +123,8 @@ struct marshall_annotation_visitor_generate
123 ((is_return ? return_match_table : parameter_match_table) 123 ((is_return ? return_match_table : parameter_match_table)
124 , [&] (match const& m) 124 , [&] (match const& m)
125 { 125 {
126 if (is_return)
127 std::cout << "comparing return type " << (m.name ? *m.name : "unknown") << " with " << regular.base_type << std::endl;
126 return (!m.name || *m.name == regular.base_type) 128 return (!m.name || *m.name == regular.base_type)
127 && (!m.has_own || *m.has_own == (bool)(regular.base_qualifier & qualifier_info::is_own)) 129 && (!m.has_own || *m.has_own == (bool)(regular.base_qualifier & qualifier_info::is_own))
128 ; 130 ;
@@ -160,121 +162,121 @@ struct marshall_annotation_visitor_generate
160 } 162 }
161}; 163};
162 164
163template <typename OutputIterator, typename Context> 165// template <typename OutputIterator, typename Context>
164struct marshall_native_annotation_visitor_generate 166// struct marshall_native_annotation_visitor_generate
165{ 167// {
166 mutable OutputIterator sink; 168// mutable OutputIterator sink;
167 Context const* context; 169// Context const* context;
168 std::string c_type; 170// std::string c_type;
169 bool is_out; 171// bool is_out;
170 bool is_return; 172// bool is_return;
171 bool is_ptr; 173// bool is_ptr;
172 174
173 typedef marshall_type_visitor_generate<OutputIterator, Context> visitor_type; 175// typedef marshall_type_visitor_generate<OutputIterator, Context> visitor_type;
174 typedef bool result_type; 176// typedef bool result_type;
175 177
176 bool operator()(attributes::regular_type_def const& regular) const 178// bool operator()(attributes::regular_type_def const& regular) const
177 { 179// {
178 using attributes::regular_type_def; 180// using attributes::regular_type_def;
179 struct match 181// struct match
180 { 182// {
181 eina::optional<std::string> name; 183// eina::optional<std::string> name;
182 eina::optional<bool> has_own; 184// eina::optional<bool> has_own;
183 std::function<std::string()> function; 185// std::function<std::string()> function;
184 }; 186// };
185 match const parameter_match_table[] = 187// match const parameter_match_table[] =
186 { 188// {
187 // signed primitives 189// // signed primitives
188 {"bool", nullptr, [&] { return " [MarshalAs(UnmanagedType.U1)]"; }}, 190// {"bool", nullptr, [&] { return " [MarshalAs(UnmanagedType.U1)]"; }},
189 {"string", true, [&] { 191// {"string", true, [&] {
190 return " [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(Efl.Eo.StringPassOwnershipMarshaler))]"; 192// return " [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(Efl.Eo.StringPassOwnershipMarshaler))]";
191 }}, 193// }},
192 {"string", false, [&] { 194// {"string", false, [&] {
193 if (is_out) 195// if (is_out)
194 return ""; 196// return "";
195 return " [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(Efl.Eo.StringKeepOwnershipMarshaler))]"; 197// return " [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(Efl.Eo.StringKeepOwnershipMarshaler))]";
196 }}, 198// }},
197 {"stringshare", true, [&] { 199// {"stringshare", true, [&] {
198 return " [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(Efl.Eo.StringsharePassOwnershipMarshaler))]"; 200// return " [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(Efl.Eo.StringsharePassOwnershipMarshaler))]";
199 }}, 201// }},
200 {"stringshare", false, [&] { 202// {"stringshare", false, [&] {
201 if (is_out) 203// if (is_out)
202 return ""; 204// return "";
203 return " [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(Efl.Eo.StringshareKeepOwnershipMarshaler))]"; 205// return " [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(Efl.Eo.StringshareKeepOwnershipMarshaler))]";
204 }}, 206// }},
205 {"strbuf", true, [&] { 207// {"strbuf", true, [&] {
206 return " [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(Efl.Eo.StrbufPassOwnershipMarshaler))]"; 208// return " [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(Efl.Eo.StrbufPassOwnershipMarshaler))]";
207 }}, 209// }},
208 {"strbuf", false, [&] { 210// {"strbuf", false, [&] {
209 return " [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(Efl.Eo.StrbufKeepOwnershipMarshaler))]"; 211// return " [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(Efl.Eo.StrbufKeepOwnershipMarshaler))]";
210 }}, 212// }},
211 }; 213// };
212 match const return_match_table[] = 214// match const return_match_table[] =
213 { 215// {
214 // signed primitives 216// // signed primitives
215 {"bool", nullptr, [&] { return " [return: MarshalAs(UnmanagedType.U1)]"; }}, 217// {"bool", nullptr, [&] { return " [return: MarshalAs(UnmanagedType.U1)]"; }},
216 {"string", true, [&] { 218// {"string", true, [&] {
217 return " [return: MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(Efl.Eo.StringPassOwnershipMarshaler))]"; 219// return " [return: MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(Efl.Eo.StringPassOwnershipMarshaler))]";
218 }}, 220// }},
219 {"string", false, [&] { 221// {"string", false, [&] {
220 return ""; }}, 222// return ""; }},
221 {"stringshare", true, [&] { 223// {"stringshare", true, [&] {
222 return " [return: MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(Efl.Eo.StringsharePassOwnershipMarshaler))]"; 224// return " [return: MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(Efl.Eo.StringsharePassOwnershipMarshaler))]";
223 }}, 225// }},
224 {"stringshare", false, [&] { return "[return: MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(Efl.Eo.StringshareKeepOwnershipMarshaler))]"; }}, 226// {"stringshare", false, [&] { return "[return: MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(Efl.Eo.StringshareKeepOwnershipMarshaler))]"; }},
225 {"strbuf", true, [&] { 227// {"strbuf", true, [&] {
226 return " [return: MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(Efl.Eo.StrbufPassOwnershipMarshaler))]"; 228// return " [return: MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(Efl.Eo.StrbufPassOwnershipMarshaler))]";
227 }}, 229// }},
228 {"strbuf", false, [&] { 230// {"strbuf", false, [&] {
229 return " [return: MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(Efl.Eo.StrbufKeepOwnershipMarshaler))]"; 231// return " [return: MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(Efl.Eo.StrbufKeepOwnershipMarshaler))]";
230 }}, 232// }},
231 }; 233// };
232 234
233 if(eina::optional<bool> b = call_annotation_match 235// if(eina::optional<bool> b = call_annotation_match
234 ((is_return ? return_match_table : parameter_match_table) 236// ((is_return ? return_match_table : parameter_match_table)
235 , [&] (match const& m) 237// , [&] (match const& m)
236 { 238// {
237 return (!m.name || *m.name == regular.base_type) 239// return (!m.name || *m.name == regular.base_type)
238 && (!m.has_own || *m.has_own == static_cast<bool>(regular.base_qualifier & qualifier_info::is_own)) 240// && (!m.has_own || *m.has_own == static_cast<bool>(regular.base_qualifier & qualifier_info::is_own))
239 ; 241// ;
240 } 242// }
241 , [&] (std::string const& string) 243// , [&] (std::string const& string)
242 { 244// {
243 if (is_return) 245// if (is_return)
244 { 246// {
245 std::string comment = "// Passed through match table with type " + regular.base_type + " and string is size " + std::to_string(string.size()) + "\n"; 247// std::string comment = "// Passed through match table with type " + regular.base_type + " and string is size " + std::to_string(string.size()) + "\n";
246 std::copy(comment.begin(), comment.end(), sink); 248// std::copy(comment.begin(), comment.end(), sink);
247 } 249// }
248 std::copy(string.begin(), string.end(), sink); 250// std::copy(string.begin(), string.end(), sink);
249 return true; 251// return true;
250 })) 252// }))
251 { 253// {
252 return *b; 254// return *b;
253 } 255// }
254 else 256// else
255 { 257// {
256 return true; 258// return true;
257 } 259// }
258 } 260// }
259 bool operator()(attributes::klass_name const& klass_name) const 261// bool operator()(attributes::klass_name const& klass_name) const
260 { 262// {
261 const char no_return_prefix[] = "[MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(Efl.Eo.MarshalTest<"; 263// const char no_return_prefix[] = "[MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(Efl.Eo.MarshalTest<";
262 const char return_prefix[] = "[return: MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(Efl.Eo.MarshalTest<"; 264// const char return_prefix[] = "[return: MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(Efl.Eo.MarshalTest<";
263 return as_generator 265// return as_generator
264 ((is_return ? return_prefix : no_return_prefix) 266// ((is_return ? return_prefix : no_return_prefix)
265 << string << ", Efl.Eo." << (klass_name.base_qualifier & qualifier_info::is_own ? "OwnTag" : "NonOwnTag") << ">))]" 267// << string << ", Efl.Eo." << (klass_name.base_qualifier & qualifier_info::is_own ? "OwnTag" : "NonOwnTag") << ">))]"
266 ).generate(sink, name_helpers::klass_full_concrete_name(klass_name), *context); 268// ).generate(sink, name_helpers::klass_full_concrete_name(klass_name), *context);
267 } 269// }
268 bool operator()(attributes::complex_type_def const& c) const 270// bool operator()(attributes::complex_type_def const& c) const
269 { 271// {
270 if (c.outer.base_type == "future") 272// if (c.outer.base_type == "future")
271 { 273// {
272 std::string prefix = is_return ? "return: " : ""; 274// std::string prefix = is_return ? "return: " : "";
273 return as_generator("[" << prefix << "MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(Eina.FutureMarshaler))]").generate(sink, nullptr, *context); 275// return as_generator("[" << prefix << "MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(Eina.FutureMarshaler))]").generate(sink, nullptr, *context);
274 } 276// }
275 return true; 277// return true;
276 } 278// }
277}; 279// };
278 280
279 281
280} } 282} }
diff --git a/src/bin/eolian_mono/eolian/mono/marshall_type.hh b/src/bin/eolian_mono/eolian/mono/marshall_type.hh
index add954a..0495a30 100644
--- a/src/bin/eolian_mono/eolian/mono/marshall_type.hh
+++ b/src/bin/eolian_mono/eolian/mono/marshall_type.hh
@@ -73,25 +73,25 @@ struct marshall_annotation_generator
73 bool is_return; 73 bool is_return;
74}; 74};
75 75
76struct marshall_native_annotation_generator 76// struct marshall_native_annotation_generator
77{ 77// {
78 marshall_native_annotation_generator(bool is_return = false) 78// marshall_native_annotation_generator(bool is_return = false)
79 : is_return(is_return) {} 79// : is_return(is_return) {}
80 80
81 template <typename OutputIterator, typename Context> 81// template <typename OutputIterator, typename Context>
82 bool generate(OutputIterator sink, attributes::type_def const& type, Context const& context) const 82// bool generate(OutputIterator sink, attributes::type_def const& type, Context const& context) const
83 { 83// {
84 return type.original_type.visit(detail::marshall_native_annotation_visitor_generate<OutputIterator, Context>{sink, &context, type.c_type, false, is_return, type.is_ptr}); 84// return type.original_type.visit(detail::marshall_native_annotation_visitor_generate<OutputIterator, Context>{sink, &context, type.c_type, false, is_return, type.is_ptr});
85 } 85// }
86 template <typename OutputIterator, typename Context> 86// template <typename OutputIterator, typename Context>
87 bool generate(OutputIterator sink, attributes::parameter_def const& param, Context const& context) const 87// bool generate(OutputIterator sink, attributes::parameter_def const& param, Context const& context) const
88 { 88// {
89 return param.type.original_type.visit(detail::marshall_native_annotation_visitor_generate<OutputIterator, Context>{sink, &context, param.type.c_type 89// return param.type.original_type.visit(detail::marshall_native_annotation_visitor_generate<OutputIterator, Context>{sink, &context, param.type.c_type
90 , param.direction != attributes::parameter_direction::in, false, param.type.is_ptr}); 90// , param.direction != attributes::parameter_direction::in, false, param.type.is_ptr});
91 } 91// }
92 92
93 bool is_return; 93// bool is_return;
94}; 94// };
95 95
96struct marshall_type_terminal 96struct marshall_type_terminal
97{ 97{
@@ -120,18 +120,18 @@ marshall_annotation_generator const as_generator(marshall_annotation_terminal)
120} 120}
121 121
122 122
123struct marshall_native_annotation_terminal 123// struct marshall_native_annotation_terminal
124{ 124// {
125 marshall_native_annotation_generator const operator()(bool is_return) const 125// marshall_native_annotation_generator const operator()(bool is_return) const
126 { 126// {
127 return marshall_native_annotation_generator(is_return); 127// return marshall_native_annotation_generator(is_return);
128 } 128// }
129} const marshall_native_annotation = {}; 129// } const marshall_native_annotation = {};
130 130
131marshall_native_annotation_generator const as_generator(marshall_native_annotation_terminal) 131// marshall_native_annotation_generator const as_generator(marshall_native_annotation_terminal)
132{ 132// {
133 return marshall_native_annotation_generator{}; 133// return marshall_native_annotation_generator{};
134} 134// }
135 135
136} 136}
137 137
@@ -158,12 +158,12 @@ struct is_generator< ::eolian_mono::marshall_annotation_generator> : std::true_t
158template <> 158template <>
159struct is_generator< ::eolian_mono::marshall_annotation_terminal> : std::true_type {}; 159struct is_generator< ::eolian_mono::marshall_annotation_terminal> : std::true_type {};
160 160
161template <> 161// template <>
162struct is_eager_generator< ::eolian_mono::marshall_native_annotation_generator> : std::true_type {}; 162// struct is_eager_generator< ::eolian_mono::marshall_native_annotation_generator> : std::true_type {};
163template <> 163// template <>
164struct is_generator< ::eolian_mono::marshall_native_annotation_generator> : std::true_type {}; 164// struct is_generator< ::eolian_mono::marshall_native_annotation_generator> : std::true_type {};
165template <> 165// template <>
166struct is_generator< ::eolian_mono::marshall_native_annotation_terminal> : std::true_type {}; 166// struct is_generator< ::eolian_mono::marshall_native_annotation_terminal> : std::true_type {};
167 167
168namespace type_traits { 168namespace type_traits {
169template <> 169template <>
@@ -171,10 +171,10 @@ struct attributes_needed< ::eolian_mono::marshall_annotation_generator> : std::i
171template <> 171template <>
172struct attributes_needed< ::eolian_mono::marshall_annotation_terminal> : std::integral_constant<int, 1> {}; 172struct attributes_needed< ::eolian_mono::marshall_annotation_terminal> : std::integral_constant<int, 1> {};
173 173
174template <> 174// template <>
175struct attributes_needed< ::eolian_mono::marshall_native_annotation_generator> : std::integral_constant<int, 1> {}; 175// struct attributes_needed< ::eolian_mono::marshall_native_annotation_generator> : std::integral_constant<int, 1> {};
176template <> 176// template <>
177struct attributes_needed< ::eolian_mono::marshall_native_annotation_terminal> : std::integral_constant<int, 1> {}; 177// struct attributes_needed< ::eolian_mono::marshall_native_annotation_terminal> : std::integral_constant<int, 1> {};
178} 178}
179 179
180} } } 180} } }