![]() |
Mesh Oriented datABase
(version 5.4.1)
Array-based unstructured mesh datastructure
|
00001 #include "Lasso.hpp"
00002 #include "AssocPair.hpp"
00003
00004 Lasso::~Lasso()
00005 {
00006 for( std::set< AssocPair* >::iterator i = assocPairs.begin(); i != assocPairs.end(); ++i )
00007 delete *i;
00008 }
00009
00010 //! find a pair equivalent to these ifaces, passed as pointer to
00011 //! SIDL interface or interface instance
00012 AssocPair* Lasso::find_pair( void* iface0, void* iface1, bool* switched )
00013 {
00014 for( std::set< AssocPair* >::iterator i = assocPairs.begin(); i != assocPairs.end(); ++i )
00015 {
00016 if( ( *i )->equivalent( iface0, iface1, switched ) ) return *i;
00017 }
00018
00019 return NULL;
00020 }
00021
00022 //! find a pair with the right types
00023 AssocPair* Lasso::find_pair( iRel_IfaceType type1, iRel_IfaceType type2, bool* switched )
00024 {
00025 for( std::set< AssocPair* >::iterator i = assocPairs.begin(); i != assocPairs.end(); ++i )
00026 {
00027 if( ( *i )->equivalent( type1, type2, switched ) ) return *i;
00028 }
00029
00030 return NULL;
00031 }
00032
00033 void Lasso::find_pairs( void* iface, std::vector< AssocPair* >& iface_pairs )
00034 {
00035 for( std::set< AssocPair* >::iterator i = assocPairs.begin(); i != assocPairs.end(); ++i )
00036 {
00037 if( ( *i )->contains( iface ) ) iface_pairs.push_back( *i );
00038 }
00039 }
00040
00041 int Lasso::insert_pair( AssocPair* this_pair )
00042 {
00043 assocPairs.insert( this_pair );
00044 return iBase_SUCCESS;
00045 }
00046
00047 int Lasso::erase_pair( AssocPair* this_pair )
00048 {
00049 if( assocPairs.erase( this_pair ) == 0 ) return iBase_FAILURE;
00050
00051 // If the pair was removed, then delete it too
00052 delete this_pair;
00053 return iBase_SUCCESS;
00054 }