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