2006-07-18 23:21:48 +08:00
|
|
|
/* -*-c++-*- OpenSceneGraph - Copyright (C) 1998-2006 Robert Osfield
|
2005-04-29 18:06:50 +08:00
|
|
|
*
|
|
|
|
* 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
|
|
|
|
|
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-29 19:19:58 +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.
|
2005-04-29 19:19:58 +08:00
|
|
|
inline const std::string& getName() const;
|
2005-03-14 17:28:31 +08:00
|
|
|
|
|
|
|
/// Returns the parameter's type.
|
2005-04-29 19:19:58 +08:00
|
|
|
inline const Type& getParameterType() const;
|
2005-03-14 17:28:31 +08:00
|
|
|
|
|
|
|
/// Returns the parameter's attributes.
|
|
|
|
inline int getAttributes() const;
|
2005-04-04 21:50:07 +08:00
|
|
|
|
|
|
|
/// Returns the default value.
|
2005-04-29 19:19:58 +08:00
|
|
|
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:
|
2009-02-03 04:35:19 +08:00
|
|
|
|
|
|
|
ParameterInfo& operator = (const ParameterInfo&) { return *this; }
|
|
|
|
|
2005-04-29 19:19:58 +08:00
|
|
|
std::string _name;
|
|
|
|
const Type& _type;
|
2005-03-14 17:28:31 +08:00
|
|
|
int attribs_;
|
2005-04-04 21:50:07 +08:00
|
|
|
Value default_;
|
2005-03-14 17:28:31 +08:00
|
|
|
};
|
|
|
|
|
|
|
|
// INLINE METHODS
|
|
|
|
|
2005-04-29 19:19:58 +08:00
|
|
|
inline ParameterInfo::ParameterInfo(const std::string& name, const Type& type, int attribs, const Value& defval)
|
|
|
|
: _name(name),
|
|
|
|
_type(type),
|
2005-04-04 21:50:07 +08:00
|
|
|
attribs_(attribs),
|
|
|
|
default_(defval)
|
2005-03-14 17:28:31 +08:00
|
|
|
{
|
|
|
|
}
|
|
|
|
|
2005-04-29 19:19:58 +08:00
|
|
|
inline const std::string& ParameterInfo::getName() const
|
2005-03-14 17:28:31 +08:00
|
|
|
{
|
2005-04-29 19:19:58 +08:00
|
|
|
return _name;
|
2005-03-14 17:28:31 +08:00
|
|
|
}
|
|
|
|
|
2005-04-29 19:19:58 +08:00
|
|
|
inline const Type& ParameterInfo::getParameterType() const
|
2005-03-14 17:28:31 +08:00
|
|
|
{
|
2005-04-29 19:19:58 +08:00
|
|
|
return _type;
|
2005-03-14 17:28:31 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
inline int ParameterInfo::getAttributes() const
|
|
|
|
{
|
|
|
|
return attribs_;
|
|
|
|
}
|
2005-04-04 21:50:07 +08:00
|
|
|
|
2005-04-29 19:19:58 +08:00
|
|
|
inline const Value& ParameterInfo::getDefaultValue() const
|
2005-04-04 21:50:07 +08:00
|
|
|
{
|
2005-04-29 19:19:58 +08:00
|
|
|
return default_;
|
2005-04-04 21:50:07 +08:00
|
|
|
}
|
2004-12-09 13:28:20 +08:00
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
#endif
|