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/Bdb.hh

Go to the documentation of this file.
00001 //--------------------------------------------------------------------------
00002 // File and Version Information:
00003 //      $Id: Bdb.hh,v 1.28 2001/08/29 21:22:09 patton Exp $
00004 //
00005 // Description:
00006 //      Bdb.hh header file. This is the universal header file for BaBar
00007 //  database applications and defines the BaBar-specific macros and
00008 //  a minimal set of database classes.
00009 //
00010 // Environment:
00011 //      Software developed for the BaBar Detector at the SLAC B-Factory.
00012 //
00013 // Author List:
00014 //      David R. Quarrie                Lawrence Berkeley National Laboratory
00015 //
00016 // History:
00017 //      J-N. Albert  (Jul 5, 99)        Macros for Large File on Sun
00018 //                                      (to work around a template problem)
00019 //------------------------------------------------------------------------
00020 #ifndef BDB_HH
00021 #define BDB_HH
00022 
00023 //-----------------
00024 // BaBar Headers --
00025 //-----------------
00026 #ifndef BABAR_HH
00027 #include "BaBar/BaBar.hh"
00028 #endif
00029 
00030 #ifdef OBJYBASE
00031 
00032 //---------------------
00033 // Objectivity in use -
00034 //---------------------
00035 
00036 // Setup Objectivity (which includes the ODMG types)
00037 #include "oo.h"
00038 
00039 // Setup HepODBMS. 
00040 #ifdef NOT_USING_HEPODBMS
00041 #include "BdbUtil/BdbODMGTypes.hh"
00042 #else
00043 #include "HepODBMS/odbms/HepCompiler.h"
00044 #include "HepODBMS/odbms/HepODBMS.h"
00045 #endif
00046 
00047 // Define database identifiers
00048 typedef d_ULong BdbDbId ;
00049 
00050 // Define status macros
00051 #define BdbStatus   ooStatus
00052 #define BdbcSuccess oocSuccess
00053 #define BdbcError   oocError
00054 #define BdbcVersioned  ((BdbStatus)2)
00055 #define BdbcNoError oocNoError
00056 #define BdbcWarning oocWarning
00057 #define BdbcUserError oocUserError
00058 #define BdbcSystemError oocSystemError
00059 #define BdbcFatalError oocFatalError
00060 #define BdbErrorLevel ooErrorLevel
00061 #define BdbError    ooError
00062 #define BdbSignal ooSignal
00063 
00064 // Define open modes
00065 #define BdbcNoOpen oocNoOpen
00066 #define BdbcRead oocRead
00067 #define BdbcUpdate oocUpdate
00068 
00069 // Define wait modes
00070 #define BdbcTransNoWait oocTransNoWait
00071 #define BdbcNoWait oocNoWait
00072 #define BdbcWait oocWait
00073 
00074 // Define transaction modes
00075 #define BdbMode ooMode
00076 #define BdbcMROW oocMROW
00077 #define BdbcNoMROW oocNoMROW
00078 
00079 // Define index modes
00080 #define BdbIndexMode ooIndexMode
00081 #define BdbcInsensitive oocInsensitive
00082 #define BdbcSensitive oocSensitive
00083 #define BdbcExplicitUpdate oocExplicitUpdate
00084 
00085 // Define AMS access modes
00086 #define BdbAMSUsage ooAMSUsage
00087 #define BdbcAMSPreferred oocAMSPreferred
00088 #define BdbcAMSOnly oocAMSOnly
00089 #define BdbcNoAMS oocNoAMS
00090 
00091 // Define transaction ID
00092 #define BdbTransId ooTransId
00093 #define BdbcInValidTransId oocInValidTransId
00094 #define BdbTransToken d_ULong
00095 #define BdbcInValidTransToken 0
00096 
00097 // Define Invalid nested optimization
00098 #define BdbNestingOptToken d_ULong
00099 #define BdbcInValidNestingOptToken 0
00100 
00101 // Define object creation, deletion & access macros
00102 #define BdbDelete(T) ooDelete(T)
00103 #define BdbNew(T) new(T::clustering.updatedHint( )) T
00104 #define BdbCondNew(T,DB) new(DB->hint()) T
00105 #define BdbHandle(T) ooHandle(T)
00106 #define BdbRef(T) ooRef(T)
00107 #define BdbObj ooObj
00108 #define BdbPersObj ooObj
00109 #define BdbRefAny ooRef(ooObj)
00110 #define BdbHandleAny ooHandle(ooObj)
00111 #define BdbContObj ooContObj
00112 #define BdbDBObj ooDBObj
00113 #define BdbFDObj ooFDObj
00114 #define BdbMap ooMap
00115 #define BdbItr ooItr
00116 #define BdbIsNull(Ref) ((Ref)==0)
00117 #define BdbUpdate ooUpdate
00118 
00119 // The following is required for classes, i.e. template classes, which
00120 //   contain a ",".
00121 #define BDB_MACRO_SEPARATOR ,
00122 #define Bdb2Delete( a , b ) ooDelete( a BDB_MACRO_SEPARATOR b )
00123 #define Bdb2Handle( a , b ) ooHandle( a BDB_MACRO_SEPARATOR b )
00124 #define Bdb2Ref( a , b ) ooRef( a BDB_MACRO_SEPARATOR b )
00125 
00126 #define Bdb3Delete( a , b , c ) ooDelete( a BDB_MACRO_SEPARATOR b BDB_MACRO_SEPARATOR c )
00127 #define Bdb3Handle( a , b , c ) ooHandle( a BDB_MACRO_SEPARATOR b BDB_MACRO_SEPARATOR c )
00128 #define Bdb3Ref( a , b , c ) ooRef( a BDB_MACRO_SEPARATOR b BDB_MACRO_SEPARATOR c )
00129 
00130 #define Bdb4Delete( a , b , c , d ) ooDelete( a BDB_MACRO_SEPARATOR b BDB_MACRO_SEPARATOR c BDB_MACRO_SEPARATOR d )
00131 #define Bdb4Handle( a , b , c , d ) ooHandle( a BDB_MACRO_SEPARATOR b BDB_MACRO_SEPARATOR c BDB_MACRO_SEPARATOR d )
00132 #define Bdb4Ref( a , b , c , d ) ooRef( a BDB_MACRO_SEPARATOR b BDB_MACRO_SEPARATOR c BDB_MACRO_SEPARATOR d )
00133 
00134 // Setup clustering hint macros & classes
00135 #define BdbHintDeclare static BdbClusteringHint clustering
00136 #define BdbHintInit(T) BdbClusteringHint T::clustering
00137 #define BdbHintSet(T,V) T::clustering = (V)
00138 #define BdbHintDelegate(T) T::clustering.delegate()
00139 #define BdbHintSetDelegate(T,D) T::clustering.setDelegate(D)
00140 
00141 #ifndef NOT_USING_HEPODBMS
00142 #ifndef BDBCLUSTERINGHINT_HH
00143 #include "BdbUtil/BdbClusteringHint.hh"
00144 #endif
00145 #endif
00146 
00147 #else
00148 
00149 //-------------------------
00150 // Objectivity not in use -
00151 //-------------------------
00152 
00153 // Setup the ODMG basic datatypes
00154 #include "BdbUtil/BdbODMGTypes.hh"
00155 
00156 // Define status macros
00157 #define BdbStatus   d_Long
00158 #define BdbcSuccess ((BdbStatus)1)
00159 #define BdbcError   ((BdbStatus)0)
00160 #define BdbcVersioned ((BdbStatus)2)
00161 typedef enum { BdbNoError = 0, 
00162                BdbcWarning, 
00163                BdbcUserError, 
00164                BdbcSystemError, 
00165                BdbcFatalError } BdbErrorLevel;
00166 typedef struct { d_Long errorN;
00167                  char* message;
00168 } BdbError;  
00169 
00170 // Define open modes
00171 #define BdbcNoOpen 0
00172 #define BdbcRead 1
00173 #define BdbcUpdate 2
00174 
00175 // Define object creation, deletion & access macros
00176 #define BdbDelete(T) delete T
00177 #define BdbNew(T) new T
00178 #define BdbHandle(T) T*
00179 #define BdbRef(T) T*
00180 #define BdbRefAny BdbPersObj*
00181 #define BdbHandleAny BdbPersObj*
00182 #define BdbContObj BdbPersObj
00183 #define BdbDBObj BdbPersObj
00184 #define BdbFDObj BdbPersObj
00185 #define BdbMap BdbPersObj
00186 class BdbPersObj {
00187 };
00188 
00189 // Setup clustering hint macros & classes
00190 #define BdbHintDeclare
00191 #define BdbHintInit(T)
00192 #define BdbHintSet(T,V)
00193 #define BdbHintDelegate(T)
00194 #define BdbHintSetDelegate(T,D)
00195 
00196 #endif // OBJYBASE
00197 
00198 // Objectivity doesn't define d_True or d_False - define then here if needbe
00199 
00200 #ifndef d_True
00201 #define d_True  ((d_Boolean)1)
00202 #endif
00203 #ifndef d_False
00204 #define d_False ((d_Boolean)0)
00205 #endif
00206 
00207 #endif // BDB_HH

 


BaBar Public Site | SLAC | News | Links | Who's Who | Contact Us

Page Owner: Jacek Becla
Last Update: October 04, 2002