# This .cfg file provides common options used among all Cg glue code
# generated for Jogl on all platforms.
Package com.jogamp.opengl.cg
JavaClass CgGL
Style AllStatic
JavaOutputDir gensrc/classes
NativeOutputDir gensrc/native/jogl_cg
HierarchicalNativeOutput false

ForceProcAddressGen __ALL__
LocalProcAddressCallingConvention __ALL__ APIENTRY

EmitProcAddressTable true
ProcAddressTableClassName CgProcAddressTable
GetProcAddressTableExpr cgProcAddressTable
ProcAddressNameExpr PFN $UPPERCASE({0}) PROC

#
# Map const char* return values to Java strings for these functions
#
ReturnsString cgGetAnnotationName
ReturnsString cgGetEnumString
ReturnsString cgGetErrorString
ReturnsString cgGetLastErrorString
ReturnsString cgGetLastListing
ReturnsString cgGetParameterName
ReturnsString cgGetParameterSemantic
ReturnsString cgGetPassName
ReturnsString cgGetProfileString
ReturnsString cgGetProgramString
ReturnsString cgGetResourceString
ReturnsString cgGetStateName
ReturnsString cgGetString
ReturnsString cgGetStringAnnotationValue
ReturnsString cgGetStringParameterValue
ReturnsString cgGetStringStateAssignmentValue
ReturnsString cgGetTechniqueName
ReturnsString cgGetTypeString

ArgumentIsString cgAddStateEnumerant 1
ArgumentIsString cgCreateArrayState 1
ArgumentIsString cgCreateArraySamplerState 1
ArgumentIsString cgCreateEffect 1 2
ArgumentIsString cgCreateEffectFromFile 1 2
ArgumentIsString cgCreateProgram 2 4 5
ArgumentIsString cgCreateProgramFromFile 2 4 5
ArgumentIsString cgCreateProgramFromEffect 2 3
ArgumentIsString cgCreateSamplerState 1
ArgumentIsString cgCreateState 1
ArgumentIsString cgGetEffectParameterBySemantic 1
ArgumentIsString cgGetEnum 0
ArgumentIsString cgGetNamedEffectParameter 1
ArgumentIsString cgGetNamedParameter 1
ArgumentIsString cgGetNamedPass 1
ArgumentIsString cgGetNamedProgramParameter 2
ArgumentIsString cgGetNamedSamplerState 1
ArgumentIsString cgGetNamedState 1
ArgumentIsString cgGetNamedSamplerStateAssignment 1
ArgumentIsString cgGetNamedStateAssignment 1
ArgumentIsString cgGetNamedStructParameter 1
ArgumentIsString cgGetNamedTechnique 1
ArgumentIsString cgGetNamedTechniqueAnnotation 1
ArgumentIsString cgGetNamedPassAnnotation 1
ArgumentIsString cgGetNamedParameterAnnotation 1
ArgumentIsString cgGetNamedProgramAnnotation 1
ArgumentIsString cgGetNamedUserType 1
ArgumentIsString cgGetProfile 0
ArgumentIsString cgGetType 0
ArgumentIsString cgGetResource 0
ArgumentIsString cgSetLastListing 1
ArgumentIsString cgSetParameterSemantic 1
ArgumentIsString cgSetStringParameterValue 1

# Opaque definitions
Opaque boolean CGbool

#
# FIXME!!!!  Ignore these functions for now because we can't
# automatically handle C callbacks
#
Ignore cgSetErrorCallback
Ignore cgGetErrorCallback
Ignore cgSetErrorHandler
Ignore cgGetErrorHandler
Ignore cgSetStateCallbacks
Ignore cgGetStateSetCallback
Ignore cgGetStateResetCallback
Ignore cgGetStateValidateCallback

#
# FIXME!!!!  Ignore these functions for now because bugs in the
# emitter code can't handle them
#
Ignore cgGetBooleanAnnotationValues
Ignore cgGetBoolStateAssignmentValues
Ignore cgGetFloatAnnotationValues
Ignore cgGetFloatStateAssignmentValues
Ignore cgGetIntAnnotationValues
Ignore cgGetIntStateAssignmentValues
Ignore cgGetParameterValues
Ignore cgGetProgramOptions

# And NativeLibLoader for help loading the native libraries
Import jogamp.opengl.*
Import com.jogamp.common.os.DynamicLookupHelper
Import com.jogamp.common.os.DynamicLibraryBundle
Import com.jogamp.opengl.cg.CgDynamicLibraryBundleInfo
Import java.security.PrivilegedAction
Import java.security.AccessController

#
# NIODirectOnly directives for routines requiring them for semantic reasons
#               essential where the buffer lifecycle extends the function call
#
NIODirectOnly cgGLSetParameterPointer

# Raise CgException instead of RuntimeException in glue code
RuntimeExceptionType CgException

#
# Make sure the right definitions and include files are added to the
# generated C code
#

CustomCCode #include <gluegen_stdint.h>
CustomCCode #include <stdio.h> /* android */
CustomCCode #include <stdlib.h>
CustomCCode #include <Cg/cgGL.h>
CustomCCode
CustomCCode #ifndef APIENTRY
CustomCCode   #define APIENTRY
CustomCCode #endif

IncludeAs CustomJavaCode CgGL cg-common-CustomJavaCode.java