Bdb packages | Design docs | Source docs | Guidelines | Recent releases

Search | Site Map .

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