osgIntrospection::Value Class Reference

List of all members.

Public Member Functions

 Value ()
 Default constructor.
 Value (void *v)
 Direct initialization constructor for void pointers.
 Value (const void *v)
 Direct initialization constructor for const void pointers.
template<typename T>
 Value (T *v)
 Direct initialization constructor template for non-const pointers.
template<typename T>
 Value (const T *v)
 Direct initialization constructor template for non-const pointers.
template<typename T>
 Value (const T &v)
 Direct initialization constructor template for all types that are not handled by any of the constructors above.
 Value (const Value &copy)
 Copy constructor.
 ~Value ()
 Destructor.
Valueoperator= (const Value &copy)
 Assignment operator. Behaves like the copy constructor.
bool isTypedPointer () const
 Returns whether the value is a pointer and it points to something whose type is different than void.
bool isEmpty () const
 Returns whether this Value is empty.
bool isNullPointer () const
 Returns whether the value is a null pointer.
const TypegetType () const
 Returns the exact type of the value held.
const TypegetInstanceType () const
 If the value is a pointer to a non-void type, this method returns the actual type of the dereferenced pointer.
bool operator== (const Value &other) const
 Equal to operator.
bool operator<= (const Value &other) const
 Less than or equal to operator.
bool operator!= (const Value &other) const
 Inequality test operator. Returns !operator==(other).
bool operator> (const Value &other) const
 Greater than operator. Returns !operator<=(other).
bool operator< (const Value &other) const
 Less than operator. Returns !operator==(other) && operator<=(other).
bool operator>= (const Value &other) const
 Greater than or equal to operator. Returns operator==(other) || !operator<=(other).
Value convertTo (const Type &outtype) const
 Tries to convert this instance to a Value of the given type.
Value tryConvertTo (const Type &outtype) const
 Tries to convert this instance to a Value of the given type.
std::string toString () const
 Tries to get a string representation of the underlying value.
std::wstring toWString () const
void swap (Value &v)
 Swaps the content of this Value with another Value.

Friends

template<typename T>
variant_cast (const Value &v)
 Tries to convert an instance of Value to an object of type T.
template<typename T>
bool requires_conversion (const Value &v)
 Returns true if the Value passed as parameter can't be casted to the specified type without a (potentially slow) conversion.
template<typename T>
T * extract_raw_data (Value &v)
 Returns a typed pointer to the data contained in a Value instance.
template<typename T>
const T * extract_raw_data (const Value &v)
 Returns a typed pointer to the data contained in a const Value instance.

Classes

struct  Instance
struct  Instance_base
struct  Instance_box
struct  Instance_box_base
struct  Ptr_instance_box


Constructor & Destructor Documentation

osgIntrospection::Value::Value (  )  [inline]

Default constructor.

Initializes internal structures so that the Type returned by getType() is typeof(void), and the value is empty so that isEmpty() returns true. Be careful when using empty values, as some operations on them may throw an exception.

osgIntrospection::Value::Value ( void *  v  )  [inline]

Direct initialization constructor for void pointers.

Although one of the constructor templates below could certainly handle void pointers as well, we need to treat them separately because void* can't be dereferenced.

osgIntrospection::Value::Value ( const void *  v  )  [inline]

Direct initialization constructor for const void pointers.

Although one of the constructor templates below could certainly handle void pointers as well, we need to treat them separately because void* can't be dereferenced.

template<typename T>
osgIntrospection::Value::Value ( T *  v  )  [inline]

Direct initialization constructor template for non-const pointers.

By initializing an instance of Value through this constructor, internal structures will be configured to handle polymorphic types. This means you'll be able to call getInstanceType() to get the actual type of the dereferenced value.

template<typename T>
osgIntrospection::Value::Value ( const T *  v  )  [inline]

Direct initialization constructor template for non-const pointers.

By initializing an instance of Value through this constructor, internal structures will be configured to handle polymorphic types. This means you'll be able to call getInstanceType() to get the actual type of the dereferenced value.

template<typename T>
osgIntrospection::Value::Value ( const T &  v  )  [inline]

Direct initialization constructor template for all types that are not handled by any of the constructors above.

Calling getInstanceType() on an instance constructed this way returns the same as getType().

osgIntrospection::Value::Value ( const Value copy  )  [inline]

Copy constructor.

The underlying value's type must have consistent copy semantics.

osgIntrospection::Value::~Value (  )  [inline]

Destructor.

Frees internal resources but it does NOT delete the value held. For example, this function will produce a memory leak: void f() { Value v(new int); }


Member Function Documentation

Value & osgIntrospection::Value::operator= ( const Value copy  )  [inline]

Assignment operator. Behaves like the copy constructor.

bool osgIntrospection::Value::isTypedPointer (  )  const [inline]

Returns whether the value is a pointer and it points to something whose type is different than void.

bool osgIntrospection::Value::isEmpty (  )  const [inline]

Returns whether this Value is empty.

bool osgIntrospection::Value::isNullPointer (  )  const [inline]

Returns whether the value is a null pointer.

const Type & osgIntrospection::Value::getType (  )  const [inline]

Returns the exact type of the value held.

const Type & osgIntrospection::Value::getInstanceType (  )  const [inline]

If the value is a pointer to a non-void type, this method returns the actual type of the dereferenced pointer.

Please note it is not the same as getType().getPointedType(), because the latter would return the non-polymorphic type. If the value is not a pointer, this method behaves like getType().

bool osgIntrospection::Value::operator== ( const Value other  )  const

Equal to operator.

bool osgIntrospection::Value::operator<= ( const Value other  )  const

Less than or equal to operator.

bool osgIntrospection::Value::operator!= ( const Value other  )  const

Inequality test operator. Returns !operator==(other).

bool osgIntrospection::Value::operator> ( const Value other  )  const

Greater than operator. Returns !operator<=(other).

bool osgIntrospection::Value::operator< ( const Value other  )  const

Less than operator. Returns !operator==(other) && operator<=(other).

bool osgIntrospection::Value::operator>= ( const Value other  )  const

Greater than or equal to operator. Returns operator==(other) || !operator<=(other).

Value osgIntrospection::Value::convertTo ( const Type outtype  )  const

Tries to convert this instance to a Value of the given type.

The conversion is performed by rendering to a temporary stream in the source format and trying to read back from the stream in the destination format. If either the source or destination types, or both, don't have a ReaderWriter object, the conversion fails and an exception is thrown. If the conversion can't be completed for other reasons, other exceptions may be thrown.

Value osgIntrospection::Value::tryConvertTo ( const Type outtype  )  const

Tries to convert this instance to a Value of the given type.

The conversion is performed by rendering to a temporary stream in the source format and trying to read back from the stream in the destination format. If either the source or destination types, or both, don't have a ReaderWriter object, the conversion fails and an empty Value is returned. Please note that unlike convertTo(), this method does not intentionally throw any exceptions.

std::string osgIntrospection::Value::toString (  )  const

Tries to get a string representation of the underlying value.

This requires the value's type to have a ReaderWriter object associated to it. If the conversion can't be completed, an exception is thrown.

std::wstring osgIntrospection::Value::toWString (  )  const

void osgIntrospection::Value::swap ( Value v  ) 

Swaps the content of this Value with another Value.


Friends And Related Function Documentation

template<typename T>
T variant_cast ( const Value v  )  [friend]

Tries to convert an instance of Value to an object of type T.

If T is a plain type or a pointer type (either const or non-const), and it matches the type of the value contained in v, then the actual value of type T is returned. If T is a [const] reference type, and its base (non reference) type matches the internal value's type, then a [const] reference to the internal value is returned. If none of the above conditions are met, a conversion is attempted as described in Value::convert() and then variant_cast is called again with the converted value as parameter. If the conversion can't be completed, an exception is thrown. Conversions that attempt to make a const pointer non-const will fail.

template<typename T>
bool requires_conversion ( const Value v  )  [friend]

Returns true if the Value passed as parameter can't be casted to the specified type without a (potentially slow) conversion.

Returns false otherwise.

template<typename T>
T* extract_raw_data ( Value v  )  [friend]

Returns a typed pointer to the data contained in a Value instance.

If the value's type is not identical to type T, a null pointer is returned.

template<typename T>
const T* extract_raw_data ( const Value v  )  [friend]

Returns a typed pointer to the data contained in a const Value instance.

If the value's type is not identical to type T, a null pointer is returned.


The documentation for this class was generated from the following file:
Generated at Sun Oct 14 02:12:39 2007 for the OpenSceneGraph by doxygen 1.5.3.