xref: /petsc/src/sys/objects/gcookie.c (revision 750b007cd8d816cecd9de99077bb0a703b4cf61a)
1 
2 /*
3      Provides utility routines for manulating any type of PETSc object.
4 */
5 #include <petsc/private/petscimpl.h> /*I   "petscsys.h"    I*/
6 
7 /*@
8    PetscObjectGetClassId - Gets the classid for any `PetscObject`
9 
10    Not Collective
11 
12    Input Parameter:
13 .  obj - any PETSc object, for example a `Vec`, `Mat` or `KSP`.
14          Thus must be cast with a (`PetscObject`), for example,
15          `PetscObjectGetClassId`((`PetscObject`)mat,&classid);
16 
17    Output Parameter:
18 .  classid - the classid
19 
20    Level: developer
21 
22 .seealso: `PetscObject`, `PetscClassId`, `PetscObjectGetClassName()`, `PetscObjectGetType()`
23 @*/
24 PetscErrorCode PetscObjectGetClassId(PetscObject obj, PetscClassId *classid) {
25   PetscFunctionBegin;
26   PetscValidHeader(obj, 1);
27   PetscValidIntPointer(classid, 2);
28   *classid = obj->classid;
29   PetscFunctionReturn(0);
30 }
31 
32 /*@C
33    PetscObjectGetClassName - Gets the class name for any `PetscObject`
34 
35    Not Collective
36 
37    Input Parameter:
38 .  obj - any PETSc object, for example a `Vec`, `Mat` or `KSP`.
39          Thus must be cast with a (`PetscObject`), for example,
40          `PetscObjectGetClassName`((`PetscObject`)mat,&classname);
41 
42    Output Parameter:
43 .  classname - the class name, for example "Vec"
44 
45    Level: developer
46 
47 .seealso: `PetscObject`, `PetscClassId`, `PetscObjectGetType()`
48 @*/
49 PetscErrorCode PetscObjectGetClassName(PetscObject obj, const char *classname[]) {
50   PetscFunctionBegin;
51   PetscValidHeader(obj, 1);
52   PetscValidPointer(classname, 2);
53   *classname = obj->class_name;
54   PetscFunctionReturn(0);
55 }
56