本文整理汇总了C++中transapset::Iter类的典型用法代码示例。如果您正苦于以下问题:C++ Iter类的具体用法?C++ Iter怎么用?C++ Iter使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Iter类的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1:
std::ostream &TabCodeGen::TRANS_TARGS_WI()
{
/* Transitions must be written ordered by their id. */
RedTransAp **transPtrs = new RedTransAp*[redFsm->transSet.length()];
for ( TransApSet::Iter trans = redFsm->transSet; trans.lte(); trans++ )
transPtrs[trans->id] = trans;
/* Keep a count of the num of items in the array written. */
out << '\t';
int totalStates = 0;
for ( int t = 0; t < redFsm->transSet.length(); t++ ) {
/* Record the position, need this for eofTrans. */
RedTransAp *trans = transPtrs[t];
trans->pos = t;
/* Write out the target state. */
out << trans->targ->id;
if ( t < redFsm->transSet.length()-1 ) {
out << ", ";
if ( ++totalStates % IALL == 0 )
out << "\n\t";
}
}
out << "\n";
delete[] transPtrs;
return out;
}
开发者ID:Orvid,项目名称:hhvm-third-party,代码行数:27,代码来源:cdtable.cpp
示例2: INT
std::ostream &JavaTabCodeGen::TRANS_ACTIONS_WI()
{
/* Transitions must be written ordered by their id. */
RedTransAp **transPtrs = new RedTransAp*[redFsm->transSet.length()];
for ( TransApSet::Iter trans = redFsm->transSet; trans.lte(); trans++ )
transPtrs[trans->id] = trans;
/* Keep a count of the num of items in the array written. */
for ( int t = 0; t < redFsm->transSet.length(); t++ ) {
/* Write the function for the transition. */
RedTransAp *trans = transPtrs[t];
ARRAY_ITEM( INT(TRANS_ACTION( trans )), ( t >= redFsm->transSet.length()-1 ) );
}
delete[] transPtrs;
return out;
}
开发者ID:Mirocow,项目名称:balancer,代码行数:16,代码来源:javacodegen.cpp
示例3: vCS
std::wostream &SplitCodeGen::PART_TRANS( int partition )
{
for ( TransApSet::Iter trans = redFsm->transSet; trans.lte(); trans++ ) {
if ( trans->partitionBoundary ) {
out <<
L"ptr" << trans->id << L":\n";
if ( trans->action != 0 ) {
/* If the action contains a next, then we must preload the current
* state since the action may or may not set it. */
if ( trans->action->anyNextStmt() )
out << L" " << vCS() << L" = " << trans->targ->id << L";\n";
/* Write each action in the list. */
for ( GenActionTable::Iter item = trans->action->key; item.lte(); item++ ) {
ACTION( out, item->value, trans->targ->id, false,
trans->action->anyNextStmt() );
}
}
out <<
L" goto pst" << trans->targ->id << L";\n";
trans->targ->partitionBoundary = true;
}
}
for ( RedStateList::Iter st = redFsm->stateList; st.lte(); st++ ) {
if ( st->partitionBoundary ) {
out <<
L" pst" << st->id << L":\n"
L" " << vCS() << L" = " << st->id << L";\n";
if ( st->toStateAction != 0 ) {
/* Remember that we wrote an action. Write every action in the list. */
for ( GenActionTable::Iter item = st->toStateAction->key; item.lte(); item++ ) {
ACTION( out, item->value, st->id, false,
st->toStateAction->anyNextStmt() );
}
genLineDirective( out );
}
ptOutLabelUsed = true;
out << L" goto _pt_out; \n";
}
}
return out;
}
开发者ID:lazyWombat,项目名称:VSRagel,代码行数:47,代码来源:cdsplit.cpp
示例4: setInTrans
void RedFsmAp::setInTrans()
{
/* First pass counts the number of transitions. */
for ( TransApSet::Iter trans = transSet; trans.lte(); trans++ )
trans->targ->numInTrans += 1;
/* Pass over states to allocate the needed memory. Reset the counts so we
* can use them as the current size. */
for ( RedStateList::Iter st = stateList; st.lte(); st++ ) {
st->inTrans = new RedTransAp*[st->numInTrans];
st->numInTrans = 0;
}
/* Second pass over transitions copies pointers into the in trans list. */
for ( TransApSet::Iter trans = transSet; trans.lte(); trans++ )
trans->targ->inTrans[trans->targ->numInTrans++] = trans;
}
开发者ID:Mirocow,项目名称:balancer,代码行数:17,代码来源:redfsm.cpp
示例5: setLabelsNeeded
/* Set up labelNeeded flag for each state. */
void SplitCodeGen::setLabelsNeeded()
{
/* If we use the _again label, then we the _again switch, which uses all
* labels. */
if ( useAgainLabel() ) {
for ( RedStateList::Iter st = redFsm->stateList; st.lte(); st++ )
st->labelNeeded = true;
}
else {
/* Do not use all labels by default, init all labelNeeded vars to false. */
for ( RedStateList::Iter st = redFsm->stateList; st.lte(); st++ )
st->labelNeeded = false;
for ( TransApSet::Iter trans = redFsm->transSet; trans.lte(); trans++ )
trans->labelNeeded = false;
/* Walk all transitions and set only those that have targs. */
for ( RedStateList::Iter st = redFsm->stateList; st.lte(); st++ ) {
for ( RedTransList::Iter tel = st->outRange; tel.lte(); tel++ )
setLabelsNeeded( st, tel->value );
for ( RedTransList::Iter tel = st->outSingle; tel.lte(); tel++ )
setLabelsNeeded( st, tel->value );
if ( st->defTrans != 0 )
setLabelsNeeded( st, st->defTrans );
}
}
if ( !noEnd ) {
for ( RedStateList::Iter st = redFsm->stateList; st.lte(); st++ )
st->outNeeded = st->labelNeeded;
}
else {
if ( redFsm->errState != 0 )
redFsm->errState->outNeeded = true;
for ( TransApSet::Iter trans = redFsm->transSet; trans.lte(); trans++ ) {
/* Any state with a transition in that has a break will need an
* out label. */
if ( trans->action != 0 && trans->action->anyBreakStmt() )
trans->targ->outNeeded = true;
}
}
}
开发者ID:lazyWombat,项目名称:VSRagel,代码行数:45,代码来源:cdsplit.cpp
示例6: label
std::ostream &RbxGotoCodeGen::TRANSITIONS()
{
/* Emit any transitions that have functions and that go to
* this state. */
for ( TransApSet::Iter trans = redFsm->transSet; trans.lte(); trans++ ) {
/* Write the label for the transition so it can be jumped to. */
rbxLabel(out << " ", label("tr", trans->id)) << "\n";
/* Destination state. */
if ( trans->action != 0 && trans->action->anyCurStateRef() )
out << "_ps = " << vCS() << "'n";
out << vCS() << " = " << trans->targ->id << "\n";
if ( trans->action != 0 ) {
/* Write out the transition func. */
rbxGoto(out, label("f", trans->action->actListId)) << "\n";
}
else {
/* No code to execute, just loop around. */
rbxGoto(out, "_again") << "\n";
}
}
return out;
}
开发者ID:Mirocow,项目名称:balancer,代码行数:24,代码来源:rbxgoto.cpp
示例7: vCS
std::wostream &CSharpGotoCodeGen::TRANSITIONS()
{
/* Emit any transitions that have functions and that go to
* this state. */
for ( TransApSet::Iter trans = redFsm->transSet; trans.lte(); trans++ ) {
/* Write the label for the transition so it can be jumped to. */
out << L" tr" << trans->id << L": ";
/* Destination state. */
if ( trans->action != 0 && trans->action->anyCurStateRef() )
out << L"_ps = " << vCS() << L";";
out << vCS() << L" = " << trans->targ->id << L"; ";
if ( trans->action != 0 ) {
/* Write out the transition func. */
out << L"goto f" << trans->action->actListId << L";\n";
}
else {
/* No code to execute, just loop around. */
out << L"goto _again;\n";
}
}
return out;
}
开发者ID:lazyWombat,项目名称:VSRagel,代码行数:24,代码来源:csgoto.cpp
注:本文中的transapset::Iter类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论