JSBModule.h 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. #pragma once
  2. #include <Atomic/Container/Vector.h>
  3. #include <Atomic/Container/Str.h>
  4. using namespace Atomic;
  5. class JSBindings;
  6. class JSBClass;
  7. class JSBHeader;
  8. class JSBEnum;
  9. class JSBModule
  10. {
  11. void WriteClassDeclaration(String& source);
  12. void WriteClassDefine(String& source);
  13. void WriteIncludes(String& source);
  14. void WriteModulePreInit(String& source);
  15. void WriteModuleInit(String& source);
  16. public:
  17. JSBModule(JSBindings* bindings) :
  18. bindings_(bindings)
  19. {
  20. }
  21. void Load(const String& moduleJSONFilename);
  22. void AddClass(JSBClass* klass) { classes_.Push(klass); }
  23. void ParseHeaders();
  24. void PreprocessHeaders();
  25. void VisitHeaders();
  26. void EmitSource(const String& filepath);
  27. void RegisterConstant(const String& name)
  28. {
  29. if (!constants_.Contains(name))
  30. constants_.Push(name);
  31. }
  32. String name_;
  33. Vector<String> headerFiles_;
  34. Vector<String> includes_;
  35. Vector<JSBHeader*> headers_;
  36. Vector<JSBClass*> classes_;
  37. Vector<JSBEnum*> enums_;
  38. Vector<String> constants_;
  39. JSBindings* bindings_;
  40. String source_;
  41. };