X-Git-Url: https://scm.cri.ensmp.fr/git/Faustine.git/blobdiff_plain/1059e1cc0c2ecfa237406949aa26155b6a5b9154:/interpretor/preprocessor/faust-0.9.47mr3/compiler/boxes/boxcomplexity.cpp..66f23d4fabf89ad09adbd4dfc15ac6b5b2b7da83:/interpreter/preprocessor/faust-0.9.47mr3/compiler/boxes/static/git-logo.png diff --git a/interpretor/preprocessor/faust-0.9.47mr3/compiler/boxes/boxcomplexity.cpp b/interpretor/preprocessor/faust-0.9.47mr3/compiler/boxes/boxcomplexity.cpp deleted file mode 100644 index 01a205e..0000000 --- a/interpretor/preprocessor/faust-0.9.47mr3/compiler/boxes/boxcomplexity.cpp +++ /dev/null @@ -1,157 +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. - ************************************************************************ - ************************************************************************/ -/** - * @file boxcomplexity.cpp - * Implement complexity computation for box diagrams. - */ - - - - -// construction des representations graphiques - - -#include -#include "xtended.hh" -#include "boxcomplexity.h" - -using namespace std; - -/** - * property Key used to store box complexity - */ -Tree BCOMPLEXITY = tree ("BCOMPLEXITY"); - -static int computeBoxComplexity (Tree box); - -/** - * Return the complexity propety of a box expression tree. - * Return the complexity propety of a box expression tree. If no - * complexity property exist, it is created an computeBoxComplexity - * is called do to the job. - * - * @param box an evaluated box expression tree - * @return the complexity of box - * - * @see computeBoxComplexity - */ -int boxComplexity (Tree box) -{ - Tree prop = box->getProperty(BCOMPLEXITY); - - if (prop) { - return tree2int(prop); - - } else { - int v = computeBoxComplexity(box); - box->setProperty(BCOMPLEXITY,tree(v)); - return v; - } -} - -/** - * internal shortcut to simplify computeBoxComplexity code - */ -#define BC boxComplexity - - -/** - * Compute the complexity of a box expression. - * - * Compute the complexity of a box expression tree according to the - * complexity of its subexpressions. Basically it counts the number - * of boxes to be drawn. The box-diagram expression is supposed - * to be evaluated. It will exit with an error if it is not the case. - * - * @param box an evaluated box expression tree - * @return the complexity of box - */ -int computeBoxComplexity (Tree box) -{ - int i; - double r; - prim0 p0; - prim1 p1; - prim2 p2; - prim3 p3; - prim4 p4; - prim5 p5; - - Tree t1, t2, ff, label, cur, min, max, step, type, name, file; - - xtended* xt = (xtended*) getUserData(box); - - - // simple elements - if (xt) return 1; - else if (isBoxInt(box, &i)) return 1; - else if (isBoxReal(box, &r)) return 1; - - else if (isBoxCut(box)) return 0; - else if (isBoxWire(box)) return 0; - - else if (isBoxPrim0(box, &p0)) return 1; - else if (isBoxPrim1(box, &p1)) return 1; - else if (isBoxPrim2(box, &p2)) return 1; - else if (isBoxPrim3(box, &p3)) return 1; - else if (isBoxPrim4(box, &p4)) return 1; - else if (isBoxPrim5(box, &p5)) return 1; - - // foreign elements - else if (isBoxFFun(box, ff)) return 1; - else if (isBoxFConst(box, type, name, file)) - return 1; - else if (isBoxFVar(box, type, name, file)) - return 1; - // slots and symbolic boxes - else if (isBoxSlot(box, &i)) return 1; - else if (isBoxSymbolic(box,t1,t2)) return 1 + BC(t2); - - // block diagram binary operator - else if (isBoxSeq(box, t1, t2)) return BC(t1) + BC(t2); - else if (isBoxSplit(box, t1, t2)) return BC(t1) + BC(t2); - else if (isBoxMerge(box, t1, t2)) return BC(t1) + BC(t2); - else if (isBoxPar(box, t1, t2)) return BC(t1) + BC(t2); - else if (isBoxRec(box, t1, t2)) return BC(t1) + BC(t2); - - // user interface widgets - else if (isBoxButton(box, label)) return 1; - else if (isBoxCheckbox(box, label)) return 1; - else if (isBoxVSlider(box, label, cur, min, max, step)) return 1; - else if (isBoxHSlider(box, label, cur, min, max, step)) return 1; - else if (isBoxHBargraph(box, label, min, max)) return 1; - else if (isBoxVBargraph(box, label, min, max)) return 1; - else if (isBoxNumEntry(box, label, cur, min, max, step))return 1; - - // user interface groups - else if (isBoxVGroup(box, label, t1)) return BC(t1); - else if (isBoxHGroup(box, label, t1)) return BC(t1); - else if (isBoxTGroup(box, label, t1)) return BC(t1); - - //a completer - else { - //fout << tree2str(box); - cerr << "ERROR in boxComplexity : not an evaluated box [[ " << *box << " ]]"; - exit(-1); - } - - return -1; -}