// ***************************************************************************
//
//   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/Shader>
#include <osg/State>

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

BEGIN_ENUM_REFLECTOR(osg::Shader::Type)
	I_DeclaringFile("osg/Shader");
	I_EnumLabel(osg::Shader::VERTEX);
	I_EnumLabel(osg::Shader::FRAGMENT);
	I_EnumLabel(osg::Shader::GEOMETRY);
	I_EnumLabel(osg::Shader::UNDEFINED);
END_REFLECTOR

BEGIN_OBJECT_REFLECTOR(osg::Shader)
	I_DeclaringFile("osg/Shader");
	I_BaseType(osg::Object);
	I_ConstructorWithDefaults1(IN, osg::Shader::Type, type, osg::Shader::UNDEFINED,
	                           Properties::NON_EXPLICIT,
	                           ____Shader__Type,
	                           "",
	                           "");
	I_Constructor2(IN, osg::Shader::Type, type, IN, const std::string &, source,
	               ____Shader__Type__C5_std_string_R1,
	               "",
	               "");
	I_Constructor2(IN, osg::Shader::Type, type, IN, osg::ShaderBinary *, shaderBinary,
	               ____Shader__Type__ShaderBinary_P1,
	               "",
	               "");
	I_ConstructorWithDefaults2(IN, const osg::Shader &, rhs, , IN, const osg::CopyOp &, copyop, osg::CopyOp::SHALLOW_COPY,
	                           ____Shader__C5_Shader_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 object, with Object* return type. ",
	          "Must be defined by derived classes. ");
	I_Method1(osg::Object *, clone, IN, const osg::CopyOp &, x,
	          Properties::VIRTUAL,
	          __osg_Object_P1__clone__C5_osg_CopyOp_R1,
	          "Clone an object, 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,
	          "",
	          "");
	I_Method0(const char *, libraryName,
	          Properties::VIRTUAL,
	          __C5_char_P1__libraryName,
	          "return the name of the object's library. ",
	          "Must be defined by derived classes. The OpenSceneGraph convention is that the namespace of a library is the same as the library name. ");
	I_Method0(const char *, className,
	          Properties::VIRTUAL,
	          __C5_char_P1__className,
	          "return the name of the object's class type. ",
	          "Must be defined by derived classes. ");
	I_Method1(int, compare, IN, const osg::Shader &, rhs,
	          Properties::NON_VIRTUAL,
	          __int__compare__C5_Shader_R1,
	          "",
	          "");
	I_Method1(bool, setType, IN, osg::Shader::Type, t,
	          Properties::NON_VIRTUAL,
	          __bool__setType__Type,
	          "Set the Shader type as an enum. ",
	          "");
	I_Method0(osg::Shader::Type, getType,
	          Properties::NON_VIRTUAL,
	          __Type__getType,
	          "Get the Shader type as an enum. ",
	          "");
	I_Method0(const char *, getTypename,
	          Properties::NON_VIRTUAL,
	          __C5_char_P1__getTypename,
	          "Get the Shader type as a descriptive string. ",
	          "");
	I_Method1(void, setFileName, IN, const std::string &, fileName,
	          Properties::NON_VIRTUAL,
	          __void__setFileName__C5_std_string_R1,
	          "Set file name for the shader source code. ",
	          "");
	I_Method0(const std::string &, getFileName,
	          Properties::NON_VIRTUAL,
	          __C5_std_string_R1__getFileName,
	          "Get filename to which the shader source code belongs. ",
	          "");
	I_Method1(void, setShaderSource, IN, const std::string &, sourceText,
	          Properties::NON_VIRTUAL,
	          __void__setShaderSource__C5_std_string_R1,
	          "Set the Shader's source code text from a string. ",
	          "");
	I_Method0(const std::string &, getShaderSource,
	          Properties::NON_VIRTUAL,
	          __C5_std_string_R1__getShaderSource,
	          "Query the shader's source code text. ",
	          "");
	I_Method1(void, setShaderBinary, IN, osg::ShaderBinary *, shaderBinary,
	          Properties::NON_VIRTUAL,
	          __void__setShaderBinary__ShaderBinary_P1,
	          "Set the Shader using a ShaderBinary. ",
	          "");
	I_Method0(osg::ShaderBinary *, getShaderBinary,
	          Properties::NON_VIRTUAL,
	          __ShaderBinary_P1__getShaderBinary,
	          "Get the Shader's ShaderBinary, return NULL if none is assigned. ",
	          "");
	I_Method0(const osg::ShaderBinary *, getShaderBinary,
	          Properties::NON_VIRTUAL,
	          __C5_ShaderBinary_P1__getShaderBinary,
	          "Get the const Shader's ShaderBinary, return NULL if none is assigned. ",
	          "");
	I_Method1(bool, loadShaderSourceFromFile, IN, const std::string &, fileName,
	          Properties::NON_VIRTUAL,
	          __bool__loadShaderSourceFromFile__C5_std_string_R1,
	          "Load the Shader's source code text from a file. ",
	          "");
	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, dirtyShader,
	          Properties::NON_VIRTUAL,
	          __void__dirtyShader,
	          "Mark our PCSs as needing recompilation. ",
	          "Also mark Programs that depend on us as needing relink ");
	I_Method1(void, compileShader, IN, osg::State &, state,
	          Properties::NON_VIRTUAL,
	          __void__compileShader__osg_State_R1,
	          "If needed, compile the PCS's glShader. ",
	          "");
	I_Method2(void, attachShader, IN, unsigned int, contextID, IN, GLuint, program,
	          Properties::NON_VIRTUAL,
	          __void__attachShader__unsigned_int__GLuint,
	          "For a given GL context, attach a glShader to a glProgram. ",
	          "");
	I_Method2(void, detachShader, IN, unsigned int, contextID, IN, GLuint, program,
	          Properties::NON_VIRTUAL,
	          __void__detachShader__unsigned_int__GLuint,
	          "For a given GL context, detach a glShader to a glProgram. ",
	          "");
	I_Method2(bool, getGlShaderInfoLog, IN, unsigned int, contextID, IN, std::string &, log,
	          Properties::NON_VIRTUAL,
	          __bool__getGlShaderInfoLog__unsigned_int__std_string_R1,
	          "Query InfoLog from a glShader. ",
	          "");
	I_StaticMethod2(osg::Shader *, readShaderFile, IN, osg::Shader::Type, type, IN, const std::string &, fileName,
	                __Shader_P1__readShaderFile__Type__C5_std_string_R1_S,
	                "Read shader source from file and then constructor shader of specified type. ",
	                "Return the resulting Shader or 0 if no valid shader source could be read. ");
	I_StaticMethod2(void, deleteGlShader, IN, unsigned int, contextID, IN, GLuint, shader,
	                __void__deleteGlShader__unsigned_int__GLuint_S,
	                "Mark internal glShader for deletion. ",
	                "Deletion requests are queued until they can be executed in the proper GL context. ");
	I_StaticMethod3(void, flushDeletedGlShaders, IN, unsigned int, contextID, IN, double, currentTime, IN, double &, availableTime,
	                __void__flushDeletedGlShaders__unsigned_int__double__double_R1_S,
	                "flush all the cached glShaders which need to be deleted in the OpenGL context related to contextID. ",
	                "");
	I_StaticMethod1(void, discardDeletedGlShaders, IN, unsigned int, contextID,
	                __void__discardDeletedGlShaders__unsigned_int_S,
	                "discard all the cached glShaders 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_StaticMethod1(osg::Shader::Type, getTypeId, IN, const std::string &, tname,
	                __Shader_Type__getTypeId__C5_std_string_R1_S,
	                "",
	                "");

	I_ProtectedMethod1(bool, addProgramRef, IN, osg::Program *, program,
	                   Properties::NON_VIRTUAL,
	                   Properties::NON_CONST,
	                   __bool__addProgramRef__osg_Program_P1,
	                   "",
	                   "");
	I_ProtectedMethod1(bool, removeProgramRef, IN, osg::Program *, program,
	                   Properties::NON_VIRTUAL,
	                   Properties::NON_CONST,
	                   __bool__removeProgramRef__osg_Program_P1,
	                   "",
	                   "");
	I_SimpleProperty(const std::string &, FileName, 
	                 __C5_std_string_R1__getFileName, 
	                 __void__setFileName__C5_std_string_R1);
	I_SimpleProperty(osg::ShaderBinary *, ShaderBinary, 
	                 __ShaderBinary_P1__getShaderBinary, 
	                 __void__setShaderBinary__ShaderBinary_P1);
	I_SimpleProperty(const std::string &, ShaderSource, 
	                 __C5_std_string_R1__getShaderSource, 
	                 __void__setShaderSource__C5_std_string_R1);
	I_SimpleProperty(osg::Shader::Type, Type, 
	                 __Type__getType, 
	                 __bool__setType__Type);
	I_SimpleProperty(const char *, Typename, 
	                 __C5_char_P1__getTypename, 
	                 0);
END_REFLECTOR

BEGIN_OBJECT_REFLECTOR(osg::ShaderBinary)
	I_DeclaringFile("osg/Shader");
	I_BaseType(osg::Object);
	I_Constructor0(____ShaderBinary,
	               "",
	               "");
	I_ConstructorWithDefaults2(IN, const osg::ShaderBinary &, rhs, , IN, const osg::CopyOp &, copyop, osg::CopyOp::SHALLOW_COPY,
	                           ____ShaderBinary__C5_ShaderBinary_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 object, with Object* return type. ",
	          "Must be defined by derived classes. ");
	I_Method1(osg::Object *, clone, IN, const osg::CopyOp &, x,
	          Properties::VIRTUAL,
	          __osg_Object_P1__clone__C5_osg_CopyOp_R1,
	          "Clone an object, 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,
	          "",
	          "");
	I_Method0(const char *, libraryName,
	          Properties::VIRTUAL,
	          __C5_char_P1__libraryName,
	          "return the name of the object's library. ",
	          "Must be defined by derived classes. The OpenSceneGraph convention is that the namespace of a library is the same as the library name. ");
	I_Method0(const char *, className,
	          Properties::VIRTUAL,
	          __C5_char_P1__className,
	          "return the name of the object's class type. ",
	          "Must be defined by derived classes. ");
	I_Method2(void, assign, IN, unsigned int, size, IN, const unsigned char *, data,
	          Properties::NON_VIRTUAL,
	          __void__assign__unsigned_int__C5_unsigned_char_P1,
	          "Allocated a data buffer of specified size/*/ void allocate(unsigned int size);. ",
	          "/** Assign shader binary data, copying the specified data into locally stored data buffer, the original data can then be deleted. ");
	I_Method0(unsigned int, getSize,
	          Properties::NON_VIRTUAL,
	          __unsigned_int__getSize,
	          "Get the size of the shader binary data. ",
	          "");
	I_Method0(unsigned char *, getData,
	          Properties::NON_VIRTUAL,
	          __unsigned_char_P1__getData,
	          "Get a ptr to the shader binary data. ",
	          "");
	I_Method0(const unsigned char *, getData,
	          Properties::NON_VIRTUAL,
	          __C5_unsigned_char_P1__getData,
	          "Get a const ptr to the shader binary data. ",
	          "");
	I_StaticMethod1(osg::ShaderBinary *, readShaderBinaryFile, IN, const std::string &, fileName,
	                __ShaderBinary_P1__readShaderBinaryFile__C5_std_string_R1_S,
	                "Read shader binary from file. ",
	                "Return the resulting Shader or 0 if no valid shader binary could be read. ");
	I_SimpleProperty(unsigned char *, Data, 
	                 __unsigned_char_P1__getData, 
	                 0);
	I_SimpleProperty(unsigned int, Size, 
	                 __unsigned_int__getSize, 
	                 0);
END_REFLECTOR

