#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <limits.h>
#include "tree.hh"
#include <fstream>
#include <cstdlib>
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") |
static void error | ( | const char * | s, | |
Tree | t | |||
) | [static] |
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 }
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 }
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 }
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 }
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 }
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 }
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 }
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 }
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 }
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 }
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 }
const char* tree2str | ( | Tree | t | ) |
if t has a node of type symbol, return its name otherwise error
Definition at line 292 of file tree.cpp.
References ERROR, isSym(), name(), and CTree::node().
Referenced by Description::addGroup(), Description::addWidget(), applyList(), DocCompiler::compileLateq(), declareMetadata(), SourceReader::expandrec(), ffincfile(), fflibfile(), ffname(), DocCompiler::generateCode(), ScalarCompiler::generateCode(), generateDiagramSchema(), generateInputSlotSchema(), generateInsideSchema(), Compiler::generateMacroInterfaceTree(), generateOutputSlotSchema(), Compiler::generateUserInterfaceTree(), Compiler::generateWidgetCode(), Compiler::generateWidgetMacro(), DocCompiler::getUIDir(), DocCompiler::getUIDocInfos(), legalFileName(), main(), mapGetEqName(), ppsig::print(), boxpp::print(), printdocheader(), realeval(), and writeSchemaFile().
00293 { 00294 Sym s; 00295 if (!isSym(t->node(), &s)) { 00296 ERROR("the node of the tree is not a symbol", t); 00297 } 00298 return name(s); 00299 }
Definition at line 87 of file tree.cpp.
Referenced by traced_simplification().