예제 #1
0
const UeStdString QuantityPersist::SeperateType( TypeStringSet& tSet,const InputSet& set )
{
	InputSet::const_iterator ItBegin = set.begin();
	InputSet::const_iterator ItEnd = set.end();
	ASSERT( ( *( ItBegin + 1 ) ) == strTypeBegin );
	ASSERT( ( *( ItEnd - 1 ) ) == strTypeEnd );

	UeStdString QSysName = *ItBegin;
	ItBegin++;

	BOOL bFlag = TRUE;
	while ( bFlag )
	{
		InputSet::const_iterator ItPos = find( ItBegin,ItEnd,strTypeEnd );
		if ( ItPos == ItEnd )
		{
			bFlag = TRUE;
			break;
		}
		InputSet Elm( ItBegin + 1,ItPos );
		tSet.push_back( Elm );
		ItBegin = ItPos + 1;
	}
	return QSysName;
}
void ExpressionOptimizer::addCached(CachedExpression* obj) {
    InputSet dependency;
    obj->getDependencies( dependency );
    //cout << "cached dependency: ";
    //copy(dependency.begin(), dependency.end(), ostream_iterator<int>(cout, " "));
    //cout << "\n";
    for (InputSet::iterator it=dependency.begin();it!=dependency.end();++it) {
        if (inputset.find( *it )!= inputset.end() ) {
            if (cached.find(obj)==cached.end()) {
                cached.insert( obj );  
                v_cached.push_back( obj );
            }
            //cout << "cached " << obj->cached_name << " added \n";
            break;
        }
    }
}
예제 #3
0
BOOL QuantityPersist::GetQuantitytype( QuantityType& type,const InputSet& set )
{
	TransPairSetOfOneType tpt;
	InputSet::const_iterator ItBegin = set.begin();
	InputSet::const_iterator ItEnd = set.end();	
	UeStdString first,second;
	SplitString( first,second,*ItBegin );
	type.first = first;
	ItBegin++;
	for ( ;ItBegin != ItEnd ;ItBegin++ )
	{
		pair< UeStdString,pair< double,double > > p;
		ProcessLine( p, *ItBegin );
		tpt.push_back( p );
	}
	type.second = make_pair( second,tpt );
	return TRUE;
}
예제 #4
0
BOOL QuantityPersist::SeperateSys( SysSet& sSet,InputSet&set )
{
	InputSet::const_iterator ItBegin = set.begin();
	InputSet::const_iterator ItEnd = set.end();
	
	ASSERT( ( *ItBegin ) == strSysBegin );
	ASSERT( ( *( ItEnd - 1 ) ) == strSysEnd );

	BOOL bFlag = TRUE;
	while ( bFlag )
	{
		InputSet::const_iterator ItPos = find( ItBegin,ItEnd,strSysEnd );
		if ( ItPos == ItEnd )
		{
			bFlag = TRUE;
			break;
		}
		InputSet Elm( ItBegin + 1,ItPos );
		sSet.push_back( Elm );
		ItBegin = ItPos + 1;
	}
	return TRUE;
}