void System::unsetExecutionManager() { if (hasDirectExecutionManager()) { return; } #ifndef NDEBUG // This variable is only used in the assert() below. ExecutionManager* oldEm = getExecutionManager(); #endif em = NULL; // If there are no outputs, we can't collect an EM child_output_list_type::const_iterator oc(outputs.begin()), ocEnd(outputs.end()); for (; oc != ocEnd; ++oc) { em = oc->collectExecutionManager(); if (hasExecutionManager()) { assert(oldEm == getExecutionManager()); return; } } // if no EM found... onExecutionManagerChanged(); child_input_list_type::iterator i(inputs.begin()), iEnd(inputs.end()); for (; i != iEnd; ++i) { i->unsetExecutionManager(); } child_output_list_type::iterator o(outputs.begin()), oEnd(outputs.end()); for (; o != oEnd; ++o) { o->unsetExecutionManager(); } }
uint32 CRdbRowIndex::Travel(CSqlParameterSet * pCondition, CSqlFilter &oFilter, bool bUpdate, FOnTravelIndex OnTravel, uint32& nCount, void* pPara) { nCount = 0; CRecord oRecord(m_pTabDef); CDataTable::CIterator oBeg(m_oDataTable.Begin()); CDataTable::CIterator oEnd(m_oDataTable.End()); CDataTable::CIterator oIdx(oEnd); for(; oBeg!=oEnd; ) { if(bUpdate) { bool bUpgradeFailure; m_oDataTable.ActivateRecord(oBeg, bUpgradeFailure); if(bUpgradeFailure) return RDB_LACK_STORAGE; } if(1) { CRdbRecord oRdbRecord(m_pTableSpace, m_pTabDef, oBeg.GetValue()); oRdbRecord.GetRecord(&oRecord, oFilter); } oIdx = (oBeg++); if(pCondition->IsCoincident(oRecord)) { if(OnTravel(this, oIdx, &oRecord, pPara)) return RDB_TRAVEL_FAILURE; ++nCount; } } return RDB_SUCCESS; }
uint32 CRdbRowIndex::QueryCount(CSqlParameterSet * pCondition, uint32 &nCount) { nCount = 0; CRecord oRecord(m_pTabDef); CSqlFilter oFilter(m_pTabDef); pCondition->GetFilter(oFilter); CDataTable::CIterator oBeg(m_oDataTable.Begin()); CDataTable::CIterator oEnd(m_oDataTable.End()); for(; oBeg!=oEnd; ++oBeg) { if(1) { CRdbRecord oRdbRecord(m_pTableSpace, m_pTabDef, oBeg.GetValue()); oRdbRecord.GetRecord(&oRecord, oFilter); } if(pCondition->IsCoincident(oRecord)) ++nCount; } return RDB_SUCCESS; }
uint32 CRdbRowIndex::Query(CSqlParameterSet* pCondition, CSqlFilter& oFilter, CRecordSet &oResult, uint32 nSkipCount) { CRecord* pRecord = NULL; if(!oFilter.m_nParaCount) oFilter.SetAllField(); else pCondition->GetFilter(oFilter); CDataTable::CIterator oBeg(m_oDataTable.Begin()); CDataTable::CIterator oEnd(m_oDataTable.End()); for(; oBeg!=oEnd; ++oBeg) { if(1) { CRdbRecord oRdbRecord(m_pTableSpace, m_pTabDef, oBeg.GetValue()); if(!pRecord) { pRecord = oResult.AllocRecord(); if(!pRecord) return RDB_LACK_MEMORY; } oRdbRecord.GetRecord(pRecord, oFilter); } if(pCondition->IsCoincident(pRecord[0])) { if(nSkipCount) { --nSkipCount; continue; } pRecord = NULL; if(oResult.GetRecordCount() == oResult.GetRecordSetSize()) break; } } if(pRecord) oResult.PopRecord(); return RDB_SUCCESS; }
void System::setExecutionManager(ExecutionManager* newEm) { if (newEm != NULL) { if (hasExecutionManager()) { assert(getExecutionManager() == newEm); } else { em = newEm; onExecutionManagerChanged(); child_input_list_type::iterator i(inputs.begin()), iEnd(inputs.end()); for (; i != iEnd; ++i) { i->pushExecutionManager(); } child_output_list_type::iterator o(outputs.begin()), oEnd(outputs.end()); for (; o != oEnd; ++o) { o->pushExecutionManager(); } } } }
void ManipTool::renderMovementDirection( Finger const &aFinger ) { float lenDir = aFinger.mLenFromLast; U16 prevFrame = getPrevFrameNo( mNextRenderedFrame ); Finger *prevFinger = mFingersPerFrame[ prevFrame ].getFinger( aFinger.mId ); while( prevFinger && prevFinger->mTimestamp < aFinger.mTimestamp && (aFinger.mTimestamp - prevFinger->mTimestamp ) < getMaxBacktrackMicroseconds() ) { float alpha = dot( aFinger.mFromLast, prevFinger->mFromLast ); if( alpha > F_PI/18 ) break; lenDir += prevFinger->mLenFromLast; prevFrame = getPrevFrameNo( prevFrame ); prevFinger = mFingersPerFrame[ prevFrame ].getFinger( aFinger.mId ); } #if 0 float vec[3]; bool haveVec( false ); while( aFinger.mTimestamp > mFingersPerFrame[ prevFrame ].mTimestamp && (aFinger.mTimestamp > mFingersPerFrame[ prevFrame ].mTimestamp) < getMaxBacktrackMicroseconds() ) { Finger *pFinger = mFingersPerFrame[ prevFrame ].getFinger( aFinger.mId ); if( pFinger ) { if( !haveVec ) { subtract( aFinger.mTip, pFinger->mTip, vec ); lenDir = normalize( vec ); haveVec = true; } else { float vec2[3]; subtract( aFinger.mTip, pFinger->mTip, vec2 ); float lenDir2 = normalize( vec ); float alpha = dot( vec, vec2 ); if( alpha > F_PI/18 ) break; lenDir += lenDir2; } } prevFrame = getPrevFrameNo( prevFrame ); } #endif if( lenDir > 0 ) { GLfloat x( aFinger.mTip[0] ); GLfloat y( scaleY( aFinger.mTip[1] ) ); GLfloat z( aFinger.mTip[2] ); LLVector3 oStart( scaleToSL( toAgentCS( x, y, z ) ) ); x -= aFinger.mFromLast[0] *lenDir; y -= aFinger.mFromLast[1] *lenDir; z -= aFinger.mFromLast[2] *lenDir; LLVector3 oEnd( scaleToSL( toAgentCS( x, y, z) ) ); gGL.vertex3fv( oStart.mV ); gGL.vertex3fv( oEnd.mV ); } }