OpenWalnut  1.4.0
Public Types | Public Member Functions | Static Private Attributes | Friends
WPropertyStruct< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 > Class Template Reference

This is a property which encapsulates a given, fixed number of other properties. More...

#include <WPropertyStruct.h>

+ Inheritance diagram for WPropertyStruct< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >:

List of all members.

Public Types

typedef WPropertyStruct
< BOOST_PP_ENUM_PARAMS(10, T) > 
WPropertyStructType
 The type of this template instantiation.
typedef boost::shared_ptr
< WPropertyStructType
SPtr
 Convenience typedef for a boost::shared_ptr< WPropertyStructType >
typedef boost::shared_ptr
< const WPropertyStructType
ConstSPtr
 Convenience typedef for a boost::shared_ptr< const WPropertyStructType >
typedef
WPropertyStructHelper::AsVector
< BOOST_PP_ENUM_PARAMS(10, T) >
::type 
TypeVector
 The boost mpl vector for all the types specified.
typedef
WPropertyStructHelper::SequenceToTuple
< TypeVector >::type 
TupleType
 The type vector as a boost tuple.

Public Member Functions

 WPropertyStruct (std::string name, std::string description)
 Create an empty named property.
 WPropertyStruct (const WPropertyStructType &from)
 Copy constructor.
virtual ~WPropertyStruct ()
 Destructor.
template<int N>
boost::mpl::at< TypeVector,
boost::mpl::size_t< N >
>::type 
getProperty ()
 Get the N'th property in the struct.
template<int N>
boost::mpl::at< TypeVector,
boost::mpl::size_t< N >
>::type::element_type::ConstSPtr 
getProperty () const
 Get the N'th property in the struct.
const WPropertyBase::SPtrgetProperty (size_t n) const
 Returns the property with the given number, but only as base type.
WPropertyBase::SPtr getProperty (size_t n)
 Returns the property with the given number, but only as base type.
size_t size () const
 The size of the WPropertyStruct.
virtual WPropertyBase::SPtr clone ()
 This method clones a property and returns the clone.
virtual PROPERTY_TYPE getType () const
 Gets the real WPropertyVariable type of this instance.
virtual bool setAsString (std::string value)
 This methods allows properties to be set by a string value.
virtual std::string getAsString ()
 Returns the current value as a string.
virtual bool set (boost::shared_ptr< WPropertyBase > value, bool recommendedOnly=false)
 Sets the value from the specified property to this one.

Static Private Attributes

static const size_t m_size = boost::mpl::size< TypeVector >::value
 How many elements are in this WPropertyStruct?

Friends

class WPropertyStructTest

Detailed Description

template<typename T0, typename T1 = WPropertyStructHelper::NOTYPE, typename T2 = WPropertyStructHelper::NOTYPE, typename T3 = WPropertyStructHelper::NOTYPE, typename T4 = WPropertyStructHelper::NOTYPE, typename T5 = WPropertyStructHelper::NOTYPE, typename T6 = WPropertyStructHelper::NOTYPE, typename T7 = WPropertyStructHelper::NOTYPE, typename T8 = WPropertyStructHelper::NOTYPE, typename T9 = WPropertyStructHelper::NOTYPE>
class WPropertyStruct< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >

This is a property which encapsulates a given, fixed number of other properties.

You can specify up to 10 properties. This can be seen similar to the "struct" in the C++ language. A WPropertyStruct can basically seen as WPropertyGroup, but is different in a certain way: it is fixed size (defined on compile time), it allows getting each property with their correct type and provides the appearance as if this property is only ONE object and not a group of multiple objects.

Notes:
the limitation to 10 types is due to the boost::tuple. If you need more, you need to replace the tuple type as storage-backend.
Notes:
if we use C++11 some day, we could use variadic templates here.
Template Parameters:
T0first type. Mandatory.
T1additional type. Optional.
T2additional type. Optional.
T3additional type. Optional.
T4additional type. Optional.
T5additional type. Optional.
T6additional type. Optional.
T7additional type. Optional.
T8additional type. Optional.
T9additional type. Optional.

Definition at line 199 of file WPropertyStruct.h.


Member Typedef Documentation

template<typename T0, typename T1 = WPropertyStructHelper::NOTYPE, typename T2 = WPropertyStructHelper::NOTYPE, typename T3 = WPropertyStructHelper::NOTYPE, typename T4 = WPropertyStructHelper::NOTYPE, typename T5 = WPropertyStructHelper::NOTYPE, typename T6 = WPropertyStructHelper::NOTYPE, typename T7 = WPropertyStructHelper::NOTYPE, typename T8 = WPropertyStructHelper::NOTYPE, typename T9 = WPropertyStructHelper::NOTYPE>
typedef boost::shared_ptr< const WPropertyStructType > WPropertyStruct< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::ConstSPtr

Convenience typedef for a boost::shared_ptr< const WPropertyStructType >

Reimplemented from WPropertyGroupBase.

Definition at line 216 of file WPropertyStruct.h.

template<typename T0, typename T1 = WPropertyStructHelper::NOTYPE, typename T2 = WPropertyStructHelper::NOTYPE, typename T3 = WPropertyStructHelper::NOTYPE, typename T4 = WPropertyStructHelper::NOTYPE, typename T5 = WPropertyStructHelper::NOTYPE, typename T6 = WPropertyStructHelper::NOTYPE, typename T7 = WPropertyStructHelper::NOTYPE, typename T8 = WPropertyStructHelper::NOTYPE, typename T9 = WPropertyStructHelper::NOTYPE>
typedef boost::shared_ptr< WPropertyStructType > WPropertyStruct< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::SPtr

Convenience typedef for a boost::shared_ptr< WPropertyStructType >

Reimplemented from WPropertyGroupBase.

Definition at line 211 of file WPropertyStruct.h.

template<typename T0, typename T1 = WPropertyStructHelper::NOTYPE, typename T2 = WPropertyStructHelper::NOTYPE, typename T3 = WPropertyStructHelper::NOTYPE, typename T4 = WPropertyStructHelper::NOTYPE, typename T5 = WPropertyStructHelper::NOTYPE, typename T6 = WPropertyStructHelper::NOTYPE, typename T7 = WPropertyStructHelper::NOTYPE, typename T8 = WPropertyStructHelper::NOTYPE, typename T9 = WPropertyStructHelper::NOTYPE>
typedef WPropertyStructHelper::SequenceToTuple< TypeVector >::type WPropertyStruct< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::TupleType

The type vector as a boost tuple.

Definition at line 226 of file WPropertyStruct.h.

template<typename T0, typename T1 = WPropertyStructHelper::NOTYPE, typename T2 = WPropertyStructHelper::NOTYPE, typename T3 = WPropertyStructHelper::NOTYPE, typename T4 = WPropertyStructHelper::NOTYPE, typename T5 = WPropertyStructHelper::NOTYPE, typename T6 = WPropertyStructHelper::NOTYPE, typename T7 = WPropertyStructHelper::NOTYPE, typename T8 = WPropertyStructHelper::NOTYPE, typename T9 = WPropertyStructHelper::NOTYPE>
typedef WPropertyStructHelper::AsVector< BOOST_PP_ENUM_PARAMS( 10, T ) >::type WPropertyStruct< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::TypeVector

The boost mpl vector for all the types specified.

Definition at line 221 of file WPropertyStruct.h.

template<typename T0, typename T1 = WPropertyStructHelper::NOTYPE, typename T2 = WPropertyStructHelper::NOTYPE, typename T3 = WPropertyStructHelper::NOTYPE, typename T4 = WPropertyStructHelper::NOTYPE, typename T5 = WPropertyStructHelper::NOTYPE, typename T6 = WPropertyStructHelper::NOTYPE, typename T7 = WPropertyStructHelper::NOTYPE, typename T8 = WPropertyStructHelper::NOTYPE, typename T9 = WPropertyStructHelper::NOTYPE>
typedef WPropertyStruct< BOOST_PP_ENUM_PARAMS( 10, T ) > WPropertyStruct< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::WPropertyStructType

The type of this template instantiation.

Definition at line 206 of file WPropertyStruct.h.


Constructor & Destructor Documentation

template<typename T0, typename T1 = WPropertyStructHelper::NOTYPE, typename T2 = WPropertyStructHelper::NOTYPE, typename T3 = WPropertyStructHelper::NOTYPE, typename T4 = WPropertyStructHelper::NOTYPE, typename T5 = WPropertyStructHelper::NOTYPE, typename T6 = WPropertyStructHelper::NOTYPE, typename T7 = WPropertyStructHelper::NOTYPE, typename T8 = WPropertyStructHelper::NOTYPE, typename T9 = WPropertyStructHelper::NOTYPE>
WPropertyStruct< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::WPropertyStruct ( std::string  name,
std::string  description 
) [inline]

Create an empty named property.

Parameters:
namethe name of the property
descriptionthe description of the property

Definition at line 234 of file WPropertyStruct.h.

References WPropertyGroupBase::PropertyCreatorAndGroupAdder< PropertyType >::createAndAdd().

template<typename T0, typename T1 = WPropertyStructHelper::NOTYPE, typename T2 = WPropertyStructHelper::NOTYPE, typename T3 = WPropertyStructHelper::NOTYPE, typename T4 = WPropertyStructHelper::NOTYPE, typename T5 = WPropertyStructHelper::NOTYPE, typename T6 = WPropertyStructHelper::NOTYPE, typename T7 = WPropertyStructHelper::NOTYPE, typename T8 = WPropertyStructHelper::NOTYPE, typename T9 = WPropertyStructHelper::NOTYPE>
WPropertyStruct< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::WPropertyStruct ( const WPropertyStructType from) [inline, explicit]

Copy constructor.

Creates a deep copy of this property. As boost::signals2 and condition variables are non-copyable, new instances get created. The subscriptions to a signal are LOST as well as all listeners to a condition.

Parameters:
fromthe instance to copy.

Definition at line 256 of file WPropertyStruct.h.

template<typename T0, typename T1 = WPropertyStructHelper::NOTYPE, typename T2 = WPropertyStructHelper::NOTYPE, typename T3 = WPropertyStructHelper::NOTYPE, typename T4 = WPropertyStructHelper::NOTYPE, typename T5 = WPropertyStructHelper::NOTYPE, typename T6 = WPropertyStructHelper::NOTYPE, typename T7 = WPropertyStructHelper::NOTYPE, typename T8 = WPropertyStructHelper::NOTYPE, typename T9 = WPropertyStructHelper::NOTYPE>
virtual WPropertyStruct< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::~WPropertyStruct ( ) [inline, virtual]

Destructor.

Definition at line 265 of file WPropertyStruct.h.


Member Function Documentation

template<typename T0, typename T1 = WPropertyStructHelper::NOTYPE, typename T2 = WPropertyStructHelper::NOTYPE, typename T3 = WPropertyStructHelper::NOTYPE, typename T4 = WPropertyStructHelper::NOTYPE, typename T5 = WPropertyStructHelper::NOTYPE, typename T6 = WPropertyStructHelper::NOTYPE, typename T7 = WPropertyStructHelper::NOTYPE, typename T8 = WPropertyStructHelper::NOTYPE, typename T9 = WPropertyStructHelper::NOTYPE>
virtual WPropertyBase::SPtr WPropertyStruct< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::clone ( ) [inline, virtual]

This method clones a property and returns the clone.

It does a deep copy and, in contrast to a copy constructor, creates property with the correct type without explicitly requiring the user to specify it. It creates a NEW change condition and change signal. This means, alls subscribed signal handlers are NOT copied.

Notes:
this simply ensures the copy constructor of the runtime type is issued.
Returns:
the deep clone of this property.

Implements WPropertyBase.

Definition at line 351 of file WPropertyStruct.h.

template<typename T0, typename T1 = WPropertyStructHelper::NOTYPE, typename T2 = WPropertyStructHelper::NOTYPE, typename T3 = WPropertyStructHelper::NOTYPE, typename T4 = WPropertyStructHelper::NOTYPE, typename T5 = WPropertyStructHelper::NOTYPE, typename T6 = WPropertyStructHelper::NOTYPE, typename T7 = WPropertyStructHelper::NOTYPE, typename T8 = WPropertyStructHelper::NOTYPE, typename T9 = WPropertyStructHelper::NOTYPE>
virtual std::string WPropertyStruct< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::getAsString ( ) [inline, virtual]

Returns the current value as a string.

This is useful for debugging or project files. It is not implemented as << operator, since the << should also print min/max constraints and so on. This simply is the value.

Returns:
the value as a string.

Implements WPropertyBase.

Definition at line 403 of file WPropertyStruct.h.

References WSharedObject< T >::getReadTicket(), WPropertyGroupBase::m_properties, and WPropertyStruct< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::size().

template<typename T0, typename T1 = WPropertyStructHelper::NOTYPE, typename T2 = WPropertyStructHelper::NOTYPE, typename T3 = WPropertyStructHelper::NOTYPE, typename T4 = WPropertyStructHelper::NOTYPE, typename T5 = WPropertyStructHelper::NOTYPE, typename T6 = WPropertyStructHelper::NOTYPE, typename T7 = WPropertyStructHelper::NOTYPE, typename T8 = WPropertyStructHelper::NOTYPE, typename T9 = WPropertyStructHelper::NOTYPE>
template<int N>
boost::mpl::at< TypeVector, boost::mpl::size_t< N > >::type WPropertyStruct< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::getProperty ( ) [inline]

Get the N'th property in the struct.

Template Parameters:
Nthe number of the property to get.
Returns:
the property.

Definition at line 278 of file WPropertyStruct.h.

Referenced by WPropertyStruct< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::getProperty().

template<typename T0, typename T1 = WPropertyStructHelper::NOTYPE, typename T2 = WPropertyStructHelper::NOTYPE, typename T3 = WPropertyStructHelper::NOTYPE, typename T4 = WPropertyStructHelper::NOTYPE, typename T5 = WPropertyStructHelper::NOTYPE, typename T6 = WPropertyStructHelper::NOTYPE, typename T7 = WPropertyStructHelper::NOTYPE, typename T8 = WPropertyStructHelper::NOTYPE, typename T9 = WPropertyStructHelper::NOTYPE>
template<int N>
boost::mpl::at< TypeVector, boost::mpl::size_t< N > >::type::element_type::ConstSPtr WPropertyStruct< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::getProperty ( ) const [inline]

Get the N'th property in the struct.

Template Parameters:
Nthe number of the property to get.
Returns:
the property.

Definition at line 292 of file WPropertyStruct.h.

References WPropertyStruct< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::getProperty().

template<typename T0, typename T1 = WPropertyStructHelper::NOTYPE, typename T2 = WPropertyStructHelper::NOTYPE, typename T3 = WPropertyStructHelper::NOTYPE, typename T4 = WPropertyStructHelper::NOTYPE, typename T5 = WPropertyStructHelper::NOTYPE, typename T6 = WPropertyStructHelper::NOTYPE, typename T7 = WPropertyStructHelper::NOTYPE, typename T8 = WPropertyStructHelper::NOTYPE, typename T9 = WPropertyStructHelper::NOTYPE>
const WPropertyBase::SPtr& WPropertyStruct< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::getProperty ( size_t  n) const [inline]

Returns the property with the given number, but only as base type.

The advantage is that the property number can be specified during runtime.

Parameters:
nthe number of the property
Returns:
the property

Definition at line 306 of file WPropertyStruct.h.

References WSharedObject< T >::getReadTicket(), and WPropertyGroupBase::m_properties.

template<typename T0, typename T1 = WPropertyStructHelper::NOTYPE, typename T2 = WPropertyStructHelper::NOTYPE, typename T3 = WPropertyStructHelper::NOTYPE, typename T4 = WPropertyStructHelper::NOTYPE, typename T5 = WPropertyStructHelper::NOTYPE, typename T6 = WPropertyStructHelper::NOTYPE, typename T7 = WPropertyStructHelper::NOTYPE, typename T8 = WPropertyStructHelper::NOTYPE, typename T9 = WPropertyStructHelper::NOTYPE>
WPropertyBase::SPtr WPropertyStruct< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::getProperty ( size_t  n) [inline]

Returns the property with the given number, but only as base type.

The advantage is that the property number can be specified during runtime.

Parameters:
nthe number of the property
Returns:
the property

Definition at line 321 of file WPropertyStruct.h.

References WSharedObject< T >::getReadTicket(), and WPropertyGroupBase::m_properties.

template<typename T0, typename T1 = WPropertyStructHelper::NOTYPE, typename T2 = WPropertyStructHelper::NOTYPE, typename T3 = WPropertyStructHelper::NOTYPE, typename T4 = WPropertyStructHelper::NOTYPE, typename T5 = WPropertyStructHelper::NOTYPE, typename T6 = WPropertyStructHelper::NOTYPE, typename T7 = WPropertyStructHelper::NOTYPE, typename T8 = WPropertyStructHelper::NOTYPE, typename T9 = WPropertyStructHelper::NOTYPE>
virtual PROPERTY_TYPE WPropertyStruct< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::getType ( ) const [inline, virtual]

Gets the real WPropertyVariable type of this instance.

Returns:
the real type.

Reimplemented from WPropertyBase.

Definition at line 362 of file WPropertyStruct.h.

template<typename T0, typename T1 = WPropertyStructHelper::NOTYPE, typename T2 = WPropertyStructHelper::NOTYPE, typename T3 = WPropertyStructHelper::NOTYPE, typename T4 = WPropertyStructHelper::NOTYPE, typename T5 = WPropertyStructHelper::NOTYPE, typename T6 = WPropertyStructHelper::NOTYPE, typename T7 = WPropertyStructHelper::NOTYPE, typename T8 = WPropertyStructHelper::NOTYPE, typename T9 = WPropertyStructHelper::NOTYPE>
virtual bool WPropertyStruct< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::set ( boost::shared_ptr< WPropertyBase value,
bool  recommendedOnly = false 
) [inline, virtual]

Sets the value from the specified property to this one.

This is especially useful to copy a value without explicitly casting/knowing the dynamic type of the property.

Parameters:
valuethe new value.
recommendedOnlyif true, property types which support recommended values apply the given value as recommendation.
Returns:
true if the value has been accepted.

Implements WPropertyBase.

Definition at line 428 of file WPropertyStruct.h.

References WSharedObject< T >::getReadTicket(), WPropertyGroupBase::m_properties, and WPropertyStruct< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::size().

template<typename T0, typename T1 = WPropertyStructHelper::NOTYPE, typename T2 = WPropertyStructHelper::NOTYPE, typename T3 = WPropertyStructHelper::NOTYPE, typename T4 = WPropertyStructHelper::NOTYPE, typename T5 = WPropertyStructHelper::NOTYPE, typename T6 = WPropertyStructHelper::NOTYPE, typename T7 = WPropertyStructHelper::NOTYPE, typename T8 = WPropertyStructHelper::NOTYPE, typename T9 = WPropertyStructHelper::NOTYPE>
virtual bool WPropertyStruct< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::setAsString ( std::string  value) [inline, virtual]

This methods allows properties to be set by a string value.

This is especially useful when a property is only available as string and the real type of the property is unknown. This is a shortcut for casting the property and then setting the lexically casted value.

Parameters:
valuethe new value to set.
Returns:
true if value could be set.

Implements WPropertyBase.

Definition at line 375 of file WPropertyStruct.h.

References WSharedObject< T >::getReadTicket(), WPropertyGroupBase::m_properties, WPropertyStruct< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::size(), and string_utils::tokenize().

template<typename T0, typename T1 = WPropertyStructHelper::NOTYPE, typename T2 = WPropertyStructHelper::NOTYPE, typename T3 = WPropertyStructHelper::NOTYPE, typename T4 = WPropertyStructHelper::NOTYPE, typename T5 = WPropertyStructHelper::NOTYPE, typename T6 = WPropertyStructHelper::NOTYPE, typename T7 = WPropertyStructHelper::NOTYPE, typename T8 = WPropertyStructHelper::NOTYPE, typename T9 = WPropertyStructHelper::NOTYPE>
size_t WPropertyStruct< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::size ( ) const [inline]

Member Data Documentation

template<typename T0, typename T1 = WPropertyStructHelper::NOTYPE, typename T2 = WPropertyStructHelper::NOTYPE, typename T3 = WPropertyStructHelper::NOTYPE, typename T4 = WPropertyStructHelper::NOTYPE, typename T5 = WPropertyStructHelper::NOTYPE, typename T6 = WPropertyStructHelper::NOTYPE, typename T7 = WPropertyStructHelper::NOTYPE, typename T8 = WPropertyStructHelper::NOTYPE, typename T9 = WPropertyStructHelper::NOTYPE>
const size_t WPropertyStruct< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::m_size = boost::mpl::size< TypeVector >::value [static, private]

How many elements are in this WPropertyStruct?

Definition at line 456 of file WPropertyStruct.h.

Referenced by WPropertyStruct< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::size().


The documentation for this class was generated from the following file: