1*2eac72dbSBarry Smith 2*2eac72dbSBarry Smith #if !defined(__PETSC_PACKAGE) 3*2eac72dbSBarry Smith #define __PETSC_PACKAGE 4*2eac72dbSBarry Smith 5*2eac72dbSBarry Smith /* Macros for getting and freeing memory */ 6*2eac72dbSBarry Smith #define NEW(a) (a *) MALLOC(sizeof(a)) 7*2eac72dbSBarry Smith #define MALLOC(a) malloc(a) 8*2eac72dbSBarry Smith #define FREE(a) free(a) 9*2eac72dbSBarry Smith #define MEMCPY(a,b,n) memcpy((char*)(a),(char*)(b),n) 10*2eac72dbSBarry Smith 11*2eac72dbSBarry Smith /* Macros for error checking */ 12*2eac72dbSBarry Smith #define SETERR(n,s) {return PetscErrorHandler(__LINE__,__FILE__,s,n);} 13*2eac72dbSBarry Smith #define CHKERR(n) {if (n) SETERR(n,(char *)0);} 14*2eac72dbSBarry Smith #define CHKPTR(p) if (!p) SETERR(1,"No memory"); 15*2eac72dbSBarry Smith 16*2eac72dbSBarry Smith 17*2eac72dbSBarry Smith typedef struct _PetscObject PetscObject; 18*2eac72dbSBarry Smith 19*2eac72dbSBarry Smith /* Useful Petsc functions */ 20*2eac72dbSBarry Smith 21*2eac72dbSBarry Smith #ifdef ANSI_ARG 22*2eac72dbSBarry Smith #undef ANSI_ARG 23*2eac72dbSBarry Smith #endif 24*2eac72dbSBarry Smith #ifdef __STDC__ 25*2eac72dbSBarry Smith #define ANSI_ARGS(a) a 26*2eac72dbSBarry Smith #else 27*2eac72dbSBarry Smith #define ANSI_ARGS(a) () 28*2eac72dbSBarry Smith #endif 29*2eac72dbSBarry Smith 30*2eac72dbSBarry Smith extern int PetscDestroy ANSI_ARGS((PetscObject)); 31*2eac72dbSBarry Smith extern int PetscErrorHandler ANSI_ARGS((int,char*,char*,int)); 32*2eac72dbSBarry Smith 33*2eac72dbSBarry Smith #endif 34