Idioskopos::Introspectable Class Reference

#include <idioskopos/introspectable.h>

Inheritance diagram for Idioskopos::Introspectable:

Inheritance graph
[legend]
List of all members.

Detailed Description

Serves as a base class for introspectable objects.

Author:
Rick L Vinyard Jr


Public Types

typedef IdioskoposPointer<
Introspectable
pointer
typedef std::set< Object * > Objects

Public Member Functions

 IDIOSKOPOS_OBJECT_AND_REGISTRAR (Introspectable)
 Introspectable (const Glib::ustring &name, sigc::slot< void > slot=sigc::slot< void >())
 Introspectable (const Glib::ustring &name, Introspectable &container, sigc::slot< void > slot=sigc::slot< void >())
Objectget_property (const Glib::ustring &name)
bool has_property (const Glib::ustring &name)
bool add_property (Object &property)
 Adds the given property that will be identified by the given name.
bool add_property (Object::pointer property)
void remove_property (const Glib::ustring &name)
sigc::signal< void, Object * > signal_property_value_changed ()
sigc::signal< void, Object *,
const Glib::ustring & > 
signal_property_name_changed ()
virtual sigc::signal< void,
Object * > 
signal_property_added ()
 Returns the property added signal if this is an introspectable object, otherwise throws an exception.
virtual sigc::signal< void,
Object * > 
signal_property_removed ()
 Returns the property removed signal if this is an introspectable object, otherwise throws an exception.
template<typename T>
PropertyBase< T > & property (const Glib::ustring &name)
template<typename T>
PropertyBase< T > * property_ptr (const Glib::ustring &name)
const std::type_info & type () const
 Pure virtual method implemented by children to return actual RTTI information from child.
virtual size_t num_properties () const
 Default parent implementation returns 0, so Introspectable must provide a new implementation that will return the true number of children.
virtual Glib::ustring xml (int indent=-1)
 Pure virtual method implemented by children to return an XML string containing both type and value information.
virtual void set_xml (const Glib::ustring &s, bool change_names=false, bool create_missing=true)
virtual void set_xml (const xmlpp::Node *n, bool change_names=false, bool create_missing=true)
virtual iterator properties_begin ()
virtual iterator properties_end ()
virtual Objectoperator[] (const Glib::ustring &name) throw ( error::bad_property_name )
 This method returns an Object reference and throws exceptions when a bad name is encountered.
 IDIOSKOPOS_OBJECT (Object)
const Glib::ustring & name ()
void set_name (const Glib::ustring &n)
sigc::signal< void, const
Glib::ustring & > 
signal_name_changed ()
sigc::signal< void > & signal_value_changed ()
 Signal emitted when the property is changed.
virtual Glib::ustring value ()
 Virtual method implemented by children to return a string representation of the contained value.
virtual void set_value (const Glib::ustring &v)
template<typename T>
void set_value (const T &t)

Static Public Member Functions

static pointer create (const Glib::ustring &name, sigc::slot< void > slot=sigc::slot< void >())
static pointer create (const Glib::ustring &name, Introspectable &container, sigc::slot< void > slot=sigc::slot< void >())

Protected Member Functions

void on_property_value_changed (Object *)
void on_property_name_changed (const Glib::ustring &, Object *)
virtual iterator next_property (std::set< Object * >::iterator i)
virtual iterator previous_property (std::set< Object * >::iterator i)
virtual iterator next_property (std::set< Object * >::iterator i)
virtual iterator next_property (size_t i)
virtual iterator previous_property (std::set< Object * >::iterator i)
virtual iterator previous_property (size_t i)

Protected Attributes

std::set< Object * > m_properties
PropertyMap m_property_name_map
DynamicPropertyMap m_dynamic_property_map
Glib::ustring m_separator
sigc::signal< void, Object * > m_signal_property_value_changed
std::map< Object *, sigc::connection > m_property_value_changed_connection
sigc::signal< void, Object *,
const Glib::ustring & > 
m_signal_property_name_changed
std::map< Object *, sigc::connection > m_property_name_changed_connection
sigc::signal< void, Object * > m_signal_property_added
sigc::signal< void, Object * > m_signal_property_removed
Glib::ustring m_name
sigc::signal< void, const
Glib::ustring & > 
m_signal_name_changed
sigc::signal< void > m_signal_value_changed
 Signal emitted when underlying data is changed.


Member Function Documentation

bool Idioskopos::Introspectable::add_property ( Object property  ) 

Adds the given property that will be identified by the given name.

sigc::signal< void, Object * > Idioskopos::Introspectable::signal_property_added (  )  [virtual]

Returns the property added signal if this is an introspectable object, otherwise throws an exception.

Reimplemented from Idioskopos::Object.

sigc::signal< void, Object * > Idioskopos::Introspectable::signal_property_removed (  )  [virtual]

Returns the property removed signal if this is an introspectable object, otherwise throws an exception.

Reimplemented from Idioskopos::Object.

const std::type_info& Idioskopos::Introspectable::type (  )  const [inline, virtual]

Pure virtual method implemented by children to return actual RTTI information from child.

Implements Idioskopos::Object.

size_t Idioskopos::Introspectable::num_properties (  )  const [virtual]

Default parent implementation returns 0, so Introspectable must provide a new implementation that will return the true number of children.

Reimplemented from Idioskopos::Object.

Glib::ustring Idioskopos::Introspectable::xml ( int  indent = -1  )  [virtual]

Pure virtual method implemented by children to return an XML string containing both type and value information.

Implements Idioskopos::Object.

Object & Idioskopos::Introspectable::operator[] ( const Glib::ustring &  name  )  throw ( error::bad_property_name ) [virtual]

This method returns an Object reference and throws exceptions when a bad name is encountered.

The alternative would be to return an Object* and return NULL for an unfound name. However, by returning a reference, it is possible to index into objects using array notation, as in myobject["child"]["property"]

Reimplemented from Idioskopos::Object.

sigc::signal< void > & Idioskopos::Object::signal_value_changed (  )  [inherited]

Signal emitted when the property is changed.

Glib::ustring Idioskopos::Object::value (  )  [virtual, inherited]

Virtual method implemented by children to return a string representation of the contained value.

Reimplemented in Idioskopos::ReadOnlyPropertyBase< T >, Idioskopos::ReadOnlyPropertyBase< std::vector< X, A > >, Idioskopos::ReadOnlyPropertyBase< IdioskoposArray< X, N > >, Idioskopos::ReadOnlyPropertyBase< double >, Idioskopos::ReadOnlyPropertyBase< std::string >, Idioskopos::ReadOnlyPropertyBase< std::vector< bool, A > >, Idioskopos::ReadOnlyPropertyBase< int >, Idioskopos::ReadOnlyPropertyBase< VerySimple >, Idioskopos::ReadOnlyPropertyBase< std::vector< double > >, and Idioskopos::ReadOnlyPropertyBase< IdioskoposArray< int, 10 > >.


Member Data Documentation

sigc::signal<void> Idioskopos::Object::m_signal_value_changed [protected, inherited]

Signal emitted when underlying data is changed.


The documentation for this class was generated from the following files:
Generated on Thu Jan 11 00:26:42 2007 by  doxygen 1.5.1