FAUST compiler  0.9.9.6b8
Functions | Variables
boxes.cpp File Reference

Implementation of block diagram expressions. Boxes are created using five main connection operations : sequential (:), parallel (,), split (<:), merge (:>), and recursive (~). More...

#include <stdio.h>
#include <string.h>
#include "boxes.hh"
#include "ppbox.hh"
#include "prim2.hh"
#include "xtended.hh"
Include dependency graph for boxes.cpp:

Go to the source code of this file.

Functions

Tree boxIdent (const char *name)
bool isBoxIdent (Tree t)
bool isBoxIdent (Tree t0, const char **str)
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)
Tree boxCut ()
bool isBoxCut (Tree t)
Tree boxWire ()
bool isBoxWire (Tree t)
Tree boxSlot (int id)
bool isBoxSlot (Tree t)
bool isBoxSlot (Tree t, int *id)
Tree boxSymbolic (Tree slot, Tree body)
bool isBoxSymbolic (Tree t)
bool isBoxSymbolic (Tree t, Tree &slot, Tree &body)
Tree boxSeq (Tree x, Tree y)
bool isBoxSeq (Tree t, Tree &x, Tree &y)
Tree boxPar (Tree x, Tree y)
bool isBoxPar (Tree t, Tree &x, Tree &y)
Tree boxRec (Tree x, Tree y)
bool isBoxRec (Tree t, Tree &x, Tree &y)
Tree boxSplit (Tree x, Tree y)
bool isBoxSplit (Tree t, Tree &x, Tree &y)
Tree boxMerge (Tree x, Tree y)
bool isBoxMerge (Tree t, Tree &x, Tree &y)
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)
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 buildBoxAbstr (Tree largs, Tree body)
Tree buildBoxAppl (Tree fun, Tree revarglist)
Tree closure (Tree abstr, Tree genv, Tree vis, Tree lenv)
bool isClosure (Tree t, Tree &abstr, Tree &genv, Tree &vis, Tree &lenv)
Tree boxError ()
bool isBoxError (Tree t)
Tree boxAccess (Tree exp, Tree id)
bool isBoxAccess (Tree t, Tree &exp, Tree &id)
Tree boxWithLocalDef (Tree body, Tree ldef)
bool isBoxWithLocalDef (Tree t, Tree &body, Tree &ldef)
Tree boxModifLocalDef (Tree body, Tree ldef)
bool isBoxModifLocalDef (Tree t, Tree &body, Tree &ldef)
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)
Tree boxPrim0 (prim0 foo)
bool isBoxPrim0 (Tree s)
bool isBoxPrim0 (Tree s, prim0 *p)
Tree boxPrim1 (prim1 foo)
bool isBoxPrim1 (Tree s)
bool isBoxPrim1 (Tree s, prim1 *p)
Tree boxPrim2 (prim2 foo)
bool isBoxPrim2 (Tree s)
bool isBoxPrim2 (Tree s, prim2 *p)
Tree boxPrim3 (prim3 foo)
bool isBoxPrim3 (Tree s)
bool isBoxPrim3 (Tree s, prim3 *p)
Tree boxPrim4 (prim4 foo)
bool isBoxPrim4 (Tree s)
bool isBoxPrim4 (Tree s, prim4 *p)
Tree boxPrim5 (prim5 foo)
bool isBoxPrim5 (Tree s)
bool isBoxPrim5 (Tree s, prim5 *p)
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)
Tree boxButton (Tree lbl)
bool isBoxButton (Tree s)
bool isBoxButton (Tree s, Tree &lbl)
Tree boxCheckbox (Tree lbl)
bool isBoxCheckbox (Tree s)
bool isBoxCheckbox (Tree s, Tree &lbl)
Tree boxHSlider (Tree lbl, Tree cur, Tree min, Tree max, Tree step)
bool isBoxHSlider (Tree s)
bool isBoxHSlider (Tree s, Tree &lbl, Tree &cur, Tree &min, Tree &max, Tree &step)
Tree boxVSlider (Tree lbl, Tree cur, Tree min, Tree max, Tree step)
bool isBoxVSlider (Tree s)
bool isBoxVSlider (Tree s, Tree &lbl, Tree &cur, Tree &min, Tree &max, Tree &step)
Tree boxNumEntry (Tree lbl, Tree cur, Tree min, Tree max, Tree step)
bool isBoxNumEntry (Tree s)
bool isBoxNumEntry (Tree s, Tree &lbl, Tree &cur, Tree &min, Tree &max, Tree &step)
Tree boxHGroup (Tree lbl, Tree x)
bool isBoxHGroup (Tree s)
bool isBoxHGroup (Tree s, Tree &lbl, Tree &x)
Tree boxVGroup (Tree lbl, Tree x)
bool isBoxVGroup (Tree s)
bool isBoxVGroup (Tree s, Tree &lbl, Tree &x)
Tree boxTGroup (Tree lbl, Tree x)
bool isBoxTGroup (Tree s)
bool isBoxTGroup (Tree s, Tree &lbl, Tree &x)
Tree boxHBargraph (Tree lbl, Tree min, Tree max)
bool isBoxHBargraph (Tree s)
bool isBoxHBargraph (Tree s, Tree &lbl, Tree &min, Tree &max)
Tree boxVBargraph (Tree lbl, Tree min, Tree max)
bool isBoxVBargraph (Tree s)
bool isBoxVBargraph (Tree s, Tree &lbl, Tree &min, Tree &max)
static Tree preparePattern (Tree box)
 Prepare a "pattern" by replacing variables x by special pattern variables ?x.
static Tree prepareRule (Tree rule)
static Tree prepareRules (Tree rules)
Tree boxCaseInternal (Tree rules)
Tree boxCase (Tree rules)
bool isBoxCase (Tree s)
bool isBoxCase (Tree s, Tree &rules)
Tree boxPatternVar (Tree id)
bool isBoxPatternVar (Tree s, Tree &id)
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)

Variables

Sym BOXIDENT = symbol ("BoxIdent")
Sym BOXCUT = symbol ("BoxCut")
Sym BOXWIRE = symbol ("BoxWire")
Sym BOXSLOT = symbol ("BoxSlot")
Sym BOXSYMBOLIC = symbol ("BoxSymbolic")
Sym BOXSEQ = symbol ("BoxSeq")
Sym BOXPAR = symbol ("BoxPar")
Sym BOXREC = symbol ("BoxRec")
Sym BOXSPLIT = symbol ("BoxSplit")
Sym BOXMERGE = symbol ("BoxMerge")
Sym BOXIPAR = symbol ("BoxIPar")
Sym BOXISEQ = symbol ("BoxISeq")
Sym BOXISUM = symbol ("BoxISum")
Sym BOXIPROD = symbol ("BoxIProd")
Sym BOXABSTR = symbol ("BoxAbstr")
Sym BOXAPPL = symbol ("BoxAppl")
Sym CLOSURE = symbol ("Closure")
Sym BOXERROR = symbol ("BoxError")
Sym BOXACCESS = symbol ("BoxAccess")
Sym BOXWITHLOCALDEF = symbol ("BoxWithLocalDef")
Sym BOXMODIFLOCALDEF = symbol ("BoxModifLocalDef")
Sym BOXENVIRONMENT = symbol ("BoxEnvironment")
Sym BOXCOMPONENT = symbol ("BoxComponent")
Sym BOXLIBRARY = symbol ("BoxLibrary")
Sym IMPORTFILE = symbol ("ImportFile")
Sym BOXPRIM0 = symbol ("BoxPrim0")
Sym BOXPRIM1 = symbol ("BoxPrim1")
Sym BOXPRIM2 = symbol ("BoxPrim2")
Sym BOXPRIM3 = symbol ("BoxPrim3")
Sym BOXPRIM4 = symbol ("BoxPrim4")
Sym BOXPRIM5 = symbol ("BoxPrim5")
Sym BOXFFUN = symbol ("BoxFFun")
Sym BOXFCONST = symbol ("BoxFConst")
Sym BOXFVAR = symbol ("BoxFVar")
Sym BOXBUTTON = symbol ("BoxButton")
Sym BOXCHECKBOX = symbol ("BoxCheckbox")
Sym BOXHSLIDER = symbol ("BoxHSlider")
Sym BOXVSLIDER = symbol ("BoxVSlider")
Sym BOXNUMENTRY = symbol ("BoxNumEntry")
Sym BOXHGROUP = symbol ("BoxHGroup")
Sym BOXVGROUP = symbol ("BoxVGroup")
Sym BOXTGROUP = symbol ("BoxTGroup")
Sym BOXHBARGRAPH = symbol ("BoxHBargraph")
Sym BOXVBARGRAPH = symbol ("BoxVBargraph")
Sym BOXCASE = symbol ("BoxCase")
Sym BOXPATMATCHER = symbol ("BoxPatMatcher")
Sym BOXPATVAR = symbol ("BoxPatVar")

Detailed Description

Implementation of block diagram expressions. Boxes are created using five main connection operations : sequential (:), parallel (,), split (<:), merge (:>), and recursive (~).

Author:
Yann Orlarey
Version:
1.0
Date:
2003

Definition in file boxes.cpp.


Function Documentation

Tree boxAbstr ( Tree  x,
Tree  y 
)

Definition at line 171 of file boxes.cpp.

References tree().

Referenced by buildBoxAbstr().

{ return tree(BOXABSTR, x, y); }

Here is the call graph for this function:

Here is the caller graph for this function:

Tree boxAccess ( Tree  exp,
Tree  id 
)

Definition at line 226 of file boxes.cpp.

References tree().

Referenced by yyparse().

{ return tree(BOXACCESS, exp, id); }

Here is the call graph for this function:

Here is the caller graph for this function:

Tree boxAppl ( Tree  x,
Tree  y 
)

Definition at line 172 of file boxes.cpp.

References tree().

Referenced by buildBoxAppl(), and preparePattern().

{ return tree(BOXAPPL, x, y); }

Here is the call graph for this function:

Here is the caller graph for this function:

Tree boxButton ( Tree  lbl)

Definition at line 336 of file boxes.cpp.

References tree().

Referenced by realeval(), and yyparse().

{ return tree(BOXBUTTON, lbl);                  }

Here is the call graph for this function:

Here is the caller graph for this function:

Tree boxCase ( Tree  rules)

Definition at line 581 of file boxes.cpp.

References boxCaseInternal(), and prepareRules().

Referenced by applyList(), makeDefinition(), and yyparse().

{ return boxCaseInternal(prepareRules(rules));  }

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 580 of file boxes.cpp.

References tree().

Referenced by boxCase().

{ return tree(BOXCASE, rules);                  }

Here is the call graph for this function:

Here is the caller graph for this function:

Tree boxCheckbox ( Tree  lbl)

Definition at line 342 of file boxes.cpp.

References tree().

Referenced by realeval(), and yyparse().

{ return tree(BOXCHECKBOX, lbl);                    }

Here is the call graph for this function:

Here is the caller graph for this function:

Tree boxComponent ( Tree  filename)

Definition at line 260 of file boxes.cpp.

References tree().

Referenced by yyparse().

{ return tree(BOXCOMPONENT, filename); }

Here is the call graph for this function:

Here is the caller graph for this function:

Tree boxCut ( )

Definition at line 90 of file boxes.cpp.

References tree().

Referenced by yyparse().

{ return tree(BOXCUT); }

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 255 of file boxes.cpp.

References tree().

Referenced by realeval(), and yyparse().

{ return tree(BOXENVIRONMENT); }

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 215 of file boxes.cpp.

References tree().

Referenced by apply_pattern_matcher(), and applyList().

{
    return  tree(BOXERROR);
}

Here is the call graph for this function:

Here is the caller graph for this function:

Tree boxFConst ( Tree  type,
Tree  name,
Tree  file 
)

Definition at line 320 of file boxes.cpp.

References tree().

Referenced by yyparse().

{ return tree(BOXFCONST, type, name, file);             }

Here is the call graph for this function:

Here is the caller graph for this function:

Tree boxFFun ( Tree  ff)

Definition at line 314 of file boxes.cpp.

References tree().

Referenced by yyparse().

{ return tree(BOXFFUN, ff);                 }

Here is the call graph for this function:

Here is the caller graph for this function:

Tree boxFVar ( Tree  type,
Tree  name,
Tree  file 
)

Definition at line 326 of file boxes.cpp.

References tree().

Referenced by yyparse().

{ return tree(BOXFVAR, type, name, file);             }

Here is the call graph for this function:

Here is the caller graph for this function:

Tree boxHBargraph ( Tree  lbl,
Tree  min,
Tree  max 
)

Definition at line 425 of file boxes.cpp.

References tree().

Referenced by realeval(), and yyparse().

{ return tree(BOXHBARGRAPH, lbl, min, max);     }

Here is the call graph for this function:

Here is the caller graph for this function:

Tree boxHGroup ( Tree  lbl,
Tree  x 
)

Definition at line 407 of file boxes.cpp.

References tree().

Referenced by insideBoxSimplification(), preparePattern(), realeval(), and yyparse().

{ return tree(BOXHGROUP, lbl, x);               }

Here is the call graph for this function:

Here is the caller graph for this function:

Tree boxHSlider ( Tree  lbl,
Tree  cur,
Tree  min,
Tree  max,
Tree  step 
)

Definition at line 348 of file boxes.cpp.

References list4(), and tree().

Referenced by realeval(), and yyparse().

                                            { return tree(BOXHSLIDER, lbl, list4(cur,min,max,step));        }

Here is the call graph for this function:

Here is the caller graph for this function:

Tree boxIdent ( const char *  name)

Definition at line 57 of file boxes.cpp.

References symbol(), and tree().

Referenced by declareAutoDoc(), evalprocess(), realeval(), writeIdentValue(), and yyparse().

{ return tree(BOXIDENT, tree(symbol(name)) ); }

Here is the call graph for this function:

Here is the caller graph for this function:

Tree boxInt ( int  n)

Definition at line 75 of file boxes.cpp.

References tree().

Referenced by isBoxNumeric(), isInverter(), numericBoxSimplification(), and yyparse().

{ return tree(n);   }

Here is the call graph for this function:

Here is the caller graph for this function:

Tree boxIPar ( Tree  x,
Tree  y,
Tree  z 
)

Definition at line 150 of file boxes.cpp.

References tree().

Referenced by preparePattern(), and yyparse().

{ return tree(BOXIPAR, x, y, z);        }

Here is the call graph for this function:

Here is the caller graph for this function:

Tree boxIProd ( Tree  x,
Tree  y,
Tree  z 
)

Definition at line 153 of file boxes.cpp.

References tree().

Referenced by preparePattern(), and yyparse().

{ return tree(BOXIPROD, x, y, z);       }

Here is the call graph for this function:

Here is the caller graph for this function:

Tree boxISeq ( Tree  x,
Tree  y,
Tree  z 
)

Definition at line 151 of file boxes.cpp.

References tree().

Referenced by preparePattern(), and yyparse().

{ return tree(BOXISEQ, x, y, z);        }

Here is the call graph for this function:

Here is the caller graph for this function:

Tree boxISum ( Tree  x,
Tree  y,
Tree  z 
)

Definition at line 152 of file boxes.cpp.

References tree().

Referenced by preparePattern(), and yyparse().

{ return tree(BOXISUM, x, y, z);        }

Here is the call graph for this function:

Here is the caller graph for this function:

Tree boxLibrary ( Tree  filename)

Definition at line 265 of file boxes.cpp.

References tree().

Referenced by yyparse().

{ return tree(BOXLIBRARY, filename); }

Here is the call graph for this function:

Here is the caller graph for this function:

Tree boxMerge ( Tree  x,
Tree  y 
)

Definition at line 137 of file boxes.cpp.

References tree().

Referenced by insideBoxSimplification(), preparePattern(), realeval(), and yyparse().

{ return tree(BOXMERGE, x, y); }

Here is the call graph for this function:

Here is the caller graph for this function:

Tree boxModifLocalDef ( Tree  body,
Tree  ldef 
)

Definition at line 245 of file boxes.cpp.

References tree().

Referenced by yyparse().

{ return tree(BOXMODIFLOCALDEF, body, ldef); }

Here is the call graph for this function:

Here is the caller graph for this function:

Tree boxNumEntry ( Tree  lbl,
Tree  cur,
Tree  min,
Tree  max,
Tree  step 
)

Definition at line 387 of file boxes.cpp.

References list4(), and tree().

Referenced by realeval(), and yyparse().

                                            { return tree(BOXNUMENTRY, lbl, list4(cur,min,max,step));       }

Here is the call graph for this function:

Here is the caller graph for this function:

Tree boxPar ( Tree  x,
Tree  y 
)

Definition at line 125 of file boxes.cpp.

References tree().

Referenced by insideBoxSimplification(), isInverter(), iteratePar(), iterateProd(), iterateSum(), larg2par(), preparePattern(), realeval(), and yyparse().

{ return tree(BOXPAR, x, y);        }

Here is the call graph for this function:

Here is the caller graph for this function:

Tree boxPatternMatcher ( Automaton a,
int  state,
Tree  env,
Tree  origRules,
Tree  revParamList 
)

Definition at line 591 of file boxes.cpp.

References tree().

Referenced by applyList(), and evalCase().

{ 
    return tree(BOXPATMATCHER, tree((void*)a), tree(state), env, origRules, revParamList); 
}                   

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 587 of file boxes.cpp.

References tree().

Referenced by preparePattern().

{ return tree(BOXPATVAR, id);                   }

Here is the call graph for this function:

Here is the caller graph for this function:

Tree boxPrim0 ( prim0  foo)

Definition at line 280 of file boxes.cpp.

References tree().

{ return tree(BOXPRIM0, tree((void*)foo)); }

Here is the call graph for this function:

Tree boxPrim1 ( prim1  foo)

Definition at line 285 of file boxes.cpp.

References tree().

Referenced by yyparse().

{ return tree(BOXPRIM1, tree((void*)foo)); }

Here is the call graph for this function:

Here is the caller graph for this function:

Tree boxPrim2 ( prim2  foo)

Definition at line 290 of file boxes.cpp.

References tree().

Referenced by isInverter(), iterateProd(), iterateSum(), and yyparse().

{ return tree(BOXPRIM2, tree((void*)foo)); }

Here is the call graph for this function:

Here is the caller graph for this function:

Tree boxPrim3 ( prim3  foo)

Definition at line 295 of file boxes.cpp.

References tree().

Referenced by yyparse().

{ return tree(BOXPRIM3, tree((void*)foo)); }

Here is the call graph for this function:

Here is the caller graph for this function:

Tree boxPrim4 ( prim4  foo)

Definition at line 300 of file boxes.cpp.

References tree().

Referenced by yyparse().

{ return tree(BOXPRIM4, tree((void*)foo)); }

Here is the call graph for this function:

Here is the caller graph for this function:

Tree boxPrim5 ( prim5  foo)

Definition at line 305 of file boxes.cpp.

References tree().

Referenced by yyparse().

{ return tree(BOXPRIM5, tree((void*)foo)); }

Here is the call graph for this function:

Here is the caller graph for this function:

Tree boxReal ( double  n)

Definition at line 76 of file boxes.cpp.

References tree().

Referenced by isBoxNumeric(), isInverter(), numericBoxSimplification(), and yyparse().

{ return tree(n);   }

Here is the call graph for this function:

Here is the caller graph for this function:

Tree boxRec ( Tree  x,
Tree  y 
)

Definition at line 129 of file boxes.cpp.

References tree().

Referenced by insideBoxSimplification(), preparePattern(), realeval(), and yyparse().

{ return tree(BOXREC, x, y);        }

Here is the call graph for this function:

Here is the caller graph for this function:

Tree boxSeq ( Tree  x,
Tree  y 
)

Definition at line 121 of file boxes.cpp.

References tree().

Referenced by applyList(), insideBoxSimplification(), isInverter(), iterateProd(), iterateSeq(), iterateSum(), preparePattern(), realeval(), and yyparse().

{ return tree(BOXSEQ, x, y);        }

Here is the call graph for this function:

Here is the caller graph for this function:

Tree boxSlot ( int  id)

Definition at line 104 of file boxes.cpp.

References tree().

Referenced by real_a2sb().

{ return tree(BOXSLOT,tree(id)); }

Here is the call graph for this function:

Here is the caller graph for this function:

Tree boxSplit ( Tree  x,
Tree  y 
)

Definition at line 133 of file boxes.cpp.

References tree().

Referenced by insideBoxSimplification(), preparePattern(), realeval(), and yyparse().

{ return tree(BOXSPLIT, x, y);      }

Here is the call graph for this function:

Here is the caller graph for this function:

Tree boxSymbolic ( Tree  slot,
Tree  body 
)

Definition at line 111 of file boxes.cpp.

References tree().

Referenced by insideBoxSimplification(), and real_a2sb().

{ return tree(BOXSYMBOLIC,slot, body); }

Here is the call graph for this function:

Here is the caller graph for this function:

Tree boxTGroup ( Tree  lbl,
Tree  x 
)

Definition at line 419 of file boxes.cpp.

References tree().

Referenced by insideBoxSimplification(), preparePattern(), realeval(), and yyparse().

{ return tree(BOXTGROUP, lbl, x);               }

Here is the call graph for this function:

Here is the caller graph for this function:

Tree boxVBargraph ( Tree  lbl,
Tree  min,
Tree  max 
)

Definition at line 431 of file boxes.cpp.

References tree().

Referenced by realeval(), and yyparse().

{ return tree(BOXVBARGRAPH, lbl, min, max);     }

Here is the call graph for this function:

Here is the caller graph for this function:

Tree boxVGroup ( Tree  lbl,
Tree  x 
)

Definition at line 413 of file boxes.cpp.

References tree().

Referenced by insideBoxSimplification(), preparePattern(), realeval(), and yyparse().

{ return tree(BOXVGROUP, lbl, x);               }

Here is the call graph for this function:

Here is the caller graph for this function:

Tree boxVSlider ( Tree  lbl,
Tree  cur,
Tree  min,
Tree  max,
Tree  step 
)

Definition at line 368 of file boxes.cpp.

References list4(), and tree().

Referenced by realeval(), and yyparse().

                                            { return tree(BOXVSLIDER, lbl, list4(cur,min,max,step));        }

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 94 of file boxes.cpp.

References tree().

Referenced by isInverter(), nwires(), and yyparse().

{ return tree(BOXWIRE); }

Here is the call graph for this function:

Here is the caller graph for this function:

Tree boxWithLocalDef ( Tree  body,
Tree  ldef 
)

Definition at line 235 of file boxes.cpp.

References tree().

Referenced by preparePattern(), and yyparse().

{ return tree(BOXWITHLOCALDEF, body, ldef); }

Here is the call graph for this function:

Here is the caller graph for this function:

Tree buildBoxAbstr ( Tree  largs,
Tree  body 
)

Definition at line 180 of file boxes.cpp.

References boxAbstr(), buildBoxAbstr(), hd(), isNil(), and tl().

Referenced by buildBoxAbstr(), makeDefinition(), and yyparse().

{
    if (isNil(largs)) {
        return body;
    } else {
        return buildBoxAbstr(tl(largs), boxAbstr(hd(largs), body));
    }
}

Here is the call graph for this function:

Here is the caller graph for this function:

Tree buildBoxAppl ( Tree  fun,
Tree  revarglist 
)

Definition at line 198 of file boxes.cpp.

References boxAppl(), and isNil().

Referenced by yyparse().

{
    if (isNil (revarglist)) exit(1); // a revoir !!!!!!
    return  boxAppl(fun, revarglist);
}

Here is the call graph for this function:

Here is the caller graph for this function:

Tree closure ( Tree  abstr,
Tree  genv,
Tree  vis,
Tree  lenv 
)

Definition at line 205 of file boxes.cpp.

References tree().

Referenced by apply_pattern_matcher(), copyEnvReplaceDefs(), pushMultiClosureDefs(), realeval(), and updateClosures().

{
    return  tree(CLOSURE, abstr, genv, vis, lenv);
}

Here is the call graph for this function:

Here is the caller graph for this function:

Tree importFile ( Tree  filename)

Definition at line 271 of file boxes.cpp.

References tree().

Referenced by main(), and yyparse().

{ return tree(IMPORTFILE, filename); }

Here is the call graph for this function:

Here is the caller graph for this function:

bool isBoxAbstr ( Tree  t)

Definition at line 174 of file boxes.cpp.

References CTree::node().

Referenced by applyList(), preparePattern(), boxpp::print(), real_a2sb(), and realeval().

{ return t->node() == Node(BOXABSTR); }

Here is the call graph for this function:

Here is the caller graph for this function:

bool isBoxAbstr ( Tree  t,
Tree x,
Tree y 
)

Definition at line 177 of file boxes.cpp.

References isTree().

{ return isTree(t, BOXABSTR, x, y); }

Here is the call graph for this function:

bool isBoxAccess ( Tree  t,
Tree exp,
Tree id 
)

Definition at line 227 of file boxes.cpp.

References isTree().

Referenced by preparePattern(), boxpp::print(), and realeval().

{ return isTree(t, BOXACCESS, exp, id); }

Here is the call graph for this function:

Here is the caller graph for this function:

bool isBoxAppl ( Tree  t)

Definition at line 175 of file boxes.cpp.

References CTree::node().

Referenced by preparePattern(), boxpp::print(), and realeval().

{ return t->node() == Node(BOXAPPL); }

Here is the call graph for this function:

Here is the caller graph for this function:

bool isBoxAppl ( Tree  t,
Tree x,
Tree y 
)

Definition at line 178 of file boxes.cpp.

References isTree().

{ return isTree(t, BOXAPPL, x, y); }

Here is the call graph for this function:

bool isBoxButton ( Tree  s)

Definition at line 337 of file boxes.cpp.

References isTree().

Referenced by computeBoxComplexity(), generateInsideSchema(), infereBoxType(), insideBoxSimplification(), preparePattern(), boxpp::print(), propagate(), realeval(), and UserInterfaceDescription().

{ Tree lbl; return isTree(s, BOXBUTTON, lbl);   }

Here is the call graph for this function:

Here is the caller graph for this function:

bool isBoxButton ( Tree  s,
Tree lbl 
)

Definition at line 338 of file boxes.cpp.

References isTree().

{ return isTree(s, BOXBUTTON, lbl);             }

Here is the call graph for this function:

bool isBoxCase ( Tree  s)

Definition at line 583 of file boxes.cpp.

References isTree().

Referenced by copyEnvReplaceDefs(), preparePattern(), boxpp::print(), pushMultiClosureDefs(), and realeval().

{ Tree rules; return isTree(s, BOXCASE, rules); }

Here is the call graph for this function:

Here is the caller graph for this function:

bool isBoxCase ( Tree  s,
Tree rules 
)

Definition at line 584 of file boxes.cpp.

References isTree().

{ return isTree(s, BOXCASE, rules);             }

Here is the call graph for this function:

bool isBoxCheckbox ( Tree  s)

Definition at line 343 of file boxes.cpp.

References isTree().

Referenced by computeBoxComplexity(), generateInsideSchema(), infereBoxType(), insideBoxSimplification(), preparePattern(), boxpp::print(), propagate(), realeval(), and UserInterfaceDescription().

{ Tree lbl; return isTree(s, BOXCHECKBOX, lbl); }

Here is the call graph for this function:

Here is the caller graph for this function:

bool isBoxCheckbox ( Tree  s,
Tree lbl 
)

Definition at line 344 of file boxes.cpp.

References isTree().

{ return isTree(s, BOXCHECKBOX, lbl);               }

Here is the call graph for this function:

bool isBoxComponent ( Tree  s,
Tree filename 
)

Definition at line 261 of file boxes.cpp.

References isTree().

Referenced by preparePattern(), boxpp::print(), and realeval().

{ return isTree(s, BOXCOMPONENT, filename); }

Here is the call graph for this function:

Here is the caller graph for this function:

bool isBoxCut ( Tree  t)

Definition at line 91 of file boxes.cpp.

References isTree().

Referenced by computeBoxComplexity(), generateInsideSchema(), infereBoxType(), insideBoxSimplification(), isPureRouting(), preparePattern(), boxpp::print(), propagate(), and realeval().

{ return isTree(t, BOXCUT); }

Here is the call graph for this function:

Here is the caller graph for this function:

bool isBoxEnvironment ( Tree  s)

Definition at line 256 of file boxes.cpp.

References isTree().

Referenced by applyList(), infereBoxType(), preparePattern(), boxpp::print(), real_a2sb(), and realeval().

{ return isTree(s, BOXENVIRONMENT); }

Here is the call graph for this function:

Here is the caller graph for this function:

bool isBoxError ( Tree  t)

Definition at line 220 of file boxes.cpp.

References isTree().

Referenced by apply_pattern_matcher(), applyList(), make_pattern_matcher(), and boxpp::print().

{
    return isTree(t, BOXERROR);
}

Here is the call graph for this function:

Here is the caller graph for this function:

bool isBoxFConst ( Tree  s)

Definition at line 321 of file boxes.cpp.

References isTree().

Referenced by computeBoxComplexity(), generateInsideSchema(), infereBoxType(), insideBoxSimplification(), preparePattern(), boxpp::print(), propagate(), and realeval().

{ Tree t,n,f; return isTree(s, BOXFCONST, t, n, f); }

Here is the call graph for this function:

Here is the caller graph for this function:

bool isBoxFConst ( Tree  s,
Tree type,
Tree name,
Tree file 
)

Definition at line 322 of file boxes.cpp.

References isTree().

{ return isTree(s, BOXFCONST,type, name, file);     }

Here is the call graph for this function:

bool isBoxFFun ( Tree  s)

Definition at line 315 of file boxes.cpp.

References isTree().

Referenced by computeBoxComplexity(), generateInsideSchema(), infereBoxType(), insideBoxSimplification(), preparePattern(), boxpp::print(), propagate(), and realeval().

{ Tree ff; return isTree(s, BOXFFUN, ff);   }

Here is the call graph for this function:

Here is the caller graph for this function:

bool isBoxFFun ( Tree  s,
Tree ff 
)

Definition at line 316 of file boxes.cpp.

References isTree().

{ return isTree(s, BOXFFUN, ff);            }

Here is the call graph for this function:

bool isBoxFVar ( Tree  s)

Definition at line 327 of file boxes.cpp.

References isTree().

Referenced by computeBoxComplexity(), generateInsideSchema(), infereBoxType(), insideBoxSimplification(), preparePattern(), boxpp::print(), propagate(), and realeval().

{ Tree t,n,f; return isTree(s, BOXFVAR, t, n, f); }

Here is the call graph for this function:

Here is the caller graph for this function:

bool isBoxFVar ( Tree  s,
Tree type,
Tree name,
Tree file 
)

Definition at line 328 of file boxes.cpp.

References isTree().

{ return isTree(s, BOXFVAR,type, name, file);     }

Here is the call graph for this function:

bool isBoxHBargraph ( Tree  s)

Definition at line 426 of file boxes.cpp.

References isTree(), max(), and min().

Referenced by computeBoxComplexity(), generateInsideSchema(), infereBoxType(), insideBoxSimplification(), preparePattern(), boxpp::print(), propagate(), realeval(), and UserInterfaceDescription().

{ Tree lbl, min, max; return isTree(s, BOXHBARGRAPH, lbl, min, max);    }

Here is the call graph for this function:

Here is the caller graph for this function:

bool isBoxHBargraph ( Tree  s,
Tree lbl,
Tree min,
Tree max 
)

Definition at line 427 of file boxes.cpp.

References isTree().

{ return isTree(s, BOXHBARGRAPH, lbl, min, max); }

Here is the call graph for this function:

bool isBoxHGroup ( Tree  s)

Definition at line 408 of file boxes.cpp.

References isTree().

Referenced by computeBoxComplexity(), generateInsideSchema(), infereBoxType(), insideBoxSimplification(), isBoxPatternOp(), preparePattern(), boxpp::print(), propagate(), realeval(), and UserInterfaceDescription().

{ Tree lbl, x; return isTree(s, BOXHGROUP, lbl, x); }

Here is the call graph for this function:

Here is the caller graph for this function:

bool isBoxHGroup ( Tree  s,
Tree lbl,
Tree x 
)

Definition at line 409 of file boxes.cpp.

References isTree().

{ return isTree(s, BOXHGROUP, lbl, x);              }

Here is the call graph for this function:

bool isBoxHSlider ( Tree  s)

Definition at line 350 of file boxes.cpp.

References isTree().

Referenced by computeBoxComplexity(), generateInsideSchema(), infereBoxType(), insideBoxSimplification(), preparePattern(), boxpp::print(), propagate(), realeval(), and UserInterfaceDescription().

{ Tree lbl, params; return isTree(s, BOXHSLIDER, lbl, params);  }

Here is the call graph for this function:

Here is the caller graph for this function:

bool isBoxHSlider ( Tree  s,
Tree lbl,
Tree cur,
Tree min,
Tree max,
Tree step 
)

Definition at line 352 of file boxes.cpp.

References isTree(), and nth().

{
    Tree params;
    if (isTree(s, BOXHSLIDER, lbl, params)) {
        cur = nth(params, 0);
        min = nth(params, 1);
        max = nth(params, 2);
        step= nth(params, 3);
        return true;
    } else {
        return false;
    }
}

Here is the call graph for this function:

bool isBoxIdent ( Tree  t)

Definition at line 58 of file boxes.cpp.

References CTree::node().

Referenced by preparePattern(), boxpp::print(), real_a2sb(), realeval(), and standardArgList().

{ return t->node() == Node(BOXIDENT); }

Here is the call graph for this function:

Here is the caller graph for this function:

bool isBoxIdent ( Tree  t0,
const char **  str 
)

Definition at line 59 of file boxes.cpp.

References isSym(), isTree(), name(), and CTree::node().

{
    Tree t1; Sym s;
    if ( isTree(t0, BOXIDENT, t1) && isSym(t1->node(), &s) ) {
        *str = name(s);
        return true;
    } else {
        return false;
    }
}

Here is the call graph for this function:

bool isBoxInt ( Tree  t)

Definition at line 78 of file boxes.cpp.

References isInt(), and CTree::node().

Referenced by Automaton::build(), computeBoxComplexity(), generateInsideSchema(), infereBoxType(), insideBoxSimplification(), isBoxNumeric(), numericBoxSimplification(), preparePattern(), boxpp::print(), propagate(), and realeval().

{ return isInt(t->node());  }

Here is the call graph for this function:

Here is the caller graph for this function:

bool isBoxInt ( Tree  t,
int *  i 
)

Definition at line 81 of file boxes.cpp.

References isInt(), and CTree::node().

{ return isInt(t->node(), i);   }

Here is the call graph for this function:

bool isBoxIPar ( Tree  t,
Tree x,
Tree y,
Tree z 
)

Definition at line 155 of file boxes.cpp.

References isTree().

Referenced by preparePattern(), boxpp::print(), and realeval().

{ return isTree(t, BOXIPAR,  x, y, z);   }

Here is the call graph for this function:

Here is the caller graph for this function:

bool isBoxIProd ( Tree  t,
Tree x,
Tree y,
Tree z 
)

Definition at line 158 of file boxes.cpp.

References isTree().

Referenced by preparePattern(), boxpp::print(), and realeval().

{ return isTree(t, BOXIPROD, x, y, z);   }

Here is the call graph for this function:

Here is the caller graph for this function:

bool isBoxISeq ( Tree  t,
Tree x,
Tree y,
Tree z 
)

Definition at line 156 of file boxes.cpp.

References isTree().

Referenced by preparePattern(), boxpp::print(), and realeval().

{ return isTree(t, BOXISEQ,  x, y, z);   }

Here is the call graph for this function:

Here is the caller graph for this function:

bool isBoxISum ( Tree  t,
Tree x,
Tree y,
Tree z 
)

Definition at line 157 of file boxes.cpp.

References isTree().

Referenced by preparePattern(), boxpp::print(), and realeval().

{ return isTree(t, BOXISUM,  x, y, z);   }

Here is the call graph for this function:

Here is the caller graph for this function:

bool isBoxLibrary ( Tree  s,
Tree filename 
)

Definition at line 266 of file boxes.cpp.

References isTree().

Referenced by realeval().

{ return isTree(s, BOXLIBRARY, filename); }

Here is the call graph for this function:

Here is the caller graph for this function:

bool isBoxMerge ( Tree  t,
Tree x,
Tree y 
)

Definition at line 138 of file boxes.cpp.

References isTree().

Referenced by computeBoxComplexity(), generateInsideSchema(), infereBoxType(), insideBoxSimplification(), isBoxPatternOp(), isPureRouting(), preparePattern(), boxpp::print(), propagate(), and realeval().

{ return isTree(t, BOXMERGE, x, y); }

Here is the call graph for this function:

Here is the caller graph for this function:

bool isBoxModifLocalDef ( Tree  t,
Tree body,
Tree ldef 
)

Definition at line 246 of file boxes.cpp.

References isTree().

Referenced by realeval().

{ return isTree(t, BOXMODIFLOCALDEF, body, ldef); }

Here is the call graph for this function:

Here is the caller graph for this function:

bool isBoxNumEntry ( Tree  s)

Definition at line 389 of file boxes.cpp.

References isTree().

Referenced by computeBoxComplexity(), generateInsideSchema(), infereBoxType(), insideBoxSimplification(), preparePattern(), boxpp::print(), propagate(), realeval(), and UserInterfaceDescription().

{ Tree lbl, params; return isTree(s, BOXNUMENTRY, lbl, params); }

Here is the call graph for this function:

Here is the caller graph for this function:

bool isBoxNumEntry ( Tree  s,
Tree lbl,
Tree cur,
Tree min,
Tree max,
Tree step 
)

Definition at line 391 of file boxes.cpp.

References isTree(), and nth().

{
    Tree params;
    if (isTree(s, BOXNUMENTRY, lbl, params)) {
        cur = nth(params, 0);
        min = nth(params, 1);
        max = nth(params, 2);
        step= nth(params, 3);
        return true;
    } else {
        return false;
    }
}

Here is the call graph for this function:

bool isBoxPar ( Tree  t,
Tree x,
Tree y 
)

Definition at line 126 of file boxes.cpp.

References isTree().

Referenced by computeBoxComplexity(), generateInsideSchema(), infereBoxType(), insideBoxSimplification(), isBoxPatternOp(), isPureRouting(), preparePattern(), boxpp::print(), propagate(), and realeval().

{ return isTree(t, BOXPAR, x, y);   }

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 596 of file boxes.cpp.

References isTree().

Referenced by applyList(), boxpp::print(), real_a2sb(), and realeval().

{
    Tree ta, ts, env, orig, rpl;
    return isTree(s, BOXPATMATCHER, ta, ts, env, orig, rpl);
}

Here is the call graph for this function:

Here is the caller graph for this function:

bool isBoxPatternMatcher ( Tree  s,
Automaton *&  a,
int &  state,
Tree env,
Tree origRules,
Tree revParamList 
)

Definition at line 602 of file boxes.cpp.

References isTree(), tree2int(), and tree2ptr().

{
    Tree ta, ts;
    if (isTree(s, BOXPATMATCHER, ta, ts, env, origRules, revParamList)) {
        a = (Automaton*)tree2ptr(ta);
        state = tree2int(ts);
        return true;
    } else {
        return false;
    }
}

Here is the call graph for this function:

bool isBoxPatternVar ( Tree  s,
Tree id 
)

Definition at line 588 of file boxes.cpp.

References isTree().

Referenced by infereBoxType(), make_state(), preparePattern(), boxpp::print(), and realeval().

{ return isTree(s, BOXPATVAR, id);              }

Here is the call graph for this function:

Here is the caller graph for this function:

bool isBoxPrim0 ( Tree  s)

Definition at line 281 of file boxes.cpp.

References isTree().

Referenced by computeBoxComplexity(), generateInsideSchema(), infereBoxType(), insideBoxSimplification(), preparePattern(), boxpp::print(), propagate(), and realeval().

{ Tree t; return isTree(s, BOXPRIM0, t);    }

Here is the call graph for this function:

Here is the caller graph for this function:

bool isBoxPrim0 ( Tree  s,
prim0 p 
)

Definition at line 282 of file boxes.cpp.

References isPointer(), isTree(), and CTree::node().

{ Tree t; return isTree(s, BOXPRIM0, t) && isPointer(t->node(),(void**)p);  }

Here is the call graph for this function:

bool isBoxPrim1 ( Tree  s)

Definition at line 286 of file boxes.cpp.

References isTree().

Referenced by computeBoxComplexity(), generateInsideSchema(), infereBoxType(), insideBoxSimplification(), preparePattern(), boxpp::print(), propagate(), and realeval().

{ Tree t; return isTree(s, BOXPRIM1, t);    }

Here is the call graph for this function:

Here is the caller graph for this function:

bool isBoxPrim1 ( Tree  s,
prim1 p 
)

Definition at line 287 of file boxes.cpp.

References isPointer(), isTree(), and CTree::node().

{ Tree t; return isTree(s, BOXPRIM1, t) && isPointer(t->node(),(void**)p);  }

Here is the call graph for this function:

bool isBoxPrim2 ( Tree  s)

Definition at line 291 of file boxes.cpp.

References isTree().

Referenced by applyList(), computeBoxComplexity(), generateInsideSchema(), infereBoxType(), insideBoxSimplification(), preparePattern(), boxpp::print(), propagate(), and realeval().

{ Tree t; return isTree(s, BOXPRIM2, t);    }

Here is the call graph for this function:

Here is the caller graph for this function:

bool isBoxPrim2 ( Tree  s,
prim2 p 
)

Definition at line 292 of file boxes.cpp.

References isPointer(), isTree(), and CTree::node().

{ Tree t; return isTree(s, BOXPRIM2, t) && isPointer(t->node(),(void**)p);  }

Here is the call graph for this function:

bool isBoxPrim3 ( Tree  s)

Definition at line 296 of file boxes.cpp.

References isTree().

Referenced by computeBoxComplexity(), generateInsideSchema(), infereBoxType(), insideBoxSimplification(), preparePattern(), boxpp::print(), propagate(), and realeval().

{ Tree t; return isTree(s, BOXPRIM3, t);    }

Here is the call graph for this function:

Here is the caller graph for this function:

bool isBoxPrim3 ( Tree  s,
prim3 p 
)

Definition at line 297 of file boxes.cpp.

References isPointer(), isTree(), and CTree::node().

{ Tree t; return isTree(s, BOXPRIM3, t) && isPointer(t->node(),(void**)p);  }

Here is the call graph for this function:

bool isBoxPrim4 ( Tree  s)

Definition at line 301 of file boxes.cpp.

References isTree().

Referenced by computeBoxComplexity(), generateInsideSchema(), infereBoxType(), insideBoxSimplification(), preparePattern(), boxpp::print(), propagate(), and realeval().

{ Tree t; return isTree(s, BOXPRIM4, t);    }

Here is the call graph for this function:

Here is the caller graph for this function:

bool isBoxPrim4 ( Tree  s,
prim4 p 
)

Definition at line 302 of file boxes.cpp.

References isPointer(), isTree(), and CTree::node().

{ Tree t; return isTree(s, BOXPRIM4, t) && isPointer(t->node(),(void**)p);  }

Here is the call graph for this function:

bool isBoxPrim5 ( Tree  s)

Definition at line 306 of file boxes.cpp.

References isTree().

Referenced by computeBoxComplexity(), generateInsideSchema(), infereBoxType(), insideBoxSimplification(), preparePattern(), boxpp::print(), propagate(), and realeval().

{ Tree t; return isTree(s, BOXPRIM5, t);    }

Here is the call graph for this function:

Here is the caller graph for this function:

bool isBoxPrim5 ( Tree  s,
prim5 p 
)

Definition at line 307 of file boxes.cpp.

References isPointer(), isTree(), and CTree::node().

{ Tree t; return isTree(s, BOXPRIM5, t) && isPointer(t->node(),(void**)p);  }

Here is the call graph for this function:

bool isBoxReal ( Tree  t)

Definition at line 79 of file boxes.cpp.

References isDouble(), and CTree::node().

Referenced by Automaton::build(), computeBoxComplexity(), generateInsideSchema(), infereBoxType(), insideBoxSimplification(), isBoxNumeric(), numericBoxSimplification(), preparePattern(), boxpp::print(), propagate(), and realeval().

{ return isDouble(t->node()); }

Here is the call graph for this function:

Here is the caller graph for this function:

bool isBoxReal ( Tree  t,
double *  r 
)

Definition at line 82 of file boxes.cpp.

References isDouble(), and CTree::node().

{ return isDouble(t->node(), r); }

Here is the call graph for this function:

bool isBoxRec ( Tree  t,
Tree x,
Tree y 
)

Definition at line 130 of file boxes.cpp.

References isTree().

Referenced by computeBoxComplexity(), generateInsideSchema(), infereBoxType(), insideBoxSimplification(), isBoxPatternOp(), preparePattern(), boxpp::print(), propagate(), and realeval().

{ return isTree(t, BOXREC, x, y);   }

Here is the call graph for this function:

Here is the caller graph for this function:

bool isBoxSeq ( Tree  t,
Tree x,
Tree y 
)

Definition at line 122 of file boxes.cpp.

References isTree().

Referenced by computeBoxComplexity(), generateInsideSchema(), infereBoxType(), insideBoxSimplification(), isBoxPatternOp(), isPureRouting(), preparePattern(), boxpp::print(), propagate(), and realeval().

{ return isTree(t, BOXSEQ, x, y);   }

Here is the call graph for this function:

Here is the caller graph for this function:

bool isBoxSlot ( Tree  t)

Definition at line 105 of file boxes.cpp.

References isTree().

Referenced by computeBoxComplexity(), generateInsideSchema(), infereBoxType(), insideBoxSimplification(), isPureRouting(), preparePattern(), boxpp::print(), propagate(), and realeval().

{ Tree w; return isTree(t, BOXSLOT,w); }

Here is the call graph for this function:

Here is the caller graph for this function:

bool isBoxSlot ( Tree  t,
int *  id 
)

Definition at line 106 of file boxes.cpp.

References isInt(), isTree(), and CTree::node().

{ Tree w; return isTree(t, BOXSLOT,w) && isInt(w->node(),id); }

Here is the call graph for this function:

bool isBoxSplit ( Tree  t,
Tree x,
Tree y 
)

Definition at line 134 of file boxes.cpp.

References isTree().

Referenced by computeBoxComplexity(), generateInsideSchema(), infereBoxType(), insideBoxSimplification(), isBoxPatternOp(), isPureRouting(), preparePattern(), boxpp::print(), propagate(), and realeval().

{ return isTree(t, BOXSPLIT, x, y); }

Here is the call graph for this function:

Here is the caller graph for this function:

bool isBoxSymbolic ( Tree  t)

Definition at line 112 of file boxes.cpp.

References isTree().

Referenced by computeBoxComplexity(), generateAbstractionSchema(), generateInsideSchema(), infereBoxType(), insideBoxSimplification(), preparePattern(), boxpp::print(), propagate(), and realeval().

{ Tree slot, body; return isTree(t, BOXSYMBOLIC, slot, body); }

Here is the call graph for this function:

Here is the caller graph for this function:

bool isBoxSymbolic ( Tree  t,
Tree slot,
Tree body 
)

Definition at line 113 of file boxes.cpp.

References isTree().

{ return isTree(t, BOXSYMBOLIC, slot, body); }

Here is the call graph for this function:

bool isBoxTGroup ( Tree  s)

Definition at line 420 of file boxes.cpp.

References isTree().

Referenced by computeBoxComplexity(), generateInsideSchema(), infereBoxType(), insideBoxSimplification(), isBoxPatternOp(), preparePattern(), boxpp::print(), propagate(), realeval(), and UserInterfaceDescription().

{ Tree lbl, x; return isTree(s, BOXTGROUP, lbl, x); }

Here is the call graph for this function:

Here is the caller graph for this function:

bool isBoxTGroup ( Tree  s,
Tree lbl,
Tree x 
)

Definition at line 421 of file boxes.cpp.

References isTree().

{ return isTree(s, BOXTGROUP, lbl, x);              }

Here is the call graph for this function:

bool isBoxVBargraph ( Tree  s)

Definition at line 432 of file boxes.cpp.

References isTree(), max(), and min().

Referenced by computeBoxComplexity(), generateInsideSchema(), infereBoxType(), insideBoxSimplification(), preparePattern(), boxpp::print(), propagate(), realeval(), and UserInterfaceDescription().

{ Tree lbl, min, max; return isTree(s, BOXVBARGRAPH, lbl, min, max);    }

Here is the call graph for this function:

Here is the caller graph for this function:

bool isBoxVBargraph ( Tree  s,
Tree lbl,
Tree min,
Tree max 
)

Definition at line 433 of file boxes.cpp.

References isTree().

{ return isTree(s, BOXVBARGRAPH, lbl, min, max); }

Here is the call graph for this function:

bool isBoxVGroup ( Tree  s)

Definition at line 414 of file boxes.cpp.

References isTree().

Referenced by computeBoxComplexity(), generateInsideSchema(), infereBoxType(), insideBoxSimplification(), isBoxPatternOp(), preparePattern(), boxpp::print(), propagate(), realeval(), and UserInterfaceDescription().

{ Tree lbl, x; return isTree(s, BOXVGROUP, lbl, x); }

Here is the call graph for this function:

Here is the caller graph for this function:

bool isBoxVGroup ( Tree  s,
Tree lbl,
Tree x 
)

Definition at line 415 of file boxes.cpp.

References isTree().

{ return isTree(s, BOXVGROUP, lbl, x);              }

Here is the call graph for this function:

bool isBoxVSlider ( Tree  s)

Definition at line 370 of file boxes.cpp.

References isTree().

Referenced by computeBoxComplexity(), generateInsideSchema(), infereBoxType(), insideBoxSimplification(), preparePattern(), boxpp::print(), propagate(), realeval(), and UserInterfaceDescription().

{ Tree lbl, params; return isTree(s, BOXVSLIDER, lbl, params);  }

Here is the call graph for this function:

Here is the caller graph for this function:

bool isBoxVSlider ( Tree  s,
Tree lbl,
Tree cur,
Tree min,
Tree max,
Tree step 
)

Definition at line 372 of file boxes.cpp.

References isTree(), and nth().

{
    Tree params;
    if (isTree(s, BOXVSLIDER, lbl, params)) {
        cur = nth(params, 0);
        min = nth(params, 1);
        max = nth(params, 2);
        step= nth(params, 3);
        return true;
    } else {
        return false;
    }
}

Here is the call graph for this function:

bool isBoxWire ( Tree  t)

Definition at line 95 of file boxes.cpp.

References isTree().

Referenced by computeBoxComplexity(), generateInsideSchema(), infereBoxType(), insideBoxSimplification(), isPureRouting(), preparePattern(), boxpp::print(), propagate(), and realeval().

{ return isTree(t, BOXWIRE); }

Here is the call graph for this function:

Here is the caller graph for this function:

bool isBoxWithLocalDef ( Tree  t,
Tree body,
Tree ldef 
)

Definition at line 236 of file boxes.cpp.

References isTree().

Referenced by preparePattern(), boxpp::print(), and realeval().

{ return isTree(t, BOXWITHLOCALDEF, body, ldef); }

Here is the call graph for this function:

Here is the caller graph for this function:

bool isClosure ( Tree  t,
Tree abstr,
Tree genv,
Tree vis,
Tree lenv 
)

Definition at line 210 of file boxes.cpp.

References isTree().

Referenced by applyList(), boxpp::print(), real_a2sb(), realeval(), and updateClosures().

{
    return isTree(t, CLOSURE, abstr, genv, vis, lenv);
}

Here is the call graph for this function:

Here is the caller graph for this function:

bool isImportFile ( Tree  s,
Tree filename 
)

Definition at line 272 of file boxes.cpp.

References isTree().

Referenced by SourceReader::expandrec(), formatDefinitions(), and boxpp::print().

{ return isTree(s, IMPORTFILE, filename); }

Here is the call graph for this function:

Here is the caller graph for this function:

static Tree preparePattern ( Tree  box) [static]

Prepare a "pattern" by replacing variables x by special pattern variables ?x.

P[x] -> ?x P[x(e)] -> x(P[e]) P[e(f)] -> P[e](P[f]) P[e:f] -> P[e]:P[f] etc.

Definition at line 454 of file boxes.cpp.

References boxAppl(), boxHGroup(), boxIPar(), boxIProd(), boxISeq(), boxISum(), boxMerge(), boxPar(), boxPatternVar(), boxRec(), boxSeq(), boxSplit(), boxTGroup(), boxVGroup(), boxWithLocalDef(), getUserData(), isBoxAbstr(), isBoxAccess(), isBoxAppl(), isBoxButton(), isBoxCase(), isBoxCheckbox(), isBoxComponent(), isBoxCut(), isBoxEnvironment(), isBoxFConst(), isBoxFFun(), isBoxFVar(), isBoxHBargraph(), isBoxHGroup(), isBoxHSlider(), isBoxIdent(), isBoxInt(), isBoxIPar(), isBoxIProd(), isBoxISeq(), isBoxISum(), isBoxMerge(), isBoxNumEntry(), isBoxPar(), isBoxPatternVar(), isBoxPrim0(), isBoxPrim1(), isBoxPrim2(), isBoxPrim3(), isBoxPrim4(), isBoxPrim5(), isBoxReal(), isBoxRec(), isBoxSeq(), isBoxSlot(), isBoxSplit(), isBoxSymbolic(), isBoxTGroup(), isBoxVBargraph(), isBoxVGroup(), isBoxVSlider(), isBoxWire(), isBoxWithLocalDef(), isList(), isNil(), lmap(), max(), min(), and name().

Referenced by prepareRule().

{
//    cerr << "preparePattern(" << boxpp(box) << ")" << endl;

        int     id;
        double  r;
        prim0   p0;
        prim1   p1;
        prim2   p2;
        prim3   p3;
        prim4   p4;
        prim5   p5;

        Tree    t1, t2, t3, ff, label, cur, min, max, step, type, name, file, arg,
                body, fun, args, ldef, slot,
                ident, rules;

        xtended* xt = (xtended*) getUserData(box);


        // primitive elements
             if (xt)                        return box;
        else if (isBoxIdent(box))           return boxPatternVar(box);
        else if (isBoxAppl(box, fun, args)) {
                if (isBoxIdent(fun))        return boxAppl( fun, lmap(preparePattern,args));
                else                        return boxAppl( preparePattern(fun), lmap(preparePattern,args));
            }
        else if (isBoxAbstr(box,arg,body))  return box;
        else if (isBoxInt(box))             return box;
        else if (isBoxReal(box, &r))        return box;
        else if (isBoxCut(box))             return box;
        else if (isBoxWire(box))            return box;
        else if (isBoxPrim0(box, &p0))      return box;
        else if (isBoxPrim1(box, &p1))      return box;
        else if (isBoxPrim2(box, &p2))      return box;
        else if (isBoxPrim3(box, &p3))      return box;
        else if (isBoxPrim4(box, &p4))      return box;
        else if (isBoxPrim5(box, &p5))      return box;

        else if (isBoxWithLocalDef(box, body, ldef))    return boxWithLocalDef(preparePattern(body), ldef);


        // foreign elements
        else if (isBoxFFun(box, ff))        return box;
        else if (isBoxFConst(box, type, name, file))
                                            return box;
        else if (isBoxFVar(box, type, name, file))
                                            return box;

        // block diagram binary operator
        else if (isBoxSeq(box, t1, t2))     return boxSeq( preparePattern(t1), preparePattern(t2) );
        else if (isBoxSplit(box, t1, t2))   return boxSplit( preparePattern(t1), preparePattern(t2) );
        else if (isBoxMerge(box, t1, t2))   return boxMerge( preparePattern(t1), preparePattern(t2) );
        else if (isBoxPar(box, t1, t2))     return boxPar( preparePattern(t1), preparePattern(t2) );
        else if (isBoxRec(box, t1, t2))     return boxRec( preparePattern(t1), preparePattern(t2) );

        // iterative block diagram construction
        else if (isBoxIPar(box, t1, t2, t3))    return boxIPar ( t1, t2, preparePattern(t3) );
        else if (isBoxISeq(box, t1, t2, t3))    return boxISeq ( t1, t2, preparePattern(t3) );
        else if (isBoxISum(box, t1, t2, t3))    return boxISum ( t1, t2, preparePattern(t3) );
        else if (isBoxIProd(box, t1, t2, t3))   return boxIProd( t1, t2, preparePattern(t3) );

        // user interface
        else if (isBoxButton(box, label))       return box;
        else if (isBoxCheckbox(box, label))     return box;

        else if (isBoxVSlider(box, label, cur, min, max, step))     return box;
        else if (isBoxHSlider(box, label, cur, min, max, step))     return box;

        else if (isBoxVGroup(box, label, t1))   return boxVGroup(label, preparePattern(t1));
        else if (isBoxHGroup(box, label, t1))   return boxHGroup(label, preparePattern(t1));
        else if (isBoxTGroup(box, label, t1))   return boxTGroup(label, preparePattern(t1));

        else if (isBoxHBargraph(box, label, min, max))              return box;
        else if (isBoxVBargraph(box, label, min, max))              return box;
        else if (isBoxNumEntry(box, label, cur, min, max, step))    return box;

        else if (isNil(box))                    return box;
        else if (isList(box))                   return lmap(preparePattern, box);
        else if (isBoxEnvironment(box))         return box;
        /* not expected
        else if (isClosure(box, abstr, genv, vis, lenv)) {
            fout << "closure[" << boxpp(abstr)
                << ", genv = " << envpp(genv)
                << ", lenv = " << envpp(lenv)
                << "]";
        }
        */
        else if (isBoxComponent(box, label))        return box;
        else if (isBoxAccess(box, t1, t2))          return box;

        /* not expected
        else if (isImportFile(box, label)) {
            fout << "import("
                << tree2str(label) << ')';
        }
        */


        else if (isBoxSlot(box, &id))               return box;
        else if (isBoxSymbolic(box, slot, body))    return box;

        // Pattern Matching Extensions
        else if (isBoxCase(box, rules))             return box;
        else if (isBoxPatternVar(box, ident))       return box;


        // None of the previous tests succeded, then it is not a valid box
        else {
            cerr << "Error in preparePattern() : " << *box << " is not a valid box" << endl;
            exit(1);
        }


   return box;
}

Here is the caller graph for this function:

static Tree prepareRule ( Tree  rule) [static]

Definition at line 571 of file boxes.cpp.

References cons(), hd(), lmap(), preparePattern(), and tl().

Referenced by prepareRules().

{
    return cons (lmap(preparePattern,hd(rule)), tl(rule));
}

Here is the call graph for this function:

Here is the caller graph for this function:

static Tree prepareRules ( Tree  rules) [static]

Definition at line 576 of file boxes.cpp.

References lmap(), and prepareRule().

Referenced by boxCase().

                                     {
    return lmap(prepareRule, rules);
}

Here is the call graph for this function:

Here is the caller graph for this function:


Variable Documentation

Sym BOXABSTR = symbol ("BoxAbstr")

Definition at line 165 of file boxes.cpp.

Sym BOXACCESS = symbol ("BoxAccess")

Definition at line 169 of file boxes.cpp.

Sym BOXAPPL = symbol ("BoxAppl")

Definition at line 166 of file boxes.cpp.

Sym BOXBUTTON = symbol ("BoxButton")

Definition at line 335 of file boxes.cpp.

Sym BOXCASE = symbol ("BoxCase")

Definition at line 440 of file boxes.cpp.

Sym BOXCHECKBOX = symbol ("BoxCheckbox")

Definition at line 341 of file boxes.cpp.

Sym BOXCOMPONENT = symbol ("BoxComponent")

Definition at line 258 of file boxes.cpp.

Sym BOXCUT = symbol ("BoxCut")

Definition at line 89 of file boxes.cpp.

Sym BOXENVIRONMENT = symbol ("BoxEnvironment")

Definition at line 253 of file boxes.cpp.

Sym BOXERROR = symbol ("BoxError")

Definition at line 168 of file boxes.cpp.

Sym BOXFCONST = symbol ("BoxFConst")

Definition at line 319 of file boxes.cpp.

Sym BOXFFUN = symbol ("BoxFFun")

Definition at line 313 of file boxes.cpp.

Sym BOXFVAR = symbol ("BoxFVar")

Definition at line 325 of file boxes.cpp.

Sym BOXHBARGRAPH = symbol ("BoxHBargraph")

Definition at line 424 of file boxes.cpp.

Sym BOXHGROUP = symbol ("BoxHGroup")

Definition at line 406 of file boxes.cpp.

Sym BOXHSLIDER = symbol ("BoxHSlider")

Definition at line 347 of file boxes.cpp.

Sym BOXIDENT = symbol ("BoxIdent")

Definition at line 55 of file boxes.cpp.

Sym BOXIPAR = symbol ("BoxIPar")

Definition at line 145 of file boxes.cpp.

Sym BOXIPROD = symbol ("BoxIProd")

Definition at line 148 of file boxes.cpp.

Sym BOXISEQ = symbol ("BoxISeq")

Definition at line 146 of file boxes.cpp.

Sym BOXISUM = symbol ("BoxISum")

Definition at line 147 of file boxes.cpp.

Sym BOXLIBRARY = symbol ("BoxLibrary")

Definition at line 263 of file boxes.cpp.

Sym BOXMERGE = symbol ("BoxMerge")

Definition at line 136 of file boxes.cpp.

Sym BOXMODIFLOCALDEF = symbol ("BoxModifLocalDef")

Definition at line 242 of file boxes.cpp.

Sym BOXNUMENTRY = symbol ("BoxNumEntry")

Definition at line 386 of file boxes.cpp.

Sym BOXPAR = symbol ("BoxPar")

Definition at line 124 of file boxes.cpp.

Sym BOXPATMATCHER = symbol ("BoxPatMatcher")

Definition at line 441 of file boxes.cpp.

Sym BOXPATVAR = symbol ("BoxPatVar")

Definition at line 442 of file boxes.cpp.

Sym BOXPRIM0 = symbol ("BoxPrim0")

Definition at line 279 of file boxes.cpp.

Sym BOXPRIM1 = symbol ("BoxPrim1")

Definition at line 284 of file boxes.cpp.

Sym BOXPRIM2 = symbol ("BoxPrim2")

Definition at line 289 of file boxes.cpp.

Sym BOXPRIM3 = symbol ("BoxPrim3")

Definition at line 294 of file boxes.cpp.

Sym BOXPRIM4 = symbol ("BoxPrim4")

Definition at line 299 of file boxes.cpp.

Sym BOXPRIM5 = symbol ("BoxPrim5")

Definition at line 304 of file boxes.cpp.

Sym BOXREC = symbol ("BoxRec")

Definition at line 128 of file boxes.cpp.

Sym BOXSEQ = symbol ("BoxSeq")

Definition at line 120 of file boxes.cpp.

Sym BOXSLOT = symbol ("BoxSlot")

Definition at line 102 of file boxes.cpp.

Sym BOXSPLIT = symbol ("BoxSplit")

Definition at line 132 of file boxes.cpp.

Sym BOXSYMBOLIC = symbol ("BoxSymbolic")

Definition at line 109 of file boxes.cpp.

Sym BOXTGROUP = symbol ("BoxTGroup")

Definition at line 418 of file boxes.cpp.

Sym BOXVBARGRAPH = symbol ("BoxVBargraph")

Definition at line 430 of file boxes.cpp.

Sym BOXVGROUP = symbol ("BoxVGroup")

Definition at line 412 of file boxes.cpp.

Sym BOXVSLIDER = symbol ("BoxVSlider")

Definition at line 367 of file boxes.cpp.

Sym BOXWIRE = symbol ("BoxWire")

Definition at line 93 of file boxes.cpp.

Sym BOXWITHLOCALDEF = symbol ("BoxWithLocalDef")

Definition at line 233 of file boxes.cpp.

Sym CLOSURE = symbol ("Closure")

Definition at line 167 of file boxes.cpp.

Sym IMPORTFILE = symbol ("ImportFile")

Definition at line 269 of file boxes.cpp.