xref: /petsc/src/sys/objects/gcookie.c (revision 21532e8a5a1a1e7911222ee0f2ed1e65b4f3f1d8)
17d0a6c19SBarry Smith 
2e5c89e4eSSatish Balay /*
3e5c89e4eSSatish Balay      Provides utility routines for manulating any type of PETSc object.
4e5c89e4eSSatish Balay */
5af0996ceSBarry Smith #include <petsc/private/petscimpl.h> /*I   "petscsys.h"    I*/
6e5c89e4eSSatish Balay 
72ec85ea4SAlex Fikl /*@
8811af0c4SBarry Smith    PetscObjectGetClassId - Gets the classid for any `PetscObject`
9e5c89e4eSSatish Balay 
10e5c89e4eSSatish Balay    Not Collective
11e5c89e4eSSatish Balay 
12e5c89e4eSSatish Balay    Input Parameter:
13811af0c4SBarry Smith .  obj - any PETSc object, for example a `Vec`, `Mat` or `KSP`.
14811af0c4SBarry Smith          Thus must be cast with a (`PetscObject`), for example,
15811af0c4SBarry Smith          `PetscObjectGetClassId`((`PetscObject`)mat,&classid);
16e5c89e4eSSatish Balay 
17e5c89e4eSSatish Balay    Output Parameter:
180700a824SBarry Smith .  classid - the classid
19e5c89e4eSSatish Balay 
20e5c89e4eSSatish Balay    Level: developer
21e5c89e4eSSatish Balay 
22811af0c4SBarry Smith .seealso: `PetscObject`, `PetscClassId`, `PetscObjectGetClassName()`, `PetscObjectGetType()`
23e5c89e4eSSatish Balay @*/
24d71ae5a4SJacob Faibussowitsch PetscErrorCode PetscObjectGetClassId(PetscObject obj, PetscClassId *classid)
25d71ae5a4SJacob Faibussowitsch {
26e5c89e4eSSatish Balay   PetscFunctionBegin;
273cfa8680SLisandro Dalcin   PetscValidHeader(obj, 1);
285f80ce2aSJacob Faibussowitsch   PetscValidIntPointer(classid, 2);
290700a824SBarry Smith   *classid = obj->classid;
303ba16761SJacob Faibussowitsch   PetscFunctionReturn(PETSC_SUCCESS);
31e5c89e4eSSatish Balay }
32e5c89e4eSSatish Balay 
33609db0e0SLisandro Dalcin /*@C
34811af0c4SBarry Smith    PetscObjectGetClassName - Gets the class name for any `PetscObject`
35609db0e0SLisandro Dalcin 
36609db0e0SLisandro Dalcin    Not Collective
37609db0e0SLisandro Dalcin 
38609db0e0SLisandro Dalcin    Input Parameter:
39811af0c4SBarry Smith .  obj - any PETSc object, for example a `Vec`, `Mat` or `KSP`.
40811af0c4SBarry Smith          Thus must be cast with a (`PetscObject`), for example,
41811af0c4SBarry Smith          `PetscObjectGetClassName`((`PetscObject`)mat,&classname);
42609db0e0SLisandro Dalcin 
43609db0e0SLisandro Dalcin    Output Parameter:
44811af0c4SBarry Smith .  classname - the class name, for example "Vec"
45609db0e0SLisandro Dalcin 
46609db0e0SLisandro Dalcin    Level: developer
47609db0e0SLisandro Dalcin 
48*21532e8aSBarry Smith .seealso: `PetscObject`, `PetscClassId`, `PetscObjectGetType()`, `PetscObjectGetClassId()`
49609db0e0SLisandro Dalcin @*/
50d71ae5a4SJacob Faibussowitsch PetscErrorCode PetscObjectGetClassName(PetscObject obj, const char *classname[])
51d71ae5a4SJacob Faibussowitsch {
52609db0e0SLisandro Dalcin   PetscFunctionBegin;
53609db0e0SLisandro Dalcin   PetscValidHeader(obj, 1);
54609db0e0SLisandro Dalcin   PetscValidPointer(classname, 2);
55609db0e0SLisandro Dalcin   *classname = obj->class_name;
563ba16761SJacob Faibussowitsch   PetscFunctionReturn(PETSC_SUCCESS);
57609db0e0SLisandro Dalcin }
58