JSBPreprocessVisitor.h 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  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 "JSBNameVisitor.h"
  6. class JSBPreprocessVisitor : public SymbolVisitor
  7. {
  8. JSBHeader* header_;
  9. JSBModule* module_;
  10. JSBindings* bindings_;
  11. Namespace* globalNamespace_;
  12. public:
  13. JSBPreprocessVisitor(JSBHeader* header, TranslationUnit *unit, Namespace* globalNamespace) :
  14. header_(header),
  15. globalNamespace_(globalNamespace)
  16. {
  17. module_ = header_->module_;
  18. bindings_ = module_->bindings_;
  19. accept(globalNamespace_);
  20. }
  21. String getNameString(const Name* name)
  22. {
  23. JSBNameVisitor nvisitor;
  24. return nvisitor(name);
  25. }
  26. virtual bool visit(Enum *penum)
  27. {
  28. JSBEnum* jenum = new JSBEnum();
  29. jenum->name_ = getNameString(penum->name());
  30. jenum->header_ = header_;
  31. for (unsigned i = 0; i < penum->memberCount(); i++)
  32. {
  33. Symbol* symbol = penum->memberAt(i);
  34. jenum->values_.Push(getNameString(symbol->name()));
  35. }
  36. bindings_->RegisterEnum(jenum);
  37. module_->enums_.Push(jenum);
  38. return true;
  39. }
  40. };