1 /* "CodeWorker": a scripting language for parsing and generating text. 2 3 Copyright (C) 1996-1997, 1999-2002 C�dric Lemaire 4 5 This library is free software; you can redistribute it and/or 6 modify it under the terms of the GNU Lesser General Public 7 License as published by the Free Software Foundation; either 8 version 2.1 of the License, or (at your option) any later version. 9 10 This library is distributed in the hope that it will be useful, 11 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 Lesser General Public License for more details. 14 15 You should have received a copy of the GNU Lesser General Public 16 License along with this library; if not, write to the Free Software 17 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 19 To contact the author: codeworker@free.fr 20 */ 21 22 #ifndef _GrfGenerate_h_ 23 #define _GrfGenerate_h_ 24 25 #include "GrfCommand.h" 26 27 namespace CodeWorker { 28 class ExprScriptVariable; 29 class ExprScriptExpression; 30 class ExprScriptScriptFile; 31 class DtaPatternScript; 32 33 class EXECUTE_FUNCTION; 34 35 class GrfGenerate : public GrfCommand { 36 private: 37 ExprScriptExpression* _pPatternFileName; 38 ExprScriptVariable* _pClass; 39 ExprScriptExpression* _pFileName; 40 std::string _sCurrentDirectoryAtCompileTime; 41 42 protected: 43 mutable DtaPatternScript* _pCachedScript; 44 mutable std::string _sCachedPatternFile; 45 46 public: 47 GrfGenerate(); 48 virtual ~GrfGenerate(); 49 getFunctionName()50 virtual const char* getFunctionName() const { return "generate"; } 51 52 void setPatternFileName(ExprScriptScriptFile* pPatternFileName); setPatternFileName(ExprScriptExpression * pPatternFileName)53 inline void setPatternFileName(ExprScriptExpression* pPatternFileName) { _pPatternFileName = pPatternFileName; } setThis(ExprScriptVariable * pClass)54 inline void setThis(ExprScriptVariable* pClass) { _pClass = pClass; } setOutputFileName(ExprScriptExpression * pFileName)55 inline void setOutputFileName(ExprScriptExpression* pFileName) { _pFileName = pFileName; } 56 57 virtual void compileCpp(CppCompilerEnvironment& theCompilerEnvironment) const; 58 59 protected: getCachedScript()60 inline DtaPatternScript* getCachedScript() const { return _pCachedScript; } 61 62 virtual SEQUENCE_INTERRUPTION_LIST executeInternal(DtaScriptVariable& visibility); 63 virtual SEQUENCE_INTERRUPTION_LIST executeScript(const char* sOutputFile, DtaScriptVariable* pThisContext, EXECUTE_FUNCTION* executeFunction); 64 }; 65 } 66 67 #endif 68