Exemplo n.º 1
0
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();
	}
}
Exemplo n.º 2
0
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;
}
Exemplo n.º 3
0
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;
}
Exemplo n.º 4
0
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;
}
Exemplo n.º 5
0
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 );
			}
		}