docs: def ekpsel(query, msglen, tablen, collen):
      """
      Parse the SELECT clause of an EK query, returning full particulars
      concerning each selected item.
  
      http://naif.jpl.nasa.gov/pub/naif/toolkit_docs/C/cspice/ekpsel_c.html
      note: oddly docs at url are incomplete/incorrect.
  
      :param query: EK query.
      :type query: str
      :param msglen: Available space in the output error message string.
      :type msglen: int
      :param tablen: UNKNOWN? Length of Table?
      :type tablen: int
      :param collen: UNKOWN? Length of Column?
      :return:
              Number of items in SELECT clause of query,
              Begin positions of expressions in SELECT clause,
              End positions of expressions in SELECT clause,
              Data types of expressions,
              Classes of expressions,
              Names of tables qualifying SELECT columns,
              Names of columns in SELECT clause of query,
              Error flag,
              Parse error message.
      :rtype: tuple
      """
      query = stypes.stringToCharP(query)
      msglen = ctypes.c_int(msglen)
      tablen = ctypes.c_int(tablen)
      collen = ctypes.c_int(collen)
      n = ctypes.c_int()
      xbegs = stypes.emptyIntVector(_SPICE_EK_MAXQSEL)
      xends = stypes.emptyIntVector(_SPICE_EK_MAXQSEL)
      xtypes = stypes.emptyIntVector(_SPICE_EK_MAXQSEL)
      xclass = stypes.emptyIntVector(_SPICE_EK_MAXQSEL)
      tabs = stypes.emptyCharArray(yLen=_SPICE_EK_MAXQSEL, xLen=tablen)
      cols = stypes.emptyCharArray(yLen=_SPICE_EK_MAXQSEL, xLen=collen)
      error = ctypes.c_int()
      errmsg = stypes.stringToCharP(msglen)
      libspice.ekpsel_c(query, msglen, tablen, collen, ctypes.byref(n),
                        xbegs, xends, xtypes, xclass, ctypes.byref(tabs),
                        ctypes.byref(cols), ctypes.byref(error), errmsg)
      return (n.value,
              stypes.cVectorToPython(xbegs)[:n.value],
              stypes.cVectorToPython(xends)[:n.value],
              stypes.cVectorToPython(xtypes)[:n.value],
              stypes.cVectorToPython(xclass)[:n.value],
              stypes.cVectorToPython(tabs)[:n.value],
              stypes.cVectorToPython(cols)[:n.value],
              error.value,
              stypes.toPythonString(errmsg))