X-Git-Url: https://scm.cri.ensmp.fr/git/Faustine.git/blobdiff_plain/c7f552fd8888da2f0d8cfb228fe0f28d3df3a12c..b4b6f2ea75b9f0f3ca918f5b84016610bf7a4d4f:/interpretor/preprocessor/faust-0.9.47mr3/compiler/generator/compile.hh diff --git a/interpretor/preprocessor/faust-0.9.47mr3/compiler/generator/compile.hh b/interpretor/preprocessor/faust-0.9.47mr3/compiler/generator/compile.hh new file mode 100644 index 0000000..e0167f6 --- /dev/null +++ b/interpretor/preprocessor/faust-0.9.47mr3/compiler/generator/compile.hh @@ -0,0 +1,98 @@ +/************************************************************************ + ************************************************************************ + FAUST compiler + Copyright (C) 2003-2004 GRAME, Centre National de Creation Musicale + --------------------------------------------------------------------- + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + ************************************************************************ + ************************************************************************/ + + + +#ifndef _COMPILE_ +#define _COMPILE_ + + +#include "signals.hh" +#include "klass.hh" +#include "Text.hh" +#include "uitree.hh" +#include +#include +#include +#include + +#include "description.hh" + +//////////////////////////////////////////////////////////////////////// +/** + * compileSignals : listOfSignal -> klass + * + * Compile a list of FAUST signals into a C++ class + */ +/////////////////////////////////////////////////////////////////////// + +#define kMaxHeight 1024 + + +class Compiler +{ +protected: + Klass* fClass; + bool fNeedToDeleteClass; + Tree fUIRoot; + Description* fDescription; + +public: + Compiler (const string& name, const string& super, int numInputs, int numOutputs, bool vec); + Compiler (Klass* k); + + virtual ~Compiler(); + + virtual void compileMultiSignal (Tree lsig) = 0; + virtual void compileSingleSignal (Tree lsig) = 0; + + Klass* getClass() { return (Klass*)fClass; } + + void setDescription(Description* descr) { fDescription= descr; } + Description* getDescription() { return fDescription; } + +protected: + virtual Tree prepare (Tree L0) = 0; + virtual Tree prepare2 (Tree L0) = 0; + +// gestion des includes et librairies + void addIncludeFile (const string& str) { fClass->addIncludeFile(str); } + void addLibrary (const string& str) { fClass->addLibrary(str); } + +// gestion de la description arborescente de l'IU + void addUIWidget(Tree path, Tree widget); + void generateWidgetCode(Tree fulllabel, Tree varname, Tree sig); + void generateUserInterfaceTree(Tree t); + void generateUserInterfaceElements(Tree elements); + Tree prepareUserInterfaceTree(Tree t); + + void generateMacroInterfaceTree(const string& pathname, Tree t); + void generateMacroInterfaceElements(const string& pathname, Tree elements); + void generateWidgetMacro(const string& pathname, Tree fulllabel, Tree varname, Tree sig); + + +}; +#define generateEquivRecGroup generateRecGroup + + +void compileSignals (const string& name, const string& super, int numInputs, int numOutputs, Tree lsig); + +#endif