FAUST compiler  0.9.9.6b8
compile_vect.hh
Go to the documentation of this file.
1 /************************************************************************
2  ************************************************************************
3  FAUST compiler
4  Copyright (C) 2003-2004 GRAME, Centre National de Creation Musicale
5  ---------------------------------------------------------------------
6  This program is free software; you can redistribute it and/or modify
7  it under the terms of the GNU General Public License as published by
8  the Free Software Foundation; either version 2 of the License, or
9  (at your option) any later version.
10 
11  This program is distributed in the hope that it will be useful,
12  but WITHOUT ANY WARRANTY; without even the implied warranty of
13  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  GNU General Public License for more details.
15 
16  You should have received a copy of the GNU General Public License
17  along with this program; if not, write to the Free Software
18  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
19  ************************************************************************
20  ************************************************************************/
21 
22 
23 
24 #ifndef _COMPILE_VEC_
25 #define _COMPILE_VEC_
26 
27 #include "compile_scal.hh"
28 #include "loop.hh"
29 
30 extern int gMaxCopyDelay;
31 
32 
34 
37 
40 {
41 
42 public:
43 
44  VectorCompiler (const string& name, const string& super, int numInputs, int numOutputs)
45  : ScalarCompiler(name,super,numInputs,numOutputs)
46  {}
47 
49  {}
50  virtual void compileMultiSignal (Tree L);
51 
52 protected:
53 
54  virtual string CS (Tree sig);
55  virtual string generateCode (Tree sig);
56  virtual void generateCodeRecursions (Tree sig);
57  virtual string generateCodeNonRec (Tree sig);
58  virtual string generateLoopCode (Tree sig);
59 
60  virtual string generateCacheCode(Tree sig, const string& exp);
61  virtual void generateDelayLine(const string& ctype, const string& vname, int mxd, const string& exp);
62  virtual string generateVariableStore(Tree sig, const string& exp);
63  virtual string generateFixDelay (Tree sig, Tree exp, Tree delay);
64  virtual string generateDelayVec(Tree sig, const string& exp, const string& ctype, const string& vname, int mxd);
65  virtual void vectorLoop (const string& tname, const string& dlname, const string& cexp);
66  virtual void dlineLoop ( const string& tname, const string& dlname, int delay, const string& cexp);
67  virtual string generateWaveform(Tree sig);
68 
69  bool needSeparateLoop(Tree sig);
70 
71 };
72 
73 
74 #endif
Compile a list of FAUST signals into a scalar C++ class.
Definition: compile_scal.hh:40
virtual void compileMultiSignal(Tree L)
virtual string generateWaveform(Tree sig)
virtual string CS(Tree sig)
Compile a signal.
virtual string generateCode(Tree sig)
Main code generator dispatch.
Compile a list of FAUST signals into a vector C++ class.
Definition: compile_vect.hh:39
A CTree = (Node x [CTree]) is a Node associated with a list of subtrees called branches.
Definition: tree.hh:109
virtual void generateDelayLine(const string &ctype, const string &vname, int mxd, const string &exp)
Generate code for the delay mecchanism without using temporary variables.
virtual string generateCacheCode(Tree sig, const string &exp)
Generate cache code for a signal if needed.
bool needSeparateLoop(Tree sig)
Test if a signal need to be compiled in a separate loop.
virtual string generateCodeNonRec(Tree sig)
virtual void dlineLoop(const string &tname, const string &dlname, int delay, const string &cexp)
Generate the code for a (short) delay line.
VectorCompiler(Klass *k)
Definition: compile_vect.hh:48
Definition: klass.hh:55
virtual void vectorLoop(const string &tname, const string &dlname, const string &cexp)
Generate the code for a (short) delay line.
VectorCompiler(const string &name, const string &super, int numInputs, int numOutputs)
Definition: compile_vect.hh:44
int gMaxCopyDelay
Definition: main.cpp:131
const char * name(Symbol *sym)
Returns the name of a symbol.
Definition: symbol.hh:98
virtual string generateDelayVec(Tree sig, const string &exp, const string &ctype, const string &vname, int mxd)
Generate code for the delay mecchanism.
virtual string generateFixDelay(Tree sig, Tree exp, Tree delay)
Generate code for accessing a delayed signal.
virtual string generateVariableStore(Tree sig, const string &exp)
virtual string generateLoopCode(Tree sig)
Compile a signal.
virtual void generateCodeRecursions(Tree sig)