/** String return version of: {@link #glGetActiveUniformName GetActiveUniformName} */
 public static String glGetActiveUniformName(int program, int uniformIndex, int bufSize) {
   APIBuffer __buffer = apiBuffer();
   int length = __buffer.intParam();
   int uniformName = __buffer.bufferParam(bufSize);
   nglGetActiveUniformName(
       program, uniformIndex, bufSize, __buffer.address(length), __buffer.address(uniformName));
   return memDecodeASCII(memByteBuffer(__buffer.address(uniformName), __buffer.intValue(length)));
 }
 /**
  * String return (w/ implicit max length) version of: {@link #glGetActiveSubroutineName
  * GetActiveSubroutineName}
  */
 public static String glGetActiveSubroutineName(int program, int shadertype, int index) {
   int bufsize = glGetProgramStagei(program, shadertype, GL_ACTIVE_SUBROUTINE_MAX_LENGTH);
   APIBuffer __buffer = apiBuffer();
   int length = __buffer.intParam();
   int name = __buffer.bufferParam(bufsize);
   nglGetActiveSubroutineName(
       program,
       shadertype,
       index,
       bufsize,
       __buffer.address() + length,
       __buffer.address() + name);
   return memDecodeASCII(memByteBuffer(__buffer.address() + name, __buffer.intValue(length)));
 }
 /** String return version of: {@link #glGetActiveSubroutineName GetActiveSubroutineName} */
 public static String glGetActiveSubroutineName(
     int program, int shadertype, int index, int bufsize) {
   APIBuffer __buffer = apiBuffer();
   int length = __buffer.intParam();
   int name = __buffer.bufferParam(bufsize);
   nglGetActiveSubroutineName(
       program,
       shadertype,
       index,
       bufsize,
       __buffer.address() + length,
       __buffer.address() + name);
   return memDecodeASCII(memByteBuffer(__buffer.address() + name, __buffer.intValue(length)));
 }
  private int getString(long object, int arg, int param_name, APIBuffer __buffer) {
    // Get string length
    int errcode = get(object, arg, param_name, 0, NULL, __buffer.address());
    if (DEBUG) checkCLError(errcode);

    int bytes = (int) __buffer.pointerValue(0);
    __buffer.bufferParam(bytes + POINTER_SIZE);

    // Get string
    errcode = get(object, arg, param_name, bytes, __buffer.address(), NULL);
    if (DEBUG) checkCLError(errcode);

    return bytes - 1; // all OpenCL char[] parameters are null-terminated
  }
 /**
  * String return (w/ implicit max length) version of: {@link #glGetActiveSubroutineUniformName
  * GetActiveSubroutineUniformName}
  */
 public static String glGetActiveSubroutineUniformName(int program, int shadertype, int index) {
   int bufsize =
       glGetActiveSubroutineUniformi(program, shadertype, index, GL31.GL_UNIFORM_NAME_LENGTH);
   APIBuffer __buffer = apiBuffer();
   int length = __buffer.intParam();
   int name = __buffer.bufferParam(bufsize);
   nglGetActiveSubroutineUniformName(
       program,
       shadertype,
       index,
       bufsize,
       __buffer.address() + length,
       __buffer.address() + name);
   return memDecodeASCII(memByteBuffer(__buffer.address() + name, __buffer.intValue(length)));
 }
 /**
  * String return (w/ implicit max length) version of: {@link #glGetActiveUniformBlockName
  * GetActiveUniformBlockName}
  */
 public static String glGetActiveUniformBlockName(int program, int uniformBlockIndex) {
   int bufSize =
       glGetActiveUniformBlocki(program, uniformBlockIndex, GL_UNIFORM_BLOCK_NAME_LENGTH);
   APIBuffer __buffer = apiBuffer();
   int length = __buffer.intParam();
   int uniformBlockName = __buffer.bufferParam(bufSize);
   nglGetActiveUniformBlockName(
       program,
       uniformBlockIndex,
       bufSize,
       __buffer.address(length),
       __buffer.address(uniformBlockName));
   return memDecodeASCII(
       memByteBuffer(__buffer.address(uniformBlockName), __buffer.intValue(length)));
 }
 /** Array version of: {@link #glGetUniformIndices GetUniformIndices} */
 public static void glGetUniformIndices(
     int program, CharSequence[] uniformNames, IntBuffer uniformIndices) {
   if (LWJGLUtil.CHECKS) checkBuffer(uniformIndices, uniformNames.length);
   APIBuffer __buffer = apiBuffer();
   int uniformNamesAddress = __buffer.bufferParam(uniformNames.length << POINTER_SHIFT);
   ByteBuffer[] uniformNamesBuffers = new ByteBuffer[uniformNames.length];
   for (int i = 0; i < uniformNames.length; i++)
     __buffer.pointerParam(
         uniformNamesAddress,
         i,
         memAddress(uniformNamesBuffers[i] = memEncodeASCII(uniformNames[i], true)));
   nglGetUniformIndices(
       program,
       uniformNames.length,
       __buffer.address(uniformNamesAddress),
       memAddress(uniformIndices));
 }