#include <Configuration.h>
Inheritance diagram for ACE_Configuration_Heap:
Public Member Functions | |
ACE_Configuration_Heap (void) | |
Default ctor. | |
virtual | ~ACE_Configuration_Heap (void) |
Destructor. | |
int | open (const ACE_TCHAR *file_name, void *base_address=ACE_DEFAULT_BASE_ADDR, size_t default_map_size=ACE_DEFAULT_CONFIG_SECTION_SIZE) |
Opens a configuration based on a file name. | |
int | open (size_t 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, int create, ACE_Configuration_Section_Key &result) |
virtual int | remove_section (const ACE_Configuration_Section_Key &key, const ACE_TCHAR *sub_section, int recursive) |
Removes a named section. | |
virtual int | enumerate_values (const ACE_Configuration_Section_Key &key, int index, ACE_TString &name, VALUETYPE &type) |
virtual int | enumerate_sections (const ACE_Configuration_Section_Key &key, int index, ACE_TString &name) |
virtual int | set_string_value (const ACE_Configuration_Section_Key &key, const ACE_TCHAR *name, const ACE_TString &value) |
Sets a string-typed value. | |
virtual int | set_integer_value (const ACE_Configuration_Section_Key &key, const ACE_TCHAR *name, u_int value) |
Sets a integer-typed value. | |
virtual int | set_binary_value (const ACE_Configuration_Section_Key &key, const ACE_TCHAR *name, const void *data, size_t length) |
Sets a binary-typed value. | |
virtual int | get_string_value (const ACE_Configuration_Section_Key &key, const ACE_TCHAR *name, ACE_TString &value) |
Gets a string-typed value. | |
virtual int | get_integer_value (const ACE_Configuration_Section_Key &key, const ACE_TCHAR *name, u_int &value) |
Gets an integer-typed value. | |
virtual int | get_binary_value (const ACE_Configuration_Section_Key &key, const ACE_TCHAR *name, void *&data, size_t &length) |
Gets a binary-typed value. | |
virtual int | find_value (const ACE_Configuration_Section_Key &key, const ACE_TCHAR *name, VALUETYPE &type) |
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 Member Functions | |
int | open_simple_section (const ACE_Configuration_Section_Key &base, const ACE_TCHAR *sub_section, int create, ACE_Configuration_Section_Key &result) |
<sub_section> may not contain path separators | |
int | add_section (const ACE_Configuration_Section_Key &base, const ACE_TCHAR *sub_section, ACE_Configuration_Section_Key &result) |
Adds a new section. | |
int | create_index (void) |
Helper for the <open> method. | |
int | create_index_helper (void *buffer) |
int | value_open_helper (size_t hash_table_size, void *buffer) |
int | section_open_helper (size_t hash_table_size, void *buffer) |
int | load_key (const ACE_Configuration_Section_Key &key, ACE_TString &name) |
int | new_section (const ACE_TString §ion, ACE_Configuration_Section_Key &result) |
ACE_Configuration_Heap (const ACE_Configuration_Heap &rhs) | |
ACE_Configuration_Heap & | operator= (const ACE_Configuration_Heap &rhs) |
Private Attributes | |
ACE_Allocator * | allocator_ |
SECTION_MAP * | index_ |
size_t | default_map_size_ |
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
Definition at line 786 of file Configuration.h.
ACE_Configuration_Heap::ACE_Configuration_Heap | ( | void | ) |
Default ctor.
Definition at line 1248 of file Configuration.cpp.
References ACE_NEW, ACE_TEXT, and ACE_Configuration::root_.
01249 : allocator_ (0), 01250 index_ (0), 01251 default_map_size_ (0) 01252 { 01253 ACE_Configuration_Section_Key_Heap *temp = 0; 01254 01255 ACE_NEW (temp, ACE_Configuration_Section_Key_Heap (ACE_TEXT (""))); 01256 root_ = ACE_Configuration_Section_Key (temp); 01257 }
ACE_Configuration_Heap::~ACE_Configuration_Heap | ( | void | ) | [virtual] |
Destructor.
Definition at line 1259 of file Configuration.cpp.
References allocator_, and ACE_Allocator::sync().
01260 { 01261 if (allocator_) 01262 allocator_->sync (); 01263 01264 delete allocator_; 01265 }
ACE_Configuration_Heap::ACE_Configuration_Heap | ( | const ACE_Configuration_Heap & | rhs | ) | [private] |
int ACE_Configuration_Heap::add_section | ( | const ACE_Configuration_Section_Key & | base, | |
const ACE_TCHAR * | sub_section, | |||
ACE_Configuration_Section_Key & | result | |||
) | [private] |
Adds a new section.
Definition at line 1378 of file Configuration.cpp.
References ACE_ASSERT, ACE_TEXT, allocator_, ACE_String_Base< CHAR >::fast_rep(), ACE_Hash_Map_With_Allocator< EXT_ID, INT_ID >::find(), ACE_Allocator::free(), index_, ACE_String_Base< CHAR >::length(), load_key(), ACE_Allocator::malloc(), new_section(), ACE_OS::strcpy(), and ACE_OS::strlen().
Referenced by open_simple_section().
01381 { 01382 ACE_ASSERT (this->allocator_); 01383 ACE_TString section; 01384 if (load_key (base, section)) 01385 return -1; 01386 01387 // Find the base section 01388 ACE_Configuration_ExtId ExtId (section.fast_rep ()); 01389 ACE_Configuration_Section_IntId IntId; 01390 if (index_->find (ExtId, IntId, allocator_)) 01391 return -1; 01392 01393 // See if this section already exists 01394 ACE_Configuration_ExtId SubSectionExtId (sub_section); 01395 int ignored = 0; 01396 01397 if (!IntId.section_hash_map_->find (SubSectionExtId, ignored, allocator_)) 01398 { 01399 // already exists! 01400 errno = EEXIST; 01401 return -1; 01402 } 01403 01404 // Create the new section name 01405 // only prepend a separater if were not at the root 01406 if (section.length ()) 01407 section += ACE_TEXT ("\\"); 01408 01409 section += sub_section; 01410 01411 // Add it to the base section 01412 ACE_TCHAR* pers_name = (ACE_TCHAR *) allocator_->malloc ((ACE_OS::strlen (sub_section) + 1) * sizeof (ACE_TCHAR)); 01413 ACE_OS::strcpy (pers_name, sub_section); 01414 ACE_Configuration_ExtId SSExtId (pers_name); 01415 if (IntId.section_hash_map_->bind (SSExtId, ignored, allocator_)) 01416 { 01417 allocator_->free (pers_name); 01418 return -1; 01419 } 01420 return (new_section (section, result)); 01421 }
int ACE_Configuration_Heap::create_index | ( | void | ) | [private] |
Helper for the <open> method.
Definition at line 1317 of file Configuration.cpp.
References ACE_CONFIG_SECTION_INDEX, ACE_ERROR, ACE_TEXT, allocator_, create_index_helper(), LM_ERROR, ACE_Allocator::malloc(), new_section(), ACE_Allocator::remove(), and ACE_Configuration::root_.
Referenced by open().
01318 { 01319 void *section_index = 0; 01320 01321 // This is the easy case since if we find hash table in the 01322 // memory-mapped file we know it's already initialized. 01323 if (this->allocator_->find (ACE_CONFIG_SECTION_INDEX, section_index) == 0) 01324 this->index_ = (SECTION_MAP *) section_index; 01325 01326 // Create a new <index_> (because we've just created a new 01327 // memory-mapped file). 01328 else 01329 { 01330 size_t index_size = sizeof (SECTION_MAP); 01331 section_index = this->allocator_->malloc (index_size); 01332 01333 if (section_index == 0 01334 || create_index_helper (section_index) == -1 01335 || this->allocator_->bind (ACE_CONFIG_SECTION_INDEX, 01336 section_index) == -1) 01337 { 01338 // Attempt to clean up. 01339 ACE_ERROR ((LM_ERROR, 01340 ACE_TEXT ("create_index failed\n"))); 01341 this->allocator_->remove (); 01342 return -1; 01343 } 01344 // Add the root section 01345 return new_section (ACE_TEXT (""), root_); 01346 } 01347 return 0; 01348 }
int ACE_Configuration_Heap::create_index_helper | ( | void * | buffer | ) | [private] |
Helper for create_index() method: places hash table into an allocated space.
Definition at line 1351 of file Configuration.cpp.
References ACE_ASSERT, and index_.
Referenced by create_index().
01352 { 01353 ACE_ASSERT (this->allocator_); 01354 this->index_ = new (buffer) SECTION_MAP (this->allocator_); 01355 return 0; 01356 }
int ACE_Configuration_Heap::enumerate_sections | ( | const ACE_Configuration_Section_Key & | key, | |
int | index, | |||
ACE_TString & | name | |||
) | [virtual] |
Enumerates through the subsections in a section.
key | Section key to iterate through. | |
index | Iteration position. Must be zero on the first call to iterate through key. Increment index by one on each successive call to this method. | |
name | Receives the subsection's name. |
0 | for success, name has a valid name. | |
1 | there are no more subsections in the section. | |
-1 | for error; ACE_OS::last_error() retrieves error code. |
Implements ACE_Configuration.
Definition at line 1744 of file Configuration.cpp.
References ACE_ASSERT, ACE_NEW_RETURN, allocator_, ACE_Hash_Map_Manager_Ex< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK >::begin(), ACE_Hash_Map_Entry< EXT_ID, INT_ID >::ext_id_, ACE_Hash_Map_With_Allocator< EXT_ID, INT_ID >::find(), ACE_Configuration::get_internal_key(), index_, ACE_Configuration_ExtId::name_, ACE_Configuration_Section_Key_Heap::path_, ACE_Configuration_Section_IntId::section_hash_map_, and ACE_Configuration_Section_Key_Heap::section_iter_.
Referenced by remove_section().
01747 { 01748 ACE_ASSERT (this->allocator_); 01749 // cast to a heap section key 01750 ACE_Configuration_Section_Key_Heap* pKey = 01751 dynamic_cast<ACE_Configuration_Section_Key_Heap*> (get_internal_key (key)); 01752 if (!pKey) 01753 return -1; // not a heap key! 01754 01755 // resolve the section 01756 ACE_Configuration_ExtId ExtId (pKey->path_); 01757 ACE_Configuration_Section_IntId IntId; 01758 if (index_->find (ExtId, IntId, allocator_)) 01759 return -1; // unknown section 01760 01761 // Handle iterator resets 01762 if (index == 0) 01763 { 01764 if (pKey->section_iter_) 01765 delete pKey->section_iter_; 01766 01767 ACE_NEW_RETURN (pKey->section_iter_, 01768 SUBSECTION_HASH::ITERATOR (IntId.section_hash_map_->begin ()), 01769 -1); 01770 } 01771 01772 // Get the next entry 01773 ACE_Hash_Map_Entry<ACE_Configuration_ExtId, int>* entry = 0; 01774 if (!pKey->section_iter_->next (entry)) 01775 return 1; 01776 01777 // Return the value of the iterator and advance it 01778 pKey->section_iter_->advance (); 01779 name = entry->ext_id_.name_; 01780 01781 return 0; 01782 }
int ACE_Configuration_Heap::enumerate_values | ( | const ACE_Configuration_Section_Key & | key, | |
int | index, | |||
ACE_TString & | name, | |||
VALUETYPE & | type | |||
) | [virtual] |
Definition at line 1695 of file Configuration.cpp.
References ACE_ASSERT, ACE_NEW_RETURN, allocator_, ACE_Hash_Map_Entry< EXT_ID, INT_ID >::ext_id_, ACE_Hash_Map_With_Allocator< EXT_ID, INT_ID >::find(), ACE_Configuration::get_internal_key(), index_, ACE_Hash_Map_Entry< EXT_ID, INT_ID >::int_id_, ACE_Configuration_ExtId::name_, ACE_Configuration_Section_Key_Heap::path_, ACE_Configuration_Value_IntId::type_, ACE_Configuration_Section_IntId::value_hash_map_, and ACE_Configuration_Section_Key_Heap::value_iter_.
01699 { 01700 ACE_ASSERT (this->allocator_); 01701 ACE_Configuration_Section_Key_Heap* pKey = 01702 dynamic_cast<ACE_Configuration_Section_Key_Heap*> (get_internal_key (key)); 01703 if (!pKey) 01704 return -1; 01705 01706 name = pKey->path_; 01707 01708 // resolve the section 01709 ACE_Configuration_ExtId ExtId (pKey->path_); 01710 ACE_Configuration_Section_IntId IntId; 01711 if (index_->find (ExtId, IntId, allocator_)) 01712 return -1; 01713 01714 // Handle iterator resets 01715 if (index == 0) 01716 { 01717 ACE_Hash_Map_Manager_Ex<ACE_Configuration_ExtId , 01718 ACE_Configuration_Value_IntId, 01719 ACE_Hash<ACE_Configuration_ExtId>, 01720 ACE_Equal_To<ACE_Configuration_ExtId>, 01721 ACE_Null_Mutex>* hash_map = IntId.value_hash_map_; 01722 delete pKey->value_iter_; 01723 01724 ACE_NEW_RETURN (pKey->value_iter_, 01725 VALUE_HASH::ITERATOR (hash_map->begin ()), 01726 -1); 01727 } 01728 01729 // Get the next entry 01730 ACE_Hash_Map_Entry<ACE_Configuration_ExtId, ACE_Configuration_Value_IntId>* entry = 0; 01731 01732 if (!pKey->value_iter_->next (entry)) 01733 return 1; 01734 01735 // Return the value of the iterator and advance it 01736 name = entry->ext_id_.name_; 01737 type = entry->int_id_.type_; 01738 pKey->value_iter_->advance (); 01739 01740 return 0; 01741 }
int ACE_Configuration_Heap::find_value | ( | const ACE_Configuration_Section_Key & | key, | |
const ACE_TCHAR * | name, | |||
VALUETYPE & | type | |||
) | [virtual] |
Definition at line 2081 of file Configuration.cpp.
References ACE_ASSERT, allocator_, ACE_String_Base< CHAR >::fast_rep(), ACE_Hash_Map_With_Allocator< EXT_ID, INT_ID >::find(), index_, load_key(), ACE_Configuration::NULL_String_, and ACE_Configuration::validate_value_name().
02084 { 02085 ACE_ASSERT (this->allocator_); 02086 const ACE_TCHAR *t_name = name ? name : &this->NULL_String_; 02087 if (validate_value_name (t_name)) 02088 return -1; 02089 02090 // Get the section name from the key 02091 ACE_TString section; 02092 if (load_key (key, section)) 02093 return -1; 02094 02095 // Find this section 02096 ACE_Configuration_ExtId ExtId (section.fast_rep ()); 02097 ACE_Configuration_Section_IntId IntId; 02098 if (index_->find (ExtId, IntId, allocator_)) 02099 return -1; // section does not exist 02100 02101 // Find it 02102 ACE_Configuration_ExtId ValueExtId (t_name); 02103 VALUE_HASH::ENTRY* value_entry; 02104 if (((VALUE_HASH *) IntId.value_hash_map_)->find (ValueExtId, value_entry)) 02105 return -1; // value does not exist 02106 02107 type_out = value_entry->int_id_.type_; 02108 return 0; 02109 }
int ACE_Configuration_Heap::get_binary_value | ( | const ACE_Configuration_Section_Key & | key, | |
const ACE_TCHAR * | name, | |||
void *& | data, | |||
size_t & | length | |||
) | [virtual] |
Gets a binary-typed value.
key | Configuration section to get the value from. | |
name | Name of the configuration value to get. | |
data | Receives a pointer to memory holding the binary data for the value. This method allocates the memory pointed to using operator new[]. The caller is responsible for freeing the memory using operator delete[]. | |
length | Receives the number of bytes in the value. |
0 | for success; caller is responsible for freeing the returned memory. | |
-1 | for error; ACE_OS::last_error() retrieves error code. |
Implements ACE_Configuration.
Definition at line 2038 of file Configuration.cpp.
References ACE_ASSERT, ACE_NEW_RETURN, allocator_, ACE_Configuration::BINARY, ACE_Configuration_Value_IntId::data_, ACE_String_Base< CHAR >::fast_rep(), ACE_Hash_Map_With_Allocator< EXT_ID, INT_ID >::find(), index_, ACE_Configuration_Value_IntId::length_, load_key(), ACE_OS::memcpy(), ACE_Configuration::NULL_String_, ACE_Configuration_Value_IntId::ptr_, ACE_Configuration_Value_IntId::type_, and ACE_Configuration::validate_value_name().
02043 { 02044 ACE_ASSERT (this->allocator_); 02045 const ACE_TCHAR *t_name = name ? name : &this->NULL_String_; 02046 if (validate_value_name (t_name)) 02047 return -1; 02048 02049 // Get the section name from the key 02050 ACE_TString section; 02051 if (load_key (key, section)) 02052 return -1; 02053 02054 // Find this section 02055 ACE_Configuration_ExtId ExtId (section.fast_rep ()); 02056 ACE_Configuration_Section_IntId IntId; 02057 if (index_->find (ExtId, IntId, allocator_)) 02058 return -1; // section does not exist 02059 02060 ACE_Configuration_ExtId VExtId (t_name); 02061 ACE_Configuration_Value_IntId VIntId; 02062 // See if it exists first 02063 if (IntId.value_hash_map_->find (VExtId, VIntId, allocator_)) 02064 return -1; // unknown value 02065 02066 // Check type 02067 if (VIntId.type_ != ACE_Configuration::BINARY) 02068 { 02069 errno = ENOENT; 02070 return -1; 02071 } 02072 02073 // Make a copy 02074 ACE_NEW_RETURN (data, char[VIntId.length_], -1); 02075 ACE_OS::memcpy (data, VIntId.data_.ptr_, VIntId.length_); 02076 length = VIntId.length_; 02077 return 0; 02078 }
int ACE_Configuration_Heap::get_integer_value | ( | const ACE_Configuration_Section_Key & | key, | |
const ACE_TCHAR * | name, | |||
u_int & | value | |||
) | [virtual] |
Gets an integer-typed value.
key | Configuration section to get the value from. | |
name | Name of the configuration value to get. | |
value | Receives the configuration value if it exists and has type INTEGER. |
0 | for success. | |
-1 | for error; ACE_OS::last_error() retrieves error code. |
Implements ACE_Configuration.
Definition at line 1988 of file Configuration.cpp.
References ACE_ASSERT, allocator_, ACE_Configuration_Value_IntId::data_, ACE_String_Base< CHAR >::fast_rep(), ACE_Hash_Map_With_Allocator< EXT_ID, INT_ID >::find(), index_, ACE_Configuration_Value_IntId::int_, ACE_Configuration::INTEGER, ACE_Configuration::NULL_String_, ACE_Configuration_Value_IntId::type_, and ACE_Configuration::validate_value_name().
01991 { 01992 ACE_ASSERT (this->allocator_); 01993 01994 const ACE_TCHAR *t_name = name ? name : &this->NULL_String_; 01995 if (validate_value_name (t_name)) 01996 return -1; 01997 01998 // Get the section name from the key 01999 ACE_TString section (0, 0, false); 02000 02001 if (this->load_key (key, section) != 0) 02002 { 02003 return -1; 02004 } 02005 02006 // Find this section 02007 ACE_Configuration_ExtId ExtId (section.fast_rep ()); 02008 ACE_Configuration_Section_IntId IntId; 02009 02010 if (index_->find (ExtId, IntId, allocator_) != 0) 02011 { 02012 return -1; // section does not exist 02013 } 02014 02015 02016 // See if it exists first 02017 ACE_Configuration_ExtId VExtId (t_name); 02018 ACE_Configuration_Value_IntId VIntId; 02019 02020 if (IntId.value_hash_map_->find (VExtId, VIntId, allocator_) != 0) 02021 { 02022 return -1; // unknown value 02023 } 02024 02025 // Check type 02026 if (VIntId.type_ != ACE_Configuration::INTEGER) 02027 { 02028 errno = ENOENT; 02029 return -1; 02030 } 02031 02032 // Everythings ok, return the data 02033 value = VIntId.data_.int_; 02034 return 0; 02035 }
int ACE_Configuration_Heap::get_string_value | ( | const ACE_Configuration_Section_Key & | key, | |
const ACE_TCHAR * | name, | |||
ACE_TString & | value | |||
) | [virtual] |
Gets a string-typed value.
key | Configuration section to get the value from. | |
name | Name of the configuration value to get. | |
value | Receives the configuration value if it exists and has type STRING. |
0 | for success. | |
-1 | for error; ACE_OS::last_error() retrieves error code. |
Implements ACE_Configuration.
Definition at line 1949 of file Configuration.cpp.
References ACE_ASSERT, allocator_, ACE_Configuration_Value_IntId::data_, ACE_String_Base< CHAR >::fast_rep(), ACE_Hash_Map_With_Allocator< EXT_ID, INT_ID >::find(), index_, load_key(), ACE_Configuration::NULL_String_, ACE_Configuration_Value_IntId::ptr_, ACE_Configuration::STRING, ACE_Configuration_Value_IntId::type_, and ACE_Configuration::validate_value_name().
01952 { 01953 ACE_ASSERT (this->allocator_); 01954 const ACE_TCHAR *t_name = name ? name : &this->NULL_String_; 01955 if (validate_value_name (t_name)) 01956 return -1; 01957 01958 // Get the section name from the key 01959 ACE_TString section; 01960 if (load_key (key, section)) 01961 return -1; 01962 01963 // Find this section 01964 ACE_Configuration_ExtId ExtId (section.fast_rep ()); 01965 ACE_Configuration_Section_IntId IntId; 01966 if (index_->find (ExtId, IntId, allocator_)) 01967 return -1; // section does not exist 01968 01969 // See if it exists first 01970 ACE_Configuration_ExtId VExtId (t_name); 01971 ACE_Configuration_Value_IntId VIntId; 01972 if (IntId.value_hash_map_->find (VExtId, VIntId, allocator_)) 01973 return -1; // unknown value 01974 01975 // Check type 01976 if (VIntId.type_ != ACE_Configuration::STRING) 01977 { 01978 errno = ENOENT; 01979 return -1; 01980 } 01981 01982 // everythings ok, return the data 01983 value = static_cast<ACE_TCHAR*> (VIntId.data_.ptr_); 01984 return 0; 01985 }
int ACE_Configuration_Heap::load_key | ( | const ACE_Configuration_Section_Key & | key, | |
ACE_TString & | name | |||
) | [private] |
Definition at line 1359 of file Configuration.cpp.
References ACE_ASSERT, ACE_String_Base< CHAR >::assign_nocopy(), ACE_Configuration::get_internal_key(), and ACE_Configuration_Section_Key_Heap::path_.
Referenced by add_section(), find_value(), get_binary_value(), get_string_value(), open_simple_section(), remove_section(), remove_value(), set_binary_value(), set_integer_value(), and set_string_value().
01361 { 01362 ACE_ASSERT (this->allocator_); 01363 ACE_Configuration_Section_Key_Heap* pKey = 01364 dynamic_cast<ACE_Configuration_Section_Key_Heap*> (get_internal_key (key)); 01365 01366 if (!pKey) 01367 { 01368 return -1; 01369 } 01370 01371 ACE_TString temp (pKey->path_, 0, false); 01372 name.assign_nocopy (temp); 01373 return 0; 01374 }
int ACE_Configuration_Heap::new_section | ( | const ACE_TString & | section, | |
ACE_Configuration_Section_Key & | result | |||
) | [private] |
Definition at line 1424 of file Configuration.cpp.
References ACE_ASSERT, ACE_NEW_RETURN, allocator_, ACE_Hash_Map_With_Allocator< EXT_ID, INT_ID >::bind(), default_map_size_, ACE_String_Base< CHAR >::fast_rep(), ACE_Allocator::free(), index_, ACE_String_Base< CHAR >::length(), ACE_Allocator::malloc(), section_open_helper(), ACE_OS::strcpy(), ACE_Allocator::sync(), and value_open_helper().
Referenced by add_section(), and create_index().
01426 { 01427 ACE_ASSERT (this->allocator_); 01428 // Create a new section and add it to the global list 01429 01430 // Allocate memory for items to be stored in the table. 01431 size_t section_len = section.length () + 1; 01432 ACE_TCHAR *ptr = (ACE_TCHAR*) this->allocator_->malloc (section_len * sizeof (ACE_TCHAR)); 01433 01434 int return_value = -1; 01435 01436 if (ptr == 0) 01437 return -1; 01438 else 01439 { 01440 // Populate memory with data. 01441 ACE_OS::strcpy (ptr, section.fast_rep ()); 01442 01443 void *value_hash_map = 0; 01444 size_t map_size = sizeof (VALUE_MAP); 01445 value_hash_map = this->allocator_->malloc (map_size); 01446 01447 // If allocation failed ... 01448 if (value_hash_map == 0) 01449 return -1; 01450 01451 // Initialize allocated hash map through placement new. 01452 if (value_open_helper (default_map_size_, value_hash_map ) == -1) 01453 { 01454 this->allocator_->free (value_hash_map ); 01455 return -1; 01456 } 01457 01458 // create the section map 01459 void* section_hash_map = 0; 01460 map_size = sizeof (SUBSECTION_MAP); 01461 section_hash_map = this->allocator_->malloc (map_size); 01462 01463 // If allocation failed 01464 if (section_hash_map == 0) 01465 return -1; 01466 01467 // initialize allocated hash map through placement new 01468 if (section_open_helper (default_map_size_, section_hash_map) == -1) 01469 { 01470 this->allocator_->free (value_hash_map ); 01471 this->allocator_->free (section_hash_map); 01472 return -1; 01473 } 01474 01475 ACE_Configuration_ExtId name (ptr); 01476 ACE_Configuration_Section_IntId entry ((VALUE_MAP*) value_hash_map, 01477 (SUBSECTION_MAP*) section_hash_map); 01478 01479 // Do a normal bind. This will fail if there's already an 01480 // entry with the same name. 01481 return_value = this->index_->bind (name, entry, this->allocator_); 01482 01483 if (return_value == 1 /* Entry already existed so bind failed. */ 01484 || return_value == -1 /* Unable to bind for other reasons. */) 01485 { 01486 // Free our dynamically allocated memory. 01487 this->allocator_->free (static_cast<void *> (ptr)); 01488 return return_value; 01489 } 01490 01491 // If bind () succeed, it will automatically sync 01492 // up the map manager entry. However, we must sync up our 01493 // name/value memory. 01494 this->allocator_->sync (ptr, section_len); 01495 } 01496 01497 // set the result 01498 ACE_Configuration_Section_Key_Heap *temp; 01499 ACE_NEW_RETURN (temp, 01500 ACE_Configuration_Section_Key_Heap (ptr), 01501 -1); 01502 result = ACE_Configuration_Section_Key (temp); 01503 return return_value; 01504 }
int ACE_Configuration_Heap::open | ( | size_t | default_map_size = ACE_DEFAULT_CONFIG_SECTION_SIZE |
) |
Opens a heap based configuration.
Definition at line 1268 of file Configuration.cpp.
References ACE_NEW_RETURN, create_index(), and default_map_size_.
01269 { 01270 default_map_size_ = default_map_size; 01271 // Create the allocator with the appropriate options. 01272 // The name used for the lock is the same as one used 01273 // for the file. 01274 ACE_NEW_RETURN (this->allocator_, 01275 HEAP_ALLOCATOR (), 01276 -1); 01277 return create_index (); 01278 }
int ACE_Configuration_Heap::open | ( | const ACE_TCHAR * | file_name, | |
void * | base_address = ACE_DEFAULT_BASE_ADDR , |
|||
size_t | default_map_size = ACE_DEFAULT_CONFIG_SECTION_SIZE | |||
) |
Opens a configuration based on a file name.
Definition at line 1282 of file Configuration.cpp.
References ACE_OS::access(), ACE_ERROR_RETURN, ACE_NEW_RETURN, ACE_TEXT, create_index(), default_map_size_, F_OK, LM_ERROR, MAXNAMELEN, MAXPATHLEN, and ACE_OS::strlen().
01285 { 01286 default_map_size_ = default_map_size; 01287 01288 // Make sure that the file name is of the legal length. 01289 if (ACE_OS::strlen (file_name) >= MAXNAMELEN + MAXPATHLEN) 01290 { 01291 errno = ENAMETOOLONG; 01292 return -1; 01293 } 01294 01295 ACE_MMAP_Memory_Pool::OPTIONS options (base_address); 01296 01297 // Create the allocator with the appropriate options. The name used 01298 // for the lock is the same as one used for the file. 01299 ACE_NEW_RETURN (this->allocator_, 01300 PERSISTENT_ALLOCATOR (file_name, 01301 file_name, 01302 &options), 01303 -1); 01304 01305 #if !defined (ACE_LACKS_ACCESS) 01306 // Now check if the backing store has been created successfully. 01307 if (ACE_OS::access (file_name, F_OK) != 0) 01308 ACE_ERROR_RETURN ((LM_ERROR, 01309 ACE_TEXT ("create_index\n")), 01310 -1); 01311 #endif /* ACE_LACKS_ACCESS */ 01312 01313 return create_index (); 01314 }
int ACE_Configuration_Heap::open_section | ( | const ACE_Configuration_Section_Key & | base, | |
const ACE_TCHAR * | sub_section, | |||
int | create, | |||
ACE_Configuration_Section_Key & | result | |||
) | [virtual] |
Opens a named section in an existing section.
base | Existing section in which to open the named section. | |
sub_section | Name of the section to open. | |
create | If zero, the named section must exist. If non-zero, the named section will be created if it does not exist. | |
result | Reference; receives the section key for the new section. |
0 | for success. | |
-1 | for error; ACE_OS::last_error() retrieves error code. |
Implements ACE_Configuration.
Definition at line 1525 of file Configuration.cpp.
References ACE_ASSERT, ACE_TEXT, open_simple_section(), ACE_OS::strchr(), and ACE_Configuration::validate_name().
Referenced by remove_section().
01529 { 01530 ACE_ASSERT (this->allocator_); 01531 if (validate_name (sub_section, 1)) // 1 == allow_path 01532 return -1; 01533 01534 result = base; 01535 01536 for (const ACE_TCHAR* separator; 01537 (separator = ACE_OS::strchr (sub_section, ACE_TEXT ('\\'))) != 0; 01538 ) 01539 { 01540 ACE_TString simple_section (sub_section, separator - sub_section); 01541 int ret_val = 01542 open_simple_section (result, simple_section.c_str (), create, result); 01543 if (ret_val) 01544 return ret_val; 01545 sub_section = separator + 1; 01546 } 01547 01548 return open_simple_section (result, sub_section, create, result); 01549 }
int ACE_Configuration_Heap::open_simple_section | ( | const ACE_Configuration_Section_Key & | base, | |
const ACE_TCHAR * | sub_section, | |||
int | create, | |||
ACE_Configuration_Section_Key & | result | |||
) | [private] |
<sub_section> may not contain path separators
Definition at line 1552 of file Configuration.cpp.
References ACE_NEW_RETURN, ACE_TEXT, add_section(), allocator_, ACE_String_Base< CHAR >::fast_rep(), ACE_Hash_Map_With_Allocator< EXT_ID, INT_ID >::find(), index_, ACE_String_Base< CHAR >::length(), and load_key().
Referenced by open_section().
01556 { 01557 ACE_TString section (0, 0, false); 01558 01559 if (load_key (base, section)) 01560 { 01561 return -1; 01562 } 01563 01564 // Only add the \\ if were not at the root 01565 if (section.length ()) 01566 { 01567 section += ACE_TEXT ("\\"); 01568 } 01569 01570 section += sub_section; 01571 01572 // resolve the section 01573 ACE_Configuration_ExtId ExtId (section.fast_rep ()); 01574 ACE_Configuration_Section_IntId IntId; 01575 01576 if (index_->find (ExtId, IntId, allocator_)) 01577 { 01578 if (!create) 01579 { 01580 errno = ENOENT; 01581 return -1; 01582 } 01583 01584 return add_section (base, sub_section, result); 01585 } 01586 01587 ACE_Configuration_Section_Key_Heap *temp; 01588 ACE_NEW_RETURN (temp, 01589 ACE_Configuration_Section_Key_Heap (section.fast_rep ()), 01590 -1); 01591 result = ACE_Configuration_Section_Key (temp); 01592 return 0; 01593 }
ACE_Configuration_Heap& ACE_Configuration_Heap::operator= | ( | const ACE_Configuration_Heap & | rhs | ) | [private] |
int ACE_Configuration_Heap::remove_section | ( | const ACE_Configuration_Section_Key & | key, | |
const ACE_TCHAR * | sub_section, | |||
int | recursive | |||
) | [virtual] |
Removes a named section.
key | Section key to remove the named section from. | |
sub_section | Name of the section to remove. | |
recursive | If non zero, any subkeys below sub_section are removed as well. |
0 | for success. | |
-1 | for error; ACE_OS::last_error() retrieves error code. |
Implements ACE_Configuration.
Definition at line 1596 of file Configuration.cpp.
References ACE_ASSERT, ACE_TEXT, allocator_, ACE_Hash_Map_Manager_Ex< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK >::begin(), ACE_Hash_Map_Manager_Ex< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK >::close(), enumerate_sections(), ACE_String_Base< CHAR >::fast_rep(), ACE_Hash_Map_Manager_Ex< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK >::find(), ACE_Hash_Map_With_Allocator< EXT_ID, INT_ID >::find(), ACE_Configuration_Section_IntId::free(), ACE_Configuration_ExtId::free(), index_, ACE_String_Base< CHAR >::length(), load_key(), open_section(), ACE_Hash_Map_With_Allocator< EXT_ID, INT_ID >::unbind(), and ACE_Configuration::validate_name().
01599 { 01600 ACE_ASSERT (this->allocator_); 01601 if (validate_name (sub_section)) 01602 return -1; 01603 01604 ACE_TString section; 01605 if (load_key (key, section)) 01606 return -1; 01607 01608 // Find this key 01609 ACE_Configuration_ExtId ParentExtId (section.fast_rep ()); 01610 ACE_Configuration_Section_IntId ParentIntId; 01611 if (index_->find (ParentExtId, ParentIntId, allocator_)) 01612 return -1;// no parent key 01613 01614 // Find this subkey 01615 if (section.length ()) 01616 section += ACE_TEXT ("\\"); 01617 01618 section += sub_section; 01619 ACE_Configuration_ExtId SectionExtId (section.fast_rep ()); 01620 SECTION_HASH::ENTRY* section_entry; 01621 SECTION_HASH* hashmap = index_; 01622 if (hashmap->find (SectionExtId, section_entry)) 01623 return -1; 01624 01625 if (recursive) 01626 { 01627 ACE_Configuration_Section_Key section; 01628 if (open_section (key, sub_section, 0, section)) 01629 return -1; 01630 01631 int index = 0; 01632 ACE_TString name; 01633 while (!enumerate_sections (section, index, name)) 01634 { 01635 if (remove_section (section, name.fast_rep (), 1)) 01636 return -1; 01637 01638 ++index; 01639 } 01640 } 01641 01642 // Now make sure we dont have any subkeys 01643 if (section_entry->int_id_.section_hash_map_->current_size ()) 01644 { 01645 errno = ENOTEMPTY; 01646 return -1; 01647 } 01648 01649 // Now remove subkey from parent key 01650 ACE_Configuration_ExtId SubSExtId (sub_section); 01651 SUBSECTION_HASH::ENTRY* subsection_entry; 01652 if (((SUBSECTION_HASH*)ParentIntId.section_hash_map_)-> 01653 find (SubSExtId, subsection_entry)) 01654 return -1; 01655 01656 if (ParentIntId.section_hash_map_->unbind (SubSExtId, allocator_)) 01657 return -1; 01658 01659 subsection_entry->ext_id_.free (allocator_); 01660 01661 // Remember the pointers so we can free them after we unbind 01662 ACE_Configuration_ExtId ExtIdToFree (section_entry->ext_id_); 01663 ACE_Configuration_Section_IntId IntIdToFree (section_entry->int_id_); 01664 01665 // iterate over all values and free memory 01666 VALUE_HASH* value_hash_map = section_entry->int_id_.value_hash_map_; 01667 VALUE_HASH::ITERATOR value_iter = value_hash_map->begin (); 01668 while (!value_iter.done ()) 01669 { 01670 VALUE_HASH::ENTRY* value_entry = 0; 01671 if (!value_iter.next (value_entry)) 01672 return 1; 01673 01674 value_entry->ext_id_.free (allocator_); 01675 value_entry->int_id_.free (allocator_); 01676 01677 value_iter.advance (); 01678 } 01679 01680 // remove it 01681 if (index_->unbind (SectionExtId, allocator_)) 01682 return -1; 01683 01684 value_hash_map->close (); 01685 section_entry->int_id_.section_hash_map_->close (allocator_); 01686 01687 // Free the memory 01688 ExtIdToFree.free (allocator_); 01689 IntIdToFree.free (allocator_); 01690 01691 return 0; 01692 }
int ACE_Configuration_Heap::remove_value | ( | const ACE_Configuration_Section_Key & | key, | |
const ACE_TCHAR * | name | |||
) | [virtual] |
Removes the the value name from key. returns non zero on error.
Implements ACE_Configuration.
Definition at line 2112 of file Configuration.cpp.
References ACE_ASSERT, allocator_, ACE_String_Base< CHAR >::fast_rep(), ACE_Hash_Map_With_Allocator< EXT_ID, INT_ID >::find(), index_, load_key(), ACE_Configuration::NULL_String_, and ACE_Configuration::validate_value_name().
02114 { 02115 ACE_ASSERT (this->allocator_); 02116 const ACE_TCHAR *t_name = name ? name : &this->NULL_String_; 02117 if (validate_value_name (t_name)) 02118 return -1; 02119 02120 // Get the section name from the key 02121 ACE_TString section; 02122 if (load_key (key, section)) 02123 return -1; 02124 02125 // Find this section 02126 ACE_Configuration_ExtId ExtId (section.fast_rep ()); 02127 ACE_Configuration_Section_IntId IntId; 02128 if (index_->find (ExtId, IntId, allocator_)) 02129 return -1; // section does not exist 02130 02131 // Find it 02132 ACE_Configuration_ExtId ValueExtId (t_name); 02133 VALUE_HASH::ENTRY* value_entry; 02134 if (((VALUE_HASH *) IntId.value_hash_map_)->find (ValueExtId, value_entry)) 02135 return -1; 02136 02137 // free it 02138 value_entry->ext_id_.free (allocator_); 02139 value_entry->int_id_.free (allocator_); 02140 02141 // Unbind it 02142 if (IntId.value_hash_map_->unbind (ValueExtId, allocator_)) 02143 return -1; 02144 02145 return 0; 02146 }
int ACE_Configuration_Heap::section_open_helper | ( | size_t | hash_table_size, | |
void * | buffer | |||
) | [private] |
Definition at line 1516 of file Configuration.cpp.
References ACE_ASSERT.
Referenced by new_section().
01518 { 01519 ACE_ASSERT (this->allocator_); 01520 new (buffer) SUBSECTION_MAP (hash_table_size, this->allocator_); 01521 return 0; 01522 }
int ACE_Configuration_Heap::set_binary_value | ( | const ACE_Configuration_Section_Key & | key, | |
const ACE_TCHAR * | name, | |||
const void * | data, | |||
size_t | length | |||
) | [virtual] |
Sets a binary-typed value.
key | Configuration section to set the value in. | |
name | Name of the configuration value to set. If a value with the specified name exists, it is replaced. | |
data | Pointer to the binary data for the value. | |
length | Number of bytes for the new value. |
0 | for success. | |
-1 | for error; ACE_OS::last_error() retrieves error code. |
Implements ACE_Configuration.
Definition at line 1891 of file Configuration.cpp.
References ACE_ASSERT, allocator_, ACE_String_Base< CHAR >::fast_rep(), ACE_Hash_Map_With_Allocator< EXT_ID, INT_ID >::find(), ACE_Allocator::free(), index_, load_key(), ACE_Allocator::malloc(), ACE_OS::memcpy(), ACE_Configuration::NULL_String_, ACE_OS::strcpy(), ACE_OS::strlen(), and ACE_Configuration::validate_value_name().
01895 { 01896 ACE_ASSERT (this->allocator_); 01897 const ACE_TCHAR *t_name = name ? name : &this->NULL_String_; 01898 if (validate_value_name (t_name)) 01899 return -1; 01900 01901 // Get the section name from the key 01902 ACE_TString section; 01903 if (load_key (key, section)) 01904 return -1; 01905 01906 // Find this section 01907 ACE_Configuration_ExtId section_ext (section.fast_rep ()); 01908 ACE_Configuration_Section_IntId section_int; 01909 if (index_->find (section_ext, section_int, allocator_)) 01910 return -1; // section does not exist 01911 01912 // Get the entry for this item (if it exists) 01913 VALUE_HASH::ENTRY* entry; 01914 ACE_Configuration_ExtId item_name (t_name); 01915 if (section_int.value_hash_map_->VALUE_HASH::find (item_name, entry) == 0) 01916 { 01917 // found item, replace it 01918 // Free the old value 01919 entry->int_id_.free (allocator_); 01920 // Allocate the new value in this heap 01921 ACE_TCHAR* pers_value = (ACE_TCHAR *) allocator_->malloc (length); 01922 ACE_OS::memcpy (pers_value, data, length); 01923 ACE_Configuration_Value_IntId new_value_int (pers_value, length); 01924 entry->int_id_ = new_value_int; 01925 } 01926 else 01927 { 01928 // it doesn't exist, bind it 01929 ACE_TCHAR* pers_name = 01930 (ACE_TCHAR *) allocator_->malloc ((ACE_OS::strlen (t_name) + 1) * sizeof (ACE_TCHAR)); 01931 ACE_OS::strcpy (pers_name, t_name); 01932 ACE_TCHAR* pers_value = (ACE_TCHAR *) allocator_->malloc (length); 01933 ACE_OS::memcpy (pers_value, data, length); 01934 ACE_Configuration_ExtId item_name (pers_name); 01935 ACE_Configuration_Value_IntId item_value (pers_value, length); 01936 if (section_int.value_hash_map_->bind (item_name, item_value, allocator_)) 01937 { 01938 allocator_->free (pers_value); 01939 allocator_->free (pers_name); 01940 return -1; 01941 } 01942 return 0; 01943 } 01944 01945 return 0; 01946 }
int ACE_Configuration_Heap::set_integer_value | ( | const ACE_Configuration_Section_Key & | key, | |
const ACE_TCHAR * | name, | |||
u_int | value | |||
) | [virtual] |
Sets a integer-typed value.
key | Configuration section to set the value in. | |
name | Name of the configuration value to set. If a value with the specified name exists, it is replaced. | |
value | The integer to set the configuration value to. |
0 | for success. | |
-1 | for error; ACE_OS::last_error() retrieves error code. |
Implements ACE_Configuration.
Definition at line 1842 of file Configuration.cpp.
References ACE_ASSERT, allocator_, ACE_String_Base< CHAR >::fast_rep(), ACE_Hash_Map_With_Allocator< EXT_ID, INT_ID >::find(), ACE_Allocator::free(), index_, load_key(), ACE_Allocator::malloc(), ACE_Configuration::NULL_String_, ACE_OS::strcpy(), ACE_OS::strlen(), and ACE_Configuration::validate_value_name().
01845 { 01846 ACE_ASSERT (this->allocator_); 01847 const ACE_TCHAR *t_name = name ? name : &this->NULL_String_; 01848 if (validate_value_name (t_name)) 01849 return -1; 01850 01851 // Get the section name from the key 01852 ACE_TString section; 01853 if (load_key (key, section)) 01854 return -1; 01855 01856 // Find this section 01857 ACE_Configuration_ExtId section_ext (section.fast_rep ()); 01858 ACE_Configuration_Section_IntId section_int; 01859 if (index_->find (section_ext, section_int, allocator_)) 01860 return -1; // section does not exist 01861 01862 // Get the entry for this item (if it exists) 01863 VALUE_HASH::ENTRY* entry; 01864 ACE_Configuration_ExtId item_name (t_name); 01865 if (section_int.value_hash_map_->VALUE_HASH::find (item_name, entry) == 0) 01866 { 01867 // found item, replace it 01868 ACE_Configuration_Value_IntId new_value_int (value); 01869 entry->int_id_ = new_value_int; 01870 } 01871 else 01872 { 01873 // it doesn't exist, bind it 01874 ACE_TCHAR* pers_name = 01875 (ACE_TCHAR *) allocator_->malloc ((ACE_OS::strlen (t_name) + 1) * sizeof (ACE_TCHAR)); 01876 ACE_OS::strcpy (pers_name, t_name); 01877 ACE_Configuration_ExtId item_name (pers_name); 01878 ACE_Configuration_Value_IntId item_value (value); 01879 if (section_int.value_hash_map_->bind (item_name, item_value, allocator_)) 01880 { 01881 allocator_->free (pers_name); 01882 return -1; 01883 } 01884 return 0; 01885 } 01886 01887 return 0; 01888 }
int ACE_Configuration_Heap::set_string_value | ( | const ACE_Configuration_Section_Key & | key, | |
const ACE_TCHAR * | name, | |||
const ACE_TString & | value | |||
) | [virtual] |
Sets a string-typed value.
key | Configuration section to set the value in. | |
name | Name of the configuration value to set. If a value with the specified name exists, it is replaced. | |
value | The string to set the configuration value to. |
0 | for success. | |
-1 | for error; ACE_OS::last_error() retrieves error code. |
Implements ACE_Configuration.
Definition at line 1785 of file Configuration.cpp.
References ACE_ASSERT, allocator_, ACE_String_Base< CHAR >::fast_rep(), ACE_Hash_Map_With_Allocator< EXT_ID, INT_ID >::find(), ACE_Allocator::free(), index_, ACE_String_Base< CHAR >::length(), load_key(), ACE_Allocator::malloc(), ACE_Configuration::NULL_String_, ACE_OS::strcpy(), ACE_OS::strlen(), and ACE_Configuration::validate_value_name().
01788 { 01789 ACE_ASSERT (this->allocator_); 01790 const ACE_TCHAR *t_name = name ? name : &this->NULL_String_; 01791 if (validate_value_name (t_name)) 01792 return -1; 01793 01794 ACE_TString section; 01795 if (load_key (key, section)) 01796 return -1; 01797 01798 ACE_Configuration_ExtId section_ext (section.fast_rep ()); 01799 ACE_Configuration_Section_IntId section_int; 01800 if (index_->find (section_ext, section_int, allocator_)) 01801 return -1; 01802 01803 // Get the entry for this item (if it exists) 01804 VALUE_HASH::ENTRY* entry; 01805 ACE_Configuration_ExtId item_name (t_name); 01806 if (section_int.value_hash_map_->VALUE_HASH::find (item_name, entry) == 0) 01807 { 01808 // found item, replace it 01809 // Free the old value 01810 entry->int_id_.free (allocator_); 01811 // Allocate the new value in this heap 01812 ACE_TCHAR* pers_value = 01813 (ACE_TCHAR *) allocator_->malloc ((value.length () + 1) * sizeof (ACE_TCHAR)); 01814 ACE_OS::strcpy (pers_value, value.fast_rep ()); 01815 ACE_Configuration_Value_IntId new_value_int (pers_value); 01816 entry->int_id_ = new_value_int; 01817 } 01818 else 01819 { 01820 // it doesn't exist, bind it 01821 ACE_TCHAR* pers_name = 01822 (ACE_TCHAR *) allocator_->malloc ((ACE_OS::strlen (t_name) + 1) * sizeof (ACE_TCHAR)); 01823 ACE_OS::strcpy (pers_name, t_name); 01824 ACE_TCHAR* pers_value = 01825 (ACE_TCHAR *) allocator_->malloc ((value.length () + 1) * sizeof (ACE_TCHAR)); 01826 ACE_OS::strcpy (pers_value, value.fast_rep ()); 01827 ACE_Configuration_ExtId item_name (pers_name); 01828 ACE_Configuration_Value_IntId item_value (pers_value); 01829 if (section_int.value_hash_map_->bind (item_name, item_value, allocator_)) 01830 { 01831 allocator_->free (pers_value); 01832 allocator_->free (pers_name); 01833 return -1; 01834 } 01835 return 0; 01836 } 01837 01838 return 0; 01839 }
int ACE_Configuration_Heap::value_open_helper | ( | size_t | hash_table_size, | |
void * | buffer | |||
) | [private] |
Definition at line 1507 of file Configuration.cpp.
References ACE_ASSERT.
Referenced by new_section().
01509 { 01510 ACE_ASSERT (this->allocator_); 01511 new (buffer) VALUE_MAP (hash_table_size, this->allocator_); 01512 return 0; 01513 }
ACE_Allocator* ACE_Configuration_Heap::allocator_ [private] |
Definition at line 884 of file Configuration.h.
Referenced by add_section(), create_index(), enumerate_sections(), enumerate_values(), find_value(), get_binary_value(), get_integer_value(), get_string_value(), new_section(), open_simple_section(), remove_section(), remove_value(), set_binary_value(), set_integer_value(), set_string_value(), and ~ACE_Configuration_Heap().
size_t ACE_Configuration_Heap::default_map_size_ [private] |
SECTION_MAP* ACE_Configuration_Heap::index_ [private] |
Definition at line 885 of file Configuration.h.
Referenced by add_section(), create_index_helper(), enumerate_sections(), enumerate_values(), find_value(), get_binary_value(), get_integer_value(), get_string_value(), new_section(), open_simple_section(), remove_section(), remove_value(), set_binary_value(), set_integer_value(), and set_string_value().