TDbiRegistry Class Reference

Type safe heterogenous collection of key value pairs. More...

#include <TDbiRegistry.hxx>

Inheritance diagram for TDbiRegistry:
Inheritance graph
[legend]
Collaboration diagram for TDbiRegistry:
Collaboration graph
[legend]

List of all members.

Classes

class  TDbiRegistryKey

Public Types

typedef std::map< std::string,
TDbiRegistryItem * > 
tRegMap
typedef void(* ErrorHandler )(void)

Public Member Functions

 TDbiRegistry (bool readonly=true)
 TDbiRegistry (const TDbiRegistry &rhs)
 Deep copy constructor.
virtual ~TDbiRegistry ()
TDbiRegistryoperator= (const TDbiRegistry &rhs)
 Deep assignment.
void Merge (const TDbiRegistry &rhs)
 Copy rhs into this, respects this's locks.
unsigned int Size () const
 Return number of entries.
bool KeyExists (const char *key) const
 Check if key exists.
void RemoveKey (const char *key)
void Clear (Option_t *option="")
 Clear TDbiRegistry - deletes all items.
void Dump (void) const
 Dump to cerr.
virtual std::ostream & PrintStream (std::ostream &os) const
 Print to cout (without extraneous bits of Dump()).
virtual std::istream & ReadStream (std::istream &is)
virtual void Print (Option_t *option="") const
virtual std::ostream & PrettyPrint (std::ostream &os) const
virtual void Browse (TBrowser *)
 The default implementation crashes TBrowser, doing nothing is better.
virtual bool ValuesLocked (void) const
 Control if an existing value can be set.
virtual void LockValues (void)
 Control if an existing value can be set.
virtual void UnLockValues (void)
 Control if an existing value can be set.
virtual bool KeysLocked (void) const
 Control if new key/value pairs can be added.
virtual void LockKeys (void)
 Control if new key/value pairs can be added.
virtual void UnLockKeys (void)
 Control if new key/value pairs can be added.
void SetDirty (bool is_dirty=true)
bool IsDirty ()
void SetErrorHandler (ErrorHandler eh)
bool Get (const char *key, char &c) const
bool Get (const char *key, const char *&s) const
bool Get (const char *key, int &i) const
bool Get (const char *key, double &d) const
bool Get (const char *key, TDbiRegistry &r) const
const type_info & GetType (const char *key) const
std::string GetTypeAsString (const char *key) const
 Return "int", "double", "char", "string", "TDbiRegistry" or "void".
std::string GetValueAsString (const char *key) const
 see format.txt
char GetChar (const char *key) const
const char * GetCharString (const char *key) const
int GetInt (const char *key) const
double GetDouble (const char *key) const
TDbiRegistry GetTDbiRegistry (const char *key) const
bool Set (const char *key, char c)
bool Set (const char *key, const char *s)
bool Set (const char *key, int i)
bool Set (const char *key, double d)
bool Set (const char *key, TDbiRegistry r)
TDbiRegistryKey Key (void) const

Private Attributes

bool fValuesLocked
bool fKeysLocked
ErrorHandler fErrorHandler
tRegMap fMap
bool fDirty

Friends

class TDbiRegistryKey
 not written out

Detailed Description

Type safe heterogenous collection of key value pairs.

Stored in a std::map, keyed by a string. Values can be int, char, string, double or TDbiRegistryItem. Actuall all stored internally as TDbiRegistryItem s Contact: bv@bnl.gov

Created on: Wed Oct 25 17:13:16 2000

Definition at line 33 of file TDbiRegistry.hxx.


Member Typedef Documentation

typedef void(* TDbiRegistry::ErrorHandler)(void)

Definition at line 37 of file TDbiRegistry.hxx.

typedef std::map<std::string,TDbiRegistryItem*> TDbiRegistry::tRegMap

Definition at line 36 of file TDbiRegistry.hxx.


Constructor & Destructor Documentation

TDbiRegistry::TDbiRegistry ( bool  readonly = true  )  [explicit]

Create a TDbiRegistry. If readonly is false, any key's value can be set multiple times, otherwise only the first setting is allowed. See methods below regarding locking of keys and values.

TDbiRegistry::TDbiRegistry ( const TDbiRegistry rhs  ) 

Deep copy constructor.

Definition at line 39 of file TDbiRegistry.cxx.

References fKeysLocked, fMap, fValuesLocked, Key(), SetDirty(), and SK_DBI_Trace.

00039                                                   : TNamed(rhs)
00040 {
00041     SK_DBI_Trace( "Creating TDbiRegistry at " << (void * ) this << "  ");
00042     TDbiRegistryKey rk = rhs.Key();
00043     const char* s;
00044 
00045     while ( (s = rk()) ) fMap[s] = rhs.fMap.find(s)->second->Dup();
00046 
00047     fValuesLocked = rhs.fValuesLocked;
00048     fKeysLocked   = rhs.fKeysLocked;
00049     this->SetDirty();
00050     this->SetName(rhs.GetName());
00051 }

Here is the call graph for this function:

TDbiRegistry::~TDbiRegistry (  )  [virtual]

Definition at line 186 of file TDbiRegistry.cxx.

References fMap.

00187 {
00188     tRegMap::iterator mit = fMap.begin();
00189     while (mit != fMap.end()) {
00190         delete mit->second;
00191         ++mit;
00192     }
00193 }


Member Function Documentation

virtual void TDbiRegistry::Browse ( TBrowser *   )  [inline, virtual]

The default implementation crashes TBrowser, doing nothing is better.

Definition at line 78 of file TDbiRegistry.hxx.

00078 {}

void TDbiRegistry::Clear ( Option_t *  option = ""  ) 

Clear TDbiRegistry - deletes all items.

Definition at line 119 of file TDbiRegistry.cxx.

References fKeysLocked, fMap, fValuesLocked, SetDirty(), and SK_DBI_Warn.

Referenced by TDbiCfgPromptConfigurable::InitializeConfig(), operator=(), and TDbiConfigStream::operator>>().

00120 {
00121     if (fValuesLocked || fKeysLocked) {
00122         SK_DBI_Warn(  "Clear: can't, there are locks in \""
00123             << this->GetName() << "\"\n");
00124         return;
00125     }
00126 
00127     tRegMap::iterator mit = fMap.begin();
00128     while (mit != fMap.end()) {
00129         delete mit->second;
00130         ++mit;
00131     }
00132     fMap.clear();
00133     this->SetDirty();
00134 }

Here is the call graph for this function:

Here is the caller graph for this function:

void TDbiRegistry::Dump ( void   )  const

Dump to cerr.

Definition at line 136 of file TDbiRegistry.cxx.

References fKeysLocked, fMap, fValuesLocked, Size(), and SK_DBI_Info.

00137 {
00138     this->TNamed::Dump();
00139     tRegMap::const_iterator mit = fMap.begin();
00140     SK_DBI_Info(  "TDbiRegistry: `" << this->GetName() << "', "
00141         << this->Size() << " entries."
00142         << " (Locks: [Keys|Values] `key', `value'):\n");
00143     while (mit != fMap.end()) {
00144         SK_DBI_Info(  " [" << (fKeysLocked ? 'L' : 'U') << "|"
00145             << (fValuesLocked ? 'L' : 'U') << "] "
00146             << "`" << mit->first << "', `");
00147         mit->second->Dump();
00148         SK_DBI_Info( "'\n");
00149         ++mit;
00150     }
00151 
00152 }

Here is the call graph for this function:

bool TDbiRegistry::Get ( const char *  key,
TDbiRegistry r 
) const

Access a TDbiRegistry value. Return true and set second argument if key is found, else returns false.

bool TDbiRegistry::Get ( const char *  key,
double &  d 
) const

Access a double value. Return true and set second argument if key is found, else returns false.

Definition at line 324 of file TDbiRegistry.cxx.

References TDbiRegistryItemXxx< T >::Get(), and SK_DBI_Severe.

00325 {
00326     tRegMap::const_iterator mit = fMap.find(key);
00327     if (mit == fMap.end()) return false;
00328     // try correct type
00329     TDbiRegistryItemXxx<double>* rixd =
00330         dynamic_cast<TDbiRegistryItemXxx<double>*>(mit->second);
00331     if (rixd) {
00332         val = *(rixd->Get());
00333         return true;
00334     }
00335     // try int
00336     TDbiRegistryItemXxx<int>* rixi =
00337         dynamic_cast<TDbiRegistryItemXxx<int>*>(mit->second);
00338     if (rixi) {
00339         val = *(rixi->Get());
00340         return true;
00341     }
00342     SK_DBI_Severe( "Key " << key
00343                                  << " does not have type double or int"
00344                                  << " as required" << "  ");
00345     return false;
00346 }

Here is the call graph for this function:

bool TDbiRegistry::Get ( const char *  key,
int &  i 
) const

Access an int value. Return true and set second argument if key is found, else returns false.

bool TDbiRegistry::Get ( const char *  key,
const char *&  s 
) const

Access a string value. Return true and set second argument if key is found, else returns false.

bool TDbiRegistry::Get ( const char *  key,
char &  c 
) const

Access a char value. Return true and set second argument if key is found, else returns false.

Referenced by TDbiDatabaseManager::Config(), GetTDbiRegistry(), TDbiCfgDialog::Query(), TDbiCfgPromptConfigurable::SafeMerge(), TDbiSimFlagAssociation::Set(), TDbiRollbackDates::Set(), TDbiEpochRollback::Set(), and TDbiCfg::TDbiRegistryToString().

Here is the caller graph for this function:

char TDbiRegistry::GetChar ( const char *  key  )  const

Access a char value. Returns value if key lookup succeeds, else prints warning message. Use above Get() methods for a safer access method.

const char* TDbiRegistry::GetCharString ( const char *  key  )  const

Access a string value. Returns value if key lookup succeeds, else prints warning message. Use above Get() methods for a safer access method.

double TDbiRegistry::GetDouble ( const char *  key  )  const

Access a double value. Returns value if key lookup succeeds, else prints warning message. Use above Get() methods for a safer access method.

int TDbiRegistry::GetInt ( const char *  key  )  const

Access an int value. Returns value if key lookup succeeds, else prints warning message. Use above Get() methods for a safer access method.

TDbiRegistry TDbiRegistry::GetTDbiRegistry ( const char *  key  )  const

Access an TDbiRegistry value. Returns value if key lookup succeeds, else prints warning message. Use above Get() methods for a safer access method.

Definition at line 371 of file TDbiRegistry.cxx.

References fErrorHandler, Get(), and SK_DBI_Warn.

00372 {
00373     TDbiRegistry retval;
00374     if (Get(key,retval)) return retval;
00375     if (fErrorHandler) { fErrorHandler(); return retval; }
00376     else {
00377         SK_DBI_Warn(  "\nTDbiRegistry::GetTYPE: failed to get value for key \""
00378             << key << "\" from TDbiRegistry \"" << this->GetName()
00379             << "\".  Aborting\n\n");
00380         bool must_get_a_value = false;
00381         assert(must_get_a_value);
00382         return retval;
00383     }
00384 }

Here is the call graph for this function:

const type_info & TDbiRegistry::GetType ( const char *  key  )  const

Return the type_info of the value corresponding to the given key. If key doesn't exist, type_info for type void is returned.

Definition at line 386 of file TDbiRegistry.cxx.

References fMap.

Referenced by TDbiCfgPromptConfigurable::SafeMerge().

00387 {
00388     tRegMap::const_iterator mit = fMap.find(key);
00389     if (mit == fMap.end()) return typeid(void);
00390     return mit->second->GetType();
00391 }

Here is the caller graph for this function:

string TDbiRegistry::GetTypeAsString ( const char *  key  )  const

Return "int", "double", "char", "string", "TDbiRegistry" or "void".

Definition at line 392 of file TDbiRegistry.cxx.

References fMap.

Referenced by TDbiCfgPromptConfigurable::SafeMerge().

00393 {
00394     tRegMap::const_iterator mit = fMap.find(key);
00395     if (mit == fMap.end()) return "void";
00396     return mit->second->GetTypeAsString();
00397 }

Here is the caller graph for this function:

string TDbiRegistry::GetValueAsString ( const char *  key  )  const

see format.txt

Definition at line 399 of file TDbiRegistry.cxx.

References fMap.

Referenced by TDbiCfgPromptConfigurable::SafeMerge(), and TDbiEpochRollback::Set().

00400 {
00401     ostringstream os;
00402     tRegMap::const_iterator mit = fMap.find(key);
00403     if (mit == fMap.end()) return "";
00404     mit->second->PrintStream(os);
00405     return os.str();
00406 }

Here is the caller graph for this function:

bool TDbiRegistry::IsDirty (  )  [inline]

Definition at line 99 of file TDbiRegistry.hxx.

References fDirty.

Referenced by TDbiCfgConfigurable::Update().

00099 { return fDirty; }

Here is the caller graph for this function:

TDbiRegistry::TDbiRegistryKey TDbiRegistry::Key ( void   )  const

Definition at line 219 of file TDbiRegistry.cxx.

References TDbiRegistryKey.

Referenced by Merge(), operator=(), TDbiCfgDialog::Query(), TDbiCfgPromptConfigurable::SafeMerge(), TDbiRegistry(), and TDbiCfg::TDbiRegistryToString().

00220 {
00221     return TDbiRegistry::TDbiRegistryKey(this);
00222 }

Here is the caller graph for this function:

bool TDbiRegistry::KeyExists ( const char *  key  )  const

Check if key exists.

Definition at line 105 of file TDbiRegistry.cxx.

References fMap.

Referenced by TDbiCfgPromptConfigurable::SafeMerge().

00106 {
00107     return fMap.find(key) != fMap.end();
00108 }

Here is the caller graph for this function:

virtual bool TDbiRegistry::KeysLocked ( void   )  const [inline, virtual]

Control if new key/value pairs can be added.

Definition at line 88 of file TDbiRegistry.hxx.

References fKeysLocked.

Referenced by TDbiConfigStream::operator>>(), and TDbiCfgPromptConfigurable::SafeMerge().

00088 { return fKeysLocked; }

Here is the caller graph for this function:

virtual void TDbiRegistry::LockKeys ( void   )  [inline, virtual]

Control if new key/value pairs can be added.

Definition at line 90 of file TDbiRegistry.hxx.

References fKeysLocked.

Referenced by TDbiCfgPromptConfigurable::InitializeConfig(), TDbiCfgPromptConfigurable::LockKeys(), TDbiConfigStream::operator>>(), and TDbiCfgPromptConfigurable::SafeMerge().

00090 { fKeysLocked = true; } //*MENU*

Here is the caller graph for this function:

virtual void TDbiRegistry::LockValues ( void   )  [inline, virtual]

Control if an existing value can be set.

Definition at line 83 of file TDbiRegistry.hxx.

References fValuesLocked.

Referenced by TDbiCfgPromptConfigurable::LockValues(), TDbiConfigStream::operator>>(), TDbiCfgConfigurable::Set(), TDbiCfgDialog::SetCurrent(), and TDbiCfgDialog::SetDefault().

00083 { fValuesLocked = true; } //*MENU*

Here is the caller graph for this function:

void TDbiRegistry::Merge ( const TDbiRegistry rhs  ) 

Copy rhs into this, respects this's locks.

Definition at line 77 of file TDbiRegistry.cxx.

References fKeysLocked, fMap, fValuesLocked, Key(), SetDirty(), and SK_DBI_Warn.

Referenced by TDbiCfgConfigurable::Set().

00078 {
00079     if (this == &rhs) return;
00080 
00081     TDbiRegistryKey rk = rhs.Key();
00082     const char* s;
00083     while ( (s = rk()) ) {
00084         tRegMap::iterator mit = fMap.find(s);
00085         bool exists = mit != fMap.end();
00086 
00087         if (fKeysLocked && !exists) {
00088             SK_DBI_Warn(  "Merge: can't, add new key " << s <<", keys locked."
00089                 << "  merger=" << this->GetName()
00090                 << ", mergie=" << rhs.GetName() << "  ");
00091             continue;
00092         }
00093         if (exists && fValuesLocked) {
00094             SK_DBI_Warn(  "Merge: can't, merge key " << s <<", values locked."
00095                 << "  merger=" << this->GetName()
00096                 << ", mergie=" << rhs.GetName() << "  ");
00097             continue;
00098         }
00099         if (exists) delete mit->second;
00100         fMap[s] = rhs.fMap.find(s)->second->Dup();
00101     }
00102     this->SetDirty();
00103 }

Here is the call graph for this function:

Here is the caller graph for this function:

TDbiRegistry & TDbiRegistry::operator= ( const TDbiRegistry rhs  ) 

Deep assignment.

Definition at line 53 of file TDbiRegistry.cxx.

References Clear(), fKeysLocked, fMap, fValuesLocked, Key(), SetDirty(), Size(), UnLockKeys(), and UnLockValues().

00054 {
00055     if (this == &rhs) return *this;
00056 
00057     UnLockValues();
00058     UnLockKeys();
00059 
00060     // If we are already holding something - clear it.
00061     if (Size() != 0) Clear();
00062 
00063     TDbiRegistryKey rk = rhs.Key();
00064     const char* s;
00065 
00066     while ( (s = rk()) ) fMap[s] = rhs.fMap.find(s)->second->Dup();
00067 
00068     fValuesLocked = rhs.fValuesLocked;
00069     fKeysLocked   = rhs.fKeysLocked;
00070     this->SetDirty();
00071     this->SetName(rhs.GetName());
00072 
00073     // Do like copy ctor.
00074     return *this;
00075 }

Here is the call graph for this function:

virtual std::ostream& TDbiRegistry::PrettyPrint ( std::ostream &  os  )  const [virtual]

Referenced by Print(), and TDbiCfgPromptConfigurable::SafeMerge().

Here is the caller graph for this function:

void TDbiRegistry::Print ( Option_t *  option = ""  )  const [virtual]

Definition at line 180 of file TDbiRegistry.cxx.

References PrettyPrint().

00181 {
00182     this->PrettyPrint(cout);
00183 }

Here is the call graph for this function:

std::ostream & TDbiRegistry::PrintStream ( std::ostream &  os  )  const [virtual]

Print to cout (without extraneous bits of Dump()).

Definition at line 461 of file TDbiRegistry.cxx.

References fMap.

Referenced by operator<<(), and TDbiConfigStream::operator<<().

00462 {
00463     os << "['" << this->GetName() << "'";
00464 
00465     tRegMap::const_iterator mit, done = fMap.end();
00466     for (mit = fMap.begin(); mit != done; ++mit) {
00467         os << " '" << mit->first << "'=(";
00468         os << mit->second->GetTypeAsString();
00469         os << ")";
00470         mit->second->PrintStream(os);
00471     }
00472 
00473     os << "]";
00474     return os;
00475 }

Here is the caller graph for this function:

std::istream & TDbiRegistry::ReadStream ( std::istream &  is  )  [virtual]

Definition at line 484 of file TDbiRegistry.cxx.

References bail(), fMap, Util::read_quoted_string(), and TDbiRegistryItem::ReadStream().

Referenced by TDbiConfigStream::operator>>().

00485 {
00486     TDbiRegistry reg;
00487 
00488     char c;
00489     if (!is.get(c)) return bail(is);
00490     if (c != '[') {
00491         is.putback(c);
00492         return bail(is);
00493     }
00494     string name = Util::read_quoted_string(is);
00495     reg.SetName(name.c_str());
00496 
00497     while (is.get(c)) {
00498         if (isspace(c)) continue;
00499         if (c == ']') {
00500             *this = reg;
00501             return is;
00502         }
00503         is.putback(c);
00504 
00505         // get the key
00506         string key = read_quoted_string(is);
00507         if (key == "") return bail(is);
00508 
00509         // skip the "="
00510         if (!is.get(c)) return bail(is);
00511 
00512         // get the "("
00513         if (!is.get(c) || c != '(') {
00514             is.putback(c);
00515             return bail(is);
00516         }
00517 
00518         // get the type
00519         string type;
00520         while (is.get(c)) {
00521             if (c == ')') break;
00522             type += c;
00523         }
00524 
00525         // factory:
00526         TDbiRegistryItem* ri = 0;
00527         if (type == "char")
00528             ri = new TDbiRegistryItemXxx<char>();
00529         else if (type == "int")
00530             ri = new TDbiRegistryItemXxx<int>();
00531         else if (type == "double")
00532             ri = new TDbiRegistryItemXxx<double>();
00533         else if (type == "string")
00534             ri = new TDbiRegistryItemXxx<const char*>();
00535         else if (type == "TDbiRegistry")
00536             ri = new TDbiRegistryItemXxx<TDbiRegistry>();
00537         else return bail(is);
00538 
00539         ri->ReadStream(is);
00540         reg.fMap[key] = ri;
00541     }
00542     return is;
00543 
00544 }

Here is the call graph for this function:

Here is the caller graph for this function:

void TDbiRegistry::RemoveKey ( const char *  key  ) 

Definition at line 110 of file TDbiRegistry.cxx.

References fMap, and SetDirty().

Referenced by TDbiDatabaseManager::Config(), TDbiSimFlagAssociation::Set(), TDbiRollbackDates::Set(), and TDbiEpochRollback::Set().

00111 {
00112     tRegMap::iterator dead = fMap.find(key);
00113     if (dead == fMap.end()) return;
00114     fMap.erase(dead);
00115     delete dead->second;
00116     this->SetDirty();
00117 }

Here is the call graph for this function:

Here is the caller graph for this function:

bool TDbiRegistry::Set ( const char *  key,
TDbiRegistry  r 
)
bool TDbiRegistry::Set ( const char *  key,
double  d 
)
bool TDbiRegistry::Set ( const char *  key,
int  i 
)
bool TDbiRegistry::Set ( const char *  key,
const char *  s 
)

Definition at line 264 of file TDbiRegistry.cxx.

References fKeysLocked, fMap, fValuesLocked, SetDirty(), and SK_DBI_Warn.

00265 {
00266     tRegMap::iterator mit = fMap.find(key);
00267     if (mit != fMap.end()) {    // Found it
00268         if (fValuesLocked) {
00269             SK_DBI_Warn(  "Set: Values are locked - not overwriting `"
00270                 << key << "\" with \"" << val << "\" in registry \"" << this->GetName() << "\"\n");
00271             return false;
00272         }
00273         if (! dynamic_cast<TDbiRegistryItemXxx<const char*>*>(mit->second) ) {
00274             SK_DBI_Warn(  "Set: attempt to overwrite old value for key \""
00275                 << key << "\" with different type value "
00276                 << val << " in registry \"" << this->GetName() << "\"\n");
00277             return false;
00278         }
00279         delete mit->second;
00280         fMap.erase(mit);
00281     }
00282     else {                      // didn't find it
00283         if (fKeysLocked) {
00284             SK_DBI_Warn(  "TDbiRegistry::Set: Keys are locked - not adding `"
00285                 << key << "' in registry \"" << this->GetName() << "\"\n");
00286             return false;
00287         }
00288     }
00289 
00290     char** cpp = new char*;
00291     (*cpp) = new char [strlen(val)+1];
00292     strcpy(*cpp,val);
00293     const char** ccpp = const_cast<const char**>(cpp);
00294     TDbiRegistryItem* ri = new TDbiRegistryItemXxx< const char* >(ccpp);
00295     fMap[key] = ri;
00296     this->SetDirty();
00297     return true;
00298 }

Here is the call graph for this function:

bool TDbiRegistry::Set ( const char *  key,
char  c 
)

Set the value associated with the given key. Return false if locks prevent setting or if type mismatch.

Referenced by TDbiCfgDialog::Query(), TDbiCfgPromptConfigurable::SafeMerge(), TDbiCfgPromptConfigurable::Set(), and TDbiCfg::StringToTDbiRegistry().

Here is the caller graph for this function:

void TDbiRegistry::SetDirty ( bool  is_dirty = true  )  [inline]

Access an internal "dirty" flag TDbiRegistry maintains (but does not use) It will be set any time a non-const method is accessed, or explicitly via SetDirty(). Initially a TDbiRegistry is dirty (original sin?).

Definition at line 98 of file TDbiRegistry.hxx.

References fDirty.

Referenced by Clear(), TDbiCfgPromptConfigurable::InitializeConfig(), Merge(), operator=(), RemoveKey(), Set(), TDbiCfgPromptConfigurable::Set(), TDbiRegistry(), and TDbiCfgConfigurable::Update().

00098 { fDirty = is_dirty; }

Here is the caller graph for this function:

void TDbiRegistry::SetErrorHandler ( ErrorHandler  eh  )  [inline]

Definition at line 102 of file TDbiRegistry.hxx.

References fErrorHandler.

00102 { fErrorHandler = eh; }

unsigned int TDbiRegistry::Size (  )  const [inline]

Return number of entries.

Definition at line 56 of file TDbiRegistry.hxx.

References fMap.

Referenced by Dump(), and operator=().

00056 { return fMap.size(); }

Here is the caller graph for this function:

virtual void TDbiRegistry::UnLockKeys ( void   )  [inline, virtual]

Control if new key/value pairs can be added.

Definition at line 92 of file TDbiRegistry.hxx.

References fKeysLocked.

Referenced by TDbiCfgPromptConfigurable::InitializeConfig(), operator=(), TDbiConfigStream::operator>>(), and TDbiCfgPromptConfigurable::UnLockKeys().

00092 { fKeysLocked = false; } //*MENU*

Here is the caller graph for this function:

virtual void TDbiRegistry::UnLockValues ( void   )  [inline, virtual]
virtual bool TDbiRegistry::ValuesLocked ( void   )  const [inline, virtual]

Control if an existing value can be set.

Definition at line 81 of file TDbiRegistry.hxx.

References fValuesLocked.

Referenced by TDbiConfigStream::operator>>(), and TDbiCfgPromptConfigurable::SafeMerge().

00081 { return fValuesLocked; }

Here is the caller graph for this function:


Friends And Related Function Documentation

friend class TDbiRegistryKey [friend]

not written out

Definition at line 186 of file TDbiRegistry.hxx.

Referenced by Key().


Member Data Documentation

bool TDbiRegistry::fDirty [private]

Definition at line 190 of file TDbiRegistry.hxx.

Referenced by IsDirty(), and SetDirty().

Definition at line 184 of file TDbiRegistry.hxx.

Referenced by GetTDbiRegistry(), and SetErrorHandler().

bool TDbiRegistry::fKeysLocked [private]

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

Generated on 11 Aug 2013 for SKDatabase by  doxygen 1.6.1