#ifndef OSGINTROSPECTION_PARAMETERINFO_ #define OSGINTROSPECTION_PARAMETERINFO_ #include #include #include #include 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