X-Git-Url: https://scm.cri.ensmp.fr/git/Faustine.git/blobdiff_plain/c7f552fd8888da2f0d8cfb228fe0f28d3df3a12c..b4b6f2ea75b9f0f3ca918f5b84016610bf7a4d4f:/interpretor/faust-0.9.47mr3/compiler/headers/klass.hh diff --git a/interpretor/faust-0.9.47mr3/compiler/headers/klass.hh b/interpretor/faust-0.9.47mr3/compiler/headers/klass.hh deleted file mode 100644 index 079e6c3..0000000 --- a/interpretor/faust-0.9.47mr3/compiler/headers/klass.hh +++ /dev/null @@ -1,223 +0,0 @@ -/************************************************************************ - ************************************************************************ - 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 _KLASS_H -#define _KLASS_H - -/********************************************************************** - - klass.h : class C++ � remplir (projet FAUST) - - - - Historique : - ----------- - 17-10-2001 : implementation initiale (yo) - 18-10-2001 : Ajout de getFreshID (yo) - 02-11-2001 : Ajout de sous classes (yo) - -***********************************************************************/ -using namespace std; - -#include -#include -#include -#include -#include "sigtype.hh" -#include "smartpointer.hh" -#include "tlib.hh" -#include "uitree.hh" -#include "property.hh" - -#define kMaxCategory 32 - -#include "loop.hh" -#include "graphSorting.hh" - -class Klass //: public Target -{ - -protected: - // we make it global because several classes may need - // power def but we want the code to be generated only once - static bool fNeedPowerDef; ///< true when faustpower definition is needed - - - protected: - - string fKlassName; - string fSuperKlassName; - int fNumInputs; - int fNumOutputs; - int fNumActives; ///< number of active controls in the UI (sliders, buttons, etc.) - int fNumPassives; ///< number of passive widgets in the UI (bargraphs, etc.) - - set fIncludeFileSet; - set fLibrarySet; - - list fSubClassList; - - list fDeclCode; - list fStaticInitCode; ///< static init code for class constant tables - list fStaticFields; ///< static fields after class - list fInitCode; - list fUICode; - list fUIMacro; - -#if 0 - list fSlowDecl; - list fSharedDecl; ///< declare shared variables for openMP - list fCommonCode; ///< code executed by all threads - list fSlowCode; - list fEndCode; -#endif - list fSharedDecl; ///< shared declarations - list fFirstPrivateDecl; ///< first private declarations - - list fZone1Code; ///< shared vectors - list fZone2Code; ///< first private - list fZone2bCode; ///< single once per block - list fZone2cCode; ///< single once per block - list fZone3Code; ///< private every sub block - - Loop* fTopLoop; ///< active loops currently open - property fLoopProperty; ///< loops used to compute some signals - - bool fVec; - - public: - - Klass (const string& name, const string& super, int numInputs, int numOutputs, bool __vec = false) - : fKlassName(name), fSuperKlassName(super), fNumInputs(numInputs), fNumOutputs(numOutputs), - fNumActives(0), fNumPassives(0), - fTopLoop(new Loop(0, "count")), fVec(__vec) - {} - - virtual ~Klass() {} - - void openLoop(const string& size); - void openLoop(Tree recsymbol, const string& size); - void closeLoop(Tree sig); - - void setLoopProperty(Tree sig, Loop* l); ///< Store the loop used to compute a signal - bool getLoopProperty(Tree sig, Loop*& l); ///< Returns the loop used to compute a signal - const string& getClassName() const { return fKlassName; } ///< Returns the name of the class - - Loop* topLoop() { return fTopLoop; } - - void buildTasksList(); - - void addIncludeFile (const string& str) { fIncludeFileSet.insert(str); } - - void addLibrary (const string& str) { fLibrarySet.insert(str); } - - void rememberNeedPowerDef () { fNeedPowerDef = true; } - - void collectIncludeFile(set& S); - - void collectLibrary(set& S); - - void addSubKlass (Klass* son) { fSubClassList.push_back(son); } - - void addDeclCode (const string& str) { fDeclCode.push_back(str); } - - void addInitCode (const string& str) { fInitCode.push_back(str); } - - void addStaticInitCode (const string& str) { fStaticInitCode.push_back(str); } - - void addStaticFields (const string& str) { fStaticFields.push_back(str); } - - void addUICode (const string& str) { fUICode.push_back(str); } - - void addUIMacro (const string& str) { fUIMacro.push_back(str); } - - void incUIActiveCount () { fNumActives++; } - void incUIPassiveCount () { fNumPassives++; } - - - void addSharedDecl (const string& str) { fSharedDecl.push_back(str); } - void addFirstPrivateDecl (const string& str) { fFirstPrivateDecl.push_back(str); } - - void addZone1 (const string& str) { fZone1Code.push_back(str); } - void addZone2 (const string& str) { fZone2Code.push_back(str); } - void addZone2b (const string& str) { fZone2bCode.push_back(str); } - void addZone2c (const string& str) { fZone2cCode.push_back(str); } - void addZone3 (const string& str) { fZone3Code.push_back(str); } - - void addPreCode ( const string& str) { fTopLoop->addPreCode(str); } - void addExecCode ( const string& str) { fTopLoop->addExecCode(str); } - void addPostCode (const string& str) { fTopLoop->addPostCode(str); } - - virtual void println(int n, ostream& fout); - - virtual void printComputeMethod (int n, ostream& fout); - virtual void printComputeMethodScalar (int n, ostream& fout); - virtual void printComputeMethodVectorFaster (int n, ostream& fout); - virtual void printComputeMethodVectorSimple (int n, ostream& fout); - virtual void printComputeMethodOpenMP (int n, ostream& fout); - virtual void printComputeMethodScheduler (int n, ostream& fout); - - virtual void printLoopGraphScalar(int n, ostream& fout); - virtual void printLoopGraphVector(int n, ostream& fout); - virtual void printLoopGraphOpenMP(int n, ostream& fout); - virtual void printLoopGraphScheduler(int n, ostream& fout); - virtual void printLoopGraphInternal(int n, ostream& fout); - virtual void printGraphDotFormat(ostream& fout); - - // experimental - virtual void printLoopDeepFirst(int n, ostream& fout, Loop* l, set& visited); - - virtual void printLastLoopLevelScheduler(int n, int lnum, const lset& L, ostream& fout); - virtual void printLoopLevelScheduler(int n, int lnum, const lset& L, ostream& fout); - virtual void printOneLoopScheduler(lset::const_iterator p, int n, ostream& fout); - virtual void printLoopLevelOpenMP(int n, int lnum, const lset& L, ostream& fout); - - virtual void printMetadata(int n, const map >& S, ostream& fout); - - virtual void printIncludeFile(ostream& fout); - - virtual void printLibrary(ostream& fout); - virtual void printAdditionalCode(ostream& fout); - - int inputs() { return fNumInputs; } - int outputs() { return fNumOutputs; } -}; - -class SigIntGenKlass : public Klass { - - public: - - SigIntGenKlass (const string& name) : Klass(name, "", 0, 1, false) {} - - virtual void println(int n, ostream& fout); -}; - -class SigFloatGenKlass : public Klass { - - public: - - SigFloatGenKlass (const string& name) : Klass(name, "", 0, 1, false) {} - - virtual void println(int n, ostream& fout); -}; - - -#endif