nodes: 0, module; 1, function_definition; 2, function_name:shellc; 3, parameters; 4, comment:# This works! looks like this is a mutable 2d char array; 5, block; 6, identifier:ndim; 7, identifier:lenvals; 8, identifier:array; 9, expression_statement; 10, expression_statement; 11, expression_statement; 12, expression_statement; 13, expression_statement; 14, return_statement; 15, comment:"""
      Sort an array of character strings according to the ASCII
      collating sequence using the Shell Sort algorithm.
  
      http://naif.jpl.nasa.gov/pub/naif/toolkit_docs/C/cspice/shellc_c.html
  
      :param ndim: Dimension of the array.
      :type ndim: int
      :param lenvals: String length.
      :type lenvals: int
      :param array: The array to be sorted.
      :type array: list of str.
      :return: The sorted array.
      :rtype: list of str.
      """; 16, assignment; 17, assignment; 18, assignment; 19, call; 20, call; 21, identifier:array; 22, call; 23, identifier:ndim; 24, call; 25, identifier:lenvals; 26, call; 27, attribute; 28, argument_list; 29, attribute; 30, argument_list; 31, attribute; 32, argument_list; 33, attribute; 34, argument_list; 35, attribute; 36, argument_list; 37, identifier:libspice; 38, identifier:shellc_c; 39, identifier:ndim; 40, identifier:lenvals; 41, call; 42, identifier:stypes; 43, identifier:cVectorToPython; 44, identifier:array; 45, identifier:stypes; 46, identifier:listToCharArray; 47, identifier:array; 48, keyword_argument; 49, keyword_argument; 50, identifier:ctypes; 51, identifier:c_int; 52, identifier:ndim; 53, identifier:ctypes; 54, identifier:c_int; 55, identifier:lenvals; 56, attribute; 57, argument_list; 58, identifier:xLen; 59, identifier:lenvals; 60, identifier:yLen; 61, identifier:ndim; 62, identifier:ctypes; 63, identifier:byref; 64, identifier:array
code: def shellc(ndim, lenvals, array):
      # This works! looks like this is a mutable 2d char array
      """
      Sort an array of character strings according to the ASCII
      collating sequence using the Shell Sort algorithm.
  
      http://naif.jpl.nasa.gov/pub/naif/toolkit_docs/C/cspice/shellc_c.html
  
      :param ndim: Dimension of the array.
      :type ndim: int
      :param lenvals: String length.
      :type lenvals: int
      :param array: The array to be sorted.
      :type array: list of str.
      :return: The sorted array.
      :rtype: list of str.
      """
      array = stypes.listToCharArray(array, xLen=lenvals, yLen=ndim)
      ndim = ctypes.c_int(ndim)
      lenvals = ctypes.c_int(lenvals)
      libspice.shellc_c(ndim, lenvals, ctypes.byref(array))
      return stypes.cVectorToPython(array)