OpenSceneGraph/include/osgIntrospection/ParameterInfo

97 lines
2.2 KiB
Plaintext
Raw Normal View History

#ifndef OSGINTROSPECTION_PARAMETERINFO_
#define OSGINTROSPECTION_PARAMETERINFO_
#include <osgIntrospection/Type>
#include <osgIntrospection/Value>
#include <string>
#include <vector>
namespace osgIntrospection
{
/// 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
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 position, int attribs);
/// Returns the parameter's name.
inline const std::string &getName() const;
/// Return the parameter's position within the function's parameter
/// list. This position is zero-based.
inline int getPosition() const;
/// Returns the parameter's type.
inline const Type &getParameterType() const;
/// Returns the parameter's attributes.
inline int getAttributes() const;
/// 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 position_;
int attribs_;
};
// INLINE METHODS
inline ParameterInfo::ParameterInfo(const std::string &name, const Type &type, int position, int attribs)
: name_(name),
type_(type),
position_(position),
attribs_(attribs)
{
}
inline const std::string &ParameterInfo::getName() const
{
return name_;
}
inline int ParameterInfo::getPosition() const
{
return position_;
}
inline const Type &ParameterInfo::getParameterType() const
{
return type_;
}
inline int ParameterInfo::getAttributes() const
{
return attribs_;
}
}
#endif