IECore::Parameter Class Reference

#include <Parameter.h>

Inheritance diagram for IECore::Parameter:

IECore::RunTimeTyped IECore::RefCounted IECore::CompoundParameter IECore::NumericParameter< T > IECore::ObjectParameter IECore::TypedParameter< T > IECore::ClassParameter::ClassParameter IECore::ClassVectorParameter::ClassVectorParameter IECore::CompoundVectorParameter::CompoundVectorParameter IECore::MarschnerParameter IECore::OptionalCompoundParameter::OptionalCompoundParameter IECore::TypedObjectParameter< T > IECore::FrameListParameter IECore::PathParameter IECore::PathVectorParameter IECore::ValidatedStringParameter IECoreMaya::DAGPathParameter::DAGPathParameter IECoreMaya::DAGPathVectorParameter::DAGPathVectorParameter IECoreMaya::NodeParameter::NodeParameter

List of all members.

Public Types

typedef std::pair< std::string,
ObjectPtr > 
Preset
typedef std::vector< PresetPresetsContainer
 A type to store a bunch of preset values for the Parameter.

Public Member Functions

 IE_CORE_DECLARERUNTIMETYPED (Parameter, RunTimeTyped)
 Parameter (const std::string &name, const std::string &description, ObjectPtr defaultValue, const PresetsContainer &presets=PresetsContainer(), bool presetsOnly=false, ConstCompoundObjectPtr userData=0)
virtual ~Parameter ()
Basic Parameter information
/////////////////////////////////////////////////////////

const std::string & name () const
 Returns the name of this parameter.
const InternedStringinternedName () const
const std::string & description () const
 Returns the description for this parameter.
virtual const ObjectdefaultValue () const
 Returns the default value for this parameter.
virtual const PresetsContainerpresets () const
 Returns the presets for this parameter.
virtual bool presetsOnly () const
CompoundObjectuserData ()
 Returns the userdata. This can be modified freely.
const CompoundObjectuserData () const
 Read only version of the above.
Validation
The Parameter class defines the concept of whether or not a value is valid. This is used to provide guarantees about the values passed to Parameterised processes. For various efficiency reasons it's possible to set an invalid value, but member functions are provided to guarantee validity when it's needed.

virtual bool valueValid (const Object *value, std::string *reason=0) const
bool valueValid (std::string *reason=0) const
 Calls valueValid( getValue(), reason ).
void validate () const
void validate (const Object *value) const
Value setting
These functions set the Parameter value, with or without validation.
Threading:
It is not safe to call these methods from multiple concurrent threads, nor to call them while other threads are getting the value.


virtual void setValue (ObjectPtr value)
void setValidatedValue (ObjectPtr value)
void setValue (const std::string &presetName)
Value getting
These functions provide access to the Parameter value, with or without validation.
Threading:
These methods may be called from multiple concurrent threads provided that no other thread is setting the value at the time. Please note that this is currently not true of the CompoundParameter overrides for these methods - see the CompoundParameter documentation for details.


virtual ObjectgetValue ()
virtual const ObjectgetValue () const
ObjectgetValidatedValue ()
const ObjectgetValidatedValue () const
template<typename T >
T * getTypedValue ()
 Convenience function returning runTimeCast<T>( getValue() ).
template<typename T >
const T * getTypedValue () const
 Convenience function returning runTimeCast<T>( getValue() ).
template<typename T >
T * getTypedValidatedValue ()
template<typename T >
const T * getTypedValidatedValue () const
std::string getCurrentPresetName () const


Detailed Description

The Parameter base class represents a means of describing data to be passed to some process.

Member Typedef Documentation

typedef std::pair<std::string, ObjectPtr> IECore::Parameter::Preset

A type which associates a value for the Parameter with a name.

Reimplemented in IECore::NumericParameter< T >, and IECore::TypedParameter< T >.

A type to store a bunch of preset values for the Parameter.

Reimplemented in IECore::NumericParameter< T >, and IECore::TypedParameter< T >.


Constructor & Destructor Documentation

Parameter::Parameter ( const std::string &  name,
const std::string &  description,
ObjectPtr  defaultValue,
const PresetsContainer presets = PresetsContainer(),
bool  presetsOnly = false,
ConstCompoundObjectPtr  userData = 0 
)

Creates a new Parameter. If presetsOnly is true then the parameter acts somewhat like an enum and only accepts values if they are present in the presets map.

Todo:
If presetsOnly is true, doesn't this allow us to set a defaultValue that isn't in the presets list?

References setValue().

Parameter::~Parameter (  )  [virtual]


Member Function Documentation

const Object * Parameter::defaultValue (  )  const [virtual]

Returns the default value for this parameter.

Reimplemented in IECore::CompoundParameter.

Referenced by IECore::NumericParameter< T >::numericDefaultValue().

const std::string & Parameter::description (  )  const

Returns the description for this parameter.

std::string Parameter::getCurrentPresetName (  )  const

If the current value is one of the presets, then returns its name, otherwise returns the empty string.

References getValue(), and presets().

template<typename T >
const T* IECore::Parameter::getTypedValidatedValue (  )  const [inline]

Convenience function returning runTimeCast<T>( getValidatedValue() ). Note that if a value is valid but not of the requested type an Exception is not thrown.

template<typename T >
T* IECore::Parameter::getTypedValidatedValue (  )  [inline]

Convenience function returning runTimeCast<T>( getValidatedValue() ). Note that if a value is valid but not of the requested type an Exception is not thrown.

template<typename T >
const T* IECore::Parameter::getTypedValue (  )  const [inline]

Convenience function returning runTimeCast<T>( getValue() ).

Reimplemented in IECore::TypedParameter< T >.

template<typename T >
T* IECore::Parameter::getTypedValue (  )  [inline]

Convenience function returning runTimeCast<T>( getValue() ).

Reimplemented in IECore::TypedParameter< T >.

Referenced by IECore::PointSmoothSkinningOp::modify(), and IECore::MeshPrimitiveShrinkWrapOp::modifyTypedPrimitive().

const Object * Parameter::getValidatedValue (  )  const

Returns the value held by this parameter if it is valid, throwing an Exception if it is not.

References getValue(), and validate().

Object * Parameter::getValidatedValue (  ) 

Returns the value held by this parameter if it is valid, throwing an Exception if it is not.

References getValue(), and validate().

Referenced by IECore::NumericParameter< T >::getNumericValue(), IECore::CompoundParameter::getValidatedParameterValue(), and IECore::MixSmoothSkinningWeightsOp::modify().

const Object * Parameter::getValue (  )  const [virtual]

Returns the value held by this parameter. Note that this value may not be valid.

Reimplemented in IECore::CompoundParameter.

Object * Parameter::getValue (  )  [virtual]

IECore::Parameter::IE_CORE_DECLARERUNTIMETYPED ( Parameter  ,
RunTimeTyped   
)

const InternedString& IECore::Parameter::internedName (  )  const [inline]

const std::string & Parameter::name (  )  const

Returns the name of this parameter.

Referenced by IECore::CompoundParameter::parameterPath().

const Parameter::PresetsContainer & Parameter::presets (  )  const [virtual]

Returns the presets for this parameter.

Reimplemented in IECore::CompoundParameter.

Referenced by getCurrentPresetName(), setValue(), and valueValid().

bool Parameter::presetsOnly (  )  const [virtual]

Returns true if this parameter only accepts parameters present as presets.

Reimplemented in IECore::CompoundParameter.

void Parameter::setValidatedValue ( ObjectPtr  value  ) 

void Parameter::setValue ( const std::string &  presetName  ) 

Sets the value held by this parameter to one of the named presets. Throws an exception if presetName is not a defined preset.

References presets(), and setValue().

void Parameter::setValue ( ObjectPtr  value  )  [virtual]

Sets the value held by this parameter. Note that this function will not prevent you from setting a value for which valueValid( value ) is false.

Reimplemented in IECore::CompoundParameter.

Referenced by Parameter(), IECore::FileSequenceVectorParameter::setFileSequenceValues(), IECore::NumericParameter< T >::setNumericValue(), setValidatedValue(), and setValue().

const CompoundObject * Parameter::userData (  )  const

Read only version of the above.

CompoundObject * Parameter::userData (  ) 

Returns the userdata. This can be modified freely.

void Parameter::validate ( const Object value  )  const

Throws an Exception if valueValid( value ) is false, otherwise does nothing.

References valueValid().

void Parameter::validate (  )  const

Throws an Exception if valueValid( getValue() ) is false, otherwise does nothing.

References getValue(), and valueValid().

Referenced by getValidatedValue(), and setValidatedValue().

bool Parameter::valueValid ( std::string *  reason = 0  )  const

Calls valueValid( getValue(), reason ).

References getValue(), and valueValid().

bool Parameter::valueValid ( const Object value,
std::string *  reason = 0 
) const [virtual]

Determines whether or not a given value is suitable for use in this Parameter. Should be implemented in subclasses to perform validation on the supplied value, returning false if it's unsuitable. When returning false, reason should be set to some descriptive string. All implementations should call the base class valueValid(), returning false immediately if it returns false. The default implementation returns false only if presetsOnly() is true and value is not present in the presets() map, or if value is a NullObject instance.

Reimplemented in IECore::CompoundParameter, IECore::DirNameParameter, IECore::FileNameParameter, IECore::FileSequenceParameter, IECore::FileSequenceVectorParameter, IECore::FrameListParameter, IECore::NumericParameter< T >, IECore::ObjectParameter, IECore::PathParameter, IECore::PathVectorParameter, IECore::TypedObjectParameter< T >, IECore::TypedParameter< T >, and IECore::ValidatedStringParameter.

References presets(), IECore::RunTimeTyped::staticTypeId(), and IECore::RunTimeTyped::typeId().

Referenced by validate(), valueValid(), IECore::ObjectParameter::valueValid(), IECore::NumericParameter< T >::valueValid(), and IECore::CompoundParameter::valueValid().


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

Generated on Mon Jan 24 11:13:26 2011 for Cortex by doxygen 1.5.8