1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
|
#include "generator.ih"
void Generator::polymorphic(ostream &out) const
{
if (not d_options.polymorphic())
return;
key(out);
out << // Tags
"enum " << (d_options.strongTags() ? "class " : "") << "Tag_\n"
"{\n";
for (auto &poly: d_polymorphic)
out << " " << poly.first << ",\n";
out <<
" END_TAG_\n"
"};\n"
"\n"
"class EndPolyType_\n"
"{};\n"
"\n"
"namespace Meta_\n"
"{\n"
"\n"
"extern ";
if (d_threadSafe)
out << "thread_local ";
out << "size_t const *t_nErrors;\n";
ifstream in;
Exception::open(in, d_options.polymorphicSkeleton());
filter(in, out, false);
}
|