xref: /petsc/src/sys/objects/gcookie.c (revision 1ed6e3ff8437baa411029a28c2b08f047df9ad9a)
1e5c89e4eSSatish Balay /*
2e5c89e4eSSatish Balay      Provides utility routines for manulating any type of PETSc object.
3e5c89e4eSSatish Balay */
4af0996ceSBarry Smith #include <petsc/private/petscimpl.h> /*I   "petscsys.h"    I*/
5e5c89e4eSSatish Balay 
62ec85ea4SAlex Fikl /*@
7811af0c4SBarry Smith   PetscObjectGetClassId - Gets the classid for any `PetscObject`
8e5c89e4eSSatish Balay 
9e5c89e4eSSatish Balay   Not Collective
10e5c89e4eSSatish Balay 
11e5c89e4eSSatish Balay   Input Parameter:
12dde44402SBarry Smith . obj - any PETSc object, for example a `Vec`, `Mat` or `KSP`. It must be cast with a (`PetscObject`), for example,
13811af0c4SBarry Smith         `PetscObjectGetClassId`((`PetscObject`)mat,&classid);
14e5c89e4eSSatish Balay 
15e5c89e4eSSatish Balay   Output Parameter:
160700a824SBarry Smith . classid - the classid
17e5c89e4eSSatish Balay 
18e5c89e4eSSatish Balay   Level: developer
19e5c89e4eSSatish Balay 
20811af0c4SBarry Smith .seealso: `PetscObject`, `PetscClassId`, `PetscObjectGetClassName()`, `PetscObjectGetType()`
21e5c89e4eSSatish Balay @*/
PetscObjectGetClassId(PetscObject obj,PetscClassId * classid)22d71ae5a4SJacob Faibussowitsch PetscErrorCode PetscObjectGetClassId(PetscObject obj, PetscClassId *classid)
23d71ae5a4SJacob Faibussowitsch {
24e5c89e4eSSatish Balay   PetscFunctionBegin;
253cfa8680SLisandro Dalcin   PetscValidHeader(obj, 1);
264f572ea9SToby Isaac   PetscAssertPointer(classid, 2);
270700a824SBarry Smith   *classid = obj->classid;
283ba16761SJacob Faibussowitsch   PetscFunctionReturn(PETSC_SUCCESS);
29e5c89e4eSSatish Balay }
30e5c89e4eSSatish Balay 
31*cc4c1da9SBarry Smith /*@
32811af0c4SBarry Smith   PetscObjectGetClassName - Gets the class name for any `PetscObject`
33609db0e0SLisandro Dalcin 
34609db0e0SLisandro Dalcin   Not Collective
35609db0e0SLisandro Dalcin 
36609db0e0SLisandro Dalcin   Input Parameter:
37dde44402SBarry Smith . obj - any PETSc object, for example a `Vec`, `Mat` or `KSP`. It must be cast with a (`PetscObject`), for example,
38811af0c4SBarry Smith         `PetscObjectGetClassName`((`PetscObject`)mat,&classname);
39609db0e0SLisandro Dalcin 
40609db0e0SLisandro Dalcin   Output Parameter:
41811af0c4SBarry Smith . classname - the class name, for example "Vec"
42609db0e0SLisandro Dalcin 
43609db0e0SLisandro Dalcin   Level: developer
44609db0e0SLisandro Dalcin 
4521532e8aSBarry Smith .seealso: `PetscObject`, `PetscClassId`, `PetscObjectGetType()`, `PetscObjectGetClassId()`
46609db0e0SLisandro Dalcin @*/
PetscObjectGetClassName(PetscObject obj,const char * classname[])47d71ae5a4SJacob Faibussowitsch PetscErrorCode PetscObjectGetClassName(PetscObject obj, const char *classname[])
48d71ae5a4SJacob Faibussowitsch {
49609db0e0SLisandro Dalcin   PetscFunctionBegin;
50609db0e0SLisandro Dalcin   PetscValidHeader(obj, 1);
514f572ea9SToby Isaac   PetscAssertPointer(classname, 2);
52609db0e0SLisandro Dalcin   *classname = obj->class_name;
533ba16761SJacob Faibussowitsch   PetscFunctionReturn(PETSC_SUCCESS);
54609db0e0SLisandro Dalcin }
55