xref: /petsc/src/sys/objects/gtype.c (revision 609bdbee21ea3be08735c64dbe00a9ab27759925)
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 /*@C
8    PetscObjectGetType - Gets the object type of 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          PetscObjectGetType((PetscObject)mat,&type);
16 
17    Output Parameter:
18 .  type - the object type
19 
20    Level: advanced
21 
22    Concepts: object type
23 @*/
24 PetscErrorCode  PetscObjectGetType(PetscObject obj, const char *type[])
25 {
26   PetscFunctionBegin;
27   PetscValidHeader(obj,1);
28   PetscValidPointer(type,2);
29   *type = obj->type_name;
30   PetscFunctionReturn(0);
31 }
32 
33 /*@C
34    PetscObjectSetType - Sets the object type of any PetscObject.
35 
36    Not Collective
37 
38    Input Parameters:
39 +  obj - any PETSc object, for example a Vec, Mat or KSP.
40          Thus must be cast with a (PetscObject), for example,
41          PetscObjectGetType((PetscObject)mat,&type);
42 -  type - the object type
43 
44    Note: This does not currently work since we need to dispatch by type.
45 
46    Level: advanced
47 
48    Concepts: object type
49 @*/
50 PetscErrorCode  PetscObjectSetType(PetscObject obj, const char type[])
51 {
52   PetscFunctionBegin;
53   PetscValidHeader(obj,1);
54   PetscValidCharPointer(type,2);
55   SETERRQ(PETSC_COMM_SELF,PETSC_ERR_SUP, "Cannot set the type of a generic PetscObject");
56 }
57