TDbiRegistryItemXxx< T > Class Template Reference

Encapsulates a value of type T (really!). More...

#include <TDbiRegistryItemXxx.hxx>

Inheritance diagram for TDbiRegistryItemXxx< T >:
Inheritance graph
[legend]
Collaboration diagram for TDbiRegistryItemXxx< T >:
Collaboration graph
[legend]

List of all members.

Public Member Functions

 TDbiRegistryItemXxx ()
 ~TDbiRegistryItemXxx ()
void Dump () const
void Print (Option_t *="") const
virtual std::ostream & PrintStream (std::ostream &os) const
virtual std::istream & ReadStream (std::istream &is)
virtual const type_info & GetType () const
virtual const char * GetTypeAsString () const
template<>
void Streamer (TBuffer &buf)
template<>
void Streamer (TBuffer &buf)
template<>
std::ostream & PrintStream (std::ostream &os) const
template<>
std::istream & ReadStream (std::istream &is)
template<>
 ~TDbiRegistryItemXxx ()
template<>
TDbiRegistryItemDup (void) const
template<>
TDbiRegistryItemDup (void) const
template<>
void Streamer (TBuffer &buf)
template<>
void Streamer (TBuffer &buf)
template<>
 ~TDbiRegistryItemXxx ()
template<>
std::ostream & PrintStream (std::ostream &os) const
template<>
std::istream & ReadStream (std::istream &is)
template<>
const char * GetTypeAsString (void) const
template<>
const char * GetTypeAsString (void) const
template<>
const char * GetTypeAsString (void) const
template<>
const char * GetTypeAsString (void) const
template<>
const char * GetTypeAsString (void) const
template<>
std::ostream & PrintStream (std::ostream &os) const
template<>
std::istream & ReadStream (std::istream &is)

Private Member Functions

 TDbiRegistryItemXxx (T *data)
T * Get (void)
void Set (T *data)
TDbiRegistryItemDup (void) const

Private Attributes

T * fData

Friends

class TDbiRegistry

Detailed Description

template<class T>
class TDbiRegistryItemXxx< T >

Encapsulates a value of type T (really!).

Id
TDbiRegistryItemXxx.hxx,v 1.1 2011/01/18 05:49:20 finch Exp

Contact: A.Finch@lancaster.ac.uk bv@bnl.gov

Created on: Wed Oct 25 17:11:44 2000

Definition at line 28 of file TDbiRegistryItemXxx.hxx.


Constructor & Destructor Documentation

template<class T>
TDbiRegistryItemXxx< T >::TDbiRegistryItemXxx (  ) 
template<class T >
TDbiRegistryItemXxx< T >::~TDbiRegistryItemXxx (  )  [inline]

Definition at line 97 of file TDbiRegistryItemXxx.hxx.

References TDbiRegistryItemXxx< T >::fData.

00098 { 
00099     if (fData) delete fData; 
00100 }

template<class T >
TDbiRegistryItemXxx< T >::TDbiRegistryItemXxx ( T *  data  )  [inline, private]

Definition at line 92 of file TDbiRegistryItemXxx.hxx.

00092                                                    : fData(data) 
00093 { 
00094 }

template<>
TDbiRegistryItemXxx< const char * >::~TDbiRegistryItemXxx (  )  [inline]

Definition at line 206 of file TDbiRegistryItemXxx.cxx.

References TDbiRegistryItemXxx< T >::fData.

00207 {
00208     if (fData) {
00209         if (*fData) {
00210             delete [] *fData;
00211             *fData = 0;
00212         }
00213         delete fData;
00214         fData = 0;
00215     }
00216 }

template<>
TDbiRegistryItemXxx< const char * >::~TDbiRegistryItemXxx (  )  [inline]

Member Function Documentation

template<class T>
void TDbiRegistryItemXxx< T >::Dump ( void   )  const [inline]

Definition at line 37 of file TDbiRegistryItemXxx.hxx.

References TDbiRegistryItemXxx< T >::fData.

00037 { std::cerr << *fData; }

template<>
TDbiRegistryItem * TDbiRegistryItemXxx< const char * >::Dup ( void   )  const [inline, virtual]

Implements TDbiRegistryItem.

template<>
TDbiRegistryItem * TDbiRegistryItemXxx< const char * >::Dup ( void   )  const [inline, virtual]

Implements TDbiRegistryItem.

Definition at line 219 of file TDbiRegistryItemXxx.cxx.

References TDbiRegistryItemXxx< T >::fData.

00220 {
00221     char** ppc = new char*;
00222     (*ppc) = new char [strlen(*fData)+1];
00223     strcpy(*ppc,*fData);
00224     const char** ppcc = const_cast<const char**>(ppc);
00225     return new TDbiRegistryItemXxx< const char* >(ppcc);
00226 }

template<class T >
TDbiRegistryItem * TDbiRegistryItemXxx< T >::Dup ( void   )  const [inline, private, virtual]

Implements TDbiRegistryItem.

Definition at line 103 of file TDbiRegistryItemXxx.hxx.

References TDbiRegistryItemXxx< T >::fData.

00104 {
00105     return new TDbiRegistryItemXxx<T>(new T (*fData));
00106 }

template<class T >
T * TDbiRegistryItemXxx< T >::Get ( void   )  [inline, private]

Definition at line 113 of file TDbiRegistryItemXxx.hxx.

References TDbiRegistryItemXxx< T >::fData.

Referenced by TDbiRegistry::Get().

00114 {
00115     return fData; 
00116 }

Here is the caller graph for this function:

template<class T>
virtual const type_info& TDbiRegistryItemXxx< T >::GetType (  )  const [inline, virtual]

Implements TDbiRegistryItem.

Definition at line 48 of file TDbiRegistryItemXxx.hxx.

00048 { return typeid(T); }

template<>
const char * TDbiRegistryItemXxx< TDbiRegistry >::GetTypeAsString ( void   )  const [inline, virtual]

Implements TDbiRegistryItem.

template<>
const char * TDbiRegistryItemXxx< const char * >::GetTypeAsString ( void   )  const [inline, virtual]

Implements TDbiRegistryItem.

template<>
const char * TDbiRegistryItemXxx< double >::GetTypeAsString ( void   )  const [inline, virtual]

Implements TDbiRegistryItem.

template<>
const char * TDbiRegistryItemXxx< int >::GetTypeAsString ( void   )  const [inline, virtual]

Implements TDbiRegistryItem.

template<>
const char * TDbiRegistryItemXxx< char >::GetTypeAsString ( void   )  const [inline, virtual]

Implements TDbiRegistryItem.

template<class T>
virtual const char* TDbiRegistryItemXxx< T >::GetTypeAsString ( void   )  const [inline, virtual]

Implements TDbiRegistryItem.

Definition at line 49 of file TDbiRegistryItemXxx.hxx.

00049 { return "void"; }

template<class T>
void TDbiRegistryItemXxx< T >::Print ( Option_t *  = ""  )  const [inline, virtual]

Implements TDbiRegistryItem.

Definition at line 38 of file TDbiRegistryItemXxx.hxx.

References TDbiRegistryItemXxx< T >::fData.

00038 { std::cout << *fData; }

template<>
std::ostream & TDbiRegistryItemXxx< TDbiRegistry >::PrintStream ( std::ostream &  os  )  const [inline, virtual]

Implements TDbiRegistryItem.

template<>
std::ostream & TDbiRegistryItemXxx< const char * >::PrintStream ( std::ostream &  os  )  const [inline, virtual]

Implements TDbiRegistryItem.

template<>
std::ostream & TDbiRegistryItemXxx< const char * >::PrintStream ( std::ostream &  os  )  const [inline, virtual]

Implements TDbiRegistryItem.

Definition at line 179 of file TDbiRegistryItemXxx.cxx.

References TDbiRegistryItemXxx< T >::fData.

00180 {
00181     os << "'" << *fData << "'";
00182     return os;
00183 }

template<class T>
virtual std::ostream& TDbiRegistryItemXxx< T >::PrintStream ( std::ostream &  os  )  const [inline, virtual]

Implements TDbiRegistryItem.

Definition at line 40 of file TDbiRegistryItemXxx.hxx.

References TDbiRegistryItemXxx< T >::fData.

00040                                                           { 
00041         return os << *fData; 
00042     }

template<>
std::istream & TDbiRegistryItemXxx< TDbiRegistry >::ReadStream ( std::istream &  is  )  [inline, virtual]

Implements TDbiRegistryItem.

template<>
std::istream & TDbiRegistryItemXxx< const char * >::ReadStream ( std::istream &  is  )  [inline, virtual]

Implements TDbiRegistryItem.

template<>
std::istream & TDbiRegistryItemXxx< const char * >::ReadStream ( std::istream &  is  )  [inline, virtual]

Implements TDbiRegistryItem.

Definition at line 187 of file TDbiRegistryItemXxx.cxx.

References TDbiRegistryItemXxx< T >::fData, and Util::read_quoted_string().

00188 {
00189   std::string stot = Util::read_quoted_string(is);
00190 
00191     if (!fData) {
00192         char** ppchar = new char*;
00193         *ppchar = 0;
00194         fData = const_cast<const char**>(ppchar);
00195     }
00196     if (*fData) delete [] *fData;
00197 
00198     char* pchar = new char[stot.length() + 1];
00199     strcpy(pchar,stot.c_str());
00200     *fData = const_cast<const char*>(pchar);
00201     return is;
00202 }

Here is the call graph for this function:

template<class T>
virtual std::istream& TDbiRegistryItemXxx< T >::ReadStream ( std::istream &  is  )  [inline, virtual]

Implements TDbiRegistryItem.

Definition at line 43 of file TDbiRegistryItemXxx.hxx.

References TDbiRegistryItemXxx< T >::fData.

00043                                                    {
00044         if (!fData) fData = new T;
00045         return is >> *fData;
00046     }

template<class T >
void TDbiRegistryItemXxx< T >::Set ( T *  data  )  [inline, private]

Definition at line 119 of file TDbiRegistryItemXxx.hxx.

References TDbiRegistryItemXxx< T >::fData.

00120 {
00121     if (fData) delete fData;
00122     fData = data; 
00123 }

template<>
void TDbiRegistryItemXxx< char >::Streamer ( TBuffer &  buf  )  [inline]
template<>
void TDbiRegistryItemXxx< const char * >::Streamer ( TBuffer &  buf  )  [inline]
template<>
void TDbiRegistryItemXxx< char >::Streamer ( TBuffer &  buf  )  [inline]

Definition at line 160 of file TDbiRegistryItemXxx.cxx.

References TDbiRegistryItemXxx< T >::fData, and TDbiRegistryItemXxx< T >::Streamer().

00161 {
00162     if (buf.IsReading()) {
00163         Version_t v = buf.ReadVersion();
00164         if (v) { }
00165         TDbiRegistryItem::Streamer(buf);
00166 
00167         char c;
00168         buf >> c;
00169         fData = new char(c);
00170     }
00171     else {
00172         buf.WriteVersion(IsA());
00173         TDbiRegistryItem::Streamer(buf);
00174         buf << *fData;
00175     }
00176 }

Here is the call graph for this function:

template<>
void TDbiRegistryItemXxx< T >::Streamer ( TBuffer &  buf  )  [inline]

Definition at line 127 of file TDbiRegistryItemXxx.cxx.

References TDbiRegistryItemXxx< T >::fData.

Referenced by TDbiRegistryItemXxx< T >::Streamer().

00128 {
00129     if (buf.IsReading()) {
00130         Version_t v = buf.ReadVersion();
00131         if (v) { }
00132         TDbiRegistryItem::Streamer(buf);
00133 
00134         std::string str = "";
00135         char x[2];
00136         x[1] = '\0';
00137 
00138         do {                    // read out string one byte at a time
00139             buf >> x[0];
00140             str += x;
00141         } while (x[0]);
00142 
00143         char** ppchar = new char*;
00144         *ppchar = new char[str.length() + 1];
00145         strcpy(*ppchar,str.c_str());
00146         (*ppchar)[str.length()] = '\0'; // paranoia
00147         fData = const_cast<const char**>(ppchar);
00148     }
00149     else {
00150         buf.WriteVersion(IsA());
00151         TDbiRegistryItem::Streamer(buf);
00152         buf << (*fData);
00153     }
00154 
00155 
00156 }

Here is the caller graph for this function:


Friends And Related Function Documentation

template<class T>
friend class TDbiRegistry [friend]

Definition at line 32 of file TDbiRegistryItemXxx.hxx.


Member Data Documentation

template<class T>
T* TDbiRegistryItemXxx< T >::fData [private]

The documentation for this class was generated from the following file:

Generated on 11 Aug 2013 for SKDatabase by  doxygen 1.6.1