X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=tools%2Fsetupgen%2Fsetupgen.h;h=f792e4506c2ca88a4e2196c5a99a23fb2b560205;hb=548f5db5fb32e84c4b1128ac98a79403885ddadd;hp=98d1ab80472332d08b409cde37a0b644ebfe1599;hpb=3b551a2caabdfebaac592b5fcbbeb6cbfe2fd43f;p=libs%2Fgame.git diff --git a/tools/setupgen/setupgen.h b/tools/setupgen/setupgen.h index 98d1ab8..f792e45 100644 --- a/tools/setupgen/setupgen.h +++ b/tools/setupgen/setupgen.h @@ -1,12 +1,14 @@ #ifndef SETUPGEN_H_ #define SETUPGEN_H_ +#include #include #include #include #include #include #include +#include #include "enum.h" #include "struct.h" #include "type.h" @@ -14,22 +16,38 @@ class SetupGen: public Msp::RegisteredApplication { private: + struct Module + { + std::string name_space; + std::string api; + std::string api_header; + std::vector> enums; + std::vector> structs; + }; + class Loader: public Msp::DataFile::ObjectLoader { + private: + Module &mod; + public: - Loader(SetupGen &); + Loader(SetupGen &, Module &); private: void init_actions() override; + void api(const std::string &); + void api_with_header(const std::string &, const std::string &); void enum_def(const Msp::DataFile::Symbol &); + void import(const std::string &); void name_space(const std::string &); void struct_def(Struct::Kind, const Msp::DataFile::Symbol &); }; std::string in_fn; std::string out_fn; - std::string name_space; + std::vector import_path; + std::list modules; std::map types; std::vector> enums; std::vector> structs; @@ -46,10 +64,10 @@ public: const Type &get_type(const std::string &) const; private: - void load(); - void collect_headers(); - void generate_header(Msp::IO::Base &) const; - void generate_code(Msp::IO::Base &) const; + void load(const Msp::FS::Path &); + void collect_headers(const Module &); + void generate_header(const Module &, Msp::IO::Base &) const; + void generate_code(const Module &, Msp::IO::Base &) const; }; #endif