# PetscHeaderCreate

Creates a PETSc object

### Synopsis

    #define PetscHeaderCreate(h,tp,pops,cook,t,class_name,com,des,vie) \
      (PetscNew(struct tp,&(h)) || \
       PetscNew(PetscOps,&((h)->bops)) || \
       PetscNew(pops,&((h)->ops)) || \
       PetscHeaderCreate_Private((PetscObject)h,cook,t,class_name,com,(PetscObjectFunction)des,(PetscObjectViewerFunction)vie) || \
       PetscLogObjectCreate(h))

    /*@C
        PetscHeaderDestroy - Final step in destroying a PetscObject

        Input Parameters:
    .   h - the header created with PetscHeaderCreate()

    .seealso: PetscHeaderCreate()
    @*/
    #define PetscHeaderDestroy(h) \
      (PetscLogObjectDestroy((PetscObject)(h)) || \
       PetscHeaderDestroy_Private((PetscObject)(h)) || \
       PetscFree(h))

    /* ---------------------------------------------------------------------------------------*/

    #if !defined(PETSC_USE_DEBUG)

    #define PetscValidHeaderSpecific(h,ck,arg)
    #define PetscValidHeader(h,arg)
    #define PetscValidPointer(h,arg)
    #define PetscValidCharPointer(h,arg)
    #define PetscValidIntPointer(h,arg)
    #define PetscValidScalarPointer(h,arg)

    #elif !defined(PETSC_HAVE_CRAY90_POINTER)
    /*
        Macros to test if a PETSc object is valid and if pointers are
    valid

    */
    #define PetscValidHeaderSpecific(h,ck,arg)                                            \

### Input Parameters

| tp | - the data structure type of the object
| pops | - the data structure type of the objects operations (for example VecOps)
| cook | - the cookie associated with this object
| t | - type (no longer should be used)
| class_name | - string name of class; should be static
| com | - the MPI Communicator
| des | - the destroy routine for this object
| vie | - the view routine for this object

### Output Parameter

h -the newly created object

### See Also

PetscHeaderDestroy(), PetscLogClassRegister()

Level:developer
Location: include/private/petscimpl.h
Index of all Sys routines
Table of Contents for all manual pages
Index of all manual pages