OpenSceneGraph/include/osgIntrospection/ParameterInfo

96 lines
2.5 KiB
Plaintext
Raw Normal View History

#ifndef OSGINTROSPECTION_PARAMETERINFO_
#define OSGINTROSPECTION_PARAMETERINFO_
#include <osgIntrospection/Type>
#include <osgIntrospection/Value>
#include <string>
#include <vector>
namespace osgIntrospection
{
2005-03-14 17:28:31 +08:00
/// This class stores information about a function parameter. A parameter
/// is defined by its name, its type, its position within the parameter
/// list, and zero or more attributes. Attributes describe how the
/// parameter behave, for example whether it is an input or an output
/// parameter.
class ParameterInfo
{
public:
enum ParameterAttributes
{
NONE = 0,
IN = 1, // parameter is used to pass data to the function
2005-03-14 17:28:31 +08:00
OUT = 2, // parameter is used to return data from the function
INOUT = IN | OUT
};
/// Direct initialization constructor.
inline ParameterInfo(const std::string &name, const Type &type, int attribs, const Value &defval = Value());
2005-03-14 17:28:31 +08:00
/// Returns the parameter's name.
inline const std::string &getName() const;
/// Returns the parameter's type.
inline const Type &getParameterType() const;
/// Returns the parameter's attributes.
inline int getAttributes() const;
/// Returns the default value.
inline const Value &getDefaultValue() const;
2005-03-14 17:28:31 +08:00
/// Returns whether the parameter has the IN attribute.
inline bool isIn() const { return (attribs_ & IN) != 0; }
/// Returns whether the parameter has the OUT attribute.
inline bool isOut() const { return (attribs_ & OUT) != 0; }
/// Returns whether the parameter has both the IN and the
/// OUT attribute.
inline bool isInOut() const { return isIn() && isOut(); }
private:
std::string name_;
const Type &type_;
int attribs_;
Value default_;
2005-03-14 17:28:31 +08:00
};
// INLINE METHODS
inline ParameterInfo::ParameterInfo(const std::string &name, const Type &type, int attribs, const Value &defval)
: name_(name),
2005-03-14 17:28:31 +08:00
type_(type),
attribs_(attribs),
default_(defval)
2005-03-14 17:28:31 +08:00
{
}
inline const std::string &ParameterInfo::getName() const
{
return name_;
}
inline const Type &ParameterInfo::getParameterType() const
{
return type_;
}
inline int ParameterInfo::getAttributes() const
{
return attribs_;
}
inline const Value &ParameterInfo::getDefaultValue() const
{
return default_;
}
}
#endif