summaryrefslogtreecommitdiff
path: root/ace/Configuration.h
diff options
context:
space:
mode:
Diffstat (limited to 'ace/Configuration.h')
-rw-r--r--ace/Configuration.h462
1 files changed, 250 insertions, 212 deletions
diff --git a/ace/Configuration.h b/ace/Configuration.h
index 29bb206b86a..0a6702901ea 100644
--- a/ace/Configuration.h
+++ b/ace/Configuration.h
@@ -1,33 +1,22 @@
/* -*- C++ -*- */
-// $Id$
-
-// ============================================================================
-//
-// = LIBRARY
-// ace
-//
-// = FILENAME
-// Configuration.h
-//
-// = AUTHOR
-// Chris Hafey <chris@stentorsoft.com>
-//
-// = DESCRIPTION
-// The ACE configuration API provides a portable abstraction for
-// program configuration. The API supports a tree based hierarchy
-// of configuration sections. Each section contains other sections
-// or values. Values may contain string, unsigned integer and
-// binary data.
-//
-// = TODO
-// - Add locking for thread safety.
-// - Need to investigate what happens if memory mapped file gets mapped to
-// a location different than it was created with.
-// - Add dynamic buffer when importing. currently it will not allow
-// importing of values greater than a fixed ammount (4096 bytes)
-// - Replace unsigned int with a type that is fixed accross platforms.
-//
-// ============================================================================
+
+//=============================================================================
+/**
+ * @file Configuration.h
+ *
+ * $Id$
+ *
+ * @author Chris Hafey <chris@stentorsoft.com>
+ *
+ * The ACE configuration API provides a portable abstraction for
+ * program configuration. The API supports a tree based hierarchy
+ * of configuration sections. Each section contains other sections
+ * or values. Values may contain string, unsigned integer and
+ * binary data.
+ *
+ */
+//=============================================================================
+
#ifndef ACE_CONFIGURATION_H
#define ACE_CONFIGURATION_H
@@ -52,24 +41,35 @@
#define ACE_DEFAULT_CONFIG_SECTION_SIZE 16
#endif /* ACE_DEFAULT_CONFIG_SECTION_SIZE */
+/**
+ * @class ACE_Section_Key_Internal
+ *
+ * @brief A base class for internal handles to section keys for
+ * configuration implementations
+ *
+ * Implementations subclass this base class to represent a
+ * section key.
+ *
+ * @todo
+ * - Add locking for thread safety.
+ * - Need to investigate what happens if memory mapped file gets mapped to
+ * a location different than it was created with.
+ * - Add dynamic buffer when importing. currently it will not allow
+ * importing of values greater than a fixed ammount (4096 bytes)
+ * - Replace unsigned int with a type that is fixed accross platforms.
+ *
+ */
class ACE_Export ACE_Section_Key_Internal
{
- // = TITLE
- // A base class for internal handles to section keys for
- // configuration implementations
- //
- // = DESCRIPTION
- // Implementations subclass this base class to represent a
- // section key.
public:
+ /// Virtual destructor, make sure descendants are virtual!
virtual ~ACE_Section_Key_Internal (void);
- // Virtual destructor, make sure descendants are virtual!
+ /// Increment reference count
virtual int add_ref (void);
- // Increment reference count
+ /// Decrement reference count. Will delete this if count gets to 0
virtual int dec_ref (void);
- // Decrement reference count. Will delete this if count gets to 0
protected:
ACE_Section_Key_Internal (void);
ACE_Section_Key_Internal (const ACE_Section_Key_Internal& rhs);
@@ -78,46 +78,51 @@ protected:
u_int ref_count_;
};
+ /**
+ * @class ACE_Configuration_Section_Key
+ *
+ * @brief Referenced counted wrapper for <ACE_Section_Key_Internal>.
+ *
+ * Reference counted wrapper class for the abstract internal
+ * section key. A user gets one of these to represent a section
+ * in the configuration database.
+ */
class ACE_Export ACE_Configuration_Section_Key
{
- // = TITLE
- // Referenced counted wrapper for <ACE_Section_Key_Internal>.
- //
- // = DESCRIPTION
- // Reference counted wrapper class for the abstract internal
- // section key. A user gets one of these to represent a section
- // in the configuration database.
friend class ACE_Configuration;
public:
+ /// Default ctor
ACE_Configuration_Section_Key (void);
- // Default ctor
+ /// ctor based on a pointer to a concrete internal key, does an
+ /// add_ref on <key>.
ACE_EXPLICIT ACE_Configuration_Section_Key (ACE_Section_Key_Internal *key);
- // ctor based on a pointer to a concrete internal key, does an
- // add_ref on <key>.
+ /// Copy ctor, does an add_ref on rhs.key_.
ACE_Configuration_Section_Key (const ACE_Configuration_Section_Key &rhs);
- // Copy ctor, does an add_ref on rhs.key_.
+ /// destructor, does a <dec_ref> on <key_>.
~ACE_Configuration_Section_Key (void);
- // destructor, does a <dec_ref> on <key_>.
+ /// assignment operator, does a <dec_ref> on <key_> and <add_ref> to
+ /// <rhs.key_>
ACE_Configuration_Section_Key &
operator= (const ACE_Configuration_Section_Key &rhs);
- // assignment operator, does a <dec_ref> on <key_> and <add_ref> to
- // <rhs.key_>
private:
ACE_Section_Key_Internal *key_;
};
+/**
+ * @class ACE_Configuration
+ *
+ * @brief Base class for configuration databases
+ *
+ * This class provides an interface for configuration databases.
+ */
class ACE_Export ACE_Configuration
{
- // = TITLE
- // Base class for configuration databases
- //
- // = DESCRIPTION
- // This class provides an interface for configuration databases.
public:
+ /// Enumeration for the various types of values we can store.
enum VALUETYPE
{
STRING,
@@ -125,138 +130,151 @@ public:
BINARY,
INVALID
};
- // Enumeration for the various types of values we can store.
+ /// destructor
virtual ~ACE_Configuration (void);
- // destructor
+ /// Returns the root section of this configuration.
virtual const ACE_Configuration_Section_Key& root_section (void);
- // Returns the root section of this configuration.
+ /**
+ * Finds a <sub_section> in <base> and places the resulting key in
+ * <result>. If create is non zero, the sub_section will be created
+ * if it doesn't exist
+ */
virtual int open_section (const ACE_Configuration_Section_Key &base,
const ACE_TCHAR *sub_section,
int create,
ACE_Configuration_Section_Key& result) = 0;
- // Finds a <sub_section> in <base> and places the resulting key in
- // <result>. If create is non zero, the sub_section will be created
- // if it doesn't exist
+ /// Removes the <sub_section> from <key>. If recursive is non zero,
+ /// any subkeys below <sub_section> are remove as well.
virtual int remove_section (const ACE_Configuration_Section_Key &key,
const ACE_TCHAR *sub_section,
int recursive) = 0;
- // Removes the <sub_section> from <key>. If recursive is non zero,
- // any subkeys below <sub_section> are remove as well.
+ /**
+ * method to enumerate through the <name> and <type> of values in a
+ * <key>. To begin iteration, <index> must be zero. to continue
+ * iteration, invoke enumerate_values again while incrementing
+ * index. Each iteration will return the <name> of the value and
+ * its <type>. This method returns 0 on success, <0 on error and 1
+ * when there are no more values to iterate through. Note - you may
+ * not delete or add values while enumerating. If you need to do
+ * this, you start the enumeration over again.
+ */
virtual int enumerate_values (const ACE_Configuration_Section_Key& key,
int index,
ACE_TString& name,
VALUETYPE& type) = 0;
- // method to enumerate through the <name> and <type> of values in a
- // <key>. To begin iteration, <index> must be zero. to continue
- // iteration, invoke enumerate_values again while incrementing
- // index. Each iteration will return the <name> of the value and
- // its <type>. This method returns 0 on success, <0 on error and 1
- // when there are no more values to iterate through. Note - you may
- // not delete or add values while enumerating. If you need to do
- // this, you start the enumeration over again.
+ /**
+ * method to enumerate through the <name> subsections in <key>. To
+ * begin iteration, <index> must zero. to continue iteration, invoke
+ * enumerate_sections again while incrementing index. Each
+ * iteration will return the <name> of the sub section. This method
+ * returns 0 on success, <0 on error and 1 when there are no more
+ * subsections to iterate through. Note - you may not delete or add
+ * values while enumerating. If you need to do this, you start the
+ * enumeration over again.
+ */
virtual int enumerate_sections (const ACE_Configuration_Section_Key& key,
int index, ACE_TString& name) = 0;
- // method to enumerate through the <name> subsections in <key>. To
- // begin iteration, <index> must zero. to continue iteration, invoke
- // enumerate_sections again while incrementing index. Each
- // iteration will return the <name> of the sub section. This method
- // returns 0 on success, <0 on error and 1 when there are no more
- // subsections to iterate through. Note - you may not delete or add
- // values while enumerating. If you need to do this, you start the
- // enumeration over again.
+ /// sets the value in <key> with <name> to a string of <value>
virtual int set_string_value (const ACE_Configuration_Section_Key& key,
const ACE_TCHAR* name,
const ACE_TString& value) = 0;
- // sets the value in <key> with <name> to a string of <value>
+ /// sets the value in <key> with <name> to an integer of <value>
virtual int set_integer_value (const ACE_Configuration_Section_Key& key,
const ACE_TCHAR* name,
u_int value) = 0;
- // sets the value in <key> with <name> to an integer of <value>
+ /// sets the value in <key> with <name> to binary data of <data> with
+ /// <length>.
virtual int set_binary_value (const ACE_Configuration_Section_Key& key,
const ACE_TCHAR* name,
const void* data,
u_int length) = 0;
- // sets the value in <key> with <name> to binary data of <data> with
- // <length>.
+ /// gets the string value of <name> from <key> and places it in
+ /// <value>. Returns non zero on error (if value is not a string).
virtual int get_string_value (const ACE_Configuration_Section_Key& key,
const ACE_TCHAR* name,
ACE_TString& value) = 0;
- // gets the string value of <name> from <key> and places it in
- // <value>. Returns non zero on error (if value is not a string).
+ /// gets the integer value of <name> from <key> and places it in
+ /// <value>. Returns non zero on error (if value is not an integer).
virtual int get_integer_value (const ACE_Configuration_Section_Key& key,
const ACE_TCHAR* name,
u_int& value) = 0;
- // gets the integer value of <name> from <key> and places it in
- // <value>. Returns non zero on error (if value is not an integer).
+ /**
+ * gets the binary value of <name> from <key> and places a copy in
+ * <data> and sets <length> to the length of the data. caller is
+ * responsible for deleting <data>. Returns non zero on error (if
+ * value is not binary).
+ */
virtual int get_binary_value (const ACE_Configuration_Section_Key& key,
const ACE_TCHAR* name,
void*& data,
u_int& length) = 0;
- // gets the binary value of <name> from <key> and places a copy in
- // <data> and sets <length> to the length of the data. caller is
- // responsible for deleting <data>. Returns non zero on error (if
- // value is not binary).
+ /**
+ * checks to see if an entry of <name> is in <key> and places the
+ * data type in <type>. Returns 0 on success (entry is found),
+ * -1 on error
+ */
virtual int find_value(const ACE_Configuration_Section_Key& key,
const ACE_TCHAR* name,
VALUETYPE& type) = 0;
- // checks to see if an entry of <name> is in <key> and places the
- // data type in <type>. Returns 0 on success (entry is found),
- // -1 on error
+ /// Removes the the value <name> from <key>. returns non zero on
+ /// error.
virtual int remove_value (const ACE_Configuration_Section_Key& key,
const ACE_TCHAR* name) = 0;
- // Removes the the value <name> from <key>. returns non zero on
- // error.
+ /**
+ * Expands <path_in> to <key_out> from <key>. If create is true,
+ * the subsections are created. Returns 0 on success, non zero on
+ * error The path consists of sections separated by the backslash
+ * '\'.
+ */
int expand_path (const ACE_Configuration_Section_Key& key,
const ACE_TString& path_in,
ACE_Configuration_Section_Key& key_out,
int create = 1);
- // Expands <path_in> to <key_out> from <key>. If create is true,
- // the subsections are created. Returns 0 on success, non zero on
- // error The path consists of sections separated by the backslash
- // '\'.
+ /// Exports the configuration database to filename. If <filename> is
+ /// alredy present, it is overwritten.
virtual int export_config (const ACE_TCHAR* filename);
- // Exports the configuration database to filename. If <filename> is
- // alredy present, it is overwritten.
+ /// Imports the configuration database from filename. Any existing
+ /// data is not removed.
virtual int import_config (const ACE_TCHAR* filename);
- // Imports the configuration database from filename. Any existing
- // data is not removed.
protected:
+ /// Default ctor
ACE_Configuration (void);
- // Default ctor
+ /// resolves the internal key from a section key
ACE_Section_Key_Internal* get_internal_key
(const ACE_Configuration_Section_Key& key);
- // resolves the internal key from a section key
+ /**
+ * tests to see if <name> is valid. <name> must be < 255 characters
+ * and not contain the path separator '\', brackets [] or = (maybe
+ * just restrict to alphanumeric?) returns non zero if name is not
+ * valid
+ */
int validate_name (const ACE_TCHAR* name);
- // tests to see if <name> is valid. <name> must be < 255 characters
- // and not contain the path separator '\', brackets [] or = (maybe
- // just restrict to alphanumeric?) returns non zero if name is not
- // valid
+ /// Used when exporting a configuration to a file
int export_section (const ACE_Configuration_Section_Key& section,
const ACE_TString& path,
FILE* out);
- // Used when exporting a configuration to a file
// Not used
ACE_Configuration (const ACE_Configuration& rhs);
@@ -266,46 +284,52 @@ protected:
#if defined (ACE_WIN32)
+/**
+ * @class ACE_Section_Key_Win32
+ *
+ * @brief The Win32 registry implementation of an internal section key.
+ *
+ * Holds the HKEY for a section (registry key).
+ */
class ACE_Export ACE_Section_Key_Win32 : public ACE_Section_Key_Internal
{
- // = TITLE
- // The Win32 registry implementation of an internal section key.
- //
- // = DESCRIPTION
- // Holds the HKEY for a section (registry key).
public:
+ /// constructor based on an HKEY
ACE_Section_Key_Win32 (HKEY hKey);
- // constructor based on an HKEY
HKEY hKey_;
protected:
+ /// destructor - invokes <RegCloseKey>
virtual ~ACE_Section_Key_Win32 (void);
- // destructor - invokes <RegCloseKey>
// Not used
ACE_Section_Key_Win32 (const ACE_Section_Key_Win32& rhs);
ACE_Section_Key_Win32& operator= (const ACE_Section_Key_Win32& rhs);
};
+/**
+ * @class ACE_Configuration_Win32Registry
+ *
+ * @brief The win32 registry implementation of a configuration database
+ *
+ * The win32 implementation basically makes calls through to the
+ * registry functions. The API is very similar so very little
+ * work must be done
+ */
class ACE_Export ACE_Configuration_Win32Registry : public ACE_Configuration
{
- // = TITLE
- // The win32 registry implementation of a configuration database
- //
- // = DESCRIPTION
- // The win32 implementation basically makes calls through to the
- // registry functions. The API is very similar so very little
- // work must be done
public:
+ /**
+ * constructor for registry configuration database. hKey is the
+ * base registry key to attach to. This class takes ownership of
+ * hKey, it will invoke <RegCloseKey> on it upon destruction.
+ */
ACE_EXPLICIT ACE_Configuration_Win32Registry (HKEY hKey);
- // constructor for registry configuration database. hKey is the
- // base registry key to attach to. This class takes ownership of
- // hKey, it will invoke <RegCloseKey> on it upon destruction.
+ /// destructor
virtual ~ACE_Configuration_Win32Registry (void);
- // destructor
virtual int open_section (const ACE_Configuration_Section_Key& base,
const ACE_TCHAR* sub_section,
@@ -355,24 +379,26 @@ public:
const ACE_TCHAR* name,
VALUETYPE& type);
+ /// Removes the the value <name> from <key>. returns non zero on error
virtual int remove_value (const ACE_Configuration_Section_Key& key,
const ACE_TCHAR* name);
- // Removes the the value <name> from <key>. returns non zero on error
+ /**
+ * This method traverses <path> through <hKey>. It is useful when
+ * you want the HKEY for a specific registry key, especially when
+ * initializing this implementation. Caller is responsible for
+ * closeing this key when it is no longer used. If create is 1
+ * (default) the keys are create if they don't already exist.
+ * Returns 0 on error
+ */
static HKEY resolve_key (HKEY hKey,
const ACE_TCHAR* path,
int create = 1);
- // This method traverses <path> through <hKey>. It is useful when
- // you want the HKEY for a specific registry key, especially when
- // initializing this implementation. Caller is responsible for
- // closeing this key when it is no longer used. If create is 1
- // (default) the keys are create if they don't already exist.
- // Returns 0 on error
protected:
+ /// Gets the HKEY for a configuration section
int load_key (const ACE_Configuration_Section_Key& key, HKEY& hKey);
- // Gets the HKEY for a configuration section
// Not used
ACE_Configuration_Win32Registry (void);
@@ -390,42 +416,44 @@ typedef ACE_Allocator_Adapter <ACE_Malloc <ACE_LOCAL_MEMORY_POOL,
ACE_SYNCH_MUTEX> >
HEAP_ALLOCATOR;
+/**
+ * @class ACE_Configuration_ExtId
+ *
+ * @brief External ID for the section and value hash
+ *
+ * Contains a pointer to the section or value name.
+ */
class ACE_Export ACE_Configuration_ExtId
{
- // = TITLE
- // External ID for the section and value hash
- //
- // = DESCRIPTION
- // Contains a pointer to the section or value name.
public:
+ /// defeault ctor
ACE_Configuration_ExtId (void);
- // defeault ctor
+ /// named constructor
ACE_EXPLICIT ACE_Configuration_ExtId (const ACE_TCHAR* name);
- // named constructor
+ /// copy ctor
ACE_Configuration_ExtId (const ACE_Configuration_ExtId& rhs);
- // copy ctor
+ /// destructor
~ACE_Configuration_ExtId (void);
- // destructor
+ /// assignment operator
ACE_Configuration_ExtId& operator= (const ACE_Configuration_ExtId& rhs);
- // assignment operator
+ /// Equality comparison operator (must match name_).
int operator== (const ACE_Configuration_ExtId &rhs) const;
- // Equality comparison operator (must match name_).
+ /// Inequality comparison operator.
int operator!= (const ACE_Configuration_ExtId &rhs) const;
- // Inequality comparison operator.
+ /// Frees the name of the value. needed since we don't know the
+ /// allocator name_ was created in
void free (ACE_Allocator* allocator);
- // Frees the name of the value. needed since we don't know the
- // allocator name_ was created in
+ /// <hash> function is required in order for this class to be usable by
+ /// ACE_Hash_Map_Manager.
u_long hash (void) const;
- // <hash> function is required in order for this class to be usable by
- // ACE_Hash_Map_Manager.
// = Data members.
@@ -446,48 +474,52 @@ typedef ACE_Hash_Map_Manager_Ex<ACE_Configuration_ExtId,
typedef ACE_Hash_Map_Entry<ACE_Configuration_ExtId, int>
SUBSECTION_ENTRY;
+/**
+ * @class ACE_Configuration_Value_IntId
+ *
+ * @brief The section hash table internal value class
+ *
+ * This class is present as the internal portion of a section's
+ * value hash table It may store string, integer or binary data.
+ */
class ACE_Export ACE_Configuration_Value_IntId
{
- // = TITLE
- // The section hash table internal value class
- //
- // = DESCRIPTION
- // This class is present as the internal portion of a section's
- // value hash table It may store string, integer or binary data.
public:
+ /// default constructor
ACE_Configuration_Value_IntId (void);
- // default constructor
+ /// string constructor, takes ownership of string
ACE_EXPLICIT ACE_Configuration_Value_IntId (ACE_TCHAR* string);
- // string constructor, takes ownership of string
+ /// integer constructor
ACE_EXPLICIT ACE_Configuration_Value_IntId (u_int integer);
- // integer constructor
+ /// binary constructor, takes ownership of data
ACE_Configuration_Value_IntId (void* data, u_int length);
- // binary constructor, takes ownership of data
+ /// copy ctor
ACE_Configuration_Value_IntId (const ACE_Configuration_Value_IntId& rhs);
- // copy ctor
+ /// destructor
~ACE_Configuration_Value_IntId (void);
- // destructor
+ /// Assignment operator
ACE_Configuration_Value_IntId& operator= (
const ACE_Configuration_Value_IntId& rhs);
- // Assignment operator
void free (ACE_Allocator* allocator);
// = Data members.
+ /**
+ * points to the string value or binary data or IS the integer
+ * (XXX need to change this since sizeof (u_int) is
+ * not the same accross different platforms)
+ * Length is only used when type_ == BINARY
+ */
ACE_Configuration::VALUETYPE type_;
void* data_;
- // points to the string value or binary data or IS the integer
- // (XXX need to change this since sizeof (u_int) is
- // not the same accross different platforms)
u_int length_;
- // Length is only used when type_ == BINARY
};
typedef ACE_Hash_Map_With_Allocator<ACE_Configuration_ExtId,
@@ -503,33 +535,35 @@ typedef ACE_Hash_Map_Entry<ACE_Configuration_ExtId,
ACE_Configuration_Value_IntId>
VALUE_ENTRY;
+/**
+ * @class ACE_Configuration_Section_IntId
+ *
+ * @brief The internal ID for a section hash table
+ *
+ * Contains a hash table containing value name/values
+ */
class ACE_Export ACE_Configuration_Section_IntId
{
- // = TITLE
- // The internal ID for a section hash table
- //
- // = DESCRIPTION
- // Contains a hash table containing value name/values
public:
+ /// default ctor
ACE_Configuration_Section_IntId (void);
- // default ctor
+ /// named ctor
ACE_EXPLICIT ACE_Configuration_Section_IntId (VALUE_MAP* value_hash_map,
SUBSECTION_MAP* section_hash_map);
- // named ctor
+ /// copy ctor
ACE_Configuration_Section_IntId (const ACE_Configuration_Section_IntId& rhs);
- // copy ctor
+ /// destructor
~ACE_Configuration_Section_IntId (void);
- // destructor
+ /// asignment operator
ACE_Configuration_Section_IntId& operator= (
const ACE_Configuration_Section_IntId& rhs);
- // asignment operator
+ /// frees the hash table and all its values
void free (ACE_Allocator* allocator);
- // frees the hash table and all its values
// = Data Members.
VALUE_MAP* value_hash_map_;
@@ -549,61 +583,65 @@ typedef ACE_Hash_Map_Entry<ACE_Configuration_ExtId,
ACE_Configuration_Section_IntId>
SECTION_ENTRY;
+/**
+ * @class ACE_Configuration_Section_Key_Heap
+ *
+ * @brief Internal section key class for heap based configuration
+ * database.
+ *
+ * Contains a value iterator and full path name of section.
+ */
class ACE_Export ACE_Configuration_Section_Key_Heap
: public ACE_Section_Key_Internal
{
- // = TITLE
- // Internal section key class for heap based configuration
- // database.
- //
- // = DESCRIPTION
- // Contains a value iterator and full path name of section.
public:
+ /// constructor based on the full path of the section
ACE_Configuration_Section_Key_Heap (const ACE_TCHAR* path);
- // constructor based on the full path of the section
+ ///the path itself
ACE_TCHAR* path_;
- //the path itself
+ /// The value iterator
VALUE_HASH::ITERATOR* value_iter_;
- // The value iterator
+ /// The sub section iterator
SUBSECTION_HASH::ITERATOR* section_iter_;
- // The sub section iterator
protected:
+ /// destructor - will delete the iterators
virtual ~ACE_Configuration_Section_Key_Heap (void);
- // destructor - will delete the iterators
// Not used
ACE_Configuration_Section_Key_Heap (const ACE_Configuration_Section_Key_Heap& rhs);
ACE_Configuration_Section_Key_Heap& operator= (const ACE_Configuration_Section_Key_Heap& rhs);
};
+/**
+ * @class ACE_Configuration_Heap
+ *
+ * @brief The concrete implementation of a allocator based
+ * configuration database
+ *
+ * This class uses ACE's Allocators to manage a memory
+ * representation of a configuraiton database. A persistent heap
+ * may be used to store configurations persistently
+ */
class ACE_Export ACE_Configuration_Heap : public ACE_Configuration
{
- // = TITLE
- // The concrete implementation of a allocator based
- // configuration database
- //
- // = DESCRIPTION
- // This class uses ACE's Allocators to manage a memory
- // representation of a configuraiton database. A persistent heap
- // may be used to store configurations persistently
public:
+ /// Default ctor
ACE_Configuration_Heap (void);
- // Default ctor
+ /// destructor
virtual ~ACE_Configuration_Heap (void);
- // destructor
+ /// opens a configuration based on a file name
int open (const ACE_TCHAR* file_name,
void* base_address = ACE_DEFAULT_BASE_ADDR,
int default_map_size = ACE_DEFAULT_CONFIG_SECTION_SIZE);
- // opens a configuration based on a file name
+ /// opens a heap based configuration
int open (int default_map_size = ACE_DEFAULT_CONFIG_SECTION_SIZE);
- // opens a heap based configuration
virtual int open_section (const ACE_Configuration_Section_Key& base,
const ACE_TCHAR* sub_section,
@@ -652,22 +690,22 @@ public:
const ACE_TCHAR* name,
VALUETYPE& type);
+ /// Removes the the value <name> from <key>. returns non zero on error
virtual int remove_value (const ACE_Configuration_Section_Key& key,
const ACE_TCHAR* name);
- // Removes the the value <name> from <key>. returns non zero on error
private:
+ /// adds a new section
int add_section (const ACE_Configuration_Section_Key& base,
const ACE_TCHAR* sub_section,
ACE_Configuration_Section_Key& result);
- // adds a new section
+ /// Helper for the <open> method.
int create_index (void);
- // Helper for the <open> method.
+ /// Helper for <create_index> method: places hash table into an
+ /// allocated space.
int create_index_helper (void *buffer);
- // Helper for <create_index> method: places hash table into an
- // allocated space.
int value_open_helper (size_t hash_table_size, void *buffer);