Actual source code: pname.c
2: #include petsc.h
6: /*@C
7: PetscObjectSetName - Sets a string name associated with a PETSc object.
9: Not Collective
11: Input Parameters:
12: + obj - the Petsc variable
13: Thus must be cast with a (PetscObject), for example,
14: PetscObjectSetName((PetscObject)mat,name);
15: - name - the name to give obj
17: Level: advanced
19: Concepts: object name^setting
21: .seealso: PetscObjectGetName()
22: @*/
23: PetscErrorCode PetscObjectSetName(PetscObject obj,const char name[])
24: {
28: if (!obj) SETERRQ(PETSC_ERR_ARG_CORRUPT,"Null object");
29: PetscStrfree(obj->name);
30: PetscStrallocpy(name,&obj->name);
31: return(0);
32: }
36: /*@C
37: PetscObjectName - Gives an object a name if it does not have one
39: Not Collective
41: Input Parameters:
42: . obj - the Petsc variable
43: Thus must be cast with a (PetscObject), for example,
44: PetscObjectSetName((PetscObject)mat,name);
46: Level: advanced
48: Concepts: object name^setting default
50: .seealso: PetscObjectGetName(), PetscObjectSetName()
51: @*/
52: PetscErrorCode PetscObjectName(PetscObject obj)
53: {
55: char name[64];
56: static int counter = 0;
59: if (!obj->name) {
60: sprintf(name,"%s_%d",obj->class_name,counter++);
61: PetscStrallocpy(name,&obj->name);
62: }
63: return(0);
64: }
68: /*@C
69: PetscObjectPublish - Publish an object
71: Collective on PetscObject
73: Input Parameters:
74: . obj - the Petsc variable
75: Thus must be cast with a (PetscObject), for example,
76: PetscObjectSetName((PetscObject)mat,name);
78: Level: advanced
80: Concepts: publishing object
82: Notes: Not currently used
84: .seealso: PetscObjectSetName()
86: @*/
87: PetscErrorCode PetscObjectPublish(PetscObject obj)
88: {
93: if (obj->bops->publish) {
94: (*obj->bops->publish)(obj);
95: }
96: return(0);
97: }
101: PetscErrorCode PetscObjectChangeTypeName(PetscObject obj,const char type_name[])
102: {
106: PetscObjectTakeAccess(obj);
107: PetscStrfree(obj->type_name);
108: PetscStrallocpy(type_name,&obj->type_name);
109: PetscObjectGrantAccess(obj);
110: return(0);
111: }