| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- #pragma once
- #include <Atomic/Core/Object.h>
- using namespace Atomic;
- namespace Atomic
- {
- class JSONFile;
- }
- namespace ToolCore
- {
- class JSBPackage;
- class JSBHeader;
- class JSBClass;
- class JSBEnum;
- class JSBModule : public Object
- {
- friend class JSBModuleWriter;
- OBJECT(JSBModule)
- public:
- JSBModule(Context* context, JSBPackage* package);
- virtual ~JSBModule();
- const String& GetName() { return name_; }
- JSBPackage* GetPackage() { return package_; }
- JSBClass* GetClass(const String& name);
- void RegisterClass(String name);
- JSBEnum* GetEnum(const String& name);
- void RegisterEnum(JSBEnum* jenum);
- bool ContainsConstant(const String& constantName);
- void RegisterConstant(const String& constantName);
- bool Requires(const String& requirement) { return requirements_.Contains(requirement); }
- bool Load(const String& jsonFilename);
- void PreprocessHeaders();
- void VisitHeaders();
- void PreprocessClasses();
- void ProcessClasses();
- void PostProcessClasses();
- void GenerateSource(const String& outPath);
- const String& GetSource();
- private:
- void ProcessOverloads();
- void ScanHeaders();
- String name_;
- SharedPtr<JSBPackage> package_;
- Vector<SharedPtr<JSBHeader>> headers_;
- Vector<String> includes_;
- Vector<String> sourceDirs_;
- Vector<String> classnames_;
- HashMap<String, String> classRenames_;
- // native name -> JSBClass
- HashMap<StringHash, SharedPtr<JSBClass> > classes_;
- HashMap<StringHash, SharedPtr<JSBEnum> > enums_;
- Vector<String> constants_;
- Vector<String> requirements_;
- SharedPtr<JSONFile> moduleJSON_;
- String source_;
- };
- }
|