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

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

#include <osg/CopyOp>
#include <osg/Object>
#include <osg/Program>
#include <osg/Shader>
#include <osg/State>
#include <osg/StateAttribute>
#include <osg/Uniform>

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

TYPE_NAME_ALIAS(std::map< std::string COMMA  GLuint >, osg::Program::AttribBindingList)

TYPE_NAME_ALIAS(std::map< std::string COMMA  GLuint >, osg::Program::FragDataBindingList)

TYPE_NAME_ALIAS(std::map< std::string COMMA  osg::Program::ActiveVarInfo >, osg::Program::ActiveVarInfoMap)

BEGIN_OBJECT_REFLECTOR(osg::Program)
	I_DeclaringFile("osg/Program");
	I_BaseType(osg::StateAttribute);
	I_Constructor0(____Program,
	               "",
	               "");
	I_ConstructorWithDefaults2(IN, const osg::Program &, rhs, , IN, const osg::CopyOp &, copyop, osg::CopyOp::SHALLOW_COPY,
	                           ____Program__C5_Program_R1__C5_osg_CopyOp_R1,
	                           "Copy constructor using CopyOp to manage deep vs shallow copy. ",
	                           "");
	I_Method0(osg::Object *, cloneType,
	          Properties::VIRTUAL,
	          __osg_Object_P1__cloneType,
	          "Clone the type of an attribute, with Object* return type. ",
	          "Must be defined by derived classes. ");
	I_Method1(osg::Object *, clone, IN, const osg::CopyOp &, copyop,
	          Properties::VIRTUAL,
	          __osg_Object_P1__clone__C5_osg_CopyOp_R1,
	          "Clone an attribute, with Object* return type. ",
	          "Must be defined by derived classes. ");
	I_Method1(bool, isSameKindAs, IN, const osg::Object *, obj,
	          Properties::VIRTUAL,
	          __bool__isSameKindAs__C5_osg_Object_P1,
	          "Return true if this and obj are of the same kind of object. ",
	          "");
	I_Method0(const char *, libraryName,
	          Properties::VIRTUAL,
	          __C5_char_P1__libraryName,
	          "Return the name of the attribute's library. ",
	          "");
	I_Method0(const char *, className,
	          Properties::VIRTUAL,
	          __C5_char_P1__className,
	          "Return the name of the attribute's class type. ",
	          "");
	I_Method0(osg::StateAttribute::Type, getType,
	          Properties::VIRTUAL,
	          __Type__getType,
	          "Return the Type identifier of the attribute's class type. ",
	          "");
	I_Method1(int, compare, IN, const osg::StateAttribute &, sa,
	          Properties::VIRTUAL,
	          __int__compare__C5_osg_StateAttribute_R1,
	          "return -1 if *this < *rhs, 0 if *this==*rhs, 1 if *this>*rhs. ",
	          "");
	I_Method1(void, apply, IN, osg::State &, state,
	          Properties::VIRTUAL,
	          __void__apply__osg_State_R1,
	          "If enabled, activate our program in the GL pipeline, performing any rebuild operations that might be pending. ",
	          "");
	I_Method1(void, setThreadSafeRefUnref, IN, bool, threadSafe,
	          Properties::VIRTUAL,
	          __void__setThreadSafeRefUnref__bool,
	          "Set whether to use a mutex to ensure ref() and unref() are thread safe. ",
	          "");
	I_Method1(void, compileGLObjects, IN, osg::State &, state,
	          Properties::VIRTUAL,
	          __void__compileGLObjects__osg_State_R1,
	          "Compile program and associated shaders. ",
	          "");
	I_Method1(void, resizeGLObjectBuffers, IN, unsigned int, maxSize,
	          Properties::VIRTUAL,
	          __void__resizeGLObjectBuffers__unsigned_int,
	          "Resize any per context GLObject buffers to specified size. ",
	          "");
	I_MethodWithDefaults1(void, releaseGLObjects, IN, osg::State *, state, 0,
	                      Properties::VIRTUAL,
	                      __void__releaseGLObjects__osg_State_P1,
	                      "release OpenGL objects in specified graphics context if State object is passed, otherwise release OpenGL objects for all graphics context if State object pointer NULL. ",
	                      "");
	I_Method0(void, dirtyProgram,
	          Properties::NON_VIRTUAL,
	          __void__dirtyProgram,
	          "Mark our PCSOs as needing relink. ",
	          "");
	I_Method1(bool, addShader, IN, osg::Shader *, shader,
	          Properties::NON_VIRTUAL,
	          __bool__addShader__Shader_P1,
	          "Attach an osg::Shader to this osg::Program. ",
	          "Mark Program as needing relink. Return true for success ");
	I_Method0(unsigned int, getNumShaders,
	          Properties::NON_VIRTUAL,
	          __unsigned_int__getNumShaders,
	          "",
	          "");
	I_Method1(osg::Shader *, getShader, IN, unsigned int, i,
	          Properties::NON_VIRTUAL,
	          __Shader_P1__getShader__unsigned_int,
	          "",
	          "");
	I_Method1(const osg::Shader *, getShader, IN, unsigned int, i,
	          Properties::NON_VIRTUAL,
	          __C5_Shader_P1__getShader__unsigned_int,
	          "",
	          "");
	I_Method1(bool, removeShader, IN, osg::Shader *, shader,
	          Properties::NON_VIRTUAL,
	          __bool__removeShader__Shader_P1,
	          "Remove osg::Shader from this osg::Program. ",
	          "Mark Program as needing relink. Return true for success ");
	I_Method2(void, setParameter, IN, GLenum, pname, IN, GLint, value,
	          Properties::NON_VIRTUAL,
	          __void__setParameter__GLenum__GLint,
	          "Set/get GL program parameters. ",
	          "");
	I_Method1(GLint, getParameter, IN, GLenum, pname,
	          Properties::NON_VIRTUAL,
	          __GLint__getParameter__GLenum,
	          "",
	          "");
	I_Method2(void, addBindAttribLocation, IN, const std::string &, name, IN, GLuint, index,
	          Properties::NON_VIRTUAL,
	          __void__addBindAttribLocation__C5_std_string_R1__GLuint,
	          "Add an attribute location binding. ",
	          "");
	I_Method1(void, removeBindAttribLocation, IN, const std::string &, name,
	          Properties::NON_VIRTUAL,
	          __void__removeBindAttribLocation__C5_std_string_R1,
	          "Remove an attribute location binding. ",
	          "");
	I_Method2(void, addBindFragDataLocation, IN, const std::string &, name, IN, GLuint, index,
	          Properties::NON_VIRTUAL,
	          __void__addBindFragDataLocation__C5_std_string_R1__GLuint,
	          "Add an frag data location binding. ",
	          "See EXT_gpu_shader4 for BindFragDataLocationEXT ");
	I_Method1(void, removeBindFragDataLocation, IN, const std::string &, name,
	          Properties::NON_VIRTUAL,
	          __void__removeBindFragDataLocation__C5_std_string_R1,
	          "Remove an frag data location binding. ",
	          "");
	I_Method0(const osg::Program::AttribBindingList &, getAttribBindingList,
	          Properties::NON_VIRTUAL,
	          __C5_AttribBindingList_R1__getAttribBindingList,
	          "",
	          "");
	I_Method0(const osg::Program::FragDataBindingList &, getFragDataBindingList,
	          Properties::NON_VIRTUAL,
	          __C5_FragDataBindingList_R1__getFragDataBindingList,
	          "",
	          "");
	I_Method0(bool, isFixedFunction,
	          Properties::NON_VIRTUAL,
	          __bool__isFixedFunction,
	          "Return true if this Program represents \"fixed-functionality\" rendering. ",
	          "");
	I_Method2(bool, getGlProgramInfoLog, IN, unsigned int, contextID, IN, std::string &, log,
	          Properties::NON_VIRTUAL,
	          __bool__getGlProgramInfoLog__unsigned_int__std_string_R1,
	          "Query InfoLog from a glProgram. ",
	          "");
	I_Method1(const osg::Program::ActiveVarInfoMap &, getActiveUniforms, IN, unsigned int, contextID,
	          Properties::NON_VIRTUAL,
	          __C5_ActiveVarInfoMap_R1__getActiveUniforms__unsigned_int,
	          "",
	          "");
	I_Method1(const osg::Program::ActiveVarInfoMap &, getActiveAttribs, IN, unsigned int, contextID,
	          Properties::NON_VIRTUAL,
	          __C5_ActiveVarInfoMap_R1__getActiveAttribs__unsigned_int,
	          "",
	          "");
	I_Method1(osg::Program::PerContextProgram *, getPCP, IN, unsigned int, contextID,
	          Properties::NON_VIRTUAL,
	          __PerContextProgram_P1__getPCP__unsigned_int,
	          "Get the PCP for a particular GL context. ",
	          "");
	I_StaticMethod2(void, deleteGlProgram, IN, unsigned int, contextID, IN, GLuint, program,
	                __void__deleteGlProgram__unsigned_int__GLuint_S,
	                "Mark internal glProgram for deletion. ",
	                "Deletion requests are queued until they can be executed in the proper GL context. ");
	I_StaticMethod3(void, flushDeletedGlPrograms, IN, unsigned int, contextID, IN, double, currentTime, IN, double &, availableTime,
	                __void__flushDeletedGlPrograms__unsigned_int__double__double_R1_S,
	                "flush all the cached glPrograms which need to be deleted in the OpenGL context related to contextID. ",
	                "");
	I_StaticMethod1(void, discardDeletedGlPrograms, IN, unsigned int, contextID,
	                __void__discardDeletedGlPrograms__unsigned_int_S,
	                "discard all the cached glPrograms which need to be deleted in the OpenGL context related to contextID. ",
	                "Note, unlike flush no OpenGL calls are made, instead the handles are all removed. this call is useful for when an OpenGL context has been destroyed. ");
	I_SimpleProperty(const osg::Program::AttribBindingList &, AttribBindingList, 
	                 __C5_AttribBindingList_R1__getAttribBindingList, 
	                 0);
	I_SimpleProperty(const osg::Program::FragDataBindingList &, FragDataBindingList, 
	                 __C5_FragDataBindingList_R1__getFragDataBindingList, 
	                 0);
	I_IndexedProperty(GLint, Parameter, 
	                  __GLint__getParameter__GLenum, 
	                  __void__setParameter__GLenum__GLint, 
	                  0);
	I_ArrayProperty(osg::Shader *, Shader, 
	                __Shader_P1__getShader__unsigned_int, 
	                0, 
	                __unsigned_int__getNumShaders, 
	                __bool__addShader__Shader_P1, 
	                0, 
	                0);
	I_SimpleProperty(bool, ThreadSafeRefUnref, 
	                 0, 
	                 __void__setThreadSafeRefUnref__bool);
	I_SimpleProperty(osg::StateAttribute::Type, Type, 
	                 __Type__getType, 
	                 0);
END_REFLECTOR

BEGIN_VALUE_REFLECTOR(osg::Program::ActiveVarInfo)
	I_DeclaringFile("osg/Program");
	I_Constructor0(____ActiveVarInfo,
	               "",
	               "");
	I_Constructor3(IN, GLint, loc, IN, GLenum, type, IN, GLint, size,
	               ____ActiveVarInfo__GLint__GLenum__GLint,
	               "",
	               "");
	I_PublicMemberProperty(GLint, _location);
	I_PublicMemberProperty(GLenum, _type);
	I_PublicMemberProperty(GLint, _size);
END_REFLECTOR

BEGIN_OBJECT_REFLECTOR(osg::Program::PerContextProgram)
	I_DeclaringFile("osg/Program");
	I_BaseType(osg::Referenced);
	I_Constructor2(IN, const osg::Program *, program, IN, unsigned int, contextID,
	               ____PerContextProgram__C5_Program_P1__unsigned_int,
	               "",
	               "");
	I_Method0(GLuint, getHandle,
	          Properties::NON_VIRTUAL,
	          __GLuint__getHandle,
	          "",
	          "");
	I_Method0(void, requestLink,
	          Properties::NON_VIRTUAL,
	          __void__requestLink,
	          "",
	          "");
	I_Method0(void, linkProgram,
	          Properties::NON_VIRTUAL,
	          __void__linkProgram,
	          "",
	          "");
	I_Method0(bool, validateProgram,
	          Properties::NON_VIRTUAL,
	          __bool__validateProgram,
	          "",
	          "");
	I_Method0(bool, needsLink,
	          Properties::NON_VIRTUAL,
	          __bool__needsLink,
	          "",
	          "");
	I_Method0(bool, isLinked,
	          Properties::NON_VIRTUAL,
	          __bool__isLinked,
	          "",
	          "");
	I_Method1(bool, getInfoLog, IN, std::string &, infoLog,
	          Properties::NON_VIRTUAL,
	          __bool__getInfoLog__std_string_R1,
	          "",
	          "");
	I_Method0(void, useProgram,
	          Properties::NON_VIRTUAL,
	          __void__useProgram,
	          "",
	          "");
	I_Method0(void, resetAppliedUniforms,
	          Properties::NON_VIRTUAL,
	          __void__resetAppliedUniforms,
	          "",
	          "");
	I_Method1(void, apply, IN, const osg::Uniform &, uniform,
	          Properties::NON_VIRTUAL,
	          __void__apply__C5_Uniform_R1,
	          "",
	          "");
	I_Method0(const osg::Program::ActiveVarInfoMap &, getActiveUniforms,
	          Properties::NON_VIRTUAL,
	          __C5_ActiveVarInfoMap_R1__getActiveUniforms,
	          "",
	          "");
	I_Method0(const osg::Program::ActiveVarInfoMap &, getActiveAttribs,
	          Properties::NON_VIRTUAL,
	          __C5_ActiveVarInfoMap_R1__getActiveAttribs,
	          "",
	          "");
	I_Method1(GLint, getUniformLocation, IN, const std::string &, name,
	          Properties::NON_VIRTUAL,
	          __GLint__getUniformLocation__C5_std_string_R1,
	          "",
	          "");
	I_Method1(GLint, getAttribLocation, IN, const std::string &, name,
	          Properties::NON_VIRTUAL,
	          __GLint__getAttribLocation__C5_std_string_R1,
	          "",
	          "");
	I_Method1(void, addShaderToAttach, IN, osg::Shader *, shader,
	          Properties::NON_VIRTUAL,
	          __void__addShaderToAttach__Shader_P1,
	          "",
	          "");
	I_Method1(void, addShaderToDetach, IN, osg::Shader *, shader,
	          Properties::NON_VIRTUAL,
	          __void__addShaderToDetach__Shader_P1,
	          "",
	          "");
	I_SimpleProperty(const osg::Program::ActiveVarInfoMap &, ActiveAttribs, 
	                 __C5_ActiveVarInfoMap_R1__getActiveAttribs, 
	                 0);
	I_SimpleProperty(const osg::Program::ActiveVarInfoMap &, ActiveUniforms, 
	                 __C5_ActiveVarInfoMap_R1__getActiveUniforms, 
	                 0);
	I_SimpleProperty(GLuint, Handle, 
	                 __GLuint__getHandle, 
	                 0);
END_REFLECTOR

STD_MAP_REFLECTOR(std::map< std::string COMMA  GLuint >)

STD_MAP_REFLECTOR(std::map< std::string COMMA  osg::Program::ActiveVarInfo >)

