xref: /petsc/src/sys/objects/pname.c (revision e5c89e4ece6e3231999e6896bd6dacaf81d4b32f)
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   if (!obj) SETERRQ(PETSC_ERR_ARG_CORRUPT,"Null object");
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   if (!obj->name) {
61     sprintf(name,"%s_%d",obj->class_name,counter++);
62     ierr = PetscStrallocpy(name,&obj->name);CHKERRQ(ierr);
63   }
64   PetscFunctionReturn(0);
65 }
66 
67 #undef __FUNCT__
68 #define __FUNCT__ "PetscObjectPublish"
69 /*@C
70    PetscObjectPublish - Publish an object
71 
72    Collective on PetscObject
73 
74    Input Parameters:
75 .  obj - the Petsc variable
76          Thus must be cast with a (PetscObject), for example,
77          PetscObjectSetName((PetscObject)mat,name);
78 
79    Level: advanced
80 
81    Concepts: publishing object
82 
83    Notes: Not currently used
84 
85 .seealso: PetscObjectSetName()
86 
87 @*/
88 PetscErrorCode PETSC_DLLEXPORT PetscObjectPublish(PetscObject obj)
89 {
90   PetscErrorCode ierr;
91 
92   PetscFunctionBegin;
93   PetscValidHeader(obj,1);
94   if (obj->bops->publish) {
95     ierr = (*obj->bops->publish)(obj);CHKERRQ(ierr);
96   }
97   PetscFunctionReturn(0);
98 }
99 
100 #undef __FUNCT__
101 #define __FUNCT__ "PetscObjectChangeTypeName"
102 PetscErrorCode PETSC_DLLEXPORT PetscObjectChangeTypeName(PetscObject obj,const char type_name[])
103 {
104   PetscErrorCode ierr;
105 
106   PetscFunctionBegin;
107   ierr = PetscObjectTakeAccess(obj);CHKERRQ(ierr);
108   ierr = PetscStrfree(obj->type_name);CHKERRQ(ierr);
109   ierr = PetscStrallocpy(type_name,&obj->type_name);CHKERRQ(ierr);
110   ierr = PetscObjectGrantAccess(obj);CHKERRQ(ierr);
111   PetscFunctionReturn(0);
112 }
113 
114