/* Generated by Cython 3.2.8 */

#ifndef __PYX_HAVE__petsc4py__PETSc
#define __PYX_HAVE__petsc4py__PETSc

#include "Python.h"
struct PyPetscCommObject;
struct PyPetscObjectObject;
struct PyPetscViewerObject;
struct PyPetscRandomObject;
struct PyPetscDeviceObject;
struct PyPetscDeviceContextObject;
struct PyPetscISObject;
struct PyPetscLGMapObject;
struct PyPetscSFObject;
struct PyPetscVecObject;
struct PyPetscSpaceObject;
struct PyPetscDualSpaceObject;
struct PyPetscFEObject;
struct PyPetscQuadObject;
struct PyPetscScatterObject;
struct PyPetscSectionObject;
struct PyPetscMatObject;
struct PyPetscMatPartitioningObject;
struct PyPetscNullSpaceObject;
struct PyPetscPCObject;
struct PyPetscKSPObject;
struct PyPetscSNESObject;
struct PyPetscSNESLineSearchObject;
struct PyPetscTSObject;
struct PyPetscTAOObject;
struct PyPetscTAOLineSearchObject;
struct PyPetscTAOTermObject;
struct PyPetscAOObject;
struct PyPetscDMObject;
struct PyPetscDMPlexTransformObject;
struct PyPetscDMSwarmCellDMObject;
struct PyPetscDSObject;
struct PyPetscPartitionerObject;
struct PyPetscDMLabelObject;
struct PyPetscRegressorObject;

/* "petsc4py/PETSc.pxd":121
 * # --------------------------------------------------------------------
 * 
 * ctypedef public api class Comm [             # <<<<<<<<<<<<<<
 *     type   PyPetscComm_Type,
 *     object PyPetscCommObject,
*/
struct PyPetscCommObject {
  PyObject_HEAD
  MPI_Comm comm;
  int isdup;
  PyObject *base;
};
typedef struct PyPetscCommObject PyPetscCommObject;

/* "petsc4py/PETSc.pxd":129
 *     cdef object base
 * 
 * ctypedef public api class Object [             # <<<<<<<<<<<<<<
 *     type   PyPetscObject_Type,
 *     object PyPetscObjectObject,
*/
struct PyPetscObjectObject {
  PyObject_HEAD
  struct __pyx_vtabstruct_8petsc4py_5PETSc_Object *__pyx_vtab;
  PyObject *__weakref__;
  PyObject *__dummy__;
  PetscObject oval;
  PetscObject *obj;
};
typedef struct PyPetscObjectObject PyPetscObjectObject;

/* "petsc4py/PETSc.pxd":141
 *     cdef object get_dict(self)
 * 
 * ctypedef public api class Viewer(Object) [             # <<<<<<<<<<<<<<
 *     type   PyPetscViewer_Type,
 *     object PyPetscViewerObject,
*/
struct PyPetscViewerObject {
  struct PyPetscObjectObject __pyx_base;
  PetscViewer vwr;
};
typedef struct PyPetscViewerObject PyPetscViewerObject;

/* "petsc4py/PETSc.pxd":147
 *     cdef PetscViewer vwr
 * 
 * ctypedef public api class Random(Object) [             # <<<<<<<<<<<<<<
 *     type   PyPetscRandom_Type,
 *     object PyPetscRandomObject,
*/
struct PyPetscRandomObject {
  struct PyPetscObjectObject __pyx_base;
  PetscRandom rnd;
};
typedef struct PyPetscRandomObject PyPetscRandomObject;

/* "petsc4py/PETSc.pxd":153
 *     cdef PetscRandom rnd
 * 
 * ctypedef public api class Device [             # <<<<<<<<<<<<<<
 *     type   PyPetscDevice_Type,
 *     object PyPetscDeviceObject,
*/
struct PyPetscDeviceObject {
  PyObject_HEAD
  PetscDevice device;
  PyObject *__weakref__;
};
typedef struct PyPetscDeviceObject PyPetscDeviceObject;

/* "petsc4py/PETSc.pxd":160
 *     cdef object __weakref__
 * 
 * ctypedef public api class DeviceContext(Object) [             # <<<<<<<<<<<<<<
 *     type   PyPetscDeviceContext_Type,
 *     object PyPetscDeviceContextObject,
*/
struct PyPetscDeviceContextObject {
  struct PyPetscObjectObject __pyx_base;
  PetscDeviceContext dctx;
};
typedef struct PyPetscDeviceContextObject PyPetscDeviceContextObject;

/* "petsc4py/PETSc.pxd":166
 *     cdef PetscDeviceContext dctx
 * 
 * ctypedef public api class IS(Object) [             # <<<<<<<<<<<<<<
 *     type   PyPetscIS_Type,
 *     object PyPetscISObject,
*/
struct PyPetscISObject {
  struct PyPetscObjectObject __pyx_base;
  IS iset;
};
typedef struct PyPetscISObject PyPetscISObject;

/* "petsc4py/PETSc.pxd":172
 *     cdef PetscIS iset
 * 
 * ctypedef public api class LGMap(Object) [             # <<<<<<<<<<<<<<
 *     type   PyPetscLGMap_Type,
 *     object PyPetscLGMapObject,
*/
struct PyPetscLGMapObject {
  struct PyPetscObjectObject __pyx_base;
  ISLocalToGlobalMapping lgm;
};
typedef struct PyPetscLGMapObject PyPetscLGMapObject;

/* "petsc4py/PETSc.pxd":178
 *     cdef PetscLGMap lgm
 * 
 * ctypedef public api class SF(Object) [             # <<<<<<<<<<<<<<
 *     type   PyPetscSF_Type,
 *     object PyPetscSFObject,
*/
struct PyPetscSFObject {
  struct PyPetscObjectObject __pyx_base;
  PetscSF sf;
};
typedef struct PyPetscSFObject PyPetscSFObject;

/* "petsc4py/PETSc.pxd":184
 *     cdef PetscSF sf
 * 
 * ctypedef public api class Vec(Object) [             # <<<<<<<<<<<<<<
 *     type   PyPetscVec_Type,
 *     object PyPetscVecObject,
*/
struct PyPetscVecObject {
  struct PyPetscObjectObject __pyx_base;
  Vec vec;
};
typedef struct PyPetscVecObject PyPetscVecObject;

/* "petsc4py/PETSc.pxd":190
 *     cdef PetscVec vec
 * 
 * ctypedef public api class Space(Object) [             # <<<<<<<<<<<<<<
 *     type   PyPetscSpace_Type,
 *     object PyPetscSpaceObject,
*/
struct PyPetscSpaceObject {
  struct PyPetscObjectObject __pyx_base;
  PetscSpace space;
};
typedef struct PyPetscSpaceObject PyPetscSpaceObject;

/* "petsc4py/PETSc.pxd":196
 *     cdef PetscSpace space
 * 
 * ctypedef public api class DualSpace(Object) [             # <<<<<<<<<<<<<<
 *     type   PyPetscDualSpace_Type,
 *     object PyPetscDualSpaceObject,
*/
struct PyPetscDualSpaceObject {
  struct PyPetscObjectObject __pyx_base;
  PetscDualSpace dualspace;
};
typedef struct PyPetscDualSpaceObject PyPetscDualSpaceObject;

/* "petsc4py/PETSc.pxd":202
 *     cdef PetscDualSpace dualspace
 * 
 * ctypedef public api class FE(Object) [             # <<<<<<<<<<<<<<
 *     type   PyPetscFE_Type,
 *     object PyPetscFEObject,
*/
struct PyPetscFEObject {
  struct PyPetscObjectObject __pyx_base;
  PetscFE fe;
};
typedef struct PyPetscFEObject PyPetscFEObject;

/* "petsc4py/PETSc.pxd":208
 *     cdef PetscFE fe
 * 
 * ctypedef public api class Quad(Object) [             # <<<<<<<<<<<<<<
 *     type   PyPetscQuad_Type,
 *     object PyPetscQuadObject,
*/
struct PyPetscQuadObject {
  struct PyPetscObjectObject __pyx_base;
  PetscQuadrature quad;
};
typedef struct PyPetscQuadObject PyPetscQuadObject;

/* "petsc4py/PETSc.pxd":214
 *     cdef PetscQuadrature quad
 * 
 * ctypedef public api class Scatter(Object) [             # <<<<<<<<<<<<<<
 *     type   PyPetscScatter_Type,
 *     object PyPetscScatterObject,
*/
struct PyPetscScatterObject {
  struct PyPetscObjectObject __pyx_base;
  VecScatter sct;
};
typedef struct PyPetscScatterObject PyPetscScatterObject;

/* "petsc4py/PETSc.pxd":220
 *     cdef PetscScatter sct
 * 
 * ctypedef public api class Section(Object) [             # <<<<<<<<<<<<<<
 *     type   PyPetscSection_Type,
 *     object PyPetscSectionObject,
*/
struct PyPetscSectionObject {
  struct PyPetscObjectObject __pyx_base;
  PetscSection sec;
};
typedef struct PyPetscSectionObject PyPetscSectionObject;

/* "petsc4py/PETSc.pxd":226
 *     cdef PetscSection sec
 * 
 * ctypedef public api class Mat(Object) [             # <<<<<<<<<<<<<<
 *     type   PyPetscMat_Type,
 *     object PyPetscMatObject,
*/
struct PyPetscMatObject {
  struct PyPetscObjectObject __pyx_base;
  Mat mat;
};
typedef struct PyPetscMatObject PyPetscMatObject;

/* "petsc4py/PETSc.pxd":232
 *     cdef PetscMat mat
 * 
 * ctypedef public api class MatPartitioning(Object) [             # <<<<<<<<<<<<<<
 *     type   PyPetscMatPartitioning_Type,
 *     object PyPetscMatPartitioningObject,
*/
struct PyPetscMatPartitioningObject {
  struct PyPetscObjectObject __pyx_base;
  MatPartitioning part;
};
typedef struct PyPetscMatPartitioningObject PyPetscMatPartitioningObject;

/* "petsc4py/PETSc.pxd":238
 *     cdef PetscMatPartitioning part
 * 
 * ctypedef public api class NullSpace(Object) [             # <<<<<<<<<<<<<<
 *     type   PyPetscNullSpace_Type,
 *     object PyPetscNullSpaceObject,
*/
struct PyPetscNullSpaceObject {
  struct PyPetscObjectObject __pyx_base;
  MatNullSpace nsp;
};
typedef struct PyPetscNullSpaceObject PyPetscNullSpaceObject;

/* "petsc4py/PETSc.pxd":244
 *     cdef PetscNullSpace nsp
 * 
 * ctypedef public api class PC(Object) [             # <<<<<<<<<<<<<<
 *     type   PyPetscPC_Type,
 *     object PyPetscPCObject,
*/
struct PyPetscPCObject {
  struct PyPetscObjectObject __pyx_base;
  PC pc;
};
typedef struct PyPetscPCObject PyPetscPCObject;

/* "petsc4py/PETSc.pxd":250
 *     cdef PetscPC pc
 * 
 * ctypedef public api class KSP(Object) [             # <<<<<<<<<<<<<<
 *     type   PyPetscKSP_Type,
 *     object PyPetscKSPObject,
*/
struct PyPetscKSPObject {
  struct PyPetscObjectObject __pyx_base;
  KSP ksp;
};
typedef struct PyPetscKSPObject PyPetscKSPObject;

/* "petsc4py/PETSc.pxd":256
 *     cdef PetscKSP ksp
 * 
 * ctypedef public api class SNES(Object) [             # <<<<<<<<<<<<<<
 *     type   PyPetscSNES_Type,
 *     object PyPetscSNESObject,
*/
struct PyPetscSNESObject {
  struct PyPetscObjectObject __pyx_base;
  SNES snes;
};
typedef struct PyPetscSNESObject PyPetscSNESObject;

/* "petsc4py/PETSc.pxd":262
 *     cdef PetscSNES snes
 * 
 * ctypedef public api class SNESLineSearch(Object) [             # <<<<<<<<<<<<<<
 *     type   PyPetscSNESLineSearch_Type,
 *     object PyPetscSNESLineSearchObject,
*/
struct PyPetscSNESLineSearchObject {
  struct PyPetscObjectObject __pyx_base;
  SNESLineSearch snesls;
};
typedef struct PyPetscSNESLineSearchObject PyPetscSNESLineSearchObject;

/* "petsc4py/PETSc.pxd":268
 *     cdef PetscSNESLineSearch snesls
 * 
 * ctypedef public api class TS(Object) [             # <<<<<<<<<<<<<<
 *     type   PyPetscTS_Type,
 *     object PyPetscTSObject,
*/
struct PyPetscTSObject {
  struct PyPetscObjectObject __pyx_base;
  TS ts;
};
typedef struct PyPetscTSObject PyPetscTSObject;

/* "petsc4py/PETSc.pxd":274
 *     cdef PetscTS ts
 * 
 * ctypedef public api class TAO(Object) [             # <<<<<<<<<<<<<<
 *     type   PyPetscTAO_Type,
 *     object PyPetscTAOObject,
*/
struct PyPetscTAOObject {
  struct PyPetscObjectObject __pyx_base;
  Tao tao;
};
typedef struct PyPetscTAOObject PyPetscTAOObject;

/* "petsc4py/PETSc.pxd":280
 *     cdef PetscTAO tao
 * 
 * ctypedef public api class TAOLineSearch(Object) [             # <<<<<<<<<<<<<<
 *     type   PyPetscTAOLineSearch_Type,
 *     object PyPetscTAOLineSearchObject,
*/
struct PyPetscTAOLineSearchObject {
  struct PyPetscObjectObject __pyx_base;
  TaoLineSearch taols;
};
typedef struct PyPetscTAOLineSearchObject PyPetscTAOLineSearchObject;

/* "petsc4py/PETSc.pxd":286
 *     cdef PetscTAOLineSearch taols
 * 
 * ctypedef public api class TAOTerm(Object) [             # <<<<<<<<<<<<<<
 *     type   PyPetscTAOTerm_Type,
 *     object PyPetscTAOTermObject,
*/
struct PyPetscTAOTermObject {
  struct PyPetscObjectObject __pyx_base;
  TaoTerm taoterm;
};
typedef struct PyPetscTAOTermObject PyPetscTAOTermObject;

/* "petsc4py/PETSc.pxd":292
 *     cdef PetscTAOTerm taoterm
 * 
 * ctypedef public api class AO(Object) [             # <<<<<<<<<<<<<<
 *     type   PyPetscAO_Type,
 *     object PyPetscAOObject,
*/
struct PyPetscAOObject {
  struct PyPetscObjectObject __pyx_base;
  AO ao;
};
typedef struct PyPetscAOObject PyPetscAOObject;

/* "petsc4py/PETSc.pxd":298
 *     cdef PetscAO ao
 * 
 * ctypedef public api class DM(Object) [             # <<<<<<<<<<<<<<
 *     type   PyPetscDM_Type,
 *     object PyPetscDMObject,
*/
struct PyPetscDMObject {
  struct PyPetscObjectObject __pyx_base;
  DM dm;
};
typedef struct PyPetscDMObject PyPetscDMObject;

/* "petsc4py/PETSc.pxd":304
 *     cdef PetscDM dm
 * 
 * ctypedef public api class DMPlexTransform(Object) [             # <<<<<<<<<<<<<<
 *     type   PyPetscDMPlexTransform_Type,
 *     object PyPetscDMPlexTransformObject,
*/
struct PyPetscDMPlexTransformObject {
  struct PyPetscObjectObject __pyx_base;
  DMPlexTransform tr;
};
typedef struct PyPetscDMPlexTransformObject PyPetscDMPlexTransformObject;

/* "petsc4py/PETSc.pxd":310
 *     cdef PetscDMPlexTransform tr
 * 
 * ctypedef public api class CellDM(Object) [             # <<<<<<<<<<<<<<
 *     type   PyPetscDMSwarmCellDM_Type,
 *     object PyPetscDMSwarmCellDMObject,
*/
struct PyPetscDMSwarmCellDMObject {
  struct PyPetscObjectObject __pyx_base;
  DMSwarmCellDM cdm;
};
typedef struct PyPetscDMSwarmCellDMObject PyPetscDMSwarmCellDMObject;

/* "petsc4py/PETSc.pxd":316
 *     cdef PetscDMSwarmCellDM cdm
 * 
 * ctypedef public api class DS(Object) [             # <<<<<<<<<<<<<<
 *     type   PyPetscDS_Type,
 *     object PyPetscDSObject,
*/
struct PyPetscDSObject {
  struct PyPetscObjectObject __pyx_base;
  PetscDS ds;
};
typedef struct PyPetscDSObject PyPetscDSObject;

/* "petsc4py/PETSc.pxd":322
 *     cdef PetscDS ds
 * 
 * ctypedef public api class Partitioner(Object) [             # <<<<<<<<<<<<<<
 *     type PyPetscPartitioner_Type,
 *     object PyPetscPartitionerObject,
*/
struct PyPetscPartitionerObject {
  struct PyPetscObjectObject __pyx_base;
  PetscPartitioner part;
};
typedef struct PyPetscPartitionerObject PyPetscPartitionerObject;

/* "petsc4py/PETSc.pxd":328
 *     cdef PetscPartitioner part
 * 
 * ctypedef public api class DMLabel(Object) [             # <<<<<<<<<<<<<<
 *     type   PyPetscDMLabel_Type,
 *     object PyPetscDMLabelObject,
*/
struct PyPetscDMLabelObject {
  struct PyPetscObjectObject __pyx_base;
  DMLabel dmlabel;
};
typedef struct PyPetscDMLabelObject PyPetscDMLabelObject;

/* "petsc4py/PETSc.pxd":334
 *     cdef PetscDMLabel dmlabel
 * 
 * ctypedef public api class Regressor(Object) [             # <<<<<<<<<<<<<<
 *     type   PyPetscRegressor_Type,
 *     object PyPetscRegressorObject,
*/
struct PyPetscRegressorObject {
  struct PyPetscObjectObject __pyx_base;
  PetscRegressor regressor;
};
typedef struct PyPetscRegressorObject PyPetscRegressorObject;

#ifndef __PYX_HAVE_API__petsc4py__PETSc

#ifdef CYTHON_EXTERN_C
    #undef __PYX_EXTERN_C
    #define __PYX_EXTERN_C CYTHON_EXTERN_C
#elif defined(__PYX_EXTERN_C)
    #ifdef _MSC_VER
    #pragma message ("Please do not define the '__PYX_EXTERN_C' macro externally. Use 'CYTHON_EXTERN_C' instead.")
    #else
    #warning Please do not define the '__PYX_EXTERN_C' macro externally. Use 'CYTHON_EXTERN_C' instead.
    #endif
#else
  #ifdef __cplusplus
    #define __PYX_EXTERN_C extern "C"
  #else
    #define __PYX_EXTERN_C extern
  #endif
#endif

#ifndef DL_IMPORT
  #define DL_IMPORT(_T) _T
#endif

__PYX_EXTERN_C DL_IMPORT(PyTypeObject) PyPetscComm_Type;
__PYX_EXTERN_C DL_IMPORT(PyTypeObject) PyPetscObject_Type;
__PYX_EXTERN_C DL_IMPORT(PyTypeObject) PyPetscViewer_Type;
__PYX_EXTERN_C DL_IMPORT(PyTypeObject) PyPetscRandom_Type;
__PYX_EXTERN_C DL_IMPORT(PyTypeObject) PyPetscDevice_Type;
__PYX_EXTERN_C DL_IMPORT(PyTypeObject) PyPetscDeviceContext_Type;
__PYX_EXTERN_C DL_IMPORT(PyTypeObject) PyPetscIS_Type;
__PYX_EXTERN_C DL_IMPORT(PyTypeObject) PyPetscLGMap_Type;
__PYX_EXTERN_C DL_IMPORT(PyTypeObject) PyPetscSF_Type;
__PYX_EXTERN_C DL_IMPORT(PyTypeObject) PyPetscVec_Type;
__PYX_EXTERN_C DL_IMPORT(PyTypeObject) PyPetscSpace_Type;
__PYX_EXTERN_C DL_IMPORT(PyTypeObject) PyPetscDualSpace_Type;
__PYX_EXTERN_C DL_IMPORT(PyTypeObject) PyPetscFE_Type;
__PYX_EXTERN_C DL_IMPORT(PyTypeObject) PyPetscQuad_Type;
__PYX_EXTERN_C DL_IMPORT(PyTypeObject) PyPetscScatter_Type;
__PYX_EXTERN_C DL_IMPORT(PyTypeObject) PyPetscSection_Type;
__PYX_EXTERN_C DL_IMPORT(PyTypeObject) PyPetscMat_Type;
__PYX_EXTERN_C DL_IMPORT(PyTypeObject) PyPetscMatPartitioning_Type;
__PYX_EXTERN_C DL_IMPORT(PyTypeObject) PyPetscNullSpace_Type;
__PYX_EXTERN_C DL_IMPORT(PyTypeObject) PyPetscPC_Type;
__PYX_EXTERN_C DL_IMPORT(PyTypeObject) PyPetscKSP_Type;
__PYX_EXTERN_C DL_IMPORT(PyTypeObject) PyPetscSNES_Type;
__PYX_EXTERN_C DL_IMPORT(PyTypeObject) PyPetscSNESLineSearch_Type;
__PYX_EXTERN_C DL_IMPORT(PyTypeObject) PyPetscTS_Type;
__PYX_EXTERN_C DL_IMPORT(PyTypeObject) PyPetscTAO_Type;
__PYX_EXTERN_C DL_IMPORT(PyTypeObject) PyPetscTAOLineSearch_Type;
__PYX_EXTERN_C DL_IMPORT(PyTypeObject) PyPetscTAOTerm_Type;
__PYX_EXTERN_C DL_IMPORT(PyTypeObject) PyPetscAO_Type;
__PYX_EXTERN_C DL_IMPORT(PyTypeObject) PyPetscDM_Type;
__PYX_EXTERN_C DL_IMPORT(PyTypeObject) PyPetscDMPlexTransform_Type;
__PYX_EXTERN_C DL_IMPORT(PyTypeObject) PyPetscDMSwarmCellDM_Type;
__PYX_EXTERN_C DL_IMPORT(PyTypeObject) PyPetscDS_Type;
__PYX_EXTERN_C DL_IMPORT(PyTypeObject) PyPetscPartitioner_Type;
__PYX_EXTERN_C DL_IMPORT(PyTypeObject) PyPetscDMLabel_Type;
__PYX_EXTERN_C DL_IMPORT(PyTypeObject) PyPetscRegressor_Type;

__PYX_EXTERN_C PetscErrorCode PetscViewerPythonGetContext(PetscViewer, void **);
__PYX_EXTERN_C PetscErrorCode PetscViewerPythonSetContext(PetscViewer, void *);
__PYX_EXTERN_C PetscErrorCode MatPythonGetContext(Mat, void **);
__PYX_EXTERN_C PetscErrorCode MatPythonSetContext(Mat, void *);
__PYX_EXTERN_C PetscErrorCode PCPythonGetContext(PC, void **);
__PYX_EXTERN_C PetscErrorCode PCPythonSetContext(PC, void *);
__PYX_EXTERN_C PetscErrorCode KSPPythonGetContext(KSP, void **);
__PYX_EXTERN_C PetscErrorCode KSPPythonSetContext(KSP, void *);
__PYX_EXTERN_C PetscErrorCode SNESPythonGetContext(SNES, void **);
__PYX_EXTERN_C PetscErrorCode SNESPythonSetContext(SNES, void *);
__PYX_EXTERN_C PetscErrorCode TSPythonGetContext(TS, void **);
__PYX_EXTERN_C PetscErrorCode TSPythonSetContext(TS, void *);
__PYX_EXTERN_C PetscErrorCode TaoPythonGetContext(Tao, void **);
__PYX_EXTERN_C PetscErrorCode TaoPythonSetContext(Tao, void *);
__PYX_EXTERN_C PetscErrorCode PetscPythonRegisterAll(void);

#endif /* !__PYX_HAVE_API__petsc4py__PETSc */

/* WARNING: the interface of the module init function changed in CPython 3.5. */
/* It now returns a PyModuleDef instance instead of a PyModule instance. */

/* WARNING: Use PyImport_AppendInittab("PETSc", PyInit_PETSc) instead of calling PyInit_PETSc directly from Python 3.5 */
PyMODINIT_FUNC PyInit_PETSc(void);

#if PY_VERSION_HEX >= 0x03050000 && (defined(__GNUC__) || defined(__clang__) || defined(_MSC_VER) || (defined(__cplusplus) && __cplusplus >= 201402L))
#if defined(__cplusplus) && __cplusplus >= 201402L
[[deprecated("Use PyImport_AppendInittab(\"PETSc\", PyInit_PETSc) instead of calling PyInit_PETSc directly.")]] inline
#elif defined(__GNUC__) || defined(__clang__)
__attribute__ ((__deprecated__("Use PyImport_AppendInittab(\"PETSc\", PyInit_PETSc) instead of calling PyInit_PETSc directly."), __unused__)) __inline__
#elif defined(_MSC_VER)
__declspec(deprecated("Use PyImport_AppendInittab(\"PETSc\", PyInit_PETSc) instead of calling PyInit_PETSc directly.")) __inline
#endif
static PyObject* __PYX_WARN_IF_PyInit_PETSc_INIT_CALLED(PyObject* res) {
  return res;
}
#define PyInit_PETSc() __PYX_WARN_IF_PyInit_PETSc_INIT_CALLED(PyInit_PETSc())
#endif

#endif /* !__PYX_HAVE__petsc4py__PETSc */
