JSBModule.h 1.2 KB

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