/* -*-c++-*- OpenSceneGraph - Copyright (C) 1998-2006 Robert Osfield * * This library is open source and may be redistributed and/or modified under * the terms of the OpenSceneGraph Public License (OSGPL) version 0.0 or * (at your option) any later version. The full license is in LICENSE file * included with this distribution, and on the openscenegraph.org website. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * OpenSceneGraph Public License for more details. */ //osgIntrospection - Copyright (C) 2005 Marco Jez #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 attribs, const Value& defval = Value()); /// 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; /// 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_; }; // INLINE METHODS inline ParameterInfo::ParameterInfo(const std::string& name, const Type& type, int attribs, const Value& defval) : _name(name), _type(type), attribs_(attribs), default_(defval) { } 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