//печать элемента анимации void dump (const Symbol& symbol, int level) { print_space (level++); printf ("Symbol '%s'\n", symbol.Name ()); dump (symbol.Timeline (), level); }
void Expression::SubstituteNames(StringMap const &substitutions) { Symbol *symbolHead = SymbolHead(); if(symbolHead) { StringMap::const_iterator found = substitutions.find(symbolHead->Name()); if(found != substitutions.end()) symbolHead->Name(found->second); } else { if(head) head->SubstituteNames(substitutions); for(ExprVector::const_iterator leaf = leaves.begin(); leaf != leaves.end(); ++leaf) (*leaf)->SubstituteNames(substitutions); } }
string Expression::SymbolName() { if(head) { Symbol *symbolHead = dynamic_cast<Symbol*>(head); if(symbolHead) return symbolHead->Name(); } return ""; }