Main Page | Class Hierarchy | Class List | File List | Class Members | File Members

StDbElementIndex.cc

Go to the documentation of this file.
00001 /*************************************************************************** 00002 * 00003 * $Id: StDbElementIndex.cc,v 1.1 2001/01/22 18:37:53 porter Exp $ 00004 * 00005 * Author: R. Jeff Porter 00006 *************************************************************************** 00007 * 00008 * Description: Simple name-value pair index set for selecting elementID's 00009 * from the database 00010 * 00011 *************************************************************************** 00012 * 00013 * $Log: StDbElementIndex.cc,v $ 00014 * Revision 1.1 2001/01/22 18:37:53 porter 00015 * Update of code needed in next year running. This update has little 00016 * effect on the interface (only 1 method has been changed in the interface). 00017 * Code also preserves backwards compatibility so that old versions of 00018 * StDbLib can read new table structures. 00019 * -Important features: 00020 * a. more efficient low-level table structure (see StDbSql.cc) 00021 * b. more flexible indexing for new systems (see StDbElememtIndex.cc) 00022 * c. environment variable override KEYS for each database 00023 * d. StMessage support & clock-time logging diagnostics 00024 * -Cosmetic features 00025 * e. hid stl behind interfaces (see new *Impl.* files) to again allow rootcint access 00026 * f. removed codes that have been obsolete for awhile (e.g. db factories) 00027 * & renamed some classes for clarity (e.g. tableQuery became StDataBaseI 00028 * and mysqlAccessor became StDbSql) 00029 * 00030 * 00031 **************************************************************************/ 00032 #include "StDbElementIndex.hh" 00033 #include <string.h> 00034 00035 StDbElementIndex::StDbElementIndex() { clearIndex(); }; 00036 00037 StDbElementIndex::StDbElementIndex(StDbElementIndex& inval) { 00038 00039 clearIndex(); 00040 mnumIndeces = inval.getNumIndeces(); 00041 inval.resetCounter(); 00042 char* ctest; 00043 int ival; 00044 while ( (ctest=inval.printNextIndex(ival)) ){ 00045 strcpy(mnvals[mcurrent].iname,ctest); 00046 mnvals[mcurrent].ival = ival; 00047 mcurrent++; 00048 } 00049 resetCounter(); 00050 inval.resetCounter(); 00051 } 00052 00054 void 00055 StDbElementIndex::addElementIndex(StDbElementIndex* inval) { 00056 00057 if(!inval) return; 00058 clearIndex(); 00059 mnumIndeces = inval->getNumIndeces(); 00060 inval->resetCounter(); 00061 char* ctest; 00062 int ival; 00063 while ( (ctest=inval->printNextIndex(ival))){ 00064 strcpy(mnvals[mcurrent].iname,ctest); 00065 mnvals[mcurrent].ival = ival; 00066 mcurrent++; 00067 } 00068 00069 resetCounter(); 00070 inval->resetCounter(); 00071 00072 } 00074 00075 int 00076 StDbElementIndex::addNameValuePair(const char* name, int ival){ 00077 00078 strcpy(mnvals[mnumIndeces].iname,name); 00079 mnvals[mnumIndeces].ival = ival; 00080 int retVal=mnumIndeces; 00081 mnumIndeces++; 00082 return retVal; 00083 }; 00084 00086 00087 char* 00088 StDbElementIndex::getIndexName(int indexNumber){ 00089 char* retVal=0; 00090 if(indexNumber<mnumIndeces){ 00091 retVal = new char[strlen((char*)mnvals[indexNumber].iname)+1]; 00092 strcpy(retVal,(char*)mnvals[indexNumber].iname); 00093 } 00094 return retVal; 00095 } 00096 00098 00099 char* 00100 StDbElementIndex::getNextIndex(int& indexVal) { 00101 char* retVal=0; 00102 if(mcurrent<mnumIndeces){ 00103 retVal = new char[strlen((char*)mnvals[mcurrent].iname)+1]; 00104 strcpy(retVal,(char*)mnvals[mcurrent].iname); 00105 indexVal=mnvals[mcurrent].ival; 00106 mcurrent++; 00107 } 00108 return retVal; 00109 } 00110 00112 char* 00113 StDbElementIndex::printNextIndex(int& indexVal) { 00114 char* retVal=0; 00115 if(mcurrent<mnumIndeces){ 00116 retVal = (char*)mnvals[mcurrent].iname; 00117 indexVal=mnvals[mcurrent].ival; 00118 mcurrent++; 00119 } 00120 return retVal; 00121 } 00123 00124 00125 00126

Generated on Thu Aug 24 14:45:26 2006 for Doxygen by doxygen 1.3.7