xref: /petsc/src/sys/objects/gcookie.c (revision e8fb0fc05573aa974b3f79797ad519d0316ca217)
1 #define PETSC_DLL
2 /*
3      Provides utility routines for manulating any type of PETSc object.
4 */
5 #include "petsc.h"  /*I   "petsc.h"    I*/
6 
7 #undef __FUNCT__
8 #define __FUNCT__ "PetscObjectGetCookie"
9 /*@C
10    PetscObjectGetCookie - Gets the cookie for any PetscObject,
11 
12    Not Collective
13 
14    Input Parameter:
15 .  obj - any PETSc object, for example a Vec, Mat or KSP.
16          Thus must be cast with a (PetscObject), for example,
17          PetscObjectGetCookie((PetscObject)mat,&cookie);
18 
19    Output Parameter:
20 .  cookie - the cookie
21 
22    Level: developer
23 
24 @*/
25 PetscErrorCode PETSC_DLLEXPORT PetscObjectGetCookie(PetscObject obj,int *cookie)
26 {
27   PetscFunctionBegin;
28   PetscValidHeader(obj,1);
29   *cookie = obj->cookie;
30   PetscFunctionReturn(0);
31 }
32 
33 #undef __FUNCT__
34 #define __FUNCT__ "PetscObjectExists"
35 /*@
36    PetscObjectExists - Determines whether a PETSc object has been destroyed.
37 
38    Not Collective
39 
40    Input Parameter:
41 .  obj - any PETSc object, for example a Vec, Mat or KSP.
42          Thus must be cast with a (PetscObject), for example,
43          PetscObjectGetCookie((PetscObject)mat,&exists);
44 
45    Output Parameter:
46 .  exists - PETSC_FALSE if object does not exist; PETSC_TRUE if object does exist.
47 
48    Level: developer
49 
50 @*/
51 PetscErrorCode PETSC_DLLEXPORT PetscObjectExists(PetscObject obj,PetscTruth *exists)
52 {
53   PetscFunctionBegin;
54   *exists = PETSC_FALSE;
55   if (!obj) PetscFunctionReturn(0);
56   if (obj->cookie >= PETSC_SMALLEST_COOKIE && obj->cookie <= PETSC_LARGEST_COOKIE) *exists = PETSC_TRUE;
57   PetscFunctionReturn(0);
58 }
59 
60