xref: /petsc/src/sys/objects/pname.c (revision a58c3bc3391eee32bc3fd94ac7edeea38fe57aae)
1 #define PETSC_DLL
2 
3 #include "petsc.h"        /*I    "petsc.h"   I*/
4 
5 #undef __FUNCT__
6 #define __FUNCT__ "PetscObjectSetName"
7 /*@C
8    PetscObjectSetName - Sets a string name associated with a PETSc object.
9 
10    Not Collective
11 
12    Input Parameters:
13 +  obj - the Petsc variable
14          Thus must be cast with a (PetscObject), for example,
15          PetscObjectSetName((PetscObject)mat,name);
16 -  name - the name to give obj
17 
18    Level: advanced
19 
20    Concepts: object name^setting
21 
22 .seealso: PetscObjectGetName()
23 @*/
24 PetscErrorCode PETSC_DLLEXPORT PetscObjectSetName(PetscObject obj,const char name[])
25 {
26   PetscErrorCode ierr;
27 
28   PetscFunctionBegin;
29   PetscValidHeader(obj,1);
30   ierr = PetscStrfree(obj->name);CHKERRQ(ierr);
31   ierr = PetscStrallocpy(name,&obj->name);CHKERRQ(ierr);
32   PetscFunctionReturn(0);
33 }
34 
35 #undef __FUNCT__
36 #define __FUNCT__ "PetscObjectName"
37 /*@C
38    PetscObjectName - Gives an object a name if it does not have one
39 
40    Not Collective
41 
42    Input Parameters:
43 .  obj - the Petsc variable
44          Thus must be cast with a (PetscObject), for example,
45          PetscObjectSetName((PetscObject)mat,name);
46 
47    Level: advanced
48 
49    Concepts: object name^setting default
50 
51 .seealso: PetscObjectGetName(), PetscObjectSetName()
52 @*/
53 PetscErrorCode PETSC_DLLEXPORT PetscObjectName(PetscObject obj)
54 {
55   PetscErrorCode ierr;
56   char           name[64];
57   static int     counter = 0;
58 
59   PetscFunctionBegin;
60   PetscValidHeader(obj,1);
61   if (!obj->name) {
62     sprintf(name,"%s_%d",obj->class_name,counter++);
63     ierr = PetscStrallocpy(name,&obj->name);CHKERRQ(ierr);
64   }
65   PetscFunctionReturn(0);
66 }
67 
68 #undef __FUNCT__
69 #define __FUNCT__ "PetscObjectPublish"
70 /*@C
71    PetscObjectPublish - Publish an object
72 
73    Collective on PetscObject
74 
75    Input Parameters:
76 .  obj - the Petsc variable
77          Thus must be cast with a (PetscObject), for example,
78          PetscObjectSetName((PetscObject)mat,name);
79 
80    Level: advanced
81 
82    Concepts: publishing object
83 
84    Notes: Not currently used
85 
86 .seealso: PetscObjectSetName()
87 
88 @*/
89 PetscErrorCode PETSC_DLLEXPORT PetscObjectPublish(PetscObject obj)
90 {
91   PetscErrorCode ierr;
92 
93   PetscFunctionBegin;
94   PetscValidHeader(obj,1);
95   if (obj->bops->publish) {
96     ierr = (*obj->bops->publish)(obj);CHKERRQ(ierr);
97   }
98   PetscFunctionReturn(0);
99 }
100 
101 #undef __FUNCT__
102 #define __FUNCT__ "PetscObjectChangeTypeName"
103 PetscErrorCode PETSC_DLLEXPORT PetscObjectChangeTypeName(PetscObject obj,const char type_name[])
104 {
105   PetscErrorCode ierr;
106 
107   PetscFunctionBegin;
108   PetscValidHeader(obj,1);
109   ierr = PetscObjectTakeAccess(obj);CHKERRQ(ierr);
110   ierr = PetscStrfree(obj->type_name);CHKERRQ(ierr);
111   ierr = PetscStrallocpy(type_name,&obj->type_name);CHKERRQ(ierr);
112   ierr = PetscObjectGrantAccess(obj);CHKERRQ(ierr);
113   PetscFunctionReturn(0);
114 }
115 
116