docs: def simxCallScriptFunction(clientID, scriptDescription, options, functionName, inputInts, inputFloats, inputStrings, inputBuffer, operationMode):
      '''
      Please have a look at the function description/documentation in the V-REP user manual
      '''
  
      inputBufferV=inputBuffer
      if sys.version_info[0] == 3:
          if type(scriptDescription) is str:
              scriptDescription=scriptDescription.encode('utf-8')
          if type(functionName) is str:
              functionName=functionName.encode('utf-8')
          if type(inputBuffer) is bytearray:
              inputBufferV  = (ct.c_ubyte*len(inputBuffer))(*inputBuffer)
          if type(inputBuffer) is str:
              inputBuffer=inputBuffer.encode('utf-8')
              inputBufferV  = (ct.c_ubyte*len(inputBuffer))(*inputBuffer)
      else:
          if type(inputBuffer) is bytearray:
              inputBufferV = (ct.c_ubyte*len(inputBuffer))(*inputBuffer)
          if type(inputBuffer) is str:
              inputBuffer=bytearray(inputBuffer)
              inputBufferV = (ct.c_ubyte*len(inputBuffer))(*inputBuffer)
      inputBufferV=ct.cast(inputBufferV,ct.POINTER(ct.c_ubyte)) # IronPython needs this
  
      c_inInts  = (ct.c_int*len(inputInts))(*inputInts)
      c_inInts = ct.cast(c_inInts,ct.POINTER(ct.c_int)) # IronPython needs this
      c_inFloats  = (ct.c_float*len(inputFloats))(*inputFloats)
      c_inFloats = ct.cast(c_inFloats,ct.POINTER(ct.c_float)) # IronPython needs this
  
      concatStr=''.encode('utf-8')
      for i in range(len(inputStrings)):
          a=inputStrings[i]
          a=a+'\0'
          if type(a) is str:
              a=a.encode('utf-8')
          concatStr=concatStr+a
      c_inStrings  = (ct.c_char*len(concatStr))(*concatStr)
  
      intDataOut =[]
      floatDataOut =[]
      stringDataOut =[]
      bufferOut =bytearray()
  
      intDataC = ct.c_int()
      intDataP = ct.POINTER(ct.c_int)()
      floatDataC = ct.c_int()
      floatDataP = ct.POINTER(ct.c_float)()
      stringDataC = ct.c_int()
      stringDataP = ct.POINTER(ct.c_char)()
      bufferS = ct.c_int()
      bufferP = ct.POINTER(ct.c_ubyte)()
  
      ret = c_CallScriptFunction(clientID,scriptDescription,options,functionName,len(inputInts),c_inInts,len(inputFloats),c_inFloats,len(inputStrings),c_inStrings,len(inputBuffer),inputBufferV,ct.byref(intDataC),ct.byref(intDataP),ct.byref(floatDataC),ct.byref(floatDataP),ct.byref(stringDataC),ct.byref(stringDataP),ct.byref(bufferS),ct.byref(bufferP),operationMode)
  
      if ret == 0:
          for i in range(intDataC.value):
              intDataOut.append(intDataP[i])
          for i in range(floatDataC.value):
              floatDataOut.append(floatDataP[i])
          s = 0
          for i in range(stringDataC.value):
              a = bytearray()
              while stringDataP[s] != b'\0':
                  if sys.version_info[0] == 3:
                      a.append(int.from_bytes(stringDataP[s],'big'))
                  else:
                      a.append(stringDataP[s])
                  s += 1
              s += 1 #skip null
              if sys.version_info[0] == 3:
                  a=str(a,'utf-8')
              else:
                  a=str(a)
              stringDataOut.append(a)
          for i in range(bufferS.value):
              bufferOut.append(bufferP[i])
      if sys.version_info[0] != 3:
          bufferOut=str(bufferOut)
  
      return ret, intDataOut, floatDataOut, stringDataOut, bufferOut