/*! Add repeat data to Event viewer */ void AgendaEventView::addRepeatData() { OstTraceFunctionEntry0( AGENDAEVENTVIEW_ADDREPEATDATA_ENTRY ); QStringList itemData; itemData.append(QString::null); itemData.append(QString::null); if(!mAgendaEntry.recurrenceId().isNull()) { itemData.append("qtg_small_repeat_exception"); }else { itemData.append("qtg_small_repeat"); } itemData.append(QString::null); mRepeatWidget->setEventViewerItemData(itemData, Qt::DecorationRole); itemData.clear(); itemData.append(QString::null); itemData.append(repeatRule()); mRepeatWidget->setEventViewerItemData(itemData, Qt::DisplayRole); OstTraceFunctionExit0( AGENDAEVENTVIEW_ADDREPEATDATA_EXIT ); }
void Bchart:: extend_rule(Edge* edge, Item * item, int right) { Edge* newEdge = new Edge(*edge, *item, right); if(printDebug() > 140) cerr << "extend_rule " << *edge << " " << *item << endl; const Term* itemTerm = item->term(); LeftRightGotIter lrgi(newEdge); globalGi = &lrgi; if(edge->loc() == edge->start()) { newEdge->prob() *= meEdgeProb(item->term(), newEdge, MCALC); /*stoprightp is p of stopping after seeing what currently passes for the rhs of the edge */ newEdge->rightMerit() = computeMerit(newEdge,RUCALC); delete edge; // just created; } else if(right) { newEdge->prob() *= meEdgeProb(item->term(),newEdge, RCALC); } else newEdge->prob() *= meEdgeProb(item->term(),newEdge, LCALC); if(right) { newEdge->rightMerit() = computeMerit(newEdge,RMCALC); } else { /* this is the left boundary stat for constituents that are continuing left, given the label and whatever currently appears on the left boundary of the constit. we only need this when going left */ newEdge->leftMerit() = computeMerit(newEdge,LMCALC); } if(itemTerm == Term::stopTerm) newEdge->status() = right ? 2 : 1; if(newEdge->status() == 2) newEdge->prob() *= endFactorComp(newEdge); if(printDebug() > 250 ) cerr << "Constructed " << *newEdge << "\t" << newEdge->leftMerit() << "\t" << newEdge->prob() << "\t" << newEdge->rightMerit() << endl; int tmp = curDemerits_[newEdge->start()][newEdge->loc()]; newEdge->demerits() = tmp; if(repeatRule(newEdge)) { newEdge->rightMerit() = 0; } newEdge->setmerit(); //cerr << "DEM " << tmp << " " << newEdge->merit() << endl; globalGi = NULL; if(newEdge->merit() == 0) { assert(alreadyPopedNum < 450000); alreadyPoped[alreadyPopedNum++] = newEdge; Edge* prd = newEdge->pred(); if(prd) prd->sucs().pop_front(); return; } ++ruleiCounts_; heap->insert(newEdge); if(itemTerm != Term::stopTerm) item->needme().push_back(newEdge); }