1 /* Cycript - Optimizing JavaScript Compiler/Runtime
 
   2  * Copyright (C) 2009-2015  Jay Freeman (saurik)
 
   5 /* GNU Affero General Public License, Version 3 {{{ */
 
   7  * This program is free software: you can redistribute it and/or modify
 
   8  * it under the terms of the GNU Affero General Public License as published by
 
   9  * the Free Software Foundation, either version 3 of the License, or
 
  10  * (at your option) any later version.
 
  12  * This program is distributed in the hope that it will be useful,
 
  13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
 
  14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
  15  * GNU Affero General Public License for more details.
 
  17  * You should have received a copy of the GNU Affero General Public License
 
  18  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
  22 #ifndef CYCRIPT_DRIVER_HPP
 
  23 #define CYCRIPT_DRIVER_HPP
 
  31 #include "Location.hpp"
 
  34 class _visible CYDriver {
 
  39     std::vector<char> buffer_;
 
  43     std::stack<bool> template_;
 
  61     std::string filename_;
 
  69     typedef std::vector<Error> Errors;
 
  77         CYExpression *context_;
 
  79         Context(CYExpression *context) :
 
  84         typedef std::vector<CYWord *> Words;
 
  88     typedef std::vector<Context> Contexts;
 
  91     CYExpression *context_;
 
 103     void ScannerDestroy();
 
 106     CYDriver(CYPool &pool, std::istream &data, const std::string &filename = "");
 
 110     void Replace(CYOptions &options);
 
 112     void SetCondition(Condition condition);
 
 114     void PushCondition(Condition condition);
 
 117     void Warning(const CYLocation &location, const char *message);
 
 120 #endif/*CYCRIPT_DRIVER_HPP*/