MCPcopy Create free account
hub / github.com/Segs/Segs / generate_cpp

Function generate_cpp

Utilities/event_gen/main.cpp:35–86  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

33};
34
35void generate_cpp(const std::vector<DefFile> &files,const QString &group_name,const QString &tgt_dir)
36{
37 QFile tgt_file(tgt_dir+"/" + group_name+".gen.cpp");
38 tgt_file.open(QFile::WriteOnly);
39 QTextStream tgt_stream(&tgt_file);
40 tgt_stream << "// THIS FILE WAS GENERATED, DO NOT EDIT\n";
41 if(group_name=="MapServerEvents")
42 {
43 tgt_stream << "#include \"BitStream.h\"\n";
44 }
45 for(const DefFile &d : files)
46 {
47 tgt_stream << QString("#include \"%1\"\n\n").arg(d.source_name);
48 }
49
50 tgt_stream << QString("#include \"SEGSEventFactory.h\"\n");
51 tgt_stream << "#include \"serialization_common.h\"\n\n";
52 tgt_stream << "#include \"serialization_types.h\"\n\n";
53 tgt_stream << "using namespace SEGSEvents;\n\n";
54 for(const DefFile &d : files)
55 {
56 for(const DefEvent &ev : d.events)
57 {
58 tgt_stream << "template<class Archive>\n";
59 if(ev.elements.empty())
60 tgt_stream << QString("void %1::serialize(Archive &)").arg(ev.name);
61 else
62 tgt_stream << QString("void %1::serialize(Archive & archive)").arg(ev.name);
63 tgt_stream << "{\n";
64 for(const DefElement &el : ev.elements)
65 {
66 QString internal_field_name = el.name;
67 if(internal_field_name.startsWith("m_"))
68 internal_field_name = internal_field_name.mid(2);
69 tgt_stream << QString(" archive(cereal::make_nvp(\"%1\",%2));\n").arg(internal_field_name,el.name);
70 }
71 tgt_stream << "}\n";
72 tgt_stream << QString("SPECIALIZE_SERIALIZATIONS(%1)\n").arg(ev.name);
73 }
74 }
75 tgt_stream << "\n";
76 tgt_stream << QString("void register_%1()\n").arg(group_name);
77 tgt_stream << "{\n";
78 for(const DefFile &d : files)
79 {
80 for(const DefEvent &ev : d.events)
81 {
82 tgt_stream << QString("register_event_type(\"%1\",ev%1,[]()->Event * { return new %1;});\n").arg(ev.name);
83 }
84 }
85 tgt_stream << "}\n";
86}
87
88bool extract_annotated(const QString &hdr_contents,DefFile &tgt)
89{

Callers 1

mainFunction · 0.85

Calls 3

QStringClass · 0.50
openMethod · 0.45
emptyMethod · 0.45

Tested by

no test coverage detected