X-Git-Url: https://scm.cri.ensmp.fr/git/Faustine.git/blobdiff_plain/c7f552fd8888da2f0d8cfb228fe0f28d3df3a12c..b4b6f2ea75b9f0f3ca918f5b84016610bf7a4d4f:/interpretor/faust-0.9.47mr3/compiler/headers/signals.hh diff --git a/interpretor/faust-0.9.47mr3/compiler/headers/signals.hh b/interpretor/faust-0.9.47mr3/compiler/headers/signals.hh deleted file mode 100644 index 35a33c5..0000000 --- a/interpretor/faust-0.9.47mr3/compiler/headers/signals.hh +++ /dev/null @@ -1,301 +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 _SIGNALS_ -#define _SIGNALS_ - -#include "tlib.hh" -#include "binop.hh" -#include -#include - -using namespace std; - - -//////////////////////////////////////////////////////////////////////// -/** - * Signals - * Block-diagrams are converted into signal expressions via - * symbolic propagation - */ -/////////////////////////////////////////////////////////////////////// - -// Constant signals : for all t, x(t)=n -Tree sigInt(int n); -Tree sigReal(double n); - -bool isSigInt(Tree t, int* i); -bool isSigReal(Tree t, double* r); - - -// Inputs and outputs -Tree sigInput(int i); -Tree sigOutput(int i, Tree t); - -bool isSigInput(Tree t, int* i); -bool isSigOutput(Tree t, int* i, Tree& t0); - -// delay -Tree sigDelay0(Tree t); -Tree sigDelay1(Tree t); -bool isSigDelay1(Tree t, Tree& t0); - -Tree sigFixDelay(Tree t0, Tree t1); -bool isSigFixDelay(Tree t, Tree& t0, Tree& t1); - -Tree sigPrefix(Tree t0, Tree t1); -bool isSigPrefix(Tree t, Tree& t0, Tree& t1); - -Tree sigIota(Tree t0); -bool isSigIota(Tree t, Tree& t0); - -// Int and Double casting -Tree sigIntCast(Tree t); -Tree sigFloatCast(Tree t); - -bool isSigIntCast(Tree t); -bool isSigFloatCast(Tree t); - -bool isSigIntCast(Tree t, Tree& x); -bool isSigFloatCast(Tree t, Tree& x); - - -// tables -Tree sigRDTbl (Tree t, Tree i); -Tree sigWRTbl (Tree id, Tree t, Tree i, Tree s); -Tree sigTable (Tree id, Tree n, Tree sig); -Tree sigGen (Tree content); - -bool isSigRDTbl (Tree s, Tree& t, Tree& i); -bool isSigWRTbl (Tree u, Tree& id, Tree& t, Tree& i, Tree& s); -bool isSigTable (Tree t, Tree& id, Tree& n, Tree& sig); -bool isSigGen (Tree t, Tree& content); -bool isSigGen (Tree t); - -inline Tree sigWriteReadTable(Tree n, Tree init, Tree widx, Tree wsig, Tree ridx) -{ - return sigRDTbl(sigWRTbl(nil, sigTable(nil, n, sigGen(init)), widx, wsig), ridx); -} - -inline Tree sigReadOnlyTable(Tree n, Tree init, Tree ridx) -{ - return sigRDTbl(sigTable(nil, n, sigGen(init)), ridx); -} - - -// Tables for documentator -// used to replace real tables for documentation purposes only - -Tree sigDocConstantTbl(Tree n, Tree init); -Tree sigDocWriteTbl(Tree n, Tree init, Tree widx, Tree wsig); -Tree sigDocAccessTbl(Tree doctbl, Tree ridx); - -bool isSigDocConstantTbl(Tree s, Tree& n, Tree& init); -bool isSigDocWriteTbl(Tree s, Tree& n, Tree& init, Tree& widx, Tree& wsig); -bool isSigDocAccessTbl(Tree s, Tree& doctbl, Tree& ridx); - -// selectors - -Tree sigSelect2 (Tree selector, Tree s1, Tree s2); -Tree sigSelect3 (Tree selector, Tree s1, Tree s2, Tree s3); - -bool isSigSelect2 (Tree t, Tree& selector, Tree& s1, Tree& s2); -bool isSigSelect3 (Tree t, Tree& selector, Tree& s1, Tree& s2, Tree& s3); - - -// multirate -Tree sigVectorize (Tree n, Tree s); -bool isSigVectorize (Tree a, Tree& n, Tree& s); - -Tree sigSerialize (Tree s); -bool isSigSerialize (Tree a, Tree& s); - -Tree sigConcat (Tree s1, Tree s2); -bool isSigConcat (Tree a, Tree& s1, Tree& s2); - -Tree sigVectorAt (Tree s1, Tree s2); -bool isSigVectorAt (Tree a, Tree& s1, Tree& s2); - -Tree sigUpSample (Tree n, Tree s); -bool isSigUpSample (Tree a, Tree& n, Tree& s); - -Tree sigDownSample (Tree n, Tree s); -bool isSigDownSample (Tree a, Tree& n, Tree& s); - - -// arithmetical operations - -Tree sigBinOp (int op, Tree x, Tree y); -bool isSigBinOp (Tree s, int* op, Tree& x, Tree& y); - -// Foreign Functions - -Tree sigFFun (Tree ff, Tree largs); -bool isSigFFun (Tree s, Tree& ff, Tree& largs); - -// Foreign Constants - -Tree sigFConst (Tree type, Tree name, Tree file); -bool isSigFConst (Tree s); -bool isSigFConst (Tree s, Tree& type, Tree& name, Tree& file); - -// Foreign Variables - -Tree sigFVar (Tree type, Tree name, Tree file); -bool isSigFVar (Tree s); -bool isSigFVar (Tree s, Tree& type, Tree& name, Tree& file); - -// emulation des anciennes fonctions -inline Tree sigAdd(Tree x, Tree y) { return sigBinOp(kAdd, x, y); } -inline Tree sigSub(Tree x, Tree y) { return sigBinOp(kSub, x, y); } -inline Tree sigMul(Tree x, Tree y) { return sigBinOp(kMul, x, y); } -inline Tree sigDiv(Tree x, Tree y) { return sigBinOp(kDiv, x, y); } -inline Tree sigRem(Tree x, Tree y) { return sigBinOp(kRem, x, y); } - -inline Tree sigAND(Tree x, Tree y) { return sigBinOp(kAND, x, y); } -inline Tree sigOR(Tree x, Tree y) { return sigBinOp(kOR, x, y); } -inline Tree sigXOR(Tree x, Tree y) { return sigBinOp(kXOR, x, y); } - -inline Tree sigLeftShift(Tree x, Tree y) { return sigBinOp(kLsh, x, y); } -inline Tree sigRightShift(Tree x, Tree y) { return sigBinOp(kRsh, x, y); } - -inline Tree sigGT(Tree x, Tree y) { return sigBinOp(kGT, x, y); } -inline Tree sigLT(Tree x, Tree y) { return sigBinOp(kLT, x, y); } -inline Tree sigGE(Tree x, Tree y) { return sigBinOp(kGE, x, y); } -inline Tree sigLE(Tree x, Tree y) { return sigBinOp(kLE, x, y); } -inline Tree sigEQ(Tree x, Tree y) { return sigBinOp(kEQ, x, y); } -inline Tree sigNE(Tree x, Tree y) { return sigBinOp(kNE, x, y); } - -// pattern matching pour les anciennes fonctions -bool isSigAdd (Tree a, Tree&x, Tree&y); -bool isSigMul (Tree a, Tree&x, Tree&y); -bool isSigSub (Tree a, Tree&x, Tree&y); -bool isSigDiv (Tree a, Tree&x, Tree&y); - -// operations pratiques sur des arbres dont on sait qu'ils sont des nombres -Tree addNums (Tree a, Tree b); -Tree subNums (Tree a, Tree b); -Tree mulNums (Tree a, Tree b); -Tree divNums (Tree a, Tree b); -Tree divExtendedNums (Tree a, Tree b); -Tree minusNum (Tree a); -Tree inverseNum (Tree a); - -// tests sur les signaux constants -inline bool isNum (Tree a) { assert(a); return isNum(a->node()); } -inline bool isZero (Tree a) { assert(a); return isZero(a->node()); } -inline bool isGTZero (Tree a) { assert(a); return isGTZero(a->node()); } -inline bool isGEZero (Tree a) { assert(a); return isGEZero(a->node()); } -inline bool isOne (Tree a) { assert(a); return isOne(a->node()); } -inline bool isMinusOne (Tree a) { assert(a); return isMinusOne(a->node()); } - -//projection for recursive groups -Tree sigProj (int i, Tree rgroup); -bool isProj (Tree t, int* i, Tree& rgroup); - -inline bool isNum(const Tree& t, num& n) -{ - double f; - int i; - - if (isDouble(t->node(), &f)) { n = f; return true; } - if (isInt(t->node(), &i)) { n = i; return true; } - return false; -} - - -/***************************************************************************** - User Interface Elements -*****************************************************************************/ - -Tree sigButton (Tree label); -bool isSigButton (Tree s); -bool isSigButton (Tree s, Tree& label); - -Tree sigCheckbox (Tree label); -bool isSigCheckbox (Tree s); -bool isSigCheckbox (Tree s, Tree& label); - -Tree sigVSlider (Tree label, Tree cur, Tree min, Tree max, Tree step); -bool isSigVSlider (Tree s); -bool isSigVSlider (Tree s, Tree& label, Tree& cur, Tree& min, Tree& max, Tree& step); - -Tree sigHSlider (Tree label, Tree cur, Tree min, Tree max, Tree step); -bool isSigHSlider (Tree s); -bool isSigHSlider (Tree s, Tree& label, Tree& cur, Tree& min, Tree& max, Tree& step); - -Tree sigNumEntry (Tree label, Tree cur, Tree min, Tree max, Tree step); -bool isSigNumEntry (Tree s); -bool isSigNumEntry (Tree s, Tree& label, Tree& cur, Tree& min, Tree& max, Tree& step); - -// output elements -Tree sigVBargraph (Tree label, Tree min, Tree max, Tree t0); -bool isSigVBargraph (Tree s); -bool isSigVBargraph (Tree s, Tree& label, Tree& min, Tree& max, Tree& t0); - -Tree sigHBargraph (Tree label, Tree min, Tree max, Tree t0); -bool isSigHBargraph (Tree s); -bool isSigHBargraph (Tree s, Tree& label, Tree& min, Tree& max, Tree& t0); - -Tree sigAttach (Tree x, Tree y); -bool isSigAttach (Tree s); -bool isSigAttach (Tree s, Tree& x, Tree& y); - - -/***************************************************************************** - matrix extension -*****************************************************************************/ - -// a tuple of signals is basically a list of signals. -// mode = 0 means normal, mode = 1 means blocked -Tree sigTuple (int mode, Tree ls); -bool isSigTuple (Tree s, int* mode, Tree& ls); - -// Access the components of a tuple. -// ts is tuple of signals, idx is a scalar signal between 0..n -Tree sigTupleAccess(Tree ts, Tree idx); -bool isSigTupleAccess(Tree s, Tree& ts, Tree& idx); - -// create a tuple of signals -Tree sigCartesianProd (Tree s1, Tree s2); - - - -/***************************************************************************** - access to sub signals of a signal -*****************************************************************************/ - -int getSubSignals (Tree sig, vector& vsigs, bool visitgen=true); - - -/** - * Test if exp is very simple that is it - * can't be considered a real component - * @param exp the signal we want to test - * @return true if it a very simple signal - */ -bool verySimple(Tree exp); - - - -#endif