#include <ace/Configuration.h>
class ACE_Configuration_Heap : public ACE_Configuration {
public:
ACE_Configuration_Heap (void);
virtual ~ACE_Configuration_Heap (void);
int open ( const TCHAR* file_name, void* base_address = ACE_DEFAULT_BASE_ADDR, int default_map_size = ACE_DEFAULT_CONFIG_SECTION_SIZE );
int open (int default_map_size = ACE_DEFAULT_CONFIG_SECTION_SIZE);
virtual int open_section ( const ACE_Configuration_Section_Key& base, const TCHAR* sub_section, int create, ACE_Configuration_Section_Key& result );
virtual int remove_section ( const ACE_Configuration_Section_Key& key, const TCHAR* sub_section, int recursive );
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 TCHAR* name, const ACE_TString& value );
virtual int set_integer_value ( const ACE_Configuration_Section_Key& key, const TCHAR* name, u_int value );
virtual int set_binary_value ( const ACE_Configuration_Section_Key& key, const TCHAR* name, const void* data, u_int length );
virtual int get_string_value ( const ACE_Configuration_Section_Key& key, const TCHAR* name, ACE_TString& value );
virtual int get_integer_value ( const ACE_Configuration_Section_Key& key, const TCHAR* name, u_int& value );
virtual int get_binary_value ( const ACE_Configuration_Section_Key& key, const TCHAR* name, void* &data, u_int &length );
virtual int remove_value ( const ACE_Configuration_Section_Key& key, const TCHAR* name );
private:
int add_section ( const ACE_Configuration_Section_Key& base, const TCHAR* sub_section, ACE_Configuration_Section_Key& result );
int create_index (void);
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& section, ACE_Configuration_Section_Key& result );
ACE_Configuration_Heap (const ACE_Configuration_Heap& rhs);
ACE_Configuration_Heap& operator= ( const ACE_Configuration_Heap& rhs );
ACE_Allocator *allocator_;
SECTION_MAP *index_;
int default_map_size_;
};
ACE_Configuration_Heap (void);
virtual ~ACE_Configuration_Heap (void);
int open (
const TCHAR* file_name,
void* base_address = ACE_DEFAULT_BASE_ADDR,
int default_map_size = ACE_DEFAULT_CONFIG_SECTION_SIZE
);
int open (int default_map_size = ACE_DEFAULT_CONFIG_SECTION_SIZE);
virtual int open_section (
const ACE_Configuration_Section_Key& base,
const TCHAR* sub_section,
int create,
ACE_Configuration_Section_Key& result
);
virtual int remove_section (
const ACE_Configuration_Section_Key& key,
const TCHAR* sub_section,
int recursive
);
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 TCHAR* name,
const ACE_TString& value
);
virtual int set_integer_value (
const ACE_Configuration_Section_Key& key,
const TCHAR* name,
u_int value
);
virtual int set_binary_value (
const ACE_Configuration_Section_Key& key,
const TCHAR* name,
const void* data,
u_int length
);
virtual int get_string_value (
const ACE_Configuration_Section_Key& key,
const TCHAR* name,
ACE_TString& value
);
virtual int get_integer_value (
const ACE_Configuration_Section_Key& key,
const TCHAR* name,
u_int& value
);
virtual int get_binary_value (
const ACE_Configuration_Section_Key& key,
const TCHAR* name,
void* &data,
u_int &length
);
virtual int remove_value (
const ACE_Configuration_Section_Key& key,
const TCHAR* name
);
name
from key
. returns non zero on error
int add_section (
const ACE_Configuration_Section_Key& base,
const TCHAR* sub_section,
ACE_Configuration_Section_Key& result
);
int create_index (void);
open
method.
int create_index_helper (void *buffer);
create_index
method: places hash table into an
allocated space.
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& section,
ACE_Configuration_Section_Key& result
);
ACE_Configuration_Heap (const ACE_Configuration_Heap& rhs);
ACE_Configuration_Heap& operator= (const ACE_Configuration_Heap& rhs);
ACE_Allocator *allocator_;
SECTION_MAP *index_;
int default_map_size_;
chris@stentorsoft.com