+++ /dev/null
-/************************************************************************
- ************************************************************************
- 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 _DOC_COMPILE_SCAL_
-#define _DOC_COMPILE_SCAL_
-
-
-#include <string>
-#include <list>
-#include <map>
-
-#include "sigtyperules.hh"
-#include "occurences.hh"
-#include "property.hh"
-#include "signals.hh"
-#include "lateq.hh"
-#include "Text.hh"
-#include "doc_Text.hh"
-#include "description.hh"
-
-
-///////////////////////////////////////////////////////////////////////
-/**
- * Compile a list of FAUST signals into a list of LaTeX formulas.
- */
-///////////////////////////////////////////////////////////////////////
-
-class DocCompiler
-{
- protected:
-
- property<string> fCompileProperty;
- property<string> fVectorProperty;
-
- Lateq* fLateq;
- Description* fDescription;
-
- static map<string, int> fIDCounters;
- Tree fSharingKey;
- OccMarkup fOccMarkup;
- int fPriority; ///< math priority context
-
-
- public:
-
- DocCompiler (int numInputs, int numOutputs)
- :
- fLateq(new Lateq(numInputs, numOutputs)),
- fDescription(0),
- fPriority(0)
- {}
-
- DocCompiler ( Lateq* k, int priority)
- :
- fLateq(k),
- fDescription(0),
- fPriority(priority)
- {}
-
- ~DocCompiler()
- {}
-
- Lateq* compileLateq (Tree L, Lateq* compiledEqn);
- Tree annotate(Tree L0);
-
- Lateq* getLateq() { return (Lateq*)fLateq; }
- void setDescription(Description* descr) { fDescription= descr; }
- Description* getDescription() { return fDescription; }
-
-
- protected:
-
- string CS (Tree sig, int priority);
- string generateCode (Tree sig, int priority);
- string generateCacheCode(Tree sig, const string& exp) ;
- string generateVariableStore(Tree sig, const string& exp);
-
- string getFreshID (const string& prefix);
-
- bool getCompiledExpression(Tree sig, string& name);
- string setCompiledExpression(Tree sig, const string& name);
-
- void setVectorNameProperty(Tree sig, const string& vecname);
- bool getVectorNameProperty(Tree sig, string& vecname);
-
- int getSharingCount(Tree t);
- void setSharingCount(Tree t, int count);
- void sharingAnalysis(Tree t);
- void sharingAnnotation(int vctxt, Tree t);
-
- bool isShortEnough(string& s, unsigned int max);
-
-
- /* Code generation. */
-
- string generateXtended (Tree sig, int priority);
- string generateFixDelay (Tree sig, Tree arg, Tree size, int priority);
- string generatePrefix (Tree sig, Tree x, Tree e, int priority);
- string generateIota (Tree sig, Tree arg);
- string generateBinOp (Tree sig, int opcode, Tree arg1, Tree arg2, int priority);
-
- string generateFFun (Tree sig, Tree ff, Tree largs, int priority);
-
- string generateInput (Tree sig, const string& idx);
- string generateOutput (Tree sig, const string& idx, const string& arg1);
-
-// string generateDocReadOnlyTbl (Tree sig, Tree size, Tree content, Tree ridx);
-// string generateDocReadWriteTbl (Tree sig, Tree size, Tree content, Tree widx, Tree wsig, Tree ridx);
- string generateDocConstantTbl (Tree sig, Tree size, Tree content);
- string generateDocWriteTbl (Tree sig, Tree size, Tree content, Tree widx, Tree wsig);
- string generateDocAccessTbl (Tree sig, Tree tbl, Tree ridx);
-
- string generateSelect2 (Tree sig, Tree sel, Tree s1, Tree s2, int priority);
- string generateSelect3 (Tree sig, Tree sel, Tree s1, Tree s2, Tree s3, int priority);
-
- string generateRecProj (Tree sig, Tree exp, int i, int priority);
- void generateRec (Tree sig, Tree var, Tree le, int priority);
-
- string generateIntCast (Tree sig, Tree x, int priority);
- string generateFloatCast (Tree sig, Tree x, int priority);
-
- string generateButton (Tree sig, Tree label);
- string generateCheckbox (Tree sig, Tree label);
- string generateVSlider (Tree sig, Tree label, Tree cur, Tree min, Tree max, Tree step);
- string generateHSlider (Tree sig, Tree label, Tree cur, Tree min, Tree max, Tree step);
- string generateNumEntry (Tree sig, Tree label, Tree cur, Tree min, Tree max, Tree step);
-
- string generateVBargraph (Tree sig, Tree label, Tree min, Tree max, const string& exp);
- string generateHBargraph (Tree sig, Tree label, Tree min, Tree max, const string& exp);
- string generateAttach (Tree sig, Tree x, Tree y, int priority);
-
- string generateNumber(Tree sig, const string& exp);
- string generateFConst (Tree sig, const string& file, const string& name);
- string generateFVar (Tree sig, const string& file, const string& name);
-
- string generateDelayVec(Tree sig, const string& exp, const string& ctype, const string& vname, int mxd);
- string generateDelayVecNoTemp(Tree sig, const string& exp, const string& ctype, const string& vname, int mxd);
- void generateDelayLine(const string& ctype, const string& vname, int mxd, const string& exp);
-
- void getTypedNames(Type t, const string& prefix, string& ctype, string& vname);
- void printGCCall(Tree sig, const string& calledFunction);
-
-
- /* Managment of user interface elements. */
-
- void getUIDocInfos(Tree path, string& label, string& unit);
- string getUIDir (Tree pathname);
- string prepareBinaryUI(const string& name, Tree pathname);
- string prepareIntervallicUI(const string& name, Tree path, Tree tcur, Tree tmin, Tree tmax);
-};
-
-#endif