JSBHeader.h 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. //
  2. // Copyright (c) 2014-2015, THUNDERBEAST GAMES LLC All rights reserved
  3. // LICENSE: Atomic Game Engine Editor and Tools EULA
  4. // Please see LICENSE_ATOMIC_EDITOR_AND_TOOLS.md in repository root for
  5. // license information: https://github.com/AtomicGameEngine/AtomicGameEngine
  6. //
  7. #pragma once
  8. #include <Atomic/Container/Vector.h>
  9. #include <Atomic/Container/Str.h>
  10. #include <Atomic/Container/ArrayPtr.h>
  11. #include <Atomic/Core/Object.h>
  12. using namespace Atomic;
  13. namespace CPlusPlus
  14. {
  15. class TranslationUnit;
  16. class Namespace;
  17. }
  18. namespace ToolCore
  19. {
  20. class JSBModule;
  21. class JSBHeader : public Object
  22. {
  23. OBJECT(JSBHeader)
  24. public:
  25. JSBHeader(Context* context, JSBModule* module, const String& filepath);
  26. virtual ~JSBHeader();
  27. const String& GetFilePath() { return filepath_; }
  28. JSBModule* GetModule() { return module_; }
  29. void Parse();
  30. void VisitPreprocess();
  31. void VisitHeader();
  32. private:
  33. CPlusPlus::TranslationUnit* translationUnit_;
  34. CPlusPlus::Namespace* globalNamespace_;
  35. SharedArrayPtr<char> data_;
  36. // absolute path to source file
  37. String filepath_;
  38. SharedPtr<JSBModule> module_;
  39. };
  40. }