![]() |
|
|
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/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