1 #ifndef CORELIB___NCBIREG__HPP
2 #define CORELIB___NCBIREG__HPP
92 fInternalSpaces = 0x20,
95 fSectionCase = 0x1000,
97 fSectionlessEntries = 0x4000,
99 fPlaintextAllowed = 0x10000,
100 fInSectionComments = 0x20000,
102 fInternalCheckedAndLocked = 0x40000,
103 fCoreLayers = fTransient | fPersistent | fJustCore,
104 fAllLayers = fTransient | fPersistent | fNotJustCore,
105 fCaseFlags = fSectionCase | fEntryCase
129 void SetModifiedFlag(
bool modified,
TFlags flags = fPersistent);
162 const string&
Get(
const string& section,
167 bool HasEntry(
const string& section,
178 string GetString(
const string& section,
180 const string& default_value,
193 string GetEncryptedString(
const string& section,
196 const string& password =
kEmptyStr)
const;
214 int GetInt(
const string& section,
218 EErrAction err_action =
eThrow)
const;
228 bool GetBool(
const string& section,
232 EErrAction err_action =
eThrow)
const;
242 double GetDouble(
const string& section,
244 double default_value,
246 EErrAction err_action =
eThrow)
const;
252 const string& default_value,
256 return GetString(section, name, default_value,
flags);
265 return GetInt(section, name, default_value,
flags, err_action);
274 return GetBool(section, name, default_value,
flags, err_action);
279 double default_value,
283 return GetDouble(section, name, default_value,
flags, err_action);
300 const string& GetComment(
const string& section =
kEmptyStr,
302 TFlags
flags = 0)
const;
313 void EnumerateInSectionComments(
const string& section,
314 list<string>* comments,
315 TFlags
flags = fAllLayers)
const;
325 void EnumerateSections(list<string>* sections,
326 TFlags
flags = fAllLayers)
const;
337 void EnumerateEntries(
const string& section,
339 TFlags
flags = fAllLayers)
const;
344 void ReadLock (
void);
345 void WriteLock(
void);
350 static bool IsNameSection(
const string&
str, TFlags
flags);
353 static bool IsNameEntry(
const string&
str, TFlags
flags);
359 #ifdef NCBI_COMPILER_ICC
366 fLayerFlags = fAllLayers | fJustCore,
367 fTPFlags = fTransient | fPersistent
370 static void x_CheckFlags(
const string& func, TFlags&
flags,
377 virtual const string&
x_Get(
const string& section,
const string& name,
379 virtual bool x_HasEntry(
const string& section,
const string& name,
418 static TFlags AssessImpact(TFlags
flags, EOperation op);
421 void Clear(TFlags
flags = fAllLayers);
470 bool Set(
const string& section,
484 return Set(section, name,
value,
flags, comment);
511 return Set(section, name, to_string(
value),
flags, comment);
519 bool Unset(
const string& section,
const string& name, TFlags
flags = 0);
545 bool SetComment(
const string& comment,
550 #ifdef NCBI_COMPILER_ICC
558 virtual bool x_Set(
const string& section,
const string& name,
560 const string& comment) = 0;
561 virtual bool x_Unset(
const string& section,
const string& name,
563 virtual bool x_SetComment(
const string& comment,
const string& section,
587 : m_IsModified(
false),
588 m_Sections((
flags & fSectionCase) == 0 ?
NStr::eNocase :
NStr::eCase),
592 #ifdef NCBI_COMPILER_ICC
598 bool x_Empty(TFlags
flags)
const;
601 const string& x_Get(
const string& section,
const string& name,
603 bool x_HasEntry(
const string& section,
const string& name, TFlags
flags)
605 const string& x_GetComment(
const string& section,
const string& name,
607 void x_Enumerate(
const string& section, list<string>&
entries,
610 void x_Clear(TFlags
flags);
611 bool x_Set(
const string& section,
const string& name,
613 const string& comment);
614 bool x_Unset(
const string& section,
const string& name, TFlags
flags);
615 bool x_SetComment(
const string& comment,
const string& section,
616 const string& name, TFlags
flags);
658 #ifdef NCBI_COMPILER_ICC
668 ePriority_Default = 0,
699 TFlags
flags = 0)
const;
707 bool x_Empty(TFlags
flags)
const;
710 bool x_Modified(TFlags
flags)
const;
711 void x_SetModifiedFlag(
bool modified, TFlags
flags);
712 const string& x_Get(
const string& section,
const string& name,
714 bool x_HasEntry(
const string& section,
const string& name, TFlags
flags)
716 const string& x_GetComment(
const string& section,
const string& name,
718 void x_Enumerate(
const string& section, list<string>&
entries,
720 void x_ChildLockAction(FLockAction action);
752 #ifdef NCBI_COMPILER_ICC
760 void x_SetModifiedFlag(
bool modified,
TFlags flags);
761 const string& x_Get(
const string& section,
const string& name,
763 bool x_HasEntry(
const string& section,
const string& name,
765 const string& x_GetComment(
const string& section,
const string& name,
767 void x_Enumerate(
const string& section, list<string>&
entries,
769 void x_ChildLockAction(FLockAction action);
772 bool x_Set(
const string& section,
const string& name,
774 const string& comment);
775 bool x_Unset(
const string& section,
const string& name,
TFlags flags);
776 bool x_SetComment(
const string& comment,
const string& section,
852 int metareg_flags = 0,
863 void x_SetModifiedFlag(
bool modified,
TFlags flags);
864 const string& x_Get(
const string& section,
const string& name,
866 bool x_HasEntry(
const string& section,
const string& name,
868 const string& x_GetComment(
const string& section,
const string& name,
870 void x_Enumerate(
const string& section, list<string>&
entries,
872 void x_ChildLockAction(FLockAction action);
875 bool x_Set(
const string& section,
const string& name,
877 const string& comment);
878 bool x_Unset(
const string& section,
const string& name,
TFlags flags);
879 bool x_SetComment(
const string& comment,
const string& section,
916 eTransient = fTransient,
918 eOverride = fOverride,
919 eNoOverride = fNoOverride,
920 eTruncate = fTruncate,
921 eNoTruncate = fNoTruncate
960 bool IncludeNcbircIfAllowed(TFlags
flags = fWithNcbirc);
971 const string& x_GetComment(
const string& section,
const string& name,
978 ePriority_File = ePriority_Reserved,
981 ePriority_RuntimeOverrides
1018 virtual const char* GetErrCodeString(
void)
const override;
1023 std::string::size_type);
1035 :
public CGuard<IRegistry, SSimpleReadLock<IRegistry> >
CRegistry{Read,Write}Guard –.
bool Empty(const CNcbiOstrstream &src)
void Read(CObjectIStream &in, TObjectPtr object, const CTypeRef &type)
void Write(CObjectOStream &out, TConstObjectPtr object, const CTypeRef &type)
map< string, CRef< IRegistry > > TNameMap
int TFlags
Binary OR of "EFlags".
virtual void x_ChildLockAction(FLockAction)
int TPriority
Not restricted to ePriority_*.
void x_SetModifiedFlag(bool modified, TFlags)
static const char * sm_InSectionCommentName
Entry name for an in-section comment.
map< string, TFlags > TClearedEntries
map< string, SEntry, PNocase_Conditional > TEntries
set< string > m_BaseRegNames
NCBI_EXCEPTION_DEFAULT2(CRegistryException, CParseTemplException< CCoreException >, std::string::size_type)
multimap< TPriority, CRef< IRegistry > > TPriorityMap
static const char * sm_SysRegName
CRef< CTwoLayerRegistry > m_MainRegistry
virtual bool x_Set(const string §ion, const string &name, const string &value, TFlags flags, const string &comment)=0
CMemoryRegistry(TFlags flags=0)
virtual void x_Enumerate(const string §ion, list< string > &entries, TFlags flags) const =0
virtual const string & x_Get(const string §ion, const string &name, TFlags flags) const =0
TClearedEntries m_ClearedEntries
virtual void x_SetModifiedFlag(bool, TFlags)
virtual bool x_SetComment(const string &comment, const string §ion, const string &name, TFlags flags)=0
virtual void x_Clear(TFlags flags)=0
Called locked, like the virtual methods inherited from IRegistry.
bool SetValue(const string §ion, const string &name, const string &value, TFlags flags=0, const string &comment=kEmptyStr)
Overloading of setters for generic programming.
string in_section_comment
virtual bool x_Empty(TFlags flags) const =0
Implementations of the fundamental operations above, to be run with the lock already acquired and som...
bool GetValue(const string §ion, const string &name, bool default_value, EErrAction err_action=eErrPost, TFlags flags=0) const
TNameMap m_NameMap
excludes anonymous sub-registries
EPriority
Priority for sub-registries; entries in higher-priority sub-registries take precedence over (identica...
double GetValue(const string §ion, const string &name, double default_value, EErrAction err_action=eErrPost, TFlags flags=0) const
int GetValue(const string §ion, const string &name, int default_value, EErrAction err_action=eErrPost, TFlags flags=0) const
CRef< IRWRegistry > m_OverrideRegistry
virtual bool x_Modified(TFlags) const
static const char * sm_MainRegName
Predefined subregistry's name.
virtual const string & x_GetComment(const string §ion, const string &name, TFlags flags) const =0
CRegistryReadGuard(const IRegistry ®)
virtual bool x_HasEntry(const string §ion, const string &name, TFlags flags) const =0
bool x_Modified(TFlags) const
TPriority GetCoreCutoff(void) const
Subregistries whose priority is less than the core cutoff (ePriority_Default by default) will be igno...
EFlags
Flags controlling the behavior of registry methods.
string GetValue(const string §ion, const string &name, const string &default_value, EErrAction=eReturn, TFlags flags=0) const
Overloading of getters for generic programming.
CGuard< IRegistry, SSimpleWriteLock< IRegistry > > CRegistryWriteGuard
EErrAction
What to do if parameter value is present but cannot be converted into the requested type.
CRef< CTwoLayerRegistry > m_FileRegistry
static const char * sm_EnvRegName
Predefined subregistries' names.
CRef< CEnvironmentRegistry > m_EnvRegistry
static const char * sm_FileRegName
bool SetValue(const string §ion, const string &name, bool value, TFlags flags=0, const string &comment=kEmptyStr)
EPriority
Priority for sub-registries; entries in higher-priority sub-registries take precedence over (identica...
virtual bool x_Unset(const string §ion, const string &name, TFlags flags)=0
CRef< IRWRegistry > CRegRef
unsigned int m_RuntimeOverrideCount
CGuard< IRegistry, SSimpleReadLock< IRegistry > > TParent
CRef< IRWRegistry > m_SysRegistry
static const char * sm_OverrideRegName
int TPriority
Not restricted to ePriority_*.
bool SetValue(const string §ion, const string &name, int value, TFlags flags=0, const string &comment=kEmptyStr)
CRef< CCompoundRegistry > m_AllRegistries
TPriorityMap m_PriorityMap
map< string, SSection, PNocase_Conditional > TSections
bool SetValue(const string §ion, const string &name, double value, TFlags flags=0, const string &comment=kEmptyStr)
void SetCoreCutoff(TPriority prio)
EOperation
Categories of modifying operations.
static const char * sm_BaseRegNamePrefix
Prefix for any base registries' names.
EErrCode
Error types that the Registry can generate.
@ eThrow
Throw an exception if an error occurs.
@ eErrPost
Log the error message and return default value.
@ eValue
General value format error.
@ eUnencrypted
Value should have been encrypted, but wasn't.
@ eSection
Section name format error.
@ eDecryptionFailed
Value looked encrypted, but decryption failed.
@ eEntry
Entry name format error.
#define END_NCBI_SCOPE
End previously defined NCBI scope.
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
IO_PREFIX::ostream CNcbiOstream
Portable alias for ostream.
IO_PREFIX::istream CNcbiIstream
Portable alias for istream.
static const string BoolToString(bool value)
Convert bool to string.
static string IntToString(int value, TNumToStringFlags flags=0, int base=10)
Convert int to string.
#define NCBI_XNCBI_EXPORT
const TYPE & Get(const CNamedParameterList *param)
Multi-threading – mutexes; rw-locks; semaphore.
static const char * str(char *buf, int n)
static wxAcceleratorEntry entries[3]