#define PetscHeaderCreate(h,classid,class_name,descr,mansec,comm,destroy,view) \ (PetscNew(&(h)) || \ PetscHeaderCreate_Private((PetscObject)(h),classid,class_name,descr,mansec,comm,(PetscObjectDestroyFunction)(destroy),(PetscObjectViewFunction)(view)) || \ PetscLogObjectCreate(h) || \ PetscLogObjectMemory((PetscObject)(h),sizeof(*(h)))) PETSC_EXTERN PetscErrorCode PetscComposedQuantitiesDestroy(PetscObject obj); PETSC_EXTERN PetscErrorCode PetscHeaderCreate_Private(PetscObject,PetscClassId,const char[],const char[],const char[],MPI_Comm,PetscObjectDestroyFunction,PetscObjectViewFunction); /*@C PetscHeaderDestroy - Final step in destroying a PetscObject Input Parameters: . h - the header created with PetscHeaderCreate() .seealso: PetscHeaderCreate() @*/ #define PetscHeaderDestroy(h) (PetscHeaderDestroy_Private((PetscObject)(*(h))) || PetscFree(*(h))) PETSC_EXTERN PetscErrorCode PetscHeaderDestroy_Private(PetscObject); PETSC_EXTERN PetscErrorCode PetscObjectCopyFortranFunctionPointers(PetscObject,PetscObject); PETSC_EXTERN PetscErrorCode PetscObjectSetFortranCallback(PetscObject,PetscFortranCallbackType,PetscFortranCallbackId*,void(*)(void),void *ctx); PETSC_EXTERN PetscErrorCode PetscObjectGetFortranCallback(PetscObject,PetscFortranCallbackType,PetscFortranCallbackId,void(**)(void),void **ctx); PETSC_INTERN PetscErrorCode PetscCitationsInitialize(void); PETSC_INTERN PetscErrorCode PetscFreeMPIResources(void); PETSC_EXTERN PetscBool PetscCheckPointer(const void*,PetscDataType); #if defined(PETSC_HAVE_CUDA) PETSC_EXTERN PetscBool PetscCheckMpiGpuAwareness(void); #endif /* Macros to test if a PETSc object is valid and if pointers are valid */ #if !defined(PETSC_USE_DEBUG) #define PetscValidHeaderSpecific(h,ck,arg) do
classid | - the classid associated with this object (for example VEC_CLASSID) | |
class_name | - string name of class; should be static (for example "Vec") | |
descr | - string containing short description; should be static (for example "Vector") | |
mansec | - string indicating section in manual pages; should be static (for example "Vec") | |
comm | - the MPI Communicator | |
destroy | - the destroy routine for this object (for example VecDestroy()) | |
view | - the view routine for this object (for example VecView()) |