[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