Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members   Related Pages  

TAO::PG_Property_Set Class Reference

#include <PG_Property_Set.h>

Collaboration diagram for TAO::PG_Property_Set:

Collaboration graph
[legend]
List of all members.

Public Methods

 PG_Property_Set (void)
 PG_Property_Set (const PortableGroup::Properties &property_set ACE_ENV_ARG_DECL_WITH_DEFAULTS) throw (CORBA::SystemException)
 PG_Property_Set (const PortableGroup::Properties &property_set, PG_Property_Set *defaults ACE_ENV_ARG_DECL_WITH_DEFAULTS) throw (CORBA::SystemException)
 PG_Property_Set (PG_Property_Set *defaults)
 ~PG_Property_Set ()
int find (const ACE_CString &key, const PortableGroup::Value *&pValue) const
void decode (const PortableGroup::Properties &property_set ACE_ENV_ARG_DECL) throw (CORBA::SystemException)
void clear ()
void remove (const PortableGroup::Properties &property_set) throw (CORBA::SystemException)
void set_property (const char *name, const PortableGroup::Value &value ACE_ENV_ARG_DECL)
void export_properties (PortableGroup::Properties &property_set) const

Private Types

typedef ACE_Hash_Map_Manager<
ACE_CString, const PortableGroup::Value *,
ACE_SYNCH_NULL_MUTEX
ValueMap
typedef ACE_Hash_Map_Iterator<
ACE_CString, const PortableGroup::Value *,
ACE_SYNCH_NULL_MUTEX
ValueMapIterator
typedef ACE_Guard< TAO_SYNCH_MUTEXInternalGuard

Private Methods

void merge_properties (ValueMap &merged_values) const
 PG_Property_Set (const PG_Property_Set &rhs)
PG_Property_Set & operator= (const PG_Property_Set &rhs)

Private Attributes

TAO_SYNCH_MUTEX internals_
ValueMap values_
PG_Property_Set * defaults_

Detailed Description

The PG_Property_Set captures the set of properties from a PortableGroup::Properties structure in a more usable format (a hash map), and provides methods for operating on these properties.

It supports "chains" of property sets to implement default value semantics. If a requested property is not found in this set, the default set(s) are searched. Thus, any property found at this level overrides the defaults.

See: PG_Properties_Support for more details on use of this object.

A PG_Property_Set may also be used for it's original purpose as a stand-alone helper class for extracting values from PortableGroup::Properties.


Member Typedef Documentation

typedef ACE_Guard<TAO_SYNCH_MUTEX> TAO::PG_Property_Set::InternalGuard [private]
 

typedef ACE_Hash_Map_Manager< ACE_CString, const PortableGroup::Value *, ACE_SYNCH_NULL_MUTEX> TAO::PG_Property_Set::ValueMap [private]
 

typedef ACE_Hash_Map_Iterator< ACE_CString, const PortableGroup::Value *, ACE_SYNCH_NULL_MUTEX> TAO::PG_Property_Set::ValueMapIterator [private]
 


Constructor & Destructor Documentation

TAO::PG_Property_Set::PG_Property_Set void   
 

constructor: empty set with no defaults.

TAO::PG_Property_Set::PG_Property_Set const PortableGroup::Properties &property_set    ACE_ENV_ARG_DECL_WITH_DEFAULTS throw (CORBA::SystemException)
 

constructor

Parameters:
property_set  the properties to be decoded

TAO::PG_Property_Set::PG_Property_Set const PortableGroup::Properties   property_set,
PG_Property_Set *defaults    ACE_ENV_ARG_DECL_WITH_DEFAULTS
throw (CORBA::SystemException)
 

constructor with defaults

Parameters:
property_set  the properties to be decoded
defaults  a propert set decoder that supplies default values.

TAO::PG_Property_Set::PG_Property_Set PG_Property_Set *    defaults
 

constructor with defaults, but no properties (yet) (note this is not a copy constructor)

Parameters:
defaults  a propert set decoder that supplies default values.

TAO::PG_Property_Set::~PG_Property_Set  
 

TAO::PG_Property_Set::PG_Property_Set const PG_Property_Set &    rhs [private]
 


Member Function Documentation

void TAO::PG_Property_Set::clear  
 

Clear properties Does not clear default properties.

void TAO::PG_Property_Set::decode const PortableGroup::Properties &property_set    ACE_ENV_ARG_DECL throw (CORBA::SystemException)
 

Decode additional properties Duplicate values replace previous values.

Parameters:
property_set  the properties to be decoded

void TAO::PG_Property_Set::export_properties PortableGroup::Properties   property_set const
 

Export the properties to a PortableGroup::Properties

This method is intended to be used to implement the PropertyManager::get_*_properties methods. If you want to access the properties for any purpose other than exporting them across a CORBA interface, it is much more efficient to use the find interface.

int TAO::PG_Property_Set::find const ACE_CString   key,
const PortableGroup::Value *&    pValue
const
 

general purpose find. returns a pointer to an Any if templated methods were available: template <typename TYPE > int find (const ACE_CString & key, TYPE & value) const; instead, see global function below

Parameters:
key  the (simple) name of the property
pValue  an out parameter to receive a pointer to the Any containing the value
Returns:
boolean true if found

void TAO::PG_Property_Set::merge_properties ValueMap   merged_values const [private]
 

populate a ValueMap with the properties known to this decoder including but overriding default values

PG_Property_Set& TAO::PG_Property_Set::operator= const PG_Property_Set &    rhs [private]
 

void TAO::PG_Property_Set::remove const PortableGroup::Properties   property_set throw (CORBA::SystemException)
 

void TAO::PG_Property_Set::set_property const char *    name,
const PortableGroup::Value &value    ACE_ENV_ARG_DECL
 

set or replace a single property


Member Data Documentation

PG_Property_Set* TAO::PG_Property_Set::defaults_ [private]
 

a parent to another property decoder that provides default values these can be chained indefinitely. @ TODO: reference counted pointers would be a good idea here.

TAO_SYNCH_MUTEX TAO::PG_Property_Set::internals_ [private]
 

Protect internal state.

ValueMap TAO::PG_Property_Set::values_ [private]
 


The documentation for this class was generated from the following files:
Generated on Thu Jan 15 01:22:24 2004 for TAO_PortableGroup by doxygen1.2.18