// ***************************************************************************
//
//   Generated automatically by genwrapper.
//   Please DO NOT EDIT this file!
//
// ***************************************************************************

#include <osgIntrospection/ReflectionMacros>
#include <osgIntrospection/TypedMethodInfo>
#include <osgIntrospection/StaticMethodInfo>
#include <osgIntrospection/Attributes>

#include <osg/Array>
#include <osg/CopyOp>
#include <osg/GL2Extensions>
#include <osg/Matrixd>
#include <osg/Matrixf>
#include <osg/NodeVisitor>
#include <osg/Object>
#include <osg/StateSet>
#include <osg/Uniform>
#include <osg/Vec2>
#include <osg/Vec3>
#include <osg/Vec4>

// Must undefine IN and OUT macros defined in Windows headers
#ifdef IN
#undef IN
#endif
#ifdef OUT
#undef OUT
#endif

BEGIN_VALUE_REFLECTOR(osg::Matrix2)
	I_Constructor0();
	I_Constructor1(IN, const osg::Matrix2 &, mat);
	I_Constructor4(IN, float, a00, IN, float, a01, IN, float, a10, IN, float, a11);
	I_Method1(void, set, IN, const osg::Matrix2 &, rhs);
	I_Method1(void, set, IN, float const *const, ptr);
	I_Method4(void, set, IN, float, a00, IN, float, a01, IN, float, a10, IN, float, a11);
	I_Method0(float *, ptr);
	I_Method0(const float *, ptr);
	I_Method0(void, makeIdentity);
	I_WriteOnlyProperty(float const *const, );
END_REFLECTOR

BEGIN_VALUE_REFLECTOR(osg::Matrix3)
	I_Constructor0();
	I_Constructor1(IN, const osg::Matrix3 &, mat);
	I_Constructor9(IN, float, a00, IN, float, a01, IN, float, a02, IN, float, a10, IN, float, a11, IN, float, a12, IN, float, a20, IN, float, a21, IN, float, a22);
	I_Method1(void, set, IN, const osg::Matrix3 &, rhs);
	I_Method1(void, set, IN, float const *const, ptr);
	I_Method9(void, set, IN, float, a00, IN, float, a01, IN, float, a02, IN, float, a10, IN, float, a11, IN, float, a12, IN, float, a20, IN, float, a21, IN, float, a22);
	I_Method0(float *, ptr);
	I_Method0(const float *, ptr);
	I_Method0(void, makeIdentity);
	I_WriteOnlyProperty(float const *const, );
END_REFLECTOR

TYPE_NAME_ALIAS(std::vector< osg::StateSet * >, osg::Uniform::ParentList);

BEGIN_ENUM_REFLECTOR(osg::Uniform::Type)
	I_EnumLabel(osg::Uniform::FLOAT);
	I_EnumLabel(osg::Uniform::FLOAT_VEC2);
	I_EnumLabel(osg::Uniform::FLOAT_VEC3);
	I_EnumLabel(osg::Uniform::FLOAT_VEC4);
	I_EnumLabel(osg::Uniform::INT);
	I_EnumLabel(osg::Uniform::INT_VEC2);
	I_EnumLabel(osg::Uniform::INT_VEC3);
	I_EnumLabel(osg::Uniform::INT_VEC4);
	I_EnumLabel(osg::Uniform::BOOL);
	I_EnumLabel(osg::Uniform::BOOL_VEC2);
	I_EnumLabel(osg::Uniform::BOOL_VEC3);
	I_EnumLabel(osg::Uniform::BOOL_VEC4);
	I_EnumLabel(osg::Uniform::FLOAT_MAT2);
	I_EnumLabel(osg::Uniform::FLOAT_MAT3);
	I_EnumLabel(osg::Uniform::FLOAT_MAT4);
	I_EnumLabel(osg::Uniform::SAMPLER_1D);
	I_EnumLabel(osg::Uniform::SAMPLER_2D);
	I_EnumLabel(osg::Uniform::SAMPLER_3D);
	I_EnumLabel(osg::Uniform::SAMPLER_CUBE);
	I_EnumLabel(osg::Uniform::SAMPLER_1D_SHADOW);
	I_EnumLabel(osg::Uniform::SAMPLER_2D_SHADOW);
	I_EnumLabel(osg::Uniform::UNDEFINED);
END_REFLECTOR

BEGIN_OBJECT_REFLECTOR(osg::Uniform)
	I_BaseType(osg::Object);
	I_Constructor0();
	I_ConstructorWithDefaults3(IN, osg::Uniform::Type, type, , IN, const std::string &, name, , IN, int, numElements, 1);
	I_ConstructorWithDefaults2(IN, const osg::Uniform &, rhs, , IN, const osg::CopyOp &, copyop, osg::CopyOp::SHALLOW_COPY);
	I_Method0(osg::Object *, cloneType);
	I_Method1(osg::Object *, clone, IN, const osg::CopyOp &, copyop);
	I_Method1(bool, isSameKindAs, IN, const osg::Object *, obj);
	I_Method0(const char *, libraryName);
	I_Method0(const char *, className);
	I_Method1(bool, setType, IN, osg::Uniform::Type, t);
	I_Method0(const osg::Uniform::Type, getType);
	I_Method1(void, setName, IN, const std::string &, name);
	I_Method1(void, setNumElements, IN, unsigned int, numElements);
	I_Method0(unsigned int, getNumElements);
	I_Method0(unsigned int, getInternalArrayNumElements);
	I_Constructor2(IN, const char *, name, IN, float, f);
	I_Constructor2(IN, const char *, name, IN, int, i);
	I_Constructor2(IN, const char *, name, IN, bool, b);
	I_Constructor2(IN, const char *, name, IN, const osg::Vec2 &, v2);
	I_Constructor2(IN, const char *, name, IN, const osg::Vec3 &, v3);
	I_Constructor2(IN, const char *, name, IN, const osg::Vec4 &, v4);
	I_Constructor2(IN, const char *, name, IN, const osg::Matrix2 &, m2);
	I_Constructor2(IN, const char *, name, IN, const osg::Matrix3 &, m3);
	I_Constructor2(IN, const char *, name, IN, const osg::Matrixf &, m4);
	I_Constructor2(IN, const char *, name, IN, const osg::Matrixd &, m4);
	I_Constructor3(IN, const char *, name, IN, int, i0, IN, int, i1);
	I_Constructor4(IN, const char *, name, IN, int, i0, IN, int, i1, IN, int, i2);
	I_Constructor5(IN, const char *, name, IN, int, i0, IN, int, i1, IN, int, i2, IN, int, i3);
	I_Constructor3(IN, const char *, name, IN, bool, b0, IN, bool, b1);
	I_Constructor4(IN, const char *, name, IN, bool, b0, IN, bool, b1, IN, bool, b2);
	I_Constructor5(IN, const char *, name, IN, bool, b0, IN, bool, b1, IN, bool, b2, IN, bool, b3);
	I_Method1(int, compare, IN, const osg::Uniform &, rhs);
	I_Method1(int, compareData, IN, const osg::Uniform &, rhs);
	I_Method1(void, copyData, IN, const osg::Uniform &, rhs);
	I_Method0(const osg::Uniform::ParentList &, getParents);
	I_Method0(osg::Uniform::ParentList, getParents);
	I_Method1(osg::StateSet *, getParent, IN, unsigned int, i);
	I_Method1(const osg::StateSet *, getParent, IN, unsigned int, i);
	I_Method0(unsigned int, getNumParents);
	I_Method1(bool, set, IN, float, f);
	I_Method1(bool, set, IN, int, i);
	I_Method1(bool, set, IN, bool, b);
	I_Method1(bool, set, IN, const osg::Vec2 &, v2);
	I_Method1(bool, set, IN, const osg::Vec3 &, v3);
	I_Method1(bool, set, IN, const osg::Vec4 &, v4);
	I_Method1(bool, set, IN, const osg::Matrix2 &, m2);
	I_Method1(bool, set, IN, const osg::Matrix3 &, m3);
	I_Method1(bool, set, IN, const osg::Matrixf &, m4);
	I_Method1(bool, set, IN, const osg::Matrixd &, m4);
	I_Method2(bool, set, IN, int, i0, IN, int, i1);
	I_Method3(bool, set, IN, int, i0, IN, int, i1, IN, int, i2);
	I_Method4(bool, set, IN, int, i0, IN, int, i1, IN, int, i2, IN, int, i3);
	I_Method2(bool, set, IN, bool, b0, IN, bool, b1);
	I_Method3(bool, set, IN, bool, b0, IN, bool, b1, IN, bool, b2);
	I_Method4(bool, set, IN, bool, b0, IN, bool, b1, IN, bool, b2, IN, bool, b3);
	I_Method1(bool, get, IN, float &, f);
	I_Method1(bool, get, IN, int &, i);
	I_Method1(bool, get, IN, bool &, b);
	I_Method1(bool, get, IN, osg::Vec2 &, v2);
	I_Method1(bool, get, IN, osg::Vec3 &, v3);
	I_Method1(bool, get, IN, osg::Vec4 &, v4);
	I_Method1(bool, get, IN, osg::Matrix2 &, m2);
	I_Method1(bool, get, IN, osg::Matrix3 &, m3);
	I_Method1(bool, get, IN, osg::Matrixf &, m4);
	I_Method1(bool, get, IN, osg::Matrixd &, m4);
	I_Method2(bool, get, IN, int &, i0, IN, int &, i1);
	I_Method3(bool, get, IN, int &, i0, IN, int &, i1, IN, int &, i2);
	I_Method4(bool, get, IN, int &, i0, IN, int &, i1, IN, int &, i2, IN, int &, i3);
	I_Method2(bool, get, IN, bool &, b0, IN, bool &, b1);
	I_Method3(bool, get, IN, bool &, b0, IN, bool &, b1, IN, bool &, b2);
	I_Method4(bool, get, IN, bool &, b0, IN, bool &, b1, IN, bool &, b2, IN, bool &, b3);
	I_Method2(bool, setElement, IN, unsigned int, index, IN, float, f);
	I_Method2(bool, setElement, IN, unsigned int, index, IN, int, i);
	I_Method2(bool, setElement, IN, unsigned int, index, IN, bool, b);
	I_Method2(bool, setElement, IN, unsigned int, index, IN, const osg::Vec2 &, v2);
	I_Method2(bool, setElement, IN, unsigned int, index, IN, const osg::Vec3 &, v3);
	I_Method2(bool, setElement, IN, unsigned int, index, IN, const osg::Vec4 &, v4);
	I_Method2(bool, setElement, IN, unsigned int, index, IN, const osg::Matrix2 &, m2);
	I_Method2(bool, setElement, IN, unsigned int, index, IN, const osg::Matrix3 &, m3);
	I_Method2(bool, setElement, IN, unsigned int, index, IN, const osg::Matrixf &, m4);
	I_Method2(bool, setElement, IN, unsigned int, index, IN, const osg::Matrixd &, m4);
	I_Method3(bool, setElement, IN, unsigned int, index, IN, int, i0, IN, int, i1);
	I_Method4(bool, setElement, IN, unsigned int, index, IN, int, i0, IN, int, i1, IN, int, i2);
	I_Method5(bool, setElement, IN, unsigned int, index, IN, int, i0, IN, int, i1, IN, int, i2, IN, int, i3);
	I_Method3(bool, setElement, IN, unsigned int, index, IN, bool, b0, IN, bool, b1);
	I_Method4(bool, setElement, IN, unsigned int, index, IN, bool, b0, IN, bool, b1, IN, bool, b2);
	I_Method5(bool, setElement, IN, unsigned int, index, IN, bool, b0, IN, bool, b1, IN, bool, b2, IN, bool, b3);
	I_Method2(bool, getElement, IN, unsigned int, index, IN, float &, f);
	I_Method2(bool, getElement, IN, unsigned int, index, IN, int &, i);
	I_Method2(bool, getElement, IN, unsigned int, index, IN, bool &, b);
	I_Method2(bool, getElement, IN, unsigned int, index, IN, osg::Vec2 &, v2);
	I_Method2(bool, getElement, IN, unsigned int, index, IN, osg::Vec3 &, v3);
	I_Method2(bool, getElement, IN, unsigned int, index, IN, osg::Vec4 &, v4);
	I_Method2(bool, getElement, IN, unsigned int, index, IN, osg::Matrix2 &, m2);
	I_Method2(bool, getElement, IN, unsigned int, index, IN, osg::Matrix3 &, m3);
	I_Method2(bool, getElement, IN, unsigned int, index, IN, osg::Matrixf &, m4);
	I_Method2(bool, getElement, IN, unsigned int, index, IN, osg::Matrixd &, m4);
	I_Method3(bool, getElement, IN, unsigned int, index, IN, int &, i0, IN, int &, i1);
	I_Method4(bool, getElement, IN, unsigned int, index, IN, int &, i0, IN, int &, i1, IN, int &, i2);
	I_Method5(bool, getElement, IN, unsigned int, index, IN, int &, i0, IN, int &, i1, IN, int &, i2, IN, int &, i3);
	I_Method3(bool, getElement, IN, unsigned int, index, IN, bool &, b0, IN, bool &, b1);
	I_Method4(bool, getElement, IN, unsigned int, index, IN, bool &, b0, IN, bool &, b1, IN, bool &, b2);
	I_Method5(bool, getElement, IN, unsigned int, index, IN, bool &, b0, IN, bool &, b1, IN, bool &, b2, IN, bool &, b3);
	I_Method1(void, setUpdateCallback, IN, osg::Uniform::Callback *, uc);
	I_Method0(osg::Uniform::Callback *, getUpdateCallback);
	I_Method0(const osg::Uniform::Callback *, getUpdateCallback);
	I_Method1(void, setEventCallback, IN, osg::Uniform::Callback *, ec);
	I_Method0(osg::Uniform::Callback *, getEventCallback);
	I_Method0(const osg::Uniform::Callback *, getEventCallback);
	I_Method0(void, dirty);
	I_Method1(bool, setArray, IN, osg::FloatArray *, array);
	I_Method1(bool, setArray, IN, osg::IntArray *, array);
	I_Method0(osg::FloatArray *, getFloatArray);
	I_Method0(const osg::FloatArray *, getFloatArray);
	I_Method0(osg::IntArray *, getIntArray);
	I_Method0(const osg::IntArray *, getIntArray);
	I_Method1(void, setModifiedCount, IN, unsigned int, mc);
	I_Method0(unsigned int, getModifiedCount);
	I_Method2(void, apply, IN, const osg::GL2Extensions *, ext, IN, GLint, location);
	I_StaticMethod1(const char *, getTypename, IN, osg::Uniform::Type, t);
	I_StaticMethod1(int, getTypeNumComponents, IN, osg::Uniform::Type, t);
	I_StaticMethod1(osg::Uniform::Type, getTypeId, IN, const std::string &, tname);
	I_StaticMethod1(osg::Uniform::Type, getGlApiType, IN, osg::Uniform::Type, t);
	I_StaticMethod1(GLenum, getInternalArrayType, IN, osg::Uniform::Type, t);
	I_WriteOnlyPropertyWithReturnType(bool, , bool);
	I_WriteOnlyPropertyWithReturnType(osg::FloatArray *, Array, bool);
	I_ArrayProperty_Custom(bool, Element, Elements, unsigned int, bool);
	I_Property(osg::Uniform::Callback *, EventCallback);
	I_ReadOnlyProperty(osg::FloatArray *, FloatArray);
	I_ReadOnlyProperty(osg::IntArray *, IntArray);
	I_ReadOnlyProperty(unsigned int, InternalArrayNumElements);
	I_Property(unsigned int, ModifiedCount);
	I_WriteOnlyProperty(const std::string &, Name);
	I_WriteOnlyProperty(unsigned int, NumElements);
	I_ArrayProperty_G(osg::StateSet *, Parent, Parents, unsigned int, void);
	I_ReadOnlyProperty(osg::Uniform::ParentList, Parents);
	I_WriteOnlyPropertyWithReturnType(osg::Uniform::Type, Type, bool);
	I_Property(osg::Uniform::Callback *, UpdateCallback);
END_REFLECTOR

BEGIN_OBJECT_REFLECTOR(osg::Uniform::Callback)
	I_VirtualBaseType(osg::Object);
	I_Constructor0();
	I_Constructor2(IN, const osg::Uniform::Callback &, x, IN, const osg::CopyOp &, x);
	I_Method0(osg::Object *, cloneType);
	I_Method1(osg::Object *, clone, IN, const osg::CopyOp &, copyop);
	I_Method1(bool, isSameKindAs, IN, const osg::Object *, obj);
	I_Method0(const char *, libraryName);
	I_Method0(const char *, className);
END_REFLECTOR

