tree.cpp File Reference

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <limits.h>
#include "tree.hh"
#include <fstream>
#include <cstdlib>
Include dependency graph for tree.cpp:

Go to the source code of this file.

Defines

#define ERROR(s, t)   { error(s,t); exit(1); }

Functions

static void error (const char *s, Tree t)
int tree2int (Tree t)
 if t has a node of type int, return it otherwise error
double tree2float (Tree t)
 if t has a node of type float, return it otherwise error
double tree2double (Tree t)
 if t has a node of type float, return it otherwise error
const char * tree2str (Tree t)
 if t has a node of type symbol, return its name otherwise error
void * tree2ptr (Tree t)
 if t has a node of type ptr, return it otherwise error
bool isTree (const Tree &t, const Node &n)
bool isTree (const Tree &t, const Node &n, Tree &a)
bool isTree (const Tree &t, const Node &n, Tree &a, Tree &b)
bool isTree (const Tree &t, const Node &n, Tree &a, Tree &b, Tree &c)
bool isTree (const Tree &t, const Node &n, Tree &a, Tree &b, Tree &c, Tree &d)
bool isTree (const Tree &t, const Node &n, Tree &a, Tree &b, Tree &c, Tree &d, Tree &e)
void * getUserData (Tree t)
 if t has a node of type symbol, return the associated user data

Variables

Tabber TABBER (1)
Sym PROCESS = symbol("process")

Define Documentation

#define ERROR ( s,
 )     { error(s,t); exit(1); }

Definition at line 96 of file tree.cpp.


Function Documentation

static void error ( const char *  s,
Tree  t 
) [static]

Definition at line 90 of file tree.cpp.

00091 {
00092     //fprintf(stderr, "ERROR : %s (%p)\n", s, t);
00093     cerr << "ERROR : " << s << " : " << *t << endl;
00094 }

void* getUserData ( Tree  t  ) 

if t has a node of type symbol, return the associated user data

Definition at line 386 of file tree.cpp.

References getUserData(), isSym(), and CTree::node().

00387 {
00388     Sym s;
00389     if (isSym(t->node(), &s)) {
00390         return getUserData(s);
00391     } else {
00392         return 0;
00393     }
00394 }

Here is the call graph for this function:

bool isTree ( const Tree t,
const Node n,
Tree a,
Tree b,
Tree c,
Tree d,
Tree e 
)

Definition at line 370 of file tree.cpp.

References CTree::arity(), CTree::branch(), and CTree::node().

00371 { 
00372     if ((t->node() == n) && (t->arity() == 5)) { 
00373         a=t->branch(0); 
00374         b=t->branch(1); 
00375         c=t->branch(2); 
00376         d=t->branch(3); 
00377         e=t->branch(4); 
00378         return true; 
00379     } else {
00380         return false;
00381     }
00382 }

Here is the call graph for this function:

bool isTree ( const Tree t,
const Node n,
Tree a,
Tree b,
Tree c,
Tree d 
)

Definition at line 357 of file tree.cpp.

References CTree::arity(), CTree::branch(), and CTree::node().

00358 { 
00359     if ((t->node() == n) && (t->arity() == 4)) { 
00360         a=t->branch(0); 
00361         b=t->branch(1); 
00362         c=t->branch(2); 
00363         d=t->branch(3); 
00364         return true; 
00365     } else {
00366         return false;
00367     }
00368 }

Here is the call graph for this function:

bool isTree ( const Tree t,
const Node n,
Tree a,
Tree b,
Tree c 
)

Definition at line 345 of file tree.cpp.

References CTree::arity(), CTree::branch(), and CTree::node().

00346 { 
00347     if ((t->node() == n) && (t->arity() == 3)) { 
00348         a=t->branch(0); 
00349         b=t->branch(1); 
00350         c=t->branch(2); 
00351         return true; 
00352     } else {
00353         return false;
00354     }
00355 }

Here is the call graph for this function:

bool isTree ( const Tree t,
const Node n,
Tree a,
Tree b 
)

Definition at line 334 of file tree.cpp.

References CTree::arity(), CTree::branch(), and CTree::node().

00335 { 
00336     if ((t->node() == n) && (t->arity() == 2)) { 
00337         a=t->branch(0); 
00338         b=t->branch(1); 
00339         return true; 
00340     } else {
00341         return false;
00342     }
00343 }

Here is the call graph for this function:

bool isTree ( const Tree t,
const Node n,
Tree a 
)

Definition at line 324 of file tree.cpp.

References CTree::arity(), CTree::branch(), and CTree::node().

00325 { 
00326     if ((t->node() == n) && (t->arity() == 1)) { 
00327         a=t->branch(0); 
00328         return true; 
00329     } else {
00330         return false;
00331     }
00332 }

Here is the call graph for this function:

bool isTree ( const Tree t,
const Node n 
)

Definition at line 319 of file tree.cpp.

References CTree::node().

Referenced by isBoxAbstr(), isBoxAccess(), isBoxAppl(), isBoxButton(), isBoxCase(), isBoxCheckbox(), isBoxComponent(), isBoxCut(), isBoxEnvironment(), isBoxError(), isBoxFConst(), isBoxFFun(), isBoxFVar(), isBoxHBargraph(), isBoxHGroup(), isBoxHSlider(), isBoxIdent(), isBoxIPar(), isBoxIProd(), isBoxISeq(), isBoxISum(), isBoxLibrary(), isBoxMerge(), isBoxNumEntry(), isBoxPar(), isBoxPatternMatcher(), isBoxPatternVar(), isBoxPrim0(), isBoxPrim1(), isBoxPrim2(), isBoxPrim3(), isBoxPrim4(), isBoxPrim5(), isBoxRec(), isBoxSeq(), isBoxSlot(), isBoxSplit(), isBoxSymbolic(), isBoxTGroup(), isBoxVBargraph(), isBoxVGroup(), isBoxVSlider(), isBoxWire(), isBoxWithLocalDef(), isClosure(), isDocDgm(), isDocEqn(), isDocLst(), isDocNtc(), isDocTxt(), isImportFile(), isPathCurrent(), isPathParent(), isPathRoot(), isProj(), isRec(), isRef(), isSigAttach(), isSigBinOp(), isSigButton(), isSigCheckbox(), isSigDelay1(), isSigDocAccessTbl(), isSigDocConstantTbl(), isSigDocWriteTbl(), isSigFConst(), isSigFFun(), isSigFixDelay(), isSigFloatCast(), isSigFVar(), isSigGen(), isSigHBargraph(), isSigHSlider(), isSigInput(), isSigIntCast(), isSigIota(), isSigNumEntry(), isSigOutput(), isSigPrefix(), isSigRDTbl(), isSigSelect2(), isSigSelect3(), isSigTable(), isSigTuple(), isSigTupleAccess(), isSigVBargraph(), isSigVSlider(), isSigWRTbl(), isUiFolder(), and isUiWidget().

00320 { 
00321     return (t->node() == n);
00322 }

Here is the call graph for this function:

double tree2double ( Tree  t  ) 

if t has a node of type float, return it otherwise error

Definition at line 276 of file tree.cpp.

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

Referenced by Description::addWidget().

00277 {
00278     double   x;
00279     int     i;
00280 
00281     if (isInt(t->node(), &i)) {
00282         x = double(i);
00283     } else if (isDouble(t->node(), &x)) {
00284         //nothing to do
00285     } else {
00286         ERROR("the node of the tree is not a float nor an int", t);
00287     }
00288     return double(x);
00289 }   

Here is the call graph for this function:

Here is the caller graph for this function:

double tree2float ( Tree  t  ) 

if t has a node of type float, return it otherwise error

Definition at line 260 of file tree.cpp.

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

Referenced by eval2double(), ScalarCompiler::generateHSlider(), ScalarCompiler::generateNumEntry(), ScalarCompiler::generateVSlider(), Compiler::generateWidgetCode(), Compiler::generateWidgetMacro(), infereSigType(), and DocCompiler::prepareIntervallicUI().

00261 {
00262     double   x;
00263     int     i;
00264 
00265     if (isInt(t->node(), &i)) {
00266         x = double(i);
00267     } else if (isDouble(t->node(), &x)) {
00268         //nothing to do
00269     } else {
00270         ERROR("the node of the tree is not a float nor an int", t);
00271     }
00272     return x;
00273 }   

Here is the call graph for this function:

Here is the caller graph for this function:

int tree2int ( Tree  t  ) 

if t has a node of type int, return it otherwise error

Definition at line 244 of file tree.cpp.

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

Referenced by Description::addGroup(), annotate(), boxComplexity(), eval2int(), ffargtype(), ffrestype(), Compiler::generateUserInterfaceTree(), getRecursivness(), getSigOrder(), infereFConstType(), infereFVarType(), and isBoxPatternMatcher().

00245 {
00246     double  x;
00247     int     i;
00248 
00249     if (isInt(t->node(), &i)) {
00250         // nothing to do
00251     } else if (isDouble(t->node(), &x)) {
00252         i = int(x);
00253     } else {
00254         ERROR("the node of the tree is not an int nor a float", t);
00255     }
00256     return i;
00257 }   

Here is the call graph for this function:

Here is the caller graph for this function:

void* tree2ptr ( Tree  t  ) 

if t has a node of type ptr, return it otherwise error

Definition at line 302 of file tree.cpp.

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

Referenced by getColorProperty(), getInferredType(), OccMarkup::getOcc(), isBoxPatternMatcher(), isInEnv(), and searchEnv().

00303 {
00304     void*   x;
00305     if (! isPointer(t->node(), &x)) {
00306         ERROR("the node of the tree is not a pointer", t);
00307     }
00308     return x;
00309 }   

Here is the call graph for this function:

Here is the caller graph for this function:

const char* tree2str ( Tree  t  ) 

Variable Documentation

Sym PROCESS = symbol("process")

Definition at line 142 of file tree.cpp.

Definition at line 87 of file tree.cpp.

Referenced by traced_simplification().

Generated on Thu Apr 29 00:00:16 2010 for FAUST compiler by  doxygen 1.6.3