97 lines
2.2 KiB
Plaintext
97 lines
2.2 KiB
Plaintext
|
#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
|