2004-12-09 13:28:20 +08:00
|
|
|
#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,
|
|
|
|
|
2005-04-04 21:50:07 +08:00
|
|
|
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.
|
2005-04-04 21:50:07 +08:00
|
|
|
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;
|
2005-04-04 21:50:07 +08:00
|
|
|
|
|
|
|
/// 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_;
|
2005-04-04 21:50:07 +08:00
|
|
|
Value default_;
|
2005-03-14 17:28:31 +08:00
|
|
|
};
|
|
|
|
|
|
|
|
// INLINE METHODS
|
|
|
|
|
2005-04-04 21:50:07 +08:00
|
|
|
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),
|
2005-04-04 21:50:07 +08:00
|
|
|
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_;
|
|
|
|
}
|
2005-04-04 21:50:07 +08:00
|
|
|
|
|
|
|
inline const Value &ParameterInfo::getDefaultValue() const
|
|
|
|
{
|
|
|
|
return default_;
|
|
|
|
}
|
2004-12-09 13:28:20 +08:00
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
#endif
|