xref: /petsc/src/sys/objects/gcookie.c (revision 21e3ffae2f3b73c0bd738cf6d0a809700fc04bb0)
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 {
26   PetscFunctionBegin;
27   PetscValidHeader(obj, 1);
28   PetscValidIntPointer(classid, 2);
29   *classid = obj->classid;
30   PetscFunctionReturn(PETSC_SUCCESS);
31 }
32 
33 /*@C
34    PetscObjectGetClassName - Gets the class name for any `PetscObject`
35 
36    Not Collective
37 
38    Input Parameter:
39 .  obj - any PETSc object, for example a `Vec`, `Mat` or `KSP`.
40          Thus must be cast with a (`PetscObject`), for example,
41          `PetscObjectGetClassName`((`PetscObject`)mat,&classname);
42 
43    Output Parameter:
44 .  classname - the class name, for example "Vec"
45 
46    Level: developer
47 
48 .seealso: `PetscObject`, `PetscClassId`, `PetscObjectGetType()`
49 @*/
50 PetscErrorCode PetscObjectGetClassName(PetscObject obj, const char *classname[])
51 {
52   PetscFunctionBegin;
53   PetscValidHeader(obj, 1);
54   PetscValidPointer(classname, 2);
55   *classname = obj->class_name;
56   PetscFunctionReturn(PETSC_SUCCESS);
57 }
58