1 
2 #if !defined(_PFIMPL)
3 #define _PFIMPL
4 
5 #include <petscpf.h>
6 #include <petsc/private/petscimpl.h>
7 #include <petscviewer.h>
8 
9 PETSC_EXTERN PetscBool      PFRegisterAllCalled;
10 PETSC_EXTERN PetscErrorCode PFRegisterAll(void);
11 
12 typedef struct _PFOps *PFOps;
13 struct _PFOps {
14   PetscErrorCode (*apply)(void*,PetscInt,const PetscScalar*,PetscScalar*);
15   PetscErrorCode (*applyvec)(void*,Vec,Vec);
16   PetscErrorCode (*destroy)(void*);
17   PetscErrorCode (*view)(void*,PetscViewer);
18   PetscErrorCode (*setfromoptions)(PetscOptionItems*,PF);
19 };
20 
21 struct _p_PF {
22   PETSCHEADER(struct _PFOps);
23   PetscInt dimin,dimout;             /* dimension of input and output spaces */
24   void     *data;
25 };
26 
27 #endif
28