Interface for names management. More...
#include "tlib.hh"
#include "propagate.hh"
#include <string>
Go to the source code of this file.
Functions | |
bool | getDefNameProperty (Tree t, Tree &id) |
Indicates the identifier (if any) the expression was a definition of. | |
void | setDefNameProperty (Tree t, Tree id) |
void | setDefNameProperty (Tree t, const string &name) |
void | setSigListNickName (Tree lsig, const string &nickname) |
set the nickname property of a list of signals. | |
void | setSigNickname (Tree t, const string &id) |
Set the nickname property of a signal. | |
bool | getSigNickname (Tree t, Tree &id) |
Get the nickname property of a signal. | |
bool | searchIdDef (Tree id, Tree &def, Tree lenv) |
Search the environment for the definition of a symbol ID and return it. | |
Tree | pushValueDef (Tree id, Tree def, Tree lenv) |
Push a new layer and add a single definition. | |
Tree | simplifyPattern (Tree pattern) |
Simplify a block-diagram pattern by computing its numerical sub-expressions. |
Interface for names management.
Definition in file names.hh.
Indicates the identifier (if any) the expression was a definition of.
t | the expression | |
id | reference to the identifier |
Definition at line 85 of file names.cpp.
References getProperty().
Referenced by a2sb(), applyList(), eval(), evalIdDef(), generateDiagramSchema(), generateInputSlotSchema(), generateInsideSchema(), generateOutputSlotSchema(), legalFileName(), mapGetEqName(), real_a2sb(), and writeSchemaFile().
00086 { 00087 //cerr << "getDefNameProperty of : " << t << endl; 00088 return getProperty(t, DEFNAMEPROPERTY, id); 00089 }
Get the nickname property of a signal.
Definition at line 122 of file names.cpp.
References getProperty().
Referenced by DocCompiler::compileLateq().
00123 { 00124 bool r = getProperty(t, NICKNAMEPROPERTY, id); 00125 return r; 00126 }
Push a new layer and add a single definition.
id | the symbol id to be defined | |
def | the definition to be binded to the symbol id | |
lenv | the environment where to push the layer and add the definition |
Definition at line 1189 of file eval.cpp.
References addLayerDef(), and pushNewLayer().
Referenced by apply_pattern_matcher(), applyList(), iteratePar(), iterateProd(), iterateSeq(), iterateSum(), and real_a2sb().
01190 { 01191 Tree lenv2 = pushNewLayer(lenv); 01192 addLayerDef(id, def, lenv2); 01193 return lenv2; 01194 }
Search the environment for the definition of a symbol ID and return it.
id | the symbol ID to search | |
def | where to store the definition if any | |
lenv | the environment |
Definition at line 1229 of file eval.cpp.
References CTree::branch(), getProperty(), and isNil().
Referenced by apply_pattern_matcher().
01230 { 01231 // search the environment until a definition is found 01232 // or nil (the empty environment) is reached 01233 while (!isNil(lenv) && !getProperty(lenv, id, def)) { 01234 lenv = lenv->branch(0); 01235 } 01236 return !isNil(lenv); 01237 }
void setDefNameProperty | ( | Tree | t, | |
const string & | name | |||
) |
Definition at line 60 of file names.cpp.
References gMaxNameSize, setProperty(), and tree().
00061 { 00062 //cerr << "setDefNameProperty : " << name << " FOR " << t << "#" << boxpp(t) << endl; 00063 int n = name.size(); 00064 int m = (gMaxNameSize>1023) ? 1023 : gMaxNameSize; 00065 if (n > m) { 00066 // the name is too long we reduce it to 2/3 of maxsize 00067 char buf[1024]; 00068 int i = 0; 00069 // copy first third 00070 for (; i < m/3; i++) { buf[i] = name[i]; } 00071 // add ... 00072 buf[i++] = '.'; 00073 buf[i++] = '.'; 00074 buf[i++] = '.'; 00075 // copy last third 00076 for (int c = n-m/3; c<n; c++, i++) { buf[i] = name[c]; } 00077 buf[i] = 0; 00078 setProperty(t, DEFNAMEPROPERTY, tree(buf)); 00079 } else { 00080 setProperty(t, DEFNAMEPROPERTY, tree(name.c_str())); 00081 } 00082 00083 }
Definition at line 54 of file names.cpp.
References setProperty().
Referenced by a2sb(), applyList(), eval(), pushMultiClosureDefs(), real_a2sb(), and realeval().
00055 { 00056 //cerr << "setDefNameProperty : " << *id << " FOR " << t << "#" << boxpp(t) << endl; 00057 setProperty(t, DEFNAMEPROPERTY, id); 00058 }
void setSigListNickName | ( | Tree | lsig, | |
const string & | nickname | |||
) |
set the nickname property of a list of signals.
If the list contains more than one signal, adds an index to the nickname
Definition at line 134 of file names.cpp.
References hd(), isList(), isNil(), setSigNickname(), subst(), T(), and tl().
00135 { 00136 assert(isList(lsig)); 00137 00138 if (isNil(tl(lsig))) { 00139 setSigNickname(hd(lsig), nickname); 00140 } else { 00141 int i=0; 00142 while (!isNil(lsig)) { 00143 setSigNickname(hd(lsig), subst("$0_$1", nickname, T(++i))); 00144 lsig = tl(lsig); 00145 } 00146 } 00147 }
void setSigNickname | ( | Tree | t, | |
const string & | id | |||
) |
Set the nickname property of a signal.
Definition at line 108 of file names.cpp.
References isSigFixDelay(), isZero(), setProperty(), and tree().
Referenced by setSigListNickName().
00109 { 00110 Tree s,d; 00111 if (isSigFixDelay(t,s,d) && isZero(d)) { 00112 setProperty(s, NICKNAMEPROPERTY, tree(id)); 00113 } else { 00114 setProperty(t, NICKNAMEPROPERTY, tree(id)); 00115 } 00116 }
Simplify a block-diagram pattern by computing its numerical sub-expressions.
pattern | an evaluated block-diagram |
Definition at line 605 of file eval.cpp.
References getNumericProperty(), isBoxNumeric(), and setNumericProperty().
Referenced by apply_pattern_matcher_internal().
00606 { 00607 Tree num; 00608 if (!getNumericProperty(value,num)) { 00609 if (!isBoxNumeric(value,num)) { 00610 num = value; 00611 } 00612 setNumericProperty(value,num); 00613 } 00614 return num; 00615 }