xref: /petsc/src/sys/objects/gcookie.c (revision 562efe2ef922487c6beae96ba39e19afd4eefbe6)
1 /*
2      Provides utility routines for manulating any type of PETSc object.
3 */
4 #include <petsc/private/petscimpl.h> /*I   "petscsys.h"    I*/
5 
6 /*@
7   PetscObjectGetClassId - Gets the classid for any `PetscObject`
8 
9   Not Collective
10 
11   Input Parameter:
12 . obj - any PETSc object, for example a `Vec`, `Mat` or `KSP`.
13          Thus must be cast with a (`PetscObject`), for example,
14          `PetscObjectGetClassId`((`PetscObject`)mat,&classid);
15 
16   Output Parameter:
17 . classid - the classid
18 
19   Level: developer
20 
21 .seealso: `PetscObject`, `PetscClassId`, `PetscObjectGetClassName()`, `PetscObjectGetType()`
22 @*/
23 PetscErrorCode PetscObjectGetClassId(PetscObject obj, PetscClassId *classid)
24 {
25   PetscFunctionBegin;
26   PetscValidHeader(obj, 1);
27   PetscAssertPointer(classid, 2);
28   *classid = obj->classid;
29   PetscFunctionReturn(PETSC_SUCCESS);
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()`, `PetscObjectGetClassId()`
48 @*/
49 PetscErrorCode PetscObjectGetClassName(PetscObject obj, const char *classname[])
50 {
51   PetscFunctionBegin;
52   PetscValidHeader(obj, 1);
53   PetscAssertPointer(classname, 2);
54   *classname = obj->class_name;
55   PetscFunctionReturn(PETSC_SUCCESS);
56 }
57