![]() |
|
|
Bdb packages | Design docs | Source docs | Guidelines | Recent releases |
|
Main Page Modules Namespace List Class Hierarchy Alphabetical List Compound List File List Compound Members File Members /BdbUtil/BdbMutualDictionaryT.cc
Go to the documentation of this file.00001 #if !defined(BDBMUTUALDICTIONARYT_CC) 00002 #define BDBMUTUALDICTIONARYT_CC 00003 //-------------------------------------------------------------------------- 00004 // File and Version Information: 00005 // $Id: BdbMutualDictionaryT.cc,v 1.2 2000/02/03 00:46:37 patton Exp $ 00006 // 00007 // Description: 00008 // Class BdbMutualDictionaryT 00009 // 00010 // Environment: 00011 // Software developed for the BaBar Detector at the SLAC B-Factory. 00012 // 00013 // Author List: 00014 // Simon Patton Originator 00015 // 00016 // Copyright Information: 00017 // Copyright (C) 1999 LBNL 00018 // 00019 //------------------------------------------------------------------------ 00020 00021 //----------------------- 00022 // This Class's Header -- 00023 //----------------------- 00024 #include "BdbUtil/BdbMutualDictionaryT.hh" 00025 00026 //------------- 00027 // C Headers -- 00028 //------------- 00029 extern "C" { 00030 } 00031 00032 //--------------- 00033 // C++ Headers -- 00034 //--------------- 00035 00036 //---------------- 00037 // BaBar Header -- 00038 //---------------- 00039 #include "BaBar/BaBar.hh" 00040 00041 //------------------------------- 00042 // Collaborating Class Headers -- 00043 //------------------------------- 00044 00045 //------------------------------------ 00046 // Collaborating Class Declarations -- 00047 //------------------------------------ 00048 00049 //----------------------------------------------------------------------- 00050 // Local Macros, Typedefs, Structures, Unions and Forward Declarations -- 00051 //----------------------------------------------------------------------- 00052 00053 // ----------------------------------------------- 00054 // -- Static Data & Function Member Definitions -- 00055 // ----------------------------------------------- 00056 00057 template< class K , class V > 00058 bool 00059 BdbMutualDictionaryT< K , V >::contains( const K& key , 00060 const BdbRef( BdbMutualKeys< K > )& keys , 00061 const BdbRef( BdbMutualValues< V > )& values ) 00062 { 00063 BdbMutualEntry< uint32 > entry( keys->find( key ) ) ; 00064 if( ! entry.isValid() ) { 00065 return( false ) ; 00066 } 00067 return( values->locallyValid( *entry ) ) ; 00068 } 00069 00070 template< class K , class V > 00071 BdbMutualEntry< V > 00072 BdbMutualDictionaryT< K , V >::find( const K& key , 00073 const BdbRef( BdbMutualKeys< K > )& keys , 00074 const BdbRef( BdbMutualValues< V > )& values ) 00075 { 00076 static const BdbMutualEntry< V > kInvalid ; 00077 00078 BdbMutualEntry< uint32 > entry( keys->find( key ) ) ; 00079 if( ! entry.isValid() ) { 00080 return( kInvalid ) ; 00081 } 00082 return( values->find( *entry ) ) ; 00083 } 00084 00085 template< class K , class V > 00086 size_t 00087 BdbMutualDictionaryT< K , V >::size( const BdbRef( BdbMutualValues< V > )& values ) 00088 { 00089 return( values->size() ) ; 00090 } 00091 00092 template< class K , class V > 00093 bool 00094 BdbMutualDictionaryT< K , V >::isEmpty( const BdbRef( BdbMutualValues< V > )& values ) 00095 { 00096 return( 0 == values->size() ) ; 00097 } 00098 00099 template< class K , class V > 00100 bool 00101 BdbMutualDictionaryT< K , V >::insert( const K& key , 00102 const V& value , 00103 BdbRef( BdbMutualKeys< K > )& keys , 00104 BdbRef( BdbMutualValues< V > )& values ) 00105 { 00106 BdbMutualEntry< uint32 > index( keys->get( key ) ) ; 00107 if( ! index.isValid() ) { 00108 return( false ) ; 00109 } 00110 return( values->insert( *index , 00111 value ) ) ; 00112 } 00113 00114 template< class K , class V > 00115 BdbMutualEntry< V > 00116 BdbMutualDictionaryT< K , V >::remove( const K& key , 00117 BdbRef( BdbMutualKeys< K > )& keys , 00118 BdbRef( BdbMutualValues< V > )& values ) 00119 { 00120 static const BdbMutualEntry< V > kInvalid ; 00121 00122 BdbMutualEntry< uint32 > entry( keys->find( key ) ) ; 00123 if( ! entry.isValid() ) { 00124 return( kInvalid ) ; 00125 } 00126 return( values->remove( *entry ) ) ; 00127 } 00128 00129 // --------------------------------- 00130 // -- Member Function Definitions -- 00131 // --------------------------------- 00132 00133 //---------------- 00134 // Constructors -- 00135 //---------------- 00136 00137 template< class K , class V > 00138 BdbMutualDictionaryT< K , V >::BdbMutualDictionaryT( const BdbHandle( BdbMutualValues< V > )& values , 00139 const BdbHandle( BdbMutualKeysMgr< K > )& manager ) 00140 : _values( values ) , 00141 _keys( manager->find( _values->keysIdentifier() ) ) 00142 { 00143 } 00144 00145 // BdbMutualDictionaryT< K , V >::BdbMutualDictionaryT( const BdbMutualDictionaryT< K , V >& aRhs ) 00146 // { 00147 // } 00148 00149 //-------------- 00150 // Destructor -- 00151 //-------------- 00152 00153 template< class K , class V > 00154 BdbMutualDictionaryT< K , V >::~BdbMutualDictionaryT() 00155 { 00156 } 00157 00158 //------------- 00159 // Operators -- 00160 //------------- 00161 00162 // const BdbMutualDictionaryT< K , V >& BdbMutualDictionaryT< K , V >::operator=( const BdbMutualDictionaryT< K , V >& aRhs ) 00163 // { 00164 // } 00165 00166 //------------- 00167 // Selectors -- 00168 //------------- 00169 00170 template< class K , class V > 00171 bool 00172 BdbMutualDictionaryT< K , V >::contains( const K& key ) const 00173 { 00174 return( contains( key , 00175 _keys , 00176 _values ) ) ; 00177 } 00178 00179 template< class K , class V > 00180 BdbMutualEntry< V > 00181 BdbMutualDictionaryT< K , V >::find( const K& key ) const 00182 { 00183 return( find( key , 00184 _keys , 00185 _values ) ) ; 00186 } 00187 00188 template< class K , class V > 00189 size_t 00190 BdbMutualDictionaryT< K , V >::size() const 00191 { 00192 return( size( _values ) ) ; 00193 } 00194 00195 template< class K , class V > 00196 bool 00197 BdbMutualDictionaryT< K , V >::isEmpty() const 00198 { 00199 return( isEmpty( _values ) ) ; 00200 } 00201 00202 //------------- 00203 // Modifiers -- 00204 //------------- 00205 00206 template< class K , class V > 00207 bool 00208 BdbMutualDictionaryT< K , V >::insert( const K& key , 00209 const V& value ) 00210 { 00211 return( insert( key , 00212 value , 00213 _keys , 00214 _values ) ) ; 00215 } 00216 00217 template< class K , class V > 00218 BdbMutualEntry< V > 00219 BdbMutualDictionaryT< K , V >::remove( const K& key ) 00220 { 00221 return( remove( key , 00222 _keys , 00223 _values ) ) ; 00224 } 00225 00226 #endif // BDBMUTUALDICTIONARYT_CC
BaBar Public Site | SLAC | News | Links | Who's Who | Contact Us
Page Owner: Jacek Becla
Last Update: October 04, 2002