void LoadInfo::init() { QVBoxLayout *vb = new QVBoxLayout( this ); QString cpuInfo = getCpuInfo(); if ( !cpuInfo.isNull() ) vb->addWidget( new QLabel( cpuInfo, this ) ); vb->addWidget( new Load( this ), 100 ); QHBoxLayout *hb = new QHBoxLayout; vb->addLayout(hb); QLabel *l = new QLabel( this ); l->setPixmap( makeLabel( Qt::red ) ); hb->addWidget( l ); l = new QLabel(tr("Application CPU (%)"), this ); hb->addWidget( l ); hb->addStretch(20); hb = new QHBoxLayout; vb->addLayout(hb); l = new QLabel( this ); l->setPixmap( makeLabel( Qt::green ) ); hb->addWidget( l, 1 ); l = new QLabel(tr("System CPU (%)"), this ); hb->addWidget( l ); hb->addStretch(20); vb->addStretch(50); }
void StmtAssembler::visitWhile(While* p) { LabelPair labels; int ix = scope->nextIx(); labels.first = makeLabel("While_body", ix); labels.second = makeLabel("While_end", ix); std::string cond_label = makeLabel("While_cond", ix); stream << cond_label << ":" << std::endl; ExprAssembler expr_ass(scope, env, stream); expr_ass.labelStack.push(&labels); p->expr_->accept(&expr_ass); stackLimit = std::max(stackLimit, expr_ass.stackLimit); stream << labels.first << ":" << std::endl; Core::BlockScope::PtrType new_scope(new Core::BlockScope(scope)); StmtAssembler body_ass(new_scope, env, stream); p->stmt_->accept(&body_ass); stackLimit = std::max(stackLimit, body_ass.stackLimit); stream << " goto " << cond_label << std::endl; stream << labels.second << ":" << std::endl; };
void StmtAssembler::visitCondElse(CondElse* p) { LabelPair labels; int ix = scope->nextIx(); labels.first = makeLabel("CondElse_true", ix); labels.second = makeLabel("CondElse_false", ix); std::string end_label = makeLabel("CondElse_end", ix); ExprAssembler expr_ass(scope, env, stream); expr_ass.labelStack.push(&labels); p->expr_->accept(&expr_ass); stackLimit = std::max(stackLimit, expr_ass.stackLimit); stream << labels.first << ":" << std::endl; Core::BlockScope::PtrType true_scope(new Core::BlockScope(scope)); StmtAssembler true_checker(true_scope, env, stream); p->stmt_1->accept(&true_checker); stackLimit = std::max(stackLimit, true_checker.stackLimit); stream << " goto " << end_label << std::endl; stream << labels.second << ":" << std::endl; Core::BlockScope::PtrType false_scope(new Core::BlockScope(scope)); StmtAssembler false_checker(false_scope, env, stream); p->stmt_2->accept(&false_checker); stackLimit = std::max(stackLimit, false_checker.stackLimit); stream << end_label << ":" << std::endl; stream << " nop" << std::endl; };
TAC_NODE* createWHILE(TAC_NODE* code0, TAC_NODE* code1) { HASH_NODE* loopLabelBegin; loopLabelBegin = makeLabel(); HASH_NODE* loopLabelEnd; loopLabelEnd = makeLabel(); return joinTacs(joinTacs(joinTacs(joinTacs(joinTacs(createTacNode(TAC_LABEL, loopLabelBegin, NULL, NULL), code0), createTacNode(TAC_IFZ, NULL, code0->result, loopLabelEnd)), code1), createTacNode(TAC_JUMP, NULL, loopLabelBegin, NULL)), createTacNode(TAC_LABEL, loopLabelEnd, NULL, NULL)); }
void ExprAssembler::eval(Expr* e) { LabelPair labels; int ix = scope->nextIx(); labels.first = makeLabel("ExpVal_true", ix); labels.second = makeLabel("ExpVal_false", ix); std::string end_lab = makeLabel("ExpVal_end", ix); labelStack.push(&labels); e->accept(this); if (labelStack.size() == 0 || labelStack.top() != &labels) { instBool(stream, labels, end_lab); } else labelStack.pop(); };
TAC_NODE* createIF_ELSE(TAC_NODE* code0, TAC_NODE* code1, TAC_NODE* code2) { HASH_NODE* labelElse; labelElse = makeLabel(); HASH_NODE* labelEndIfElse; labelEndIfElse = makeLabel(); TAC_NODE* ifBlock = joinTacs(joinTacs(joinTacs(code0, createTacNode(TAC_IFZ, NULL, code0->result, labelElse)), code1),createTacNode(TAC_JUMP, labelEndIfElse, NULL, NULL)); TAC_NODE* elseBlock = joinTacs(joinTacs(createTacNode(TAC_LABEL, labelElse, NULL, NULL), code2), createTacNode(TAC_LABEL, labelEndIfElse, NULL, NULL)); return joinTacs(ifBlock, elseBlock); }
void ExprAssembler::visitEOr(EOr* p) { LabelPair* target = nextLabelPair(); LabelPair lab_e1, lab_e2; std::string e2_comp; int ix = scope->nextIx(); e2_comp = makeLabel("EOR_snd", ix); lab_e1.first = target->first; lab_e1.second = e2_comp; lab_e2.first = target->first; lab_e2.second = target->second; labelStack.push(&lab_e2); labelStack.push(&lab_e1); p->expr_1->accept(this); stream << e2_comp << ":" << std::endl; p->expr_2->accept(this); Core::AbstractType::PtrType v1, v2; v2 = evalStack.top(); evalStack.pop(); v1 = evalStack.top(); evalStack.pop(); push(BinaryOpEval(v1, v2, p, this).result); };
LoadInfo::LoadInfo( QWidget *parent, const char *name, WFlags f ) : QWidget( parent, name, f ) { QVBoxLayout *vb = new QVBoxLayout( this, 6 ); QString cpuInfo = getCpuInfo(); if ( !cpuInfo.isNull() ) vb->addWidget( new QLabel( cpuInfo, this ) ); vb->addWidget( new Load( this ), 100 ); QLabel *l = new QLabel( this ); l->setPixmap( makeLabel( red, tr("Application CPU usage (%)") ) ); vb->addWidget( l, 1 ); l = new QLabel( this ); l->setPixmap( makeLabel( green, tr("System CPU usage (%)") ) ); vb->addWidget( l, 1 ); vb->addStretch(50); QWhatsThis::add( this, tr( "This page shows how much this device's processor is being used." ) ); }
/** * Insert a nop to serve as a target of the backwards branch of a while-statement * * @param instList a list of instructions * @param symtab a symbol table * @return the label for the backwards branch target */ int emitWhileLoopLandingPad(DList instList,SymTable symtab) { char label[20]; makeLabel(label); char *inst = nssave(2,label,":\tnop"); dlinkAppend(instList,dlinkNodeAlloc(inst)); return SymIndex(symtab,label); }
TAC *tacIfThen(TAC **code) { TAC *nIf, *target; HASH_NODE *label = makeLabel(); /* ifz tac */ nIf = tacCreate(TAC_IFZ, label, code[0]?code[0]->res:NULL, NULL); /* ifz false target */ target = tacCreate(TAC_LABEL, label, NULL, NULL); return tacMultiJoin(4, code[0], nIf, code[1], target); }
TAC *tacWhile(TAC **code) { TAC *tacExp = code[0]; TAC *tacCmd = code[1]; // label before test expression HASH_NODE *labelPrev = makeLabel(); TAC *tacPrev = tacCreate(TAC_LABEL, labelPrev, NULL, NULL); // label after while command HASH_NODE *labelNext = makeLabel(); TAC *tacNext = tacCreate(TAC_LABEL, labelNext, NULL, NULL); // while conditional jump TAC *tacIfz = tacCreate(TAC_IFZ, labelNext, tacExp?tacExp->res:NULL, NULL); // jump back to test expression after command TAC *tacJmp = tacCreate(TAC_JUMP, labelPrev, NULL, NULL); return tacMultiJoin(6, tacPrev, tacExp, tacIfz, tacCmd, tacJmp, tacNext); }
/** * Insert a test to enter a while loop. If the test is false, branch to a label after the loop. * * @param instList a list of instructions * @param symtab a symbol table * @param regIndex a symbol table index for the register holding the result of the test expression of a while-statement * @return a symbol table index for the label at the end of the while-loop */ int emitWhileLoopTest(DList instList, SymTable symtab, int regIndex) { char label[20]; makeLabel(label); char* inst = nssave(4,"\tbeq ",(char*)SymGetFieldByIndex(symtab,regIndex,SYM_NAME_FIELD),", $zero, ",label); dlinkAppend(instList,dlinkNodeAlloc(inst)); freeIntegerRegister((int)SymGetFieldByIndex(symtab,regIndex,SYMTAB_REGISTER_INDEX_FIELD)); return SymIndex(symtab,label); }
/** * Insert a branch to an ending label after the else-part of an if-statement. * * @param instList a list of instructions * @param symtab a symbol table * @param elseLabelIndex the symbol table index of the label for the beginning of the else-part of an if-statement * @return a symbol table index for the end label of an if-statement */ int emitThenBranch(DList instList, SymTable symtab, int elseLabelIndex) { char label[20]; makeLabel(label); char* inst = nssave(2,"\tj ",label); dlinkAppend(instList, dlinkNodeAlloc(inst)); emitEndBranchTarget(instList,symtab,elseLabelIndex); return SymIndex(symtab,label); }
static void apply_defaults(InputConfig &input_config, const TCHAR *const* default_modes, const InputConfig::Event *default_events, unsigned num_default_events, const flat_gesture_map *default_gesture2event, const flat_event_map *default_key2event, const flat_event_map *default_gc2event, const flat_event_map *default_n2event, const flat_label *default_labels) { assert(num_default_events <= InputConfig::MAX_EVENTS); input_config.SetDefaults(); while (*default_modes != NULL) input_config.AppendMode(*default_modes++); input_config.events.resize(num_default_events + 1); std::copy(default_events, default_events + num_default_events, input_config.events.begin() + 1); while (default_gesture2event->event > 0) { input_config.Gesture2Event.add(default_gesture2event->data, default_gesture2event->event); ++default_gesture2event; } while (default_key2event->event > 0) { input_config.Key2Event[default_key2event->mode][default_key2event->key] = default_key2event->event; ++default_key2event; } while (default_gc2event->event > 0) { input_config.GC2Event[default_gc2event->key] = default_gc2event->event; ++default_gc2event; } while (default_n2event->event > 0) { input_config.N2Event[default_n2event->key] = default_n2event->event; ++default_n2event; } while (default_labels->label != NULL) { makeLabel(input_config, (InputEvents::Mode)default_labels->mode, default_labels->label, default_labels->location, default_labels->event); ++default_labels; } }
void ExprAssembler::visitERel(ERel* p) { LabelPair labels_b1, labels_b2; std::string b1_end, b2_end; int ix1 = scope->nextIx(), ix2 = scope->nextIx(); labels_b1.first = makeLabel("B1_true", ix1); labels_b1.second = makeLabel("B1_false", ix1); b1_end = makeLabel("B1_end", ix1); labels_b2.first = makeLabel("B2_true", ix2); labels_b2.second = makeLabel("B2_false", ix2); b2_end = makeLabel("B2_end", ix2); Core::AbstractType::PtrType v1, v2; labelStack.push(&labels_b1); p->expr_1->accept(this); if (labelStack.size() == 0 || labelStack.top() != &labels_b1) instBool(stream, labels_b1, b1_end); else labelStack.pop(); labelStack.push(&labels_b2); p->expr_2->accept(this); if (labelStack.size() == 0 || labelStack.top() != &labels_b2) instBool(stream, labels_b2, b2_end); else labelStack.pop(); v2 = evalStack.top(); evalStack.pop(); v1 = evalStack.top(); evalStack.pop(); push(BinaryOpEval(v1, v2, p->relop_, this).result); };
TransformFourier::TransformFourier(MainWindow* mainWin) : Dialog(mainWin, "Fourier Transform") { SetsSender::addViaDialog(this); setNumber = new SetComboBox(); connect(setNumber, SIGNAL(currentIndexChanged(int)), this, SLOT(updateDialog())); windowLabel = makeLabel("Data Window"); loadLabel = makeLabel("Load Result As"); loadXLabel = makeLabel("Let result X="); dataTypeLabel = makeLabel("Data type"); operationLabel = makeLabel("Perform"); windowType = new QComboBox(); windowType->addItem(tr("None (Rectangular)")); windowType->addItem(tr("Triangular")); windowType->addItem(tr("Hanning")); windowType->addItem(tr("Welch")); windowType->addItem(tr("Hamming")); windowType->addItem(tr("Blackman")); windowType->addItem(tr("Parsing")); loadType = new QComboBox(); loadType->addItem(tr("Magnitude")); loadType->addItem(tr("Phase")); loadType->addItem(tr("Coefficients")); loadX = new QComboBox(); loadX->addItem(tr("Index")); loadX->addItem(tr("Frequency")); loadX->addItem(tr("Period")); dataType = new QComboBox(); dataType->addItem(tr("Real")); dataType->addItem(tr("Complex")); operation = new QComboBox(); operation->addItem(tr("Forward FFT")); operation->addItem(tr("Reverse FFT")); operation->addItem(tr("Forward DFT")); operation->addItem(tr("Reverse DFT")); operation->addItem(tr("Window only")); QGridLayout* layout = new QGridLayout(); addPair(layout, 0, makeLabel("Set"), setNumber); layout->setRowMinimumHeight(1, 8); addPair(layout, 2, operationLabel, operation); layout->setRowMinimumHeight(3, 2); addPair(layout, 4, windowLabel, windowType); layout->setRowMinimumHeight(5, 2); addPair(layout, 6, loadLabel, loadType); layout->setRowMinimumHeight(7, 2); addPair(layout, 8, loadXLabel, loadX); layout->setRowMinimumHeight(9, 2); addPair(layout, 10, dataTypeLabel, dataType); this->setDialogLayout(layout); }
TAC *tacIfThenElse(TAC **code) { TAC *tacExp = code[0]; TAC *tacThen = code[1]; TAC *tacElse = code[2]; // label before else HASH_NODE* labelElse = makeLabel(); TAC *tacLabelElse = tacCreate(TAC_LABEL, labelElse, NULL, NULL); // label after else HASH_NODE* labelNext = makeLabel(); TAC *tacLabelNext = tacCreate(TAC_LABEL, labelNext, NULL, NULL); // ifz conditional jump TAC *tacIfz = tacCreate(TAC_IFZ, labelElse, tacExp?tacExp->res:NULL, NULL); // jump at end of then command TAC *tacJmp = tacCreate(TAC_JUMP, labelNext, NULL, NULL); return tacMultiJoin(7, tacExp, tacIfz, tacThen, tacJmp, tacLabelElse, tacElse, tacLabelNext); }
std::unique_ptr<Labels> labels(new Labels()); View view(256, 256); view.setPosition(0, 0); view.setZoom(0); view.update(false); struct TestLabelMesh : public LabelSet { void addLabel(std::unique_ptr<Label> _label) { m_labels.push_back(std::move(_label)); } }; auto labelMesh = std::unique_ptr<TestLabelMesh>(new TestLabelMesh()); auto textStyle = std::unique_ptr<TextStyle>(new TextStyle("test", nullptr, false)); textStyle->setID(0); labelMesh->addLabel(makeLabel(glm::vec2{.5f,.5f}, Label::Type::point, "0")); labelMesh->addLabel(makeLabel(glm::vec2{1,0}, Label::Type::point, "1")); labelMesh->addLabel(makeLabel(glm::vec2{1,1}, Label::Type::point, "2")); std::shared_ptr<Tile> tile(new Tile({0,0,0}, view.getMapProjection())); tile->initGeometry(1); tile->setMesh(*textStyle.get(), std::move(labelMesh)); tile->update(0, view); std::vector<std::unique_ptr<Style>> styles; styles.push_back(std::move(textStyle)); std::vector<std::shared_ptr<Tile>> tiles; tiles.push_back(tile); {
void RNAProfileAlignment::buildForest(const string &baseStr, const string &viennaStr, bool use_bp_prob) { Ulong basePairCount=0,maxDepth=0,stackPtr; Uint baseStrLen,viennaStrLen,node,*nodeStack, *numChildrenStack, *baseposStack; assert(RNAFuncs::isRNAString(baseStr)); RNAFuncs::isViennaString(viennaStr,basePairCount,maxDepth); baseStrLen=baseStr.length(); viennaStrLen=viennaStr.length(); if(baseStrLen) hasSequence=true; else hasSequence=false; // check if base string and vienna string have the same length // if(baseStr.length() > 0) // if(baseStr.length() != viennaStrLen) // throw RNAForestExceptionInput(RNAForestExceptionInput::Error_BaseStringAndViennaStringIncompatible); nodeStack=new Uint[maxDepth+1]; numChildrenStack=new Uint[maxDepth+1]; baseposStack=new Uint[maxDepth+1]; memset(nodeStack,0,sizeof(Uint)*maxDepth+1); memset(numChildrenStack,0,sizeof(Uint)*maxDepth+1); memset(baseposStack,0,sizeof(Uint)*maxDepth+1); // fill PPForest structure stackPtr=0; node=0; for(Uint i=0;i<viennaStrLen;i++) { switch(viennaStr[i]) { case '.': // set label if(baseStrLen) makeLabel(m_lb[node],baseStr[i]); else makeLabel(m_lb[node],'B'); // set right brother if(node==size()-1) setRightBrotherIndex(node,0); else setRightBrotherIndex(node,node+1); // set num children setNumChildren(node,0); // increase stack values numChildrenStack[stackPtr]++; node++; break; case '(': // set label makeLabel(m_lb[node],'P'); // increase stack values numChildrenStack[stackPtr]++; baseposStack[stackPtr]=i+1; // push stackPtr++; nodeStack[stackPtr]=node; numChildrenStack[stackPtr]=1; node++; // set label if(baseStrLen) makeLabel(m_lb[node],baseStr[i]); else makeLabel(m_lb[node],'B'); // set right brother setRightBrotherIndex(node,node+1); // set num children setNumChildren(node,0); node++; break; case ')': // set label if(baseStrLen) makeLabel(m_lb[node],baseStr[i]); else makeLabel(m_lb[node],'B'); // set right brother setRightBrotherIndex(node,0); // set num children setNumChildren(node,0); // pop if(node==size()-1) setRightBrotherIndex(nodeStack[stackPtr],0); else setRightBrotherIndex(nodeStack[stackPtr],node+1); setNumChildren(nodeStack[stackPtr],numChildrenStack[stackPtr]+1); stackPtr--; #ifdef HAVE_LIBRNA // set basepair probability if(use_bp_prob) { m_lb[nodeStack[stackPtr]].p[ALPHA_PRO_BASEPAIR]=pr[iindx[baseposStack[stackPtr]]-(i+1)]; m_lb[nodeStack[stackPtr]].p[ALPHA_PRO_GAP]=1-m_lb[nodeStack[stackPtr]].p[ALPHA_PRO_BASEPAIR]; } #endif node++; break; } } delete[] nodeStack; delete[] numChildrenStack; delete[] baseposStack; calcSumUpCSF(); calcRMB(); assert (m_noc[m_size-1]==0); }
/* * This dialog is designed to unify the old word, view, and graph type dialogs * into a cohesive whole. * */ ViewDimensions::ViewDimensions(MainWindow *parent) : Dialog(parent, "Dimensions", true) { WorldDimProp::add(this); viewXMin = getUnitDoubleSpinBox(); connect(viewXMin, SIGNAL(valueChanged(double)), this, SLOT(readjXMax())); viewXMax = getUnitDoubleSpinBox(); connect(viewXMax, SIGNAL(valueChanged(double)), this, SLOT(readjXMin())); viewYMin = getUnitDoubleSpinBox(); connect(viewYMin, SIGNAL(valueChanged(double)), this, SLOT(readjYMax())); viewYMax = getUnitDoubleSpinBox(); connect(viewYMax, SIGNAL(valueChanged(double)), this, SLOT(readjYMin())); worldXMin = new QLineEdit(); connect(worldXMin, SIGNAL(textEdited(QString)), this, SLOT(updateScale())); worldXMax = new QLineEdit(); connect(worldXMax, SIGNAL(textEdited(QString)), this, SLOT(updateScale())); worldYMin = new QLineEdit(); connect(worldYMin, SIGNAL(textEdited(QString)), this, SLOT(updateScale())); worldYMax = new QLineEdit(); connect(worldYMax, SIGNAL(textEdited(QString)), this, SLOT(updateScale())); worldType = new QComboBox(); for (int k=0;k<OPTS_LEN;k++) { worldType->addItem(opts[k].iname); } connect(worldType, SIGNAL(currentIndexChanged(int)), this, SLOT(updateScale())); viewSelect = makeButton("Rect Select", SLOT(viewRect())); setButtonBold(viewSelect); rescaleAxes = makeButton("Autoscale", SLOT(rescaleTicks())); setButtonBold(rescaleAxes); autoHook(viewXMin); autoHook(viewXMax); autoHook(viewYMin); autoHook(viewYMax); autoHook(worldXMin); autoHook(worldXMax); autoHook(worldYMin); autoHook(worldYMax); autoHook(worldType); QHBoxLayout* header = new QHBoxLayout(); header->addWidget(makeLabel("Graph Type"), 0); header->addWidget(worldType, 0); header->addStretch(1); QGridLayout* wrldl = new QGridLayout(); addPair(wrldl, 0, makeLabel("X Min"), worldXMin); addPair(wrldl, 1, makeLabel("X Max"), worldXMax); addPair(wrldl, 2, makeLabel("Y Min"), worldYMin); addPair(wrldl, 3, makeLabel("Y Max"), worldYMax); wrldl->setRowMinimumHeight(4, 12); wrldl->addWidget(rescaleAxes, 5, 0, 1, 2, Qt::AlignCenter); wrldl->setColumnMinimumWidth(1, 100); wrldl->setColumnStretch(0, 0); wrldl->setColumnStretch(1, 2); QGroupBox* wrldb = makeGroupBox("World Coords"); wrldb->setLayout(wrldl); QVBoxLayout* wrld = new QVBoxLayout(); wrld->addWidget(wrldb, 0); wrld->addStretch(1); QGridLayout* viewl = new QGridLayout(); addPair(viewl, 0, makeLabel("X Min"), viewXMin); addPair(viewl, 1, makeLabel("X Max"), viewXMax); addPair(viewl, 2, makeLabel("Y Min"), viewYMin); addPair(viewl, 3, makeLabel("Y Max"), viewYMax); viewl->setRowMinimumHeight(4, 12); viewl->addWidget(viewSelect, 5, 0, 1, 2, Qt::AlignCenter); viewl->setColumnMinimumWidth(1, 120); viewl->setColumnStretch(0, 0); viewl->setColumnStretch(1, 2); QGroupBox* viewb = makeGroupBox("View Coords"); viewb->setLayout(viewl); QVBoxLayout* view = new QVBoxLayout(); view->addWidget(viewb, 0); view->addStretch(1); QHBoxLayout* bot = new QHBoxLayout(); bot->addLayout(wrld); bot->addLayout(view); QVBoxLayout* ovr = new QVBoxLayout(); ovr->addLayout(header); ovr->addStrut(12); ovr->addLayout(bot); this->setDialogLayout(ovr); }
static void apply_defaults(InputConfig &input_config, const TCHAR *const* default_modes, const InputConfig::Event *default_events, unsigned num_default_events, const flat_gesture_map *default_gesture2event, const flat_event_map *default_key2event, const flat_event_map *default_gc2event, const flat_event_map *default_n2event, const flat_label *default_labels) { assert(num_default_events <= InputConfig::MAX_EVENTS); input_config.SetDefaults(); while (*default_modes != NULL) input_config.AppendMode(*default_modes++); input_config.events.resize(num_default_events + 1); std::copy_n(default_events, num_default_events, input_config.events.begin() + 1); while (default_gesture2event->event > 0) { input_config.Gesture2Event.Add(default_gesture2event->data, default_gesture2event->event); ++default_gesture2event; } while (default_key2event->event > 0) { unsigned key_code_idx = default_key2event->key; auto key_2_event = input_config.Key2Event; #if defined(ENABLE_SDL) && (SDL_MAJOR_VERSION >= 2) if (default_key2event->key & SDLK_SCANCODE_MASK) { key_2_event = input_config.Key2EventNonChar; key_code_idx &= ~SDLK_SCANCODE_MASK; } #endif key_2_event[default_key2event->mode][key_code_idx] = default_key2event->event; ++default_key2event; } while (default_gc2event->event > 0) { input_config.GC2Event[default_gc2event->key] = default_gc2event->event; ++default_gc2event; } while (default_n2event->event > 0) { input_config.N2Event[default_n2event->key] = default_n2event->event; ++default_n2event; } while (default_labels->label != NULL) { makeLabel(input_config, (InputEvents::Mode)default_labels->mode, default_labels->label, default_labels->location, default_labels->event); ++default_labels; } }
TAC_NODE* createIF(TAC_NODE* code0, TAC_NODE* code1) { HASH_NODE* label; label = makeLabel(); return joinTacs(joinTacs(joinTacs(code0, createTacNode(TAC_IFZ, code0->result, label, NULL)), code1), createTacNode(TAC_LABEL, label, NULL, NULL)); }