[GME-commit] GMESRC/GME/ConstraintManager OCLType.h,1.2,1.3 OCLType.cpp,1.4,1.5 OCLTree.h,1.10,1.11 OCLTree.cpp,1.18,1.19 ConstraintManager.dsp,1.16,1.17

gme-commit at list.isis.vanderbilt.edu gme-commit at list.isis.vanderbilt.edu
Fri Apr 23 15:10:16 CDT 2004


Update of /var/lib/gme/GMESRC/GME/ConstraintManager
In directory braindrain:/tmp/cvs-serv22523

Modified Files:
	OCLType.h OCLType.cpp OCLTree.h OCLTree.cpp 
	ConstraintManager.dsp 
Log Message:
constarint recursion error corrected

CVS User: bogyom

Index: OCLType.h
===================================================================
RCS file: /var/lib/gme/GMESRC/GME/ConstraintManager/OCLType.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** OCLType.h	23 Oct 2002 14:06:00 -0000	1.2
--- OCLType.h	23 Apr 2004 19:10:13 -0000	1.3
***************
*** 170,174 ****
  			virtual	bool					IsCompound() const;
  
! 					Iterator* 				GetIterator( const OclSignature::Iterator& signature );
  	//	protected :
  			virtual 	CallResult 				GetResults( const OclSignature::Iterator& signature );
--- 170,174 ----
  			virtual	bool					IsCompound() const;
  
! 					Iterator* 				GetIterator(int level, const OclSignature::Iterator& signature );
  	//	protected :
  			virtual 	CallResult 				GetResults( const OclSignature::Iterator& signature );

Index: OCLType.cpp
===================================================================
RCS file: /var/lib/gme/GMESRC/GME/ConstraintManager/OCLType.cpp,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** OCLType.cpp	23 Oct 2002 14:06:00 -0000	1.4
--- OCLType.cpp	23 Apr 2004 19:10:13 -0000	1.5
***************
*** 72,78 ****
  	}
  
! 	bool GetCallResult( const CallResultMap& mapArg, const OclSignature::Feature& feature, CallResult& callResult )
  	{
! 		CallResultMap::const_iterator i = mapArg.find( feature.Print() );
  		if ( i != mapArg.end() ) {
  			callResult = (*i).second;
--- 72,79 ----
  	}
  
! 	// recursion corrected: terge
! 	bool GetCallResult( const CallResultMap& mapArg, string/*const OclSignature::Feature*/& feature, CallResult& callResult )
  	{
! 		CallResultMap::const_iterator i = mapArg.find( feature/*.Print()*/ );
  		if ( i != mapArg.end() ) {
  			callResult = (*i).second;
***************
*** 365,370 ****
  		CallResult callResult;
  		callResult.uResult.pException = NULL;
  
! 		if ( GetCallResult( m_mapOperators, signature, callResult ) )
  			return ReturnCallResult<Operator>( callResult );
  
--- 366,372 ----
  		CallResult callResult;
  		callResult.uResult.pException = NULL;
+ 		string signo = signature.Print();
  
! 		if ( GetCallResult( m_mapOperators, signo/*signature*/, callResult ) )
  			return ReturnCallResult<Operator>( callResult );
  
***************
*** 389,393 ****
  		CallResult callResult;
  		callResult.uResult.pException = NULL;
! 		if ( GetCallResult( m_mapFunctions, signature, callResult ) )
  			return ReturnCallResult<Function>( callResult );
  
--- 391,397 ----
  		CallResult callResult;
  		callResult.uResult.pException = NULL;
! 		string signo = signature.Print();
! 
! 		if ( GetCallResult( m_mapFunctions, signo/*signature*/, callResult ) )
  			return ReturnCallResult<Function>( callResult );
  
***************
*** 486,491 ****
  	{
  		CallResult callResult;
  
! 		if ( GetCallResult( m_mapAttributes, signature, callResult ) )
  			return ReturnCallResult<Attribute>( callResult );
  
--- 490,496 ----
  	{
  		CallResult callResult;
+ 		string signo = signature.Print();
  
! 		if ( GetCallResult( m_mapAttributes, signo/*signature*/, callResult ) )
  			return ReturnCallResult<Attribute>( callResult );
  
***************
*** 500,505 ****
  	{
  		CallResult callResult;
  
! 		if ( GetCallResult( m_mapAssociations, signature, callResult ) )
  			return ReturnCallResult<Association>( callResult );
  
--- 505,511 ----
  	{
  		CallResult callResult;
+ 		string signo = signature.Print();
  
! 		if ( GetCallResult( m_mapAssociations, signo/*signature*/, callResult ) )
  			return ReturnCallResult<Association>( callResult );
  
***************
*** 514,519 ****
  	{
  		CallResult callResult;
  
! 		if ( GetCallResult( m_mapMethods, signature, callResult ) )
  			return ReturnCallResult<Method>( callResult );
  
--- 520,526 ----
  	{
  		CallResult callResult;
+ 		string signo = signature.Print();
  
! 		if ( GetCallResult( m_mapMethods, signo/*signature*/, callResult ) )
  			return ReturnCallResult<Method>( callResult );
  
***************
*** 641,654 ****
  	}
  
! 	Iterator* CompoundType::GetIterator( const OclSignature::Iterator& signature )
  	{
  		CallResult callResult;
  
! 		if ( GetCallResult( m_mapIterators, signature, callResult ) )
  			return ReturnCallResult<Iterator>( callResult );
  
  		callResult = GetResults( signature );
  
! 		m_mapIterators.insert( CallResultMap::value_type( signature.Print(), callResult ) );
  		GetTypeManager()->RegisterFeature( callResult );
  		return ReturnCallResult<Iterator>( callResult );
--- 648,667 ----
  	}
  
! 	Iterator* CompoundType::GetIterator(int level, const OclSignature::Iterator& signature )
  	{
  		CallResult callResult;
  
! 		// recursion corrected: terge
! 		char signoStr[100];
! 		string signo = signature.Print();
! 		itoa(level, signoStr, 10);  
! 		signo += signoStr;
! 
! 		if ( GetCallResult( m_mapIterators, signo/*signature*/, callResult ) )
  			return ReturnCallResult<Iterator>( callResult );
  
  		callResult = GetResults( signature );
  
! 		m_mapIterators.insert( CallResultMap::value_type( signo/*signature.Print()*/, callResult ) );
  		GetTypeManager()->RegisterFeature( callResult );
  		return ReturnCallResult<Iterator>( callResult );

Index: OCLTree.h
===================================================================
RCS file: /var/lib/gme/GMESRC/GME/ConstraintManager/OCLTree.h,v
retrieving revision 1.10
retrieving revision 1.11
diff -C2 -d -r1.10 -r1.11
*** OCLTree.h	15 Nov 2002 21:58:00 -0000	1.10
--- OCLTree.h	23 Apr 2004 19:10:13 -0000	1.11
***************
*** 322,328 ****
--- 322,355 ----
  //##############################################################################################################################################
  
+ 	class LevelCounter 
+ 	{
+ 		public:
+ 			LevelCounter(int *count) 
+ 			{
+ 				if (count)
+ 				{
+ 					counter = count;
+ 					(*counter)++;
+ 				}
+ 			}
+ 			~LevelCounter()
+ 			{
+ 				if (counter)
+ 				{
+ 					(*counter)--;
+ 				}
+ 			}
+ 
+ 		private:
+ 			int *counter;
+ 	};
+ 
  	class IteratorNode
  		: public TreeNode
  	{
+ 		// recursion corrected: terge
+ 		private:
+ 			static int m_iteratorLevel;
+ 
  		public :
  					string 						m_strName;

Index: OCLTree.cpp
===================================================================
RCS file: /var/lib/gme/GMESRC/GME/ConstraintManager/OCLTree.cpp,v
retrieving revision 1.18
retrieving revision 1.19
diff -C2 -d -r1.18 -r1.19
*** OCLTree.cpp	6 Mar 2003 22:12:01 -0000	1.18
--- OCLTree.cpp	23 Apr 2004 19:10:13 -0000	1.19
***************
*** 200,204 ****
  				case OclSignature::Feature::FK_FUNCTION 		: feature1 = m_pManager->GetTypeManager()->GetFunction( *( (OclSignature::Function*)vecSignatures[ 0 ] ) ); break;
  				case OclSignature::Feature::FK_METHOD 			: feature1 = vecTypes[ 0 ]->GetMethod( *( (OclSignature::Method*)vecSignatures[ 0 ] ) ); break;
! 				case OclSignature::Feature::FK_ITERATOR 		: feature1 = ( ( OclMeta::CompoundType*) vecTypes[ 0 ] )->GetIterator( *( (OclSignature::Iterator*)vecSignatures[ 0 ] ) ); break;
  				case OclSignature::Feature::FK_ATTRIBUTE 		: feature1 = vecTypes[ 0 ]->GetAttribute( *( (OclSignature::Attribute*)vecSignatures[ 0 ] ) ); break;
  				case OclSignature::Feature::FK_ASSOCIATION 	: feature1 = vecTypes[ 0 ]->GetAssociation( *( (OclSignature::Association*)vecSignatures[ 0 ] ) ); break;
--- 200,204 ----
  				case OclSignature::Feature::FK_FUNCTION 		: feature1 = m_pManager->GetTypeManager()->GetFunction( *( (OclSignature::Function*)vecSignatures[ 0 ] ) ); break;
  				case OclSignature::Feature::FK_METHOD 			: feature1 = vecTypes[ 0 ]->GetMethod( *( (OclSignature::Method*)vecSignatures[ 0 ] ) ); break;
! 				case OclSignature::Feature::FK_ITERATOR 		: feature1 = ( ( OclMeta::CompoundType*) vecTypes[ 0 ] )->GetIterator(0, *( (OclSignature::Iterator*)vecSignatures[ 0 ] ) ); break;
  				case OclSignature::Feature::FK_ATTRIBUTE 		: feature1 = vecTypes[ 0 ]->GetAttribute( *( (OclSignature::Attribute*)vecSignatures[ 0 ] ) ); break;
  				case OclSignature::Feature::FK_ASSOCIATION 	: feature1 = vecTypes[ 0 ]->GetAssociation( *( (OclSignature::Association*)vecSignatures[ 0 ] ) ); break;
***************
*** 219,223 ****
  				case OclSignature::Feature::FK_FUNCTION 		: feature2 = m_pManager->GetTypeManager()->GetFunction( *( (OclSignature::Function*)vecSignatures[ 1 ] ) ); break;
  				case OclSignature::Feature::FK_METHOD 			: feature2 = vecTypes[ 1 ]->GetMethod( *( (OclSignature::Method*)vecSignatures[ 1 ] ) ); break;
! 				case OclSignature::Feature::FK_ITERATOR 		: feature2 = ( ( OclMeta::CompoundType*) vecTypes[ 1 ] )->GetIterator( *( (OclSignature::Iterator*)vecSignatures[ 1 ] ) ); break;
  				case OclSignature::Feature::FK_ATTRIBUTE 		: feature2 = vecTypes[ 1 ]->GetAttribute( *( (OclSignature::Attribute*)vecSignatures[ 1 ] ) ); break;
  				case OclSignature::Feature::FK_ASSOCIATION 	: feature2 = vecTypes[ 1 ]->GetAssociation( *( (OclSignature::Association*)vecSignatures[ 1 ] ) ); break;
--- 219,223 ----
  				case OclSignature::Feature::FK_FUNCTION 		: feature2 = m_pManager->GetTypeManager()->GetFunction( *( (OclSignature::Function*)vecSignatures[ 1 ] ) ); break;
  				case OclSignature::Feature::FK_METHOD 			: feature2 = vecTypes[ 1 ]->GetMethod( *( (OclSignature::Method*)vecSignatures[ 1 ] ) ); break;
! 				case OclSignature::Feature::FK_ITERATOR 		: feature2 = ( ( OclMeta::CompoundType*) vecTypes[ 1 ] )->GetIterator(0, *( (OclSignature::Iterator*)vecSignatures[ 1 ] ) ); break;
  				case OclSignature::Feature::FK_ATTRIBUTE 		: feature2 = vecTypes[ 1 ]->GetAttribute( *( (OclSignature::Attribute*)vecSignatures[ 1 ] ) ); break;
  				case OclSignature::Feature::FK_ASSOCIATION 	: feature2 = vecTypes[ 1 ]->GetAssociation( *( (OclSignature::Association*)vecSignatures[ 1 ] ) ); break;
***************
*** 936,939 ****
--- 936,940 ----
  //
  //##############################################################################################################################################
+ 	int IteratorNode::m_iteratorLevel = 0;
  
  	IteratorNode::IteratorNode( TreeManager* pManager )
***************
*** 1118,1122 ****
  				try {
  					OclMeta::CompoundType* pCType = (OclMeta::CompoundType*) pType;
! 					OclMeta::Iterator* pIterator = pCType->GetIterator( OclSignature::Iterator( m_strName, m_pThisNode->m_vecType[ 0 ], m_pArgumentNode->m_vecType[ 0 ] ) );
  					GetParametralTypeSeq( m_pThisNode->m_vecType, m_pArgumentNode->m_vecType, pIterator->GetReturnTypeSeq() );
  				}
--- 1119,1123 ----
  				try {
  					OclMeta::CompoundType* pCType = (OclMeta::CompoundType*) pType;
! 					OclMeta::Iterator* pIterator = pCType->GetIterator(0, OclSignature::Iterator( m_strName, m_pThisNode->m_vecType[ 0 ], m_pArgumentNode->m_vecType[ 0 ] ) );
  					GetParametralTypeSeq( m_pThisNode->m_vecType, m_pArgumentNode->m_vecType, pIterator->GetReturnTypeSeq() );
  				}
***************
*** 1160,1163 ****
--- 1161,1167 ----
  	OclMeta::Object IteratorNode::Evaluate( ObjectContext& context )
  	{
+ 		// recursion corrected: terge
+ 		LevelCounter level(&m_iteratorLevel);
+ 
  		int iLineFeatureName = m_mapPositions[ LID_FEATURE_NAME ].iLine;
  		OclSignature::Iterator signature( m_strName, m_pThisNode->m_vecType[ 0 ], m_pArgumentNode->m_vecType[ 0 ] );
***************
*** 1172,1176 ****
  			if ( ! m_pAccuNode ) {
  				OclMeta::CompoundType* pCType = (OclMeta::CompoundType*) GetTreeManager()->GetTypeManager()->GetType( objectThis.GetStaticTypeName() );
! 				OclMeta::Iterator* pIterator = pCType->GetIterator( signature );
  				pIIterator = pIterator->GetImplementation();
  				if ( ! pIIterator )
--- 1176,1180 ----
  			if ( ! m_pAccuNode ) {
  				OclMeta::CompoundType* pCType = (OclMeta::CompoundType*) GetTreeManager()->GetTypeManager()->GetType( objectThis.GetStaticTypeName() );
! 				OclMeta::Iterator* pIterator = pCType->GetIterator(m_iteratorLevel, signature );
  				pIIterator = pIterator->GetImplementation();
  				if ( ! pIIterator )

Index: ConstraintManager.dsp
===================================================================
RCS file: /var/lib/gme/GMESRC/GME/ConstraintManager/ConstraintManager.dsp,v
retrieving revision 1.16
retrieving revision 1.17
diff -C2 -d -r1.16 -r1.17
*** ConstraintManager.dsp	6 Feb 2003 16:49:55 -0000	1.16
--- ConstraintManager.dsp	23 Apr 2004 19:10:13 -0000	1.17
***************
*** 24,27 ****
--- 24,29 ----
  # Begin Project
  # PROP AllowPerConfigDependencies 0
+ # PROP Scc_ProjName ""
+ # PROP Scc_LocalPath ""
  CPP=cl.exe
  MTL=midl.exe
***************
*** 592,594 ****
  # End Target
  # End Project
- 
--- 594,595 ----



More information about the GME-commit mailing list