docs: def gfocce(occtyp, front, fshape, fframe, back,
             bshape, bframe, abcorr, obsrvr, tol,
             udstep, udrefn, rpt, udrepi, udrepu,
             udrepf, bail, udbail, cnfine, result=None):
      """
      Determine time intervals when an observer sees one target
      occulted by another. Report progress and handle interrupts
      if so commanded.
  
      The surfaces of the target bodies may be represented by triaxial
      ellipsoids or by topographic data provided by DSK files.
  
      http://naif.jpl.nasa.gov/pub/naif/toolkit_docs/C/cspice/gfocce_c.html
  
      :param occtyp: Type of occultation
      :type occtyp: str
      :param front: Name of body occulting the other
      :type front: str
      :param fshape: Type of shape model used for front body
      :type fshape: str
      :param fframe: Body fixed body centered frame for front body
      :type fframe: str
      :param back: Name of body occulted by the other
      :type back: str
      :param bshape: Type of shape model used for back body
      :type bshape: str
      :param bframe: Body fixed body centered frame for back body
      :type bframe: str
      :param abcorr: Aberration correction flag
      :type abcorr: str
      :param obsrvr: Name of the observing body
      :type obsrvr: str
      :param tol: Convergence tolerance in seconds
      :type tol: float
      :param udstep: Name of the routine that returns a time step
      :type udstep: spiceypy.utils.callbacks.UDSTEP
      :param udrefn: Name of the routine that computes a refined time
      :type udrefn: spiceypy.utils.callbacks.UDREFN
      :param rpt: Progress report flag
      :type rpt: bool
      :param udrepi: Function that initializes progress reporting.
      :type udrepi: spiceypy.utils.callbacks.UDREP
      :param udrepu: Function that updates the progress report
      :type udrepu: spiceypy.utils.callbacks.UDREPU
      :param udrepf: Function that finalizes progress reporting
      :type udrepf: spiceypy.utils.callbacks.UDREPF
      :param bail: Logical indicating program interrupt monitoring
      :type bail: bool
      :param udbail: Name of a routine that signals a program interrupt
      :type udbail: spiceypy.utils.callbacks.UDBAIL
      :param cnfine: SPICE window to which the search is restricted
      :type cnfine: spiceypy.utils.support_types.SpiceCell
      :param result: Optional SPICE window containing results.
      :type result: spiceypy.utils.support_types.SpiceCell
      """
      assert isinstance(cnfine, stypes.SpiceCell)
      assert cnfine.is_double()
      if result is None:
          result = stypes.SPICEDOUBLE_CELL(2000)
      else:
          assert isinstance(result, stypes.SpiceCell)
          assert result.is_double()
      occtyp = stypes.stringToCharP(occtyp)
      front = stypes.stringToCharP(front)
      fshape = stypes.stringToCharP(fshape)
      fframe = stypes.stringToCharP(fframe)
      back = stypes.stringToCharP(back)
      bshape = stypes.stringToCharP(bshape)
      bframe = stypes.stringToCharP(bframe)
      abcorr = stypes.stringToCharP(abcorr)
      obsrvr = stypes.stringToCharP(obsrvr)
      tol = ctypes.c_double(tol)
      rpt = ctypes.c_int(rpt)
      bail = ctypes.c_int(bail)
      libspice.gfocce_c(occtyp, front, fshape, fframe, back,
                        bshape, bframe, abcorr, obsrvr, tol,
                        udstep, udrefn, rpt, udrepi, udrepu, udrepf,
                        bail, udbail, ctypes.byref(cnfine), ctypes.byref(result))
      return result