CoolFace
Datasetpublic

dlxjj/imradv3

sourceHugging Faceupdated 8mo agoView on Hugging Face
0likes263downloads
cppgen.h77 linesDownload Raw Back to src
1#pragma once2#include <string>3#include <vector>4#include <map>5#include "node_window.h"6 7//------------------------------------------------------8class CppGen9{10public:11    static const std::string_view INDENT;12    static const std::string_view FOR_VAR_NAME;13    static const std::string_view CUR_ITEM_VAR_NAME;14    static const std::string_view HBOX_NAME;15    static const std::string_view VBOX_NAME;16 17    CppGen();18    bool ExportUpdate(const std::string& fname, TopWindow* node, const std::map<std::string, std::string>& params, std::string& err);19    auto Import(const std::string& path, std::map<std::string, std::string>& params, std::string& err) -> std::unique_ptr<TopWindow>;20    auto AltFName(const std::string& path) const -> std::string;21    int ReadGenVersion(const std::string& fname) const;22 23    const std::string& GetName() const { return m_name; }24    const std::string& GetVName() const { return m_vname; }25    //void SetName(const std::string& name) { m_name = name; }26    //void SetVName(const std::string& name) { m_vname = name; }27    void SetNamesFromId(const std::string& fname);28 29    struct Var30    {31        std::string type;32        std::string name;33        std::string init;34        enum { UserCode = 0x1, Interface = 0x2, Impl = 0x4 };35        int flags = 0;36        Var(const std::string& n, const std::string& t, const std::string& i, int f)37            : name(n), type(t), init(i), flags(f) {}38    };39 40    std::string CreateVar(const std::string& type, const std::string& init, int flags, const std::string& scope = "");41    bool CreateNamedVar(const std::string& name, const std::string& type, const std::string& init, int flags, const std::string& scope = "");42    bool RenameVar(const std::string& oldn, const std::string& newn, const std::string& scope = "");43    bool RemoveVar(const std::string& name, const std::string& scope = "");44    void RemovePrefixedVars(const std::string& prefix, const std::string& scope = "");45    bool ChangeVar(const std::string& name, const std::string& type, const std::string& init, int flags = -1, const std::string& scope = "");46    const Var* GetVar(const std::string& name, const std::string& scope = "") const;47    bool RenameStruct(const std::string& oldn, const std::string& newn);48    const std::vector<Var>& GetVars(const std::string& scope = "");49    std::vector<std::string> GetLayoutVars();50    std::vector<std::string> GetStructTypes();51    enum VarExprResult { SyntaxError, ConflictError, Existing, New, New_ImplicitStruct };52    VarExprResult CheckVarExpr(const std::string& name, const std::string& type, const std::string& scope = "");53    bool CreateVarExpr(std::string& name, const std::string& type, const std::string& init, int flags, const std::string& scope = "");54    auto GetVarExprs(const std::string& type, bool reference, const std::string& curArray = "") ->std::vector<std::pair<std::string, std::string>>;55 56private:57    Var* FindVar(const std::string& name, const std::string& scope);58    auto MatchType(const std::string& name, std::string_view type, std::string_view match, bool reference, const std::string& curArray) -> std::vector<std::pair<std::string, std::string>>;59 60    void CreateH(std::ostream& out);61    void CreateCpp(std::ostream& out);62    auto ExportH(std::ostream& out, std::istream& prev, const std::string& origHName, TopWindow* node) -> std::array<std::string, 3>;63    void ExportCpp(std::ostream& out, std::istream& prev, const std::array<std::string, 3>& origNames, const std::map<std::string, std::string>& params, TopWindow* node, const std::string& code);64    bool WriteStub(std::ostream& fout,    const std::string& id, TopWindow::Kind kind, TopWindow::Placement animPos, const std::map<std::string, std::string>& params = {}, const std::string& code = {});65    auto ImportCode(std::istream& in, const std::string& fname, std::map<std::string, std::string>& params) -> std::unique_ptr<TopWindow>;66 67    bool ParseFieldDecl(const std::string& stype, const std::vector<std::string>& line, int flags);68    auto IsMemFun(const std::vector<std::string>& line)->std::string;69    bool IsMemDrawFun(const std::vector<std::string>& line);70    auto ParseDrawFun(const std::vector<std::string>& line, cpp::token_iterator& iter, std::map<std::string, std::string>& params) -> std::unique_ptr<TopWindow>;71 72    std::map<std::string, std::vector<Var>> m_fields;73    std::string m_name, m_vname, m_hname;74    std::string ctx_workingDir;75    int ctx_importVersion;76    std::string m_error;77};