JSBPackage.h 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. #pragma once
  2. #include <Atomic/Core/Object.h>
  3. using namespace Atomic;
  4. namespace ToolCore
  5. {
  6. class JSBModule;
  7. class JSBClass;
  8. class JSBEnum;
  9. class JSBPackage : public Object
  10. {
  11. friend class JSBPackageWriter;
  12. OBJECT(JSBPackage)
  13. public:
  14. JSBPackage(Context* context);
  15. virtual ~JSBPackage();
  16. bool Load(const String& packageFolder);
  17. Vector<SharedPtr<JSBModule>>& GetModules() {return modules_;}
  18. void PreprocessModules();
  19. void ProcessModules();
  20. const String& GetName() { return name_; }
  21. const String& GetNamespace() { return namespace_; }
  22. JSBClass* GetClass(const String& name);
  23. PODVector<JSBClass*>& GetAllClasses() { return allClasses_; }
  24. void RegisterClass(JSBClass* cls) {allClasses_.Push(cls); }
  25. // get a class by name across all loaded packages
  26. static JSBClass* GetClassAllPackages(const String& name);
  27. JSBEnum* GetEnum(const String& name);
  28. // get an enum by name across all loaded packages
  29. static JSBEnum* GetEnumAllPackages(const String& name);
  30. bool ContainsConstant(const String& constantName);
  31. static bool ContainsConstantAllPackages(const String& constantName);
  32. void GenerateSource(const String& outPath);
  33. private:
  34. // The name of the package
  35. String name_;
  36. // The name of the C++ namespace if any
  37. String namespace_;
  38. Vector<SharedPtr<JSBPackage> > dependencies_;
  39. HashMap<String, Vector<String>> moduleExcludes_;
  40. Vector<SharedPtr<JSBModule> > modules_;
  41. PODVector<JSBClass*> allClasses_;
  42. static Vector<SharedPtr<JSBPackage> > allPackages_;
  43. String source_;
  44. };
  45. }