JSBModule.h 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. #pragma once
  2. #include <Atomic/Core/Object.h>
  3. using namespace Atomic;
  4. namespace ToolCore
  5. {
  6. class JSBPackage;
  7. class JSBHeader;
  8. class JSBClass;
  9. class JSBEnum;
  10. class JSBModule : public Object
  11. {
  12. OBJECT(JSBModule)
  13. public:
  14. JSBModule(Context* context, JSBPackage* package);
  15. virtual ~JSBModule();
  16. JSBPackage* GetPackage() { return package_; }
  17. JSBClass* GetClass(const String& name);
  18. void RegisterClass(String name);
  19. JSBEnum* GetEnum(const String& name);
  20. void RegisterEnum(JSBEnum* jenum);
  21. bool ContainsConstant(const String& constantName);
  22. void RegisterConstant(const String& constantName);
  23. bool Load(const String& jsonFilename);
  24. void PreprocessHeaders();
  25. private:
  26. void ScanHeaders();
  27. String name_;
  28. SharedPtr<JSBPackage> package_;
  29. Vector<SharedPtr<JSBHeader>> headers_;
  30. Vector<String> sourceDirs_;
  31. Vector<String> classnames_;
  32. HashMap<String, String> classRenames_;
  33. // native name -> JSBClass
  34. HashMap<StringHash, SharedPtr<JSBClass> > classes_;
  35. HashMap<StringHash, SharedPtr<JSBEnum> > enums_;
  36. Vector<String> constants_;
  37. };
  38. }