xref: /petsc/src/sys/objects/gcookie.c (revision 0619917b5a674bb687c64e7daba2ab22be99af31)
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   PetscAssertPointer(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()`, `PetscObjectGetClassId()`
49 @*/
50 PetscErrorCode PetscObjectGetClassName(PetscObject obj, const char *classname[])
51 {
52   PetscFunctionBegin;
53   PetscValidHeader(obj, 1);
54   PetscAssertPointer(classname, 2);
55   *classname = obj->class_name;
56   PetscFunctionReturn(PETSC_SUCCESS);
57 }
58