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