JSBHeader.cpp 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  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. #include <Atomic/Atomic.h>
  5. #include <Atomic/IO/File.h>
  6. #include "JSBHeader.h"
  7. #include "JSBHeaderVisitor.h"
  8. #include "JSBPreprocessVisitor.h"
  9. #include "JSBind.h"
  10. void JSBHeader::Parse()
  11. {
  12. Control* control = new Control();
  13. const StringLiteral *fileId = control->stringLiteral(filepath_.CString(), filepath_.Length() );
  14. LanguageFeatures features;
  15. features.qtEnabled = false;
  16. features.qtMocRunEnabled = false;
  17. features.qtKeywordsEnabled = false;
  18. features.cxx11Enabled = true;
  19. features.objCEnabled = false;
  20. features.c99Enabled = false;
  21. translationUnit_ = new TranslationUnit(control, fileId);
  22. translationUnit_->setLanguageFeatures(features);
  23. control->switchTranslationUnit(translationUnit_);
  24. File file(JSBind::context_);
  25. file.Open(filepath_);
  26. unsigned size = file.GetSize();
  27. data_ = new char[size + 1];
  28. data_[size] = '\0';
  29. file.Read(data_, size);
  30. // TODO: add error reporting
  31. translationUnit_->blockErrors(true);
  32. translationUnit_->setSource(data_, size);
  33. translationUnit_->tokenize();
  34. translationUnit_->parse();
  35. globalNamespace_ = control->newNamespace(0);
  36. Bind* semantic = new Bind(translationUnit_);
  37. semantic->setSkipFunctionBodies(true);
  38. //if (TranslationUnitAST *ast = _translationUnit->ast()->asTranslationUnit())
  39. (*semantic)(translationUnit_->ast()->asTranslationUnit(), globalNamespace_);
  40. //else if (StatementAST *ast = _translationUnit->ast()->asStatement())
  41. // semantic(ast, _globalNamespace);
  42. //else if (ExpressionAST *ast = _translationUnit->ast()->asExpression())
  43. // semantic(ast, _globalNamespace);
  44. //else if (DeclarationAST *ast = translationUnit()->ast()->asDeclaration())
  45. // semantic(ast, _globalNamespace);
  46. //JSBHeaderVisitor* visitor = new JSBHeaderVisitor(this, translationUnit,globalNamespace);
  47. //visitor->accept(translationUnit->ast());
  48. }
  49. void JSBHeader::VisitPreprocess()
  50. {
  51. JSBPreprocessVisitor* visitor = new JSBPreprocessVisitor(this, translationUnit_,globalNamespace_);
  52. }
  53. void JSBHeader::VisitHeader()
  54. {
  55. JSBHeaderVisitor* visitor = new JSBHeaderVisitor(this, translationUnit_,globalNamespace_);
  56. }