[GME-commit] GMESRC/Paradigms/MetaGME/MetaInterpreter2004
BON2Component.cpp,1.17,1.18 BON2Component.h,1.7,1.8
entity.h,1.3,1.4 relation.h,1.1,1.2
gme-commit at list.isis.vanderbilt.edu
gme-commit at list.isis.vanderbilt.edu
Fri Jul 16 18:39:09 CDT 2004
- Previous message: [GME-commit]
GMESRC/Paradigms/MetaGME/BonExtension/Rep Any.cpp,1.9,1.10
Any.h,1.6,1.7 Dumper.cpp,1.11,1.12 FCO.cpp,1.15,1.16
FCO.h,1.12,1.13 Sheet.cpp,1.6,1.7 Sheet.h,1.5,1.6
- Next message: [GME-commit]
GMESRC/Paradigms/MetaGME/MetaInterpreter2004/Rep Any.cpp,1.9,1.10
Any.h,1.5,1.6 AspectRep.cpp,1.9,1.10 Broker.cpp,1.6,1.7
ConnectionRep.cpp,1.5,1.6 ConnectionRep.h,1.2,1.3
Dumper.cpp,1.21,1.22 FCO.cpp,1.8,1.9 FCO.h,1.3,1.4
FolderRep.cpp,1.6,1.7 Sheet.cpp,1.5,1.6 Sheet.h,1.3,1.4
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Update of /var/lib/gme/GMESRC/Paradigms/MetaGME/MetaInterpreter2004
In directory braindrain:/tmp/cvs-serv22622/MetaInterpreter2004
Modified Files:
BON2Component.cpp BON2Component.h entity.h relation.h
Log Message:
New isAbstract, isInRootFolder handling.
CVS User: zolmol
Index: BON2Component.cpp
===================================================================
RCS file: /var/lib/gme/GMESRC/Paradigms/MetaGME/MetaInterpreter2004/BON2Component.cpp,v
retrieving revision 1.17
retrieving revision 1.18
diff -C2 -d -r1.17 -r1.18
*** BON2Component.cpp 12 Jul 2004 22:01:08 -0000 1.17
--- BON2Component.cpp 16 Jul 2004 22:39:06 -0000 1.18
***************
*** 74,80 ****
m_entities.clear();
m_relations.clear();
! m_toBeDeletedEntities.clear();
m_realObj.clear();
! Sheet::m_BON_Project_Root_Folder = (Folder)NULL;
if ( m_sheet != 0)
--- 74,83 ----
m_entities.clear();
m_relations.clear();
! m_equivRelations.clear();
! //m_toBeDeletedEntities.clear();
! m_equivBag.clear();
m_realObj.clear();
!
! Sheet::m_BON_Project_Root_Folder = (Folder)NULL; // crucial!!!
if ( m_sheet != 0)
***************
*** 174,179 ****
m_entities.clear();
! m_toBeDeletedEntities.clear();
m_relations.clear();
m_realObj.clear();
--- 177,183 ----
m_entities.clear();
! //m_toBeDeletedEntities.clear();
m_relations.clear();
+ m_equivRelations.clear();
m_realObj.clear();
***************
*** 214,218 ****
(*asp_elem)->getObjectMeta().name() == Relation::containment_str )
{ // if a role is intended to be an aspect member
! Object src_fco, dst_model;
Connection containment( *asp_elem);
if (containment)
--- 218,222 ----
(*asp_elem)->getObjectMeta().name() == Relation::containment_str )
{ // if a role is intended to be an aspect member
! FCO src_fco, dst_model;
Connection containment( *asp_elem);
if (containment)
***************
*** 264,269 ****
conn_kind == Relation::has_attribute_str)
{
! Object src = FCO((*conn_it)->getSrc());
! Object dst = FCO((*conn_it)->getDst());
Relation rela( Relation::CONTAINMENT_OP, dst, src); // create a relation object
--- 268,273 ----
conn_kind == Relation::has_attribute_str)
{
! FCO src = FCO((*conn_it)->getSrc());
! FCO dst = FCO((*conn_it)->getDst());
Relation rela( Relation::CONTAINMENT_OP, dst, src); // create a relation object
***************
*** 307,311 ****
{
FCO referred = (*ref_it)->getReferred();
! this->m_realObj[ *ref_it] = referred;
}
catch( ... )
--- 311,317 ----
{
FCO referred = (*ref_it)->getReferred();
! this->m_realObj[ *ref_it] = referred; //! a NULL proxy is part of m_realObj, having a NULL value attached
! if ( referred) // if not a null reference
! this->m_equivBag[ referred].insert( *ref_it);
}
catch( ... )
***************
*** 483,487 ****
Relation rela( Relation::EQUIVALENCE_OP, FCO( obj1), FCO( obj2), *atom_it);
! m_relations.push_back(rela);
}
}
--- 489,493 ----
Relation rela( Relation::EQUIVALENCE_OP, FCO( obj1), FCO( obj2), *atom_it);
! m_equivRelations.push_back(rela);
}
}
***************
*** 503,507 ****
Relation rela( Relation::SAME_ASPECT_OP, FCO( obj1), FCO( obj2), *atom_it);
! m_relations.push_back(rela);
}
}
--- 509,513 ----
Relation rela( Relation::SAME_ASPECT_OP, FCO( obj1), FCO( obj2), *atom_it);
! m_equivRelations.push_back(rela);
}
}
***************
*** 523,527 ****
Relation rela( Relation::SAME_FOLDER_OP, FCO( obj1), FCO( obj2), *atom_it);
! m_relations.push_back(rela);
}
}
--- 529,533 ----
Relation rela( Relation::SAME_FOLDER_OP, FCO( obj1), FCO( obj2), *atom_it);
! m_equivRelations.push_back(rela);
}
}
***************
*** 541,546 ****
void Component::selectFromSameAspectsFolders()
{
! Relation_Iterator rel_it = m_relations.begin();
! for( ; rel_it != m_relations.end(); ++rel_it)
{
if ( rel_it->getOperation() == Relation::SAME_ASPECT_OP ||
--- 547,552 ----
void Component::selectFromSameAspectsFolders()
{
! Relation_Iterator rel_it = m_equivRelations.begin();
! for( ; rel_it != m_equivRelations.end(); ++rel_it)
{
if ( rel_it->getOperation() == Relation::SAME_ASPECT_OP ||
***************
*** 554,559 ****
else
{
! bool is_proxy_first = m_realObj[ rel_it->getOp1()] != BON::Object();
! bool is_proxy_second = m_realObj[ rel_it->getOp2()] != BON::Object();
ObjPointer selected_ptr = 0;
--- 560,565 ----
else
{
! bool is_proxy_first = isProxy( rel_it->getOp1()) == 1;
! bool is_proxy_second = isProxy( rel_it->getOp2()) == 1;
ObjPointer selected_ptr = 0;
***************
*** 597,601 ****
! Entity Component::entitySearch( ObjPointer p_ptr)
{
Entity_Iterator it( m_entities.begin());
--- 603,607 ----
! Entity Component::entitySearch( const ObjPointer& p_ptr)
{
Entity_Iterator it( m_entities.begin());
***************
*** 604,608 ****
if ( it == m_entities.end())
! return Entity( BON::Folder(), BON::Object());
else
return *it;
--- 610,614 ----
if ( it == m_entities.end())
! return Entity( BON::Folder(), BON::FCO());
else
return *it;
***************
*** 619,642 ****
{
RealMap_Iterator real_map_it = this->m_realObj.begin();
! for(; real_map_it != m_realObj.end(); ++real_map_it)
{
ObjPointer proxy_for_sure = real_map_it->first;
ObjPointer real_for_sure = real_map_it->second;
std::string n1, n2;
! if ( proxy_for_sure != BON::Object())
n1 = proxy_for_sure->getName();
! if ( real_for_sure != BON::Object())
n2= real_for_sure->getName();
!
! if ( proxy_for_sure != BON::Object() && real_for_sure != BON::Object())
{
! Entity proxy = entitySearch( proxy_for_sure);
! if ( proxy == Entity( BON::Folder(), BON::Object()))
global_vars.err << "ERROR: Entity not found during proxyFinder: " << proxy_for_sure->getName() << "\n";
else
{
operandSearchAndReplace( proxy_for_sure, real_for_sure);
! m_toBeDeletedEntities.push_back( proxy);
}
}
--- 625,654 ----
{
RealMap_Iterator real_map_it = this->m_realObj.begin();
! for( ; real_map_it != m_realObj.end(); ++real_map_it)
{
ObjPointer proxy_for_sure = real_map_it->first;
ObjPointer real_for_sure = real_map_it->second;
+ #ifdef _DEBUG
std::string n1, n2;
! if ( proxy_for_sure != BON::FCO())
n1 = proxy_for_sure->getName();
! if ( real_for_sure != BON::FCO())
n2= real_for_sure->getName();
! #endif
! if ( proxy_for_sure != BON::FCO() && real_for_sure != BON::FCO())
{
! Entity_Iterator it( m_entities.begin());
! while ( it != m_entities.end() && proxy_for_sure != it->getPointer())
! ++it;
!
! if ( it == m_entities.end())
! {
global_vars.err << "ERROR: Entity not found during proxyFinder: " << proxy_for_sure->getName() << "\n";
+ }
else
{
operandSearchAndReplace( proxy_for_sure, real_for_sure);
! //proxies are in equivBag, so it will be marked, no need for it->deleted( true);//m_toBeDeletedEntities.push_back( proxy);
}
}
***************
*** 647,671 ****
void Component::equivalenceFinder()
{
! Relation_Iterator rel_it = m_relations.begin();
! while ( rel_it != m_relations.end())
{
! if ( rel_it->getOperation() == Relation::EQUIVALENCE_OP ||
rel_it->getOperation() == Relation::SAME_FOLDER_OP ||
rel_it->getOperation() == Relation::SAME_ASPECT_OP )
{
! Entity operand2 = entitySearch( rel_it->getOp2());
! if ( operand2 == Entity( BON::Folder(), BON::Object()))
! global_vars.err << "ERROR: Entity not found during EquivalenceFinder: " << rel_it->getOperationStr() << "\n";
! // prevent search/replace for obvious cases like: a equiv a
! if ( rel_it->getOp1() != rel_it->getOp2() )
! {
! operandSearchAndReplace( rel_it->getOp2(), rel_it->getOp1());
! m_toBeDeletedEntities.push_back( operand2);
}
- // the relation needs to be deleted either way
- rel_it = m_relations.erase( rel_it); // <- relies on that erase increments rel_it
}
- else ++rel_it;
}
}
--- 659,752 ----
void Component::equivalenceFinder()
{
! Relation_Iterator rel_it = m_equivRelations.begin();
! while ( rel_it != m_equivRelations.end())
{
! if( rel_it->getOperation() == Relation::EQUIVALENCE_OP ||
rel_it->getOperation() == Relation::SAME_FOLDER_OP ||
rel_it->getOperation() == Relation::SAME_ASPECT_OP )
+ { //
+ ObjPointer obj1 = rel_it->getOp1(), obj2 = rel_it->getOp2();
+
+ // obj1 will have obj2 and proxies of obj2 as its alter egos
+ insertIntoEquivBag( obj2, obj1);
+ operandSearchAndReplace( obj2, obj1); //"Right law": repl left (op2) with right(op1)
+
+ rel_it = m_equivRelations.erase( rel_it); // <- relies on that erase increments rel_it
+
+ }
+ else
{
! ASSERT(0); // no other relations are part of m_equivRelations
! ++rel_it;
! }
! }
! ASSERT( m_equivRelations.empty()); // no relation should have remained
! }
!
! // collects the equivalent objects into a bag
! // obj1 is the key in the map
! // obj2 is the later-to-be-removed object from the entities
! void Component::insertIntoEquivBag( const ObjPointer& obj2, const ObjPointer& obj1)
! {
! if ( obj1 == obj2) return; // avoid trivial case
!
! std::set< FCO > bag2;
!
! // check if obj2 has its own bag?
! EquivBag_Iterator it = m_equivBag.find( obj2);
! if ( it != m_equivBag.end())
! {
! bag2 = m_equivBag[ obj2];
! m_equivBag.erase( it);
! }
!
! m_equivBag[obj1].insert( bag2.begin(), bag2.end());
! m_equivBag[obj1].insert( obj1);
! m_equivBag[obj1].insert( obj2);
!
! #ifdef _DEBUG
! std::string n1 = obj1->getName();
! std::string n2 = obj2->getName();
!
! std::set< FCO > :: const_iterator ii = m_equivBag[obj1].begin();
! for( ; ii != m_equivBag[obj1].end(); ++ii)
! {
! n2 = (*ii)->getName();
! }
! #endif
!
! }
!
!
! void Component::markEquivEntities()
! {
! EquivBag_Iterator it = m_equivBag.begin();
! for( ; it != m_equivBag.end(); ++it)
! {
! ASSERT( !it->first->isDeleted());
! std::set< ObjPointer > & clique = it->second;
! std::set< ObjPointer > :: const_iterator jt = clique.begin();
! //std::string n1 = it->first->getName();
!
! for( ; jt != clique.end(); ++jt)
! {
! //std::string n2 = (*jt)->getName();
! if ( *jt != it->first) // the responsible might be in its equiv bag
! {
! Entity_Iterator kt( m_entities.begin());
! while ( kt != m_entities.end() && *jt != kt->getPointer())
! ++kt;
!
! if ( kt != m_entities.end())
! {
! kt->deleted( true);//m_toBeDeletedEntities.push_back( ent);
! }
! else
! {
! global_vars.err << "ERROR: Entity not found during markEquivEntities: " << (*jt)->getName() << "\n";
! }
}
}
}
}
***************
*** 678,732 ****
connections which cannot be proxies)
*/
! void Component::operandSearchAndReplace(ObjPointer find_obj, ObjPointer real_obj)
{
! Relation_Iterator rel_it = m_relations.begin();
! for( ; rel_it != m_relations.end(); ++rel_it)
{
! if (!rel_it->getOp1()) global_vars.err << "First operand is Null Pointer\n";
! if (!rel_it->getOp2()) global_vars.err << "Second operand is Null Pointer\n";
! ObjPointer obj = BON::Object(); obj = rel_it->getOp1();
! if ( obj == find_obj)
! rel_it->setOp1(real_obj);
! obj = BON::Object(); obj = rel_it->getOp2();
! if ( obj == find_obj)
! rel_it->setOp2(real_obj);
! // obj at this time may be BON::Object() (in most case it is)
! obj = BON::Object(); obj = rel_it->getOp3();
! if ( obj != BON::Object() && obj == find_obj)
! rel_it->setOp3(real_obj);
! // added recently, to be tested well <!>
! obj = BON::Object(); obj = rel_it->getOp4();
! if ( obj != BON::Object() && obj == find_obj)
! rel_it->setOp4(real_obj);
! obj = BON::Object(); obj = rel_it->getOp5();
! if ( obj != BON::Object() && obj == find_obj)
! rel_it->setOp5(real_obj);
}
}
void Component::removeProxiesAndEquiv()
{
! Entity_Const_Iterator it = m_toBeDeletedEntities.begin();
! for ( ; it != m_toBeDeletedEntities.end(); ++it)
! {
! Entity_Iterator jt = m_entities.begin();
! while ( jt != m_entities.end() && jt->getPointer() != it->getPointer())
! ++jt;
! if ( jt != m_entities.end() )
! m_entities.erase(jt);
! }
}
! int Component::isProxy( ObjPointer ptr)
{
! if ( ptr == BON::Object()) return 0;
! if (m_realObj[ ptr] != BON::Object()) return 1;
! if (ptr->getObjectMeta().name().find("Proxy") != std::string::npos) return 2;
return 0;
}
--- 759,824 ----
connections which cannot be proxies)
*/
! void Component::operandSearchAndReplace( const std::vector<ObjPointer>& find_obj_vec, const ObjPointer& real_obj)
{
! const static int len = 2;
! Relations* reldb[ len] = { &m_relations, &m_equivRelations};
! for ( int k = 0; k < len; ++k)
{
! Relation_Iterator rel_it = reldb[k]->begin();
! for( ; rel_it != reldb[k]->end(); ++rel_it)
! {
! if (!rel_it->getOp1()) global_vars.err << "First operand is Null Pointer\n";
! if (!rel_it->getOp2()) global_vars.err << "Second operand is Null Pointer\n";
! ObjPointer obj = BON::FCO(); obj = rel_it->getOp1();
! //if ( obj == find_obj)
! if ( std::find( find_obj_vec.begin(), find_obj_vec.end(), obj) != find_obj_vec.end())
! rel_it->setOp1( real_obj);
! obj = BON::FCO(); obj = rel_it->getOp2();
! //if ( obj == find_obj)
! if ( std::find( find_obj_vec.begin(), find_obj_vec.end(), obj) != find_obj_vec.end())
! rel_it->setOp2( real_obj);
! // obj at this time may be BON::FCO() (in most case it is)
! obj = BON::FCO(); obj = rel_it->getOp3();
! //if ( obj != BON::FCO() && obj == find_obj)
! if ( obj != BON::FCO() && std::find( find_obj_vec.begin(), find_obj_vec.end(), obj) != find_obj_vec.end())
! rel_it->setOp3( real_obj);
! // added recently, to be tested well <!>
! obj = BON::FCO(); obj = rel_it->getOp4();
! //if ( obj != BON::FCO() && obj == find_obj)
! if ( obj != BON::FCO() && std::find( find_obj_vec.begin(), find_obj_vec.end(), obj) != find_obj_vec.end())
! rel_it->setOp4(real_obj);
! obj = BON::FCO(); obj = rel_it->getOp5();
! //if ( obj != BON::FCO() && obj == find_obj)
! if ( obj != BON::FCO() && std::find( find_obj_vec.begin(), find_obj_vec.end(), obj) != find_obj_vec.end())
! rel_it->setOp5(real_obj);
! }
}
}
+
+ void Component::operandSearchAndReplace( const ObjPointer& find_obj, const ObjPointer& real_obj)
+ {
+ operandSearchAndReplace( std::vector< ObjPointer>( 1, find_obj), real_obj);
+ }
+
+
void Component::removeProxiesAndEquiv()
{
! markEquivEntities();
}
! int Component::isProxy( const ObjPointer& ptr)
{
! if( ptr == BON::FCO()) return 0;
! RealMap_Iterator it = m_realObj.find( ptr);
! if( it != m_realObj.end() && it->second != BON::FCO()) return 1;//if (m_realObj.find[ ptr] != BON::FCO()) return 1;
! if( ptr->getObjectMeta().name().find("Proxy") != std::string::npos) return 2;
!
return 0;
}
***************
*** 740,743 ****
--- 832,837 ----
for( ; it != m_entities.end(); ++it)
{
+ if ( it->isDeleted()) continue;
+
int res;
if ( res = isProxy( it->getPointer()))
***************
*** 775,778 ****
--- 869,891 ----
}
+ rel_it = m_equivRelations.begin();
+ for( ; rel_it != m_equivRelations.end(); ++rel_it)
+ {
+ if ( isProxy( rel_it->getOp1()))
+ to_delete.push_back( rel_it->getOp1());
+
+ if ( isProxy( rel_it->getOp2()))
+ to_delete.push_back( rel_it->getOp2());
+
+ if ( isProxy( rel_it->getOp3()))
+ to_delete.push_back( rel_it->getOp3());
+
+ if ( isProxy( rel_it->getOp4()))
+ to_delete.push_back( rel_it->getOp4());
+
+ if ( isProxy( rel_it->getOp5()))
+ to_delete.push_back( rel_it->getOp5());
+ }
+
if ( c != to_delete.size()) correct = false;
***************
*** 801,804 ****
--- 914,929 ----
rel_it = m_relations.erase( rel_it);
}
+ rel_it = m_equivRelations.begin();
+ while( rel_it != m_equivRelations.end())
+ {
+ if ( rel_it->getOp1() != *ee &&
+ rel_it->getOp2() != *ee &&
+ rel_it->getOp3() != *ee &&
+ rel_it->getOp4() != *ee &&
+ rel_it->getOp5() != *ee )
+ ++rel_it;
+ else
+ rel_it = m_equivRelations.erase( rel_it);
+ }
}
return correct;
***************
*** 826,830 ****
bool error = false;
- m_entities.sort();
Entity_Iterator it_1( m_entities.begin());
--- 951,954 ----
***************
*** 833,837 ****
for( ; it_1 != m_entities.end(); ++it_1 )
{
! ObjPointer obj = BON::Object();
obj = it_1->getPointer();
--- 957,963 ----
for( ; it_1 != m_entities.end(); ++it_1 )
{
! if ( it_1->isDeleted()) continue;
!
! ObjPointer obj = BON::FCO();
obj = it_1->getPointer();
***************
*** 840,844 ****
Folder parent_folder( it_1->getParentFolder());
! if (!obj) global_vars.err << "Populate sheet: tries to create Rep with empty Object.\n";
else if ( !fco) global_vars.err << "Populate sheet: tries to create Rep with empty FCO.\n";
else
--- 966,970 ----
Folder parent_folder( it_1->getParentFolder());
! if (!obj) global_vars.err << "Populate sheet: tries to create Rep with empty FCO.\n";
else if ( !fco) global_vars.err << "Populate sheet: tries to create Rep with empty FCO.\n";
else
***************
*** 858,864 ****
new_elem = m_sheet->createReferenceRep( fco);
else if ( obj->getObjectMeta().name() == "Folder" )
! new_elem = m_sheet->createFolderRep( fco, (resp != BON::Object())?resp:fco);
else if ( obj->getObjectMeta().name() == "Aspect" )
! new_elem = m_sheet->createAspectRep( fco, (resp != BON::Object())?resp:fco);
else if ( obj->getObjectMeta().name() == "Constraint" )
new_elem = m_sheet->createConstraintRep( fco);
--- 984,990 ----
new_elem = m_sheet->createReferenceRep( fco);
else if ( obj->getObjectMeta().name() == "Folder" )
! new_elem = m_sheet->createFolderRep( fco, (resp != BON::FCO())?resp:fco);
else if ( obj->getObjectMeta().name() == "Aspect" )
! new_elem = m_sheet->createAspectRep( fco, (resp != BON::FCO())?resp:fco);
else if ( obj->getObjectMeta().name() == "Constraint" )
new_elem = m_sheet->createConstraintRep( fco);
***************
*** 877,881 ****
--- 1003,1011 ----
}
if (new_elem)
+ {
new_elem->setParentFolder( parent_folder);
+ if ( m_equivBag.find( obj) != m_equivBag.end())
+ new_elem->setEquivPeers( m_equivBag[ obj]);
+ }
}
} // for m_entities
***************
*** 1053,1057 ****
else global_vars.err << "ERROR after dynamic_cast - conn\n";
}
! else if ( obj3 == BON::Object() )
global_vars.err << "Association relation is not complete. Association class missing. Op1: " + obj1->getName() + " Op2: " + obj2->getName() + "\n";
else
--- 1183,1187 ----
else global_vars.err << "ERROR after dynamic_cast - conn\n";
}
! else if ( obj3 == BON::FCO() )
global_vars.err << "Association relation is not complete. Association class missing. Op1: " + obj1->getName() + " Op2: " + obj2->getName() + "\n";
else
***************
*** 1257,1262 ****
if ( !aspect_obj) global_vars.err << "ERROR after dynamic_cast - aspect member - aspect is 0\n";
! if ( rel_it.getOp3() != BON::Object() &&
! rel_it.getOp4() != BON::Object()) // means a role is only the aspect member
{
std::string rolename = Connection( rel_it.getOp3())->getAttribute("Rolename")->getStringValue();
--- 1387,1392 ----
if ( !aspect_obj) global_vars.err << "ERROR after dynamic_cast - aspect member - aspect is 0\n";
! if ( rel_it.getOp3() != BON::FCO() &&
! rel_it.getOp4() != BON::FCO()) // means a role is only the aspect member
{
std::string rolename = Connection( rel_it.getOp3())->getAttribute("Rolename")->getStringValue();
***************
*** 1365,1374 ****
if (rel_it->getOperation() == Relation::ASSOCIATION_OP)
{
! bool three_op = rel_it->getOp3() != BON::Object();
! if( rel_it->getOp1() == BON::Object() ||
! rel_it->getOp2() == BON::Object() ||
! rel_it->getOp3() == BON::Object() ||
! rel_it->getOp4() == BON::Object() ||
! rel_it->getOp5() == BON::Object() )
global_vars.err << "Internal error: Assocation has one operand 0\n";
Entity ent1 = entitySearch( rel_it->getOp1());
--- 1495,1504 ----
if (rel_it->getOperation() == Relation::ASSOCIATION_OP)
{
! bool three_op = rel_it->getOp3() != BON::FCO();
! if( rel_it->getOp1() == BON::FCO() ||
! rel_it->getOp2() == BON::FCO() ||
! rel_it->getOp3() == BON::FCO() ||
! rel_it->getOp4() == BON::FCO() ||
! rel_it->getOp5() == BON::FCO() )
global_vars.err << "Internal error: Assocation has one operand 0\n";
Entity ent1 = entitySearch( rel_it->getOp1());
***************
*** 1380,1388 ****
ObjPointer ptr, o2 = rel_it->getOp2();
! if ( ent1 == Entity( BON::Folder(), BON::Object()) )
{
ptr = rel_it->getOp1();
m_entities.push_back( Entity( BON::Folder(), rel_it->getOp1()));
! if ( ptr != BON::Object())
global_vars.err << "Internal error: Operand 1 of " << rel_it->getOperationStr() << " is not present in Entities\n" <<
ptr->getName() << " : " << ptr->getObjectMeta().name() << " has been inserted";
--- 1510,1518 ----
ObjPointer ptr, o2 = rel_it->getOp2();
! if ( ent1 == Entity( BON::Folder(), BON::FCO()) )
{
ptr = rel_it->getOp1();
m_entities.push_back( Entity( BON::Folder(), rel_it->getOp1()));
! if ( ptr != BON::FCO())
global_vars.err << "Internal error: Operand 1 of " << rel_it->getOperationStr() << " is not present in Entities\n" <<
ptr->getName() << " : " << ptr->getObjectMeta().name() << " has been inserted";
***************
*** 1390,1398 ****
global_vars.err << "Internal error: Operand 1 of " << rel_it->getOperationStr() << " is null\n";
}
! if ( ent2 == Entity( BON::Folder(), BON::Object()))
{
ptr = rel_it->getOp2();
m_entities.push_back( Entity( BON::Folder(), rel_it->getOp2()));
! if ( ptr != BON::Object())
global_vars.err << "Internal error: Operand 2 of " << rel_it->getOperationStr() << " is not present in Entities\n" <<
ptr->getName() << " : " << ptr->getObjectMeta().name() << " has been inserted";
--- 1520,1528 ----
global_vars.err << "Internal error: Operand 1 of " << rel_it->getOperationStr() << " is null\n";
}
! if ( ent2 == Entity( BON::Folder(), BON::FCO()))
{
ptr = rel_it->getOp2();
m_entities.push_back( Entity( BON::Folder(), rel_it->getOp2()));
! if ( ptr != BON::FCO())
global_vars.err << "Internal error: Operand 2 of " << rel_it->getOperationStr() << " is not present in Entities\n" <<
ptr->getName() << " : " << ptr->getObjectMeta().name() << " has been inserted";
***************
*** 1400,1404 ****
global_vars.err << "Internal error: Operand 2 of " << rel_it->getOperationStr() << " is null\n";
}
! if ( ent3 == Entity( BON::Folder(), BON::Object()))
{
if ( three_op )
--- 1530,1534 ----
global_vars.err << "Internal error: Operand 2 of " << rel_it->getOperationStr() << " is null\n";
}
! if ( ent3 == Entity( BON::Folder(), BON::FCO()))
{
if ( three_op )
***************
*** 1417,1432 ****
else
{
! if( rel_it->getOp1() == BON::Object() ||
! rel_it->getOp2() == BON::Object() )
global_vars.err << "Internal error: " << rel_it->getOperationStr() << " has one operand 0\n";
Entity ent1 = entitySearch( rel_it->getOp1());
Entity ent2 = entitySearch( rel_it->getOp2());
! ObjPointer ptr = BON::Object();
! if ( ent1 == Entity( BON::Folder(), BON::Object()))
{
ptr = rel_it->getOp1();
m_entities.push_back( Entity( BON::Folder(), rel_it->getOp1()));
! if ( ptr != BON::Object())
global_vars.err << "Internal error: Operand 1 of " << rel_it->getOperationStr() << " is not present in Entities\n" <<
ptr->getName() << " : " << ptr->getObjectMeta().name() << " has been inserted";
--- 1547,1562 ----
else
{
! if( rel_it->getOp1() == BON::FCO() ||
! rel_it->getOp2() == BON::FCO() )
global_vars.err << "Internal error: " << rel_it->getOperationStr() << " has one operand 0\n";
Entity ent1 = entitySearch( rel_it->getOp1());
Entity ent2 = entitySearch( rel_it->getOp2());
! ObjPointer ptr = BON::FCO();
! if ( ent1 == Entity( BON::Folder(), BON::FCO()))
{
ptr = rel_it->getOp1();
m_entities.push_back( Entity( BON::Folder(), rel_it->getOp1()));
! if ( ptr != BON::FCO())
global_vars.err << "Internal error: Operand 1 of " << rel_it->getOperationStr() << " is not present in Entities\n" <<
ptr->getName() << " : " << ptr->getObjectMeta().name() << " has been inserted";
***************
*** 1434,1438 ****
global_vars.err << "Internal error: Operand 1 of " << rel_it->getOperationStr() + " is null\n";
}
! if ( ent2 == Entity( BON::Folder(), BON::Object()))
{
ptr = rel_it->getOp2();
--- 1564,1568 ----
global_vars.err << "Internal error: Operand 1 of " << rel_it->getOperationStr() + " is null\n";
}
! if ( ent2 == Entity( BON::Folder(), BON::FCO()))
{
ptr = rel_it->getOp2();
***************
*** 1440,1444 ****
ObjPointer ptr2 = rel_it->getOp1();
std::string peer1, peer2;
! if ( ptr2 != BON::Object())
peer1 = ptr2->getName() + " " + ptr2->getObjectMeta().name();
if ( rel_it->getOp2())
--- 1570,1574 ----
ObjPointer ptr2 = rel_it->getOp1();
std::string peer1, peer2;
! if ( ptr2 != BON::FCO())
peer1 = ptr2->getName() + " " + ptr2->getObjectMeta().name();
if ( rel_it->getOp2())
***************
*** 1476,1480 ****
rel_it->getOperation() == Relation::FOLDER_CONTAINMENT_OP )
{
! if (rel_it->getOp3() == BON::Object())
global_vars.err << "Internal error: (Folder)Containment line object not present in m_relations list\n";
}
--- 1606,1610 ----
rel_it->getOperation() == Relation::FOLDER_CONTAINMENT_OP )
{
! if (rel_it->getOp3() == BON::FCO())
global_vars.err << "Internal error: (Folder)Containment line object not present in m_relations list\n";
}
***************
*** 1519,1522 ****
--- 1649,1653 ----
global_vars.silent_mode = (lParam == GME_SILENT_MODE);
+
initMembers( project);
***************
*** 1541,1544 ****
--- 1672,1678 ----
CHECK();
+
+ m_entities.sort();
+ m_equivRelations.sort();
selectFromSameAspectsFolders();
Index: BON2Component.h
===================================================================
RCS file: /var/lib/gme/GMESRC/Paradigms/MetaGME/MetaInterpreter2004/BON2Component.h,v
retrieving revision 1.7
retrieving revision 1.8
diff -C2 -d -r1.7 -r1.8
*** BON2Component.h 12 Jul 2004 22:01:08 -0000 1.7
--- BON2Component.h 16 Jul 2004 22:39:07 -0000 1.8
***************
*** 65,71 ****
typedef Relations::const_iterator Relation_Const_Iterator;
! typedef Object ObjPointer;
typedef std::map< ObjPointer, ObjPointer> RealMap;
typedef std::map< ObjPointer, ObjPointer>::iterator RealMap_Iterator;
private: // members
--- 65,73 ----
typedef Relations::const_iterator Relation_Const_Iterator;
! typedef FCO ObjPointer;
typedef std::map< ObjPointer, ObjPointer> RealMap;
typedef std::map< ObjPointer, ObjPointer>::iterator RealMap_Iterator;
+ typedef std::map< ObjPointer, std::set < ObjPointer > > EquivBag;
+ typedef std::map< ObjPointer, std::set < ObjPointer > >::iterator EquivBag_Iterator;
private: // members
***************
*** 74,81 ****
Entities m_entities;
! Entities m_toBeDeletedEntities;
Relations m_relations;
RealMap m_realObj;
private: // methods
void initMembers( Project& project);
--- 76,86 ----
Entities m_entities;
! //Entities m_toBeDeletedEntities;
Relations m_relations;
+ Relations m_equivRelations;
RealMap m_realObj;
+ EquivBag m_equivBag;
+
private: // methods
void initMembers( Project& project);
***************
*** 91,97 ****
void equivalenceFinder();
void removeProxiesAndEquiv();
! int isProxy( ObjPointer ptr);
! void operandSearchAndReplace( ObjPointer proxy_obj, ObjPointer real_obj);
! Entity entitySearch( ObjPointer p_ptr);
bool checkForProxies();
--- 96,105 ----
void equivalenceFinder();
void removeProxiesAndEquiv();
! int isProxy( const ObjPointer& ptr);
! void operandSearchAndReplace( const std::vector<ObjPointer>& proxy_obj, const ObjPointer& real_obj);
! void operandSearchAndReplace( const ObjPointer& proxy_obj, const ObjPointer& real_obj);
! void insertIntoEquivBag( const ObjPointer& obj1, const ObjPointer& obj2);
! void markEquivEntities();
! Entity entitySearch( const ObjPointer& p_ptr);
bool checkForProxies();
Index: entity.h
===================================================================
RCS file: /var/lib/gme/GMESRC/Paradigms/MetaGME/MetaInterpreter2004/entity.h,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** entity.h 2 Mar 2004 19:43:04 -0000 1.3
--- entity.h 16 Jul 2004 22:39:07 -0000 1.4
***************
*** 8,13 ****
public:
! explicit Entity( const BON::Folder& parent, const BON::Object& p, const BON::Object& p2 = BON::Object())
! : m_pointer( p), m_respPointer( p2), m_parentFolder( parent) { }
Entity( const Entity & operand )
--- 8,13 ----
public:
! explicit Entity( const BON::Folder& parent, const BON::FCO& p, const BON::FCO& p2 = BON::FCO())
! : m_pointer( p), m_respPointer( p2), m_parentFolder( parent), m_deleted( false) { }
Entity( const Entity & operand )
***************
*** 15,18 ****
--- 15,19 ----
, m_respPointer( operand.m_respPointer)
, m_parentFolder( operand.m_parentFolder)
+ , m_deleted( operand.m_deleted)
{ }
***************
*** 24,27 ****
--- 25,29 ----
m_respPointer = operand.m_respPointer;
m_parentFolder = operand.m_parentFolder;
+ m_deleted = operand.m_deleted;
return *this;
***************
*** 30,34 ****
~Entity() { }
! bool operator==( const Entity& peer) { return (m_pointer == peer.m_pointer) && (m_respPointer == peer.m_respPointer) && (m_parentFolder == peer.m_parentFolder); }
bool operator!=( const Entity& peer) { return !(*this==peer); }
bool operator<( const Entity& peer) const
--- 32,36 ----
~Entity() { }
! bool operator==( const Entity& peer) { return (m_pointer == peer.m_pointer) && (m_respPointer == peer.m_respPointer) && (m_parentFolder == peer.m_parentFolder) && (m_deleted == peer.m_deleted); }
bool operator!=( const Entity& peer) { return !(*this==peer); }
bool operator<( const Entity& peer) const
***************
*** 39,53 ****
}
! BON::Object getPointer() const { return m_pointer; }
! BON::Object getRespPointer() const { return m_respPointer; }
BON::Folder getParentFolder() const { return m_parentFolder; }
! void setPointer( const BON::Object& p) { m_pointer = p; }
! void setRespPointer( const BON::Object& r_p) { m_respPointer = r_p; }
void setParentFolder( const BON::Folder& pf) { m_parentFolder = pf; }
private:
! BON::Object m_pointer;
! BON::Object m_respPointer;
BON::Folder m_parentFolder;
};
--- 41,58 ----
}
! BON::FCO getPointer() const { return m_pointer; }
! BON::FCO getRespPointer() const { return m_respPointer; }
BON::Folder getParentFolder() const { return m_parentFolder; }
! void setPointer( const BON::FCO& p) { m_pointer = p; }
! void setRespPointer( const BON::FCO& r_p) { m_respPointer = r_p; }
void setParentFolder( const BON::Folder& pf) { m_parentFolder = pf; }
+ bool isDeleted() const { return m_deleted; }
+ void deleted( const bool val) { m_deleted = val; }
private:
! BON::FCO m_pointer;
! BON::FCO m_respPointer;
BON::Folder m_parentFolder;
+ bool m_deleted;
};
Index: relation.h
===================================================================
RCS file: /var/lib/gme/GMESRC/Paradigms/MetaGME/MetaInterpreter2004/relation.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** relation.h 4 Dec 2003 16:45:27 -0000 1.1
--- relation.h 16 Jul 2004 22:39:07 -0000 1.2
***************
*** 93,116 ****
inline OPER_TYPE getOperation() const { return m_operation; }
! inline const BON::Object getOp1() const { return m_operand1; }
! inline const BON::Object getOp2() const { return m_operand2; }
! inline const BON::Object getOp3() const { return m_operand3; }
! inline const BON::Object getOp4() const { return m_operand4; }
! inline const BON::Object getOp5() const { return m_operand5; }
inline void setOperation( OPER_TYPE oper_t) { m_operation = oper_t; }
! inline void setOp1(const BON::Object op_1) { m_operand1 = op_1; }
! inline void setOp2(const BON::Object op_2) { m_operand2 = op_2; }
! inline void setOp3(const BON::Object op_3) { m_operand3 = op_3; }
! inline void setOp4(const BON::Object op_4) { m_operand4 = op_4; }
! inline void setOp5(const BON::Object op_5) { m_operand5 = op_5; }
explicit Relation(
OPER_TYPE oper_t,
! const BON::Object operd1 = BON::Object(),
! const BON::Object operd2 = BON::Object(),
! const BON::Object operd3 = BON::Object(),
! const BON::Object operd4 = BON::Object(),
! const BON::Object operd5 = BON::Object())
: m_operation( oper_t),
m_operand1( operd1),
--- 93,116 ----
inline OPER_TYPE getOperation() const { return m_operation; }
! inline const BON::FCO getOp1() const { return m_operand1; }
! inline const BON::FCO getOp2() const { return m_operand2; }
! inline const BON::FCO getOp3() const { return m_operand3; }
! inline const BON::FCO getOp4() const { return m_operand4; }
! inline const BON::FCO getOp5() const { return m_operand5; }
inline void setOperation( OPER_TYPE oper_t) { m_operation = oper_t; }
! inline void setOp1(const BON::FCO op_1) { m_operand1 = op_1; }
! inline void setOp2(const BON::FCO op_2) { m_operand2 = op_2; }
! inline void setOp3(const BON::FCO op_3) { m_operand3 = op_3; }
! inline void setOp4(const BON::FCO op_4) { m_operand4 = op_4; }
! inline void setOp5(const BON::FCO op_5) { m_operand5 = op_5; }
explicit Relation(
OPER_TYPE oper_t,
! const BON::FCO operd1 = BON::FCO(),
! const BON::FCO operd2 = BON::FCO(),
! const BON::FCO operd3 = BON::FCO(),
! const BON::FCO operd4 = BON::FCO(),
! const BON::FCO operd5 = BON::FCO())
: m_operation( oper_t),
m_operand1( operd1),
***************
*** 130,134 ****
m_operand5( operand.m_operand5) { };
! const Relation & operator=(const Relation & operand)
{
if ( this == &operand) return *this;
--- 130,134 ----
m_operand5( operand.m_operand5) { };
! const Relation & operator=(const Relation & operand)
{
if ( this == &operand) return *this;
***************
*** 151,161 ****
(m_operand5 == peer.m_operand5);
}
private:
OPER_TYPE m_operation;
! BON::Object m_operand1;
! BON::Object m_operand2;
! BON::Object m_operand3;
! BON::Object m_operand4;
! BON::Object m_operand5;
};
--- 151,175 ----
(m_operand5 == peer.m_operand5);
}
+
+ bool operator<( const Relation& peer) const
+ {
+ if ( m_operation != peer.m_operation) return m_operation < peer.m_operation;
+
+ int k;
+ k = m_operand1->getName().compare( peer.m_operand1->getName());
+ if( k != 0) return k < 0;
+ k = m_operand2->getName().compare( peer.m_operand2->getName());
+ if( k != 0) return k < 0;
+ k = m_operand3->getName().compare( peer.m_operand3->getName());
+ return ( k < 0);
+ }
+
private:
OPER_TYPE m_operation;
! BON::FCO m_operand1;
! BON::FCO m_operand2;
! BON::FCO m_operand3;
! BON::FCO m_operand4;
! BON::FCO m_operand5;
};
- Previous message: [GME-commit]
GMESRC/Paradigms/MetaGME/BonExtension/Rep Any.cpp,1.9,1.10
Any.h,1.6,1.7 Dumper.cpp,1.11,1.12 FCO.cpp,1.15,1.16
FCO.h,1.12,1.13 Sheet.cpp,1.6,1.7 Sheet.h,1.5,1.6
- Next message: [GME-commit]
GMESRC/Paradigms/MetaGME/MetaInterpreter2004/Rep Any.cpp,1.9,1.10
Any.h,1.5,1.6 AspectRep.cpp,1.9,1.10 Broker.cpp,1.6,1.7
ConnectionRep.cpp,1.5,1.6 ConnectionRep.h,1.2,1.3
Dumper.cpp,1.21,1.22 FCO.cpp,1.8,1.9 FCO.h,1.3,1.4
FolderRep.cpp,1.6,1.7 Sheet.cpp,1.5,1.6 Sheet.h,1.3,1.4
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the GME-commit
mailing list