JSBindings.h 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  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/HashMap.h>
  7. #include "JSBClass.h"
  8. using namespace Atomic;
  9. class JSBModule;
  10. class JSBindings
  11. {
  12. Vector<JSBModule*> modules_;
  13. HashMap<String, JSBClass*> classes_;
  14. HashMap<String, JSBEnum*> enums_;
  15. HashMap<String, String> enumNames_;
  16. void EmitJSModules(const String& rootpath);
  17. static JSBindings* instance_;
  18. public:
  19. JSBindings()
  20. {
  21. instance_ = this;
  22. }
  23. static JSBindings* Instance() { return instance_; }
  24. JSBClass* GetClass(const String& classname)
  25. {
  26. if (!classes_.Contains(classname))
  27. return NULL;
  28. return classes_[classname];
  29. }
  30. JSBEnum* GetEnum(const String& enumname)
  31. {
  32. if (!enums_.Contains(enumname))
  33. return NULL;
  34. return enums_[enumname];
  35. }
  36. unsigned GetModuleCount() { return modules_.Size(); }
  37. JSBModule* GetModule(unsigned idx) { return modules_.At(idx); }
  38. JSBModule* GetModuleByName(const String& name);
  39. void RegisterClass(const String& classname, const String& rename = String::EMPTY);
  40. void RegisterEnum(JSBEnum* jenum);
  41. void Initialize();
  42. void ParseHeaders();
  43. };