JSBModule.h 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. // Copyright (c) 2014-2015, THUNDERBEAST GAMES LLC All rights reserved
  2. // Please see LICENSE.md in repository root for license information
  3. // https://github.com/AtomicGameEngine/AtomicGameEngine
  4. #pragma once
  5. #include <Atomic/Container/Vector.h>
  6. #include <Atomic/Container/Str.h>
  7. using namespace Atomic;
  8. class JSBindings;
  9. class JSBClass;
  10. class JSBHeader;
  11. class JSBEnum;
  12. class JSBModule
  13. {
  14. void WriteClassDeclaration(String& source);
  15. void WriteClassDefine(String& source);
  16. void WriteIncludes(String& source);
  17. void WriteModulePreInit(String& source);
  18. void WriteModuleInit(String& source);
  19. public:
  20. JSBModule(JSBindings* bindings) :
  21. bindings_(bindings)
  22. {
  23. }
  24. void Load(const String& moduleJSONFilename);
  25. void AddClass(JSBClass* klass) { classes_.Push(klass); }
  26. void ParseHeaders();
  27. void PreprocessHeaders();
  28. void VisitHeaders();
  29. bool Requires(const String& requirement) { return requirements_.Contains(requirement); }
  30. void EmitSource(const String& filepath);
  31. void RegisterConstant(const String& name)
  32. {
  33. if (!constants_.Contains(name))
  34. constants_.Push(name);
  35. }
  36. String name_;
  37. Vector<String> headerFiles_;
  38. Vector<String> includes_;
  39. Vector<JSBHeader*> headers_;
  40. Vector<JSBClass*> classes_;
  41. Vector<JSBEnum*> enums_;
  42. Vector<String> constants_;
  43. JSBindings* bindings_;
  44. Vector<String> requirements_;
  45. String source_;
  46. };