xref: /petsc/src/sys/objects/gcookie.c (revision 9371c9d470a9602b6d10a8bf50c9b2280a79e45a)
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 /*@
8609db0e0SLisandro Dalcin    PetscObjectGetClassId - Gets the classid for any PetscObject
9e5c89e4eSSatish Balay 
10e5c89e4eSSatish Balay    Not Collective
11e5c89e4eSSatish Balay 
12e5c89e4eSSatish Balay    Input Parameter:
13e5c89e4eSSatish Balay .  obj - any PETSc object, for example a Vec, Mat or KSP.
14e5c89e4eSSatish Balay          Thus must be cast with a (PetscObject), for example,
15903b9019SMatthew G Knepley          PetscObjectGetClassId((PetscObject)mat,&classid);
16e5c89e4eSSatish Balay 
17e5c89e4eSSatish Balay    Output Parameter:
180700a824SBarry Smith .  classid - the classid
19e5c89e4eSSatish Balay 
20e5c89e4eSSatish Balay    Level: developer
21e5c89e4eSSatish Balay 
22e5c89e4eSSatish Balay @*/
23*9371c9d4SSatish Balay PetscErrorCode PetscObjectGetClassId(PetscObject obj, PetscClassId *classid) {
24e5c89e4eSSatish Balay   PetscFunctionBegin;
253cfa8680SLisandro Dalcin   PetscValidHeader(obj, 1);
265f80ce2aSJacob Faibussowitsch   PetscValidIntPointer(classid, 2);
270700a824SBarry Smith   *classid = obj->classid;
28e5c89e4eSSatish Balay   PetscFunctionReturn(0);
29e5c89e4eSSatish Balay }
30e5c89e4eSSatish Balay 
31609db0e0SLisandro Dalcin /*@C
32609db0e0SLisandro Dalcin    PetscObjectGetClassName - Gets the class name for any PetscObject
33609db0e0SLisandro Dalcin 
34609db0e0SLisandro Dalcin    Not Collective
35609db0e0SLisandro Dalcin 
36609db0e0SLisandro Dalcin    Input Parameter:
37609db0e0SLisandro Dalcin .  obj - any PETSc object, for example a Vec, Mat or KSP.
38609db0e0SLisandro Dalcin          Thus must be cast with a (PetscObject), for example,
39609db0e0SLisandro Dalcin          PetscObjectGetClassName((PetscObject)mat,&classname);
40609db0e0SLisandro Dalcin 
41609db0e0SLisandro Dalcin    Output Parameter:
42609db0e0SLisandro Dalcin .  classname - the class name
43609db0e0SLisandro Dalcin 
44609db0e0SLisandro Dalcin    Level: developer
45609db0e0SLisandro Dalcin 
46609db0e0SLisandro Dalcin @*/
47*9371c9d4SSatish Balay PetscErrorCode PetscObjectGetClassName(PetscObject obj, const char *classname[]) {
48609db0e0SLisandro Dalcin   PetscFunctionBegin;
49609db0e0SLisandro Dalcin   PetscValidHeader(obj, 1);
50609db0e0SLisandro Dalcin   PetscValidPointer(classname, 2);
51609db0e0SLisandro Dalcin   *classname = obj->class_name;
52609db0e0SLisandro Dalcin   PetscFunctionReturn(0);
53609db0e0SLisandro Dalcin }
54