void AstDumpToHtml::view(const char* passName) { fprintf(sIndexFP, "<TR><TD>"); fprintf(sIndexFP, "%s%s[%d]", passName, fdump_html_include_system_modules ? "<br>" : " ", lastNodeIDUsed()); fprintf(sIndexFP, "</TD><TD>"); forv_Vec(ModuleSymbol, module, allModules) { if (fdump_html_include_system_modules == true || module->modTag == MOD_MAIN || module->modTag == MOD_USER) { AstDumpToHtml logger; if (logger.open(module, passName) == true) { for_alist(stmt, module->block->body) stmt->accept(&logger); logger.close(); } } } fprintf(sIndexFP, "</TD></TR>"); fflush(sIndexFP); sPassIndex++; }
ForLoop* ForLoop::copy(SymbolMap* mapRef, bool internal) { SymbolMap localMap; SymbolMap* map = (mapRef != 0) ? mapRef : &localMap; ForLoop* retval = new ForLoop(); retval->astloc = astloc; retval->blockTag = blockTag; retval->mBreakLabel = mBreakLabel; retval->mContinueLabel = mContinueLabel; retval->mOrderIndependent = mOrderIndependent; retval->mIndex = mIndex->copy(map, true), retval->mIterator = mIterator->copy(map, true); retval->mZippered = mZippered; for_alist(expr, body) retval->insertAtTail(expr->copy(map, true)); if (internal == false) update_symbols(retval, map); return retval; }
void ParamForLoop::accept(AstVisitor* visitor) { if (visitor->enterParamForLoop(this) == true) { if (indexExprGet() != 0) indexExprGet()->accept(visitor); if (lowExprGet() != 0) lowExprGet()->accept(visitor); if (highExprGet() != 0) highExprGet()->accept(visitor); if (strideExprGet() != 0) strideExprGet()->accept(visitor); for_alist(next_ast, body) next_ast->accept(visitor); if (modUses) modUses->accept(visitor); if (byrefVars) byrefVars->accept(visitor); visitor->exitParamForLoop(this); } }
BlockStmt* BlockStmt::copyInner(SymbolMap* map) { BlockStmt* _this = new BlockStmt(); _this->blockTag = blockTag; for_alist(expr, body) _this->insertAtTail(COPY_INT(expr)); _this->blockInfo = COPY_INT(blockInfo); _this->modUses = COPY_INT(modUses); _this->breakLabel = breakLabel; _this->continueLabel = continueLabel; return _this; }
BlockStmt* ForLoop::copyBody(SymbolMap* map) { BlockStmt* retval = new BlockStmt(); retval->astloc = astloc; retval->blockTag = blockTag; for_alist(expr, body) retval->insertAtTail(expr->copy(map, true)); update_symbols(retval, map); return retval; }
void DoWhileStmt::accept(AstVisitor* visitor) { if (visitor->enterDoWhileStmt(this) == true) { for_alist(next_ast, body) next_ast->accept(visitor); if (condExprGet() != 0) condExprGet()->accept(visitor); if (useList) useList->accept(visitor); if (byrefVars) byrefVars->accept(visitor); visitor->exitDoWhileStmt(this); } }
void ForLoop::accept(AstVisitor* visitor) { if (visitor->enterForLoop(this) == true) { for_alist(next_ast, body) next_ast->accept(visitor); if (indexGet() != 0) indexGet()->accept(visitor); if (iteratorGet() != 0) iteratorGet()->accept(visitor); if (modUses) modUses->accept(visitor); if (byrefVars) byrefVars->accept(visitor); visitor->exitForLoop(this); } }
ParamForLoop* ParamForLoop::copy(SymbolMap* mapRef, bool internal) { SymbolMap localMap; SymbolMap* map = (mapRef != 0) ? mapRef : &localMap; ParamForLoop* retval = new ParamForLoop(); retval->astloc = astloc; retval->blockTag = blockTag; retval->mBreakLabel = mBreakLabel; retval->mContinueLabel = mContinueLabel; if (mResolveInfo != 0) retval->mResolveInfo = mResolveInfo->copy(map, true); for_alist(expr, body) retval->insertAtTail(expr->copy(map, true)); if (internal == false) update_symbols(retval, map); return retval; }
void WhileStmt::copyShare(const WhileStmt& ref, SymbolMap* mapRef, bool internal) { SymbolMap localMap; SymbolMap* map = (mapRef != 0) ? mapRef : &localMap; Expr* condExpr = ref.condExprGet(); astloc = ref.astloc; blockTag = ref.blockTag; mBreakLabel = ref.mBreakLabel; mContinueLabel = ref.mContinueLabel; mOrderIndependent = ref.mOrderIndependent; if (condExpr != 0) mCondExpr = condExpr->copy(map, true); for_alist(expr, ref.body) insertAtTail(expr->copy(map, true)); if (internal == false) update_symbols(this, map); }