+++ /dev/null
-#ifndef _BOXES_
-#define _BOXES_
-
-/************************************************************************
- ************************************************************************
- 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.
- ************************************************************************
- ************************************************************************/
-
-
-
-/*****************************************************************************
-******************************************************************************
- FAUST BOX ALGEBRA
- Y. Orlarey, (c) Grame 2002
-------------------------------------------------------------------------------
-box ::= i | f | p0 | p1 | p3
- | _ | ! | a:b | a<:b | a,b | a:>b | a~b
-
- History :
- ---------
- 2002-06-06 : First version
-
-******************************************************************************
-*****************************************************************************/
-
-#include "tlib.hh"
-#include "signals.hh"
-
-struct Automaton;
-
-/*****************************************************************************
-******************************************************************************
-
- The Box Language
-
-******************************************************************************
-*****************************************************************************/
-
-
-/*****************************************************************************
- Identifiers
-*****************************************************************************/
-
-Tree boxIdent(const char* name);
-bool isBoxIdent(Tree t);
-bool isBoxIdent(Tree t, const char** name);
-
-
-/*****************************************************************************
- Numbers
-*****************************************************************************/
-
-Tree boxInt(int n);
-Tree boxReal(double n);
-
-bool isBoxInt(Tree t);
-bool isBoxReal(Tree t);
-
-bool isBoxInt(Tree t, int* i);
-bool isBoxReal(Tree t, double* r);
-
-
-/*****************************************************************************
- Wire and Cut
-*****************************************************************************/
-
-Tree boxWire();
-Tree boxCut();
-
-bool isBoxWire(Tree t);
-bool isBoxCut(Tree t);
-
-
-/*****************************************************************************
- Symbolic Boxes with symbolic slots
-*****************************************************************************/
-
-Tree boxSlot(int id);
-Tree boxSymbolic(Tree slot, Tree body);
-
-bool isBoxSlot(Tree t);
-bool isBoxSymbolic(Tree t);
-
-bool isBoxSlot(Tree t, int* id);
-bool isBoxSymbolic(Tree t, Tree& slot, Tree& body);
-
-
-/*****************************************************************************
- Composition of Boxes
-*****************************************************************************/
-
-Tree boxSeq (Tree x, Tree y);
-Tree boxPar (Tree x, Tree y);
-Tree boxRec (Tree x, Tree y);
-Tree boxSplit (Tree x, Tree y);
-Tree boxMerge (Tree x, Tree y);
-
-bool isBoxSeq (Tree t, Tree& x, Tree& y);
-bool isBoxPar (Tree t, Tree& x, Tree& y);
-bool isBoxRec (Tree t, Tree& x, Tree& y);
-bool isBoxSplit (Tree t, Tree& x, Tree& y);
-bool isBoxMerge (Tree t, Tree& x, Tree& y);
-
-/*****************************************************************************
- Algorithmic Composition of Boxes
-*****************************************************************************/
-
-Tree boxIPar(Tree x, Tree y, Tree z);
-Tree boxISeq(Tree x, Tree y, Tree z);
-Tree boxISum(Tree x, Tree y, Tree z);
-Tree boxIProd(Tree x, Tree y, Tree z);
-
-bool isBoxIPar(Tree t, Tree& x, Tree& y, Tree& z);
-bool isBoxISeq(Tree t, Tree& x, Tree& y, Tree& z);
-bool isBoxISum(Tree t, Tree& x, Tree& y, Tree& z);
-bool isBoxIProd(Tree t, Tree& x, Tree& y, Tree& z);
-
-
-/*****************************************************************************
- Lambda-Calculus of Boxes
-*****************************************************************************/
-
-Tree buildBoxAbstr (Tree x, Tree y);
-Tree buildBoxAppl (Tree x, Tree y);
-
-Tree boxAbstr (Tree x, Tree y);
-Tree boxAppl (Tree x, Tree y);
-
-bool isBoxAbstr (Tree t);
-bool isBoxAppl (Tree t);
-
-bool isBoxAbstr (Tree t, Tree& x, Tree& y);
-bool isBoxAppl (Tree t, Tree& x, Tree& y);
-
-Tree closure (Tree abstr, Tree genv, Tree vis, Tree lenv);
-
-bool isClosure (Tree t, Tree& abstr, Tree& genv, Tree& vis, Tree& lenv);
-
-// for foo(x,y).faa expressions
-Tree boxAccess (Tree exp, Tree id);
-bool isBoxAccess(Tree t, Tree& exp, Tree& id);
-
-
-/*****************************************************************************
- Boxes with local definitions
-*****************************************************************************/
-
-Tree boxWithLocalDef (Tree body, Tree ldef);
-bool isBoxWithLocalDef (Tree t, Tree& body, Tree& ldef);
-
-
-/*****************************************************************************
- Modification of local definitions
-*****************************************************************************/
-
-Tree boxModifLocalDef (Tree body, Tree ldef);
-bool isBoxModifLocalDef (Tree t, Tree& body, Tree& ldef);
-
-
-/*****************************************************************************
- Error Boxe
-*****************************************************************************/
-
-Tree boxError();
-bool isBoxError(Tree t);
-
-/*****************************************************************************
- Primitive Boxes (n -> 1)
-*****************************************************************************/
-
-typedef Tree (*prim0)();
-typedef Tree (*prim1)(Tree x);
-typedef Tree (*prim2)(Tree x, Tree y);
-typedef Tree (*prim3)(Tree x, Tree y, Tree z);
-typedef Tree (*prim4)(Tree w, Tree x, Tree y, Tree z);
-typedef Tree (*prim5)(Tree v, Tree w, Tree x, Tree y, Tree z);
-
-Tree boxPrim0 (prim0 foo);
-Tree boxPrim1 (prim1 foo);
-Tree boxPrim2 (prim2 foo);
-Tree boxPrim3 (prim3 foo);
-Tree boxPrim4 (prim4 foo);
-Tree boxPrim5 (prim5 foo);
-
-bool isBoxPrim0 (Tree s);
-bool isBoxPrim1 (Tree s);
-bool isBoxPrim2 (Tree s);
-bool isBoxPrim3 (Tree s);
-bool isBoxPrim4 (Tree s);
-bool isBoxPrim5 (Tree s);
-
-bool isBoxPrim0 (Tree s, prim0* p);
-bool isBoxPrim1 (Tree s, prim1* p);
-bool isBoxPrim2 (Tree s, prim2* p);
-bool isBoxPrim3 (Tree s, prim3* p);
-bool isBoxPrim4 (Tree s, prim4* p);
-bool isBoxPrim5 (Tree s, prim5* p);
-
-
-/*****************************************************************************
- Foreign Functions
-*****************************************************************************/
-
-Tree boxFFun (Tree ff);
-bool isBoxFFun (Tree s);
-bool isBoxFFun (Tree s, Tree& ff);
-
-
-Tree boxFConst (Tree type, Tree name, Tree file);
-bool isBoxFConst (Tree s);
-bool isBoxFConst (Tree s, Tree& type, Tree& name, Tree& file);
-
-
-Tree boxFVar (Tree type, Tree name, Tree file);
-bool isBoxFVar (Tree s);
-bool isBoxFVar (Tree s, Tree& type, Tree& name, Tree& file);
-
-
-/*****************************************************************************
- Modules
-*****************************************************************************/
-
-Tree boxEnvironment();
-bool isBoxEnvironment (Tree s);
-
-Tree boxComponent (Tree filename);
-bool isBoxComponent (Tree s, Tree& filename);
-
-Tree boxLibrary (Tree filename);
-bool isBoxLibrary (Tree s, Tree& filename);
-
-Tree importFile(Tree filename);
-bool isImportFile(Tree s, Tree& filename);
-
-
-/*****************************************************************************
- User Interface Elements
-*****************************************************************************/
-
-Tree boxButton (Tree label);
-bool isBoxButton (Tree s);
-bool isBoxButton (Tree s, Tree& label);
-
-Tree boxCheckbox (Tree label);
-bool isBoxCheckbox (Tree s);
-bool isBoxCheckbox (Tree s, Tree& label);
-
-Tree boxVSlider (Tree label, Tree cur, Tree min, Tree max, Tree step);
-bool isBoxVSlider (Tree s);
-bool isBoxVSlider (Tree s, Tree& label, Tree& cur, Tree& min, Tree& max, Tree& step);
-
-Tree boxHSlider (Tree label, Tree cur, Tree min, Tree max, Tree step);
-bool isBoxHSlider (Tree s);
-bool isBoxHSlider (Tree s, Tree& label, Tree& cur, Tree& min, Tree& max, Tree& step);
-
-Tree boxNumEntry (Tree label, Tree cur, Tree min, Tree max, Tree step);
-bool isBoxNumEntry (Tree s);
-bool isBoxNumEntry (Tree s, Tree& label, Tree& cur, Tree& min, Tree& max, Tree& step);
-
-Tree boxVGroup (Tree label, Tree x);
-bool isBoxVGroup (Tree s);
-bool isBoxVGroup (Tree s, Tree& label, Tree& x);
-
-Tree boxHGroup (Tree label, Tree x);
-bool isBoxHGroup (Tree s);
-bool isBoxHGroup (Tree s, Tree& label, Tree& x);
-
-Tree boxTGroup (Tree label, Tree x);
-bool isBoxTGroup (Tree s);
-bool isBoxTGroup (Tree s, Tree& label, Tree& x);
-
-// GUI outputs
-Tree boxVBargraph (Tree label, Tree min, Tree max);
-bool isBoxVBargraph (Tree s);
-bool isBoxVBargraph (Tree s, Tree& label, Tree& min, Tree& max);
-
-Tree boxHBargraph (Tree label, Tree min, Tree max);
-bool isBoxHBargraph (Tree s);
-bool isBoxHBargraph (Tree s, Tree& label, Tree& min, Tree& max);
-
-
-/*****************************************************************************
- case (pattern matching)
-*****************************************************************************/
-Tree boxCase (Tree rules);
-bool isBoxCase (Tree s);
-bool isBoxCase (Tree s, Tree& rules);
-
-Tree boxPatternMatcher (Automaton* a, int state, Tree env, Tree origRules, Tree revParamList);
-bool isBoxPatternMatcher (Tree s);
-bool isBoxPatternMatcher (Tree s, Automaton*& a, int& state, Tree& env, Tree& origRules, Tree& revParamList);
-
-// wrap an id into a pattern variable
-Tree boxPatternVar (Tree id);
-bool isBoxPatternVar(Tree s, Tree& id);
-
-
-/*****************************************************************************
-******************************************************************************
-
- Box Algorithms
-
-******************************************************************************
-*****************************************************************************/
-
-// return the number of input
-bool getBoxType (Tree box, int* inum, int* onum);
-
-
-#endif