Idioskopos::ReferenceProperty< T > Class Template Reference

#include <idioskopos/referenceproperty.h>

Inheritance diagram for Idioskopos::ReferenceProperty< T >:

Inheritance graph
[legend]
List of all members.

Detailed Description

template<typename T>
class Idioskopos::ReferenceProperty< T >

Reference properties.


Public Types

typedef IdioskoposPointer<
ReferenceProperty
pointer
typedef T value_type
typedef std::set< Object * > Objects

Public Member Functions

 IDIOSKOPOS_OBJECT (ReferenceProperty)
 ReferenceProperty (const Glib::ustring &name, T &val, sigc::slot< void > slot=sigc::slot< void >())
 Initializes the contained value to the parameter's value.
 ReferenceProperty (const Glib::ustring &name, T &val, Introspectable &container, sigc::slot< void > slot=sigc::slot< void >())
 Makes this a property of the introspectable container accessible through the provided name, and initializes the contained value to the value of the third parameter.
virtual const T & get () const
 The canonical get() accessor method.
virtual T * get_pointer ()
 Should return a pointer to the contained object, or NULL if pointers are not allowed.
virtual void set (const T &val)
 The canonical set() accessor method that also emits the changed signal.
 IDIOSKOPOS_OBJECT (PropertyBase)
 IDIOSKOPOS_OBJECT (ReadOnlyPropertyBase)
 IDIOSKOPOS_OBJECT (Object)
 IDIOSKOPOS_OBJECT (WriteOnlyPropertyBase)
PropertyBase< T > & operator() (const T &val)
 Function call syntax.
const T & operator() () const
 Function call syntax.
template<typename X>
PropertyBase< T > & operator+= (X other)
 Arithmetic assignment operator.
template<typename X>
PropertyBase< T > & operator-= (X other)
 Arithmetic assignment operator.
template<typename X>
PropertyBase< T > & operator *= (X other)
 Arithmetic assignment operator.
template<typename X>
PropertyBase< T > & operator/= (X other)
 Arithmetic assignment operator.
template<typename X>
PropertyBase< T > & operator%= (X other)
 Arithmetic assignment operator.
virtual Glib::ustring xml (int indent=-1)
 The get_xml function is a template method with full specializations for known types.
const std::type_info & type () const
 Returns the RTTI type id of the contained type.
virtual const T * get_pointer () const
 operator const T & () const
 Allows for implicit casts to the contained type.
T * operator-> ()
 A convenience operator when the property contains a class.
virtual Glib::ustring value ()
 Similar in concept to the xml() method, this provides a string representation of the contained value if the get_value() template has a meaningful template specialization.
const Glib::ustring & name ()
void set_name (const Glib::ustring &n)
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.
sigc::signal< void, const
Glib::ustring & > 
signal_name_changed ()
sigc::signal< void > & signal_value_changed ()
 Signal emitted when the property is changed.
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 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 void set_value (const Glib::ustring &v)
template<typename T>
void set_value (const T &t)
virtual void set_value (const Glib::ustring &v)
virtual size_t num_properties () const
 If this is a property container, this should be reimplemented to provide a true count of the number of child properties this container has.
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.

Static Public Member Functions

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

Protected Member Functions

virtual T & get_value ()
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

T & m_value
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.


Constructor & Destructor Documentation

template<typename T>
Idioskopos::ReferenceProperty< T >::ReferenceProperty ( const Glib::ustring &  name,
T &  val,
sigc::slot< void >  slot = sigc::slot<void>() 
) [inline]

Initializes the contained value to the parameter's value.

template<typename T>
Idioskopos::ReferenceProperty< T >::ReferenceProperty ( const Glib::ustring &  name,
T &  val,
Introspectable container,
sigc::slot< void >  slot = sigc::slot<void>() 
) [inline]

Makes this a property of the introspectable container accessible through the provided name, and initializes the contained value to the value of the third parameter.


Member Function Documentation

template<typename T>
virtual const T& Idioskopos::ReferenceProperty< T >::get (  )  const [inline, virtual]

The canonical get() accessor method.

Implements Idioskopos::ReadOnlyPropertyBase< T >.

template<typename T>
virtual T* Idioskopos::ReferenceProperty< T >::get_pointer (  )  [inline, virtual]

Should return a pointer to the contained object, or NULL if pointers are not allowed.

Implements Idioskopos::ReadOnlyPropertyBase< T >.

template<typename T>
virtual void Idioskopos::ReferenceProperty< T >::set ( const T &  val  )  [inline, virtual]

The canonical set() accessor method that also emits the changed signal.

Implements Idioskopos::WriteOnlyPropertyBase< T >.

template<typename T>
PropertyBase<T>& Idioskopos::PropertyBase< T >::operator() ( const T &  val  )  [inline, inherited]

Function call syntax.

Set the value of the property with property(value) notation.

Returns:
The new value of the property

template<typename T>
const T& Idioskopos::ReadOnlyPropertyBase< T >::operator() (  )  const [inline, inherited]

Function call syntax.

Get the value of the property with property() notation.

Returns:
the current value of the property

template<typename T>
template<typename X>
PropertyBase<T>& Idioskopos::PropertyBase< T >::operator+= ( other  )  [inline, inherited]

Arithmetic assignment operator.

This method is implemented as a template for two reasons:

T + X must be well defined

template<typename T>
template<typename X>
PropertyBase<T>& Idioskopos::PropertyBase< T >::operator-= ( other  )  [inline, inherited]

Arithmetic assignment operator.

This method is implemented as a template for two reasons:

T - X must be well defined

template<typename T>
template<typename X>
PropertyBase<T>& Idioskopos::PropertyBase< T >::operator *= ( other  )  [inline, inherited]

Arithmetic assignment operator.

This method is implemented as a template for two reasons:

T * X must be well defined

template<typename T>
template<typename X>
PropertyBase<T>& Idioskopos::PropertyBase< T >::operator/= ( other  )  [inline, inherited]

Arithmetic assignment operator.

This method is implemented as a template for two reasons:

T / X must be well defined

template<typename T>
template<typename X>
PropertyBase<T>& Idioskopos::PropertyBase< T >::operator%= ( other  )  [inline, inherited]

Arithmetic assignment operator.

This method is implemented as a template for two reasons:

T % X must be well defined

template<typename T>
virtual Glib::ustring Idioskopos::PropertyBase< T >::xml ( int  indent = -1  )  [inline, virtual, inherited]

The get_xml function is a template method with full specializations for known types.

The default implementation returns an XML string filled with the RTTI typeinfo id. This is not a portable approach. However, if you provide a specialization of get_xml() for your class, it _will_ be a portable solution.

Reimplemented from Idioskopos::ReadOnlyPropertyBase< T >.

template<typename T>
const std::type_info& Idioskopos::PropertyBase< T >::type (  )  const [inline, virtual, inherited]

Returns the RTTI type id of the contained type.

Reimplemented from Idioskopos::ReadOnlyPropertyBase< T >.

template<typename T>
Idioskopos::ReadOnlyPropertyBase< T >::operator const T & (  )  const [inline, inherited]

Allows for implicit casts to the contained type.

template<typename T>
T* Idioskopos::ReadOnlyPropertyBase< T >::operator-> (  )  [inline, inherited]

A convenience operator when the property contains a class.

Allows class method to be accessed using notation: property->class_method()

template<typename T>
virtual Glib::ustring Idioskopos::ReadOnlyPropertyBase< T >::value (  )  [inline, virtual, inherited]

Similar in concept to the xml() method, this provides a string representation of the contained value if the get_value() template has a meaningful template specialization.

Reimplemented from Idioskopos::Object.

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

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

Reimplemented in Idioskopos::Introspectable.

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

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

Reimplemented in Idioskopos::Introspectable.

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

Signal emitted when the property is changed.

size_t Idioskopos::Object::num_properties (  )  const [virtual, inherited]

If this is a property container, this should be reimplemented to provide a true count of the number of child properties this container has.

Reimplemented in Idioskopos::Introspectable, Idioskopos::PropertyBase< std::vector< X, A > >, and Idioskopos::PropertyBase< IdioskoposArray< X, N > >.

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

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 in Idioskopos::Introspectable.


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 file:
Generated on Thu Jan 11 00:26:44 2007 by  doxygen 1.5.1