Actual source code: pname.c
1: #define PETSC_DLL
3: #include petscsys.h
7: /*@C
8: PetscObjectSetName - Sets a string name associated with a PETSc object.
10: Not Collective
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
18: Level: advanced
20: Concepts: object name^setting
22: .seealso: PetscObjectGetName()
23: @*/
24: PetscErrorCode PetscObjectSetName(PetscObject obj,const char name[])
25: {
30: PetscStrfree(obj->name);
31: PetscStrallocpy(name,&obj->name);
32: return(0);
33: }
37: /*@C
38: PetscObjectName - Gives an object a name if it does not have one
40: Not Collective
42: Input Parameters:
43: . obj - the Petsc variable
44: Thus must be cast with a (PetscObject), for example,
45: PetscObjectSetName((PetscObject)mat,name);
47: Level: advanced
49: Concepts: object name^setting default
51: .seealso: PetscObjectGetName(), PetscObjectSetName()
52: @*/
53: PetscErrorCode PetscObjectName(PetscObject obj)
54: {
55: PetscErrorCode ierr;
56: PetscCommCounter *counter;
57: PetscMPIInt flg;
58: char name[64];
62: if (!obj->name) {
63: MPI_Attr_get(obj->comm,Petsc_Counter_keyval,(void*)&counter,&flg);
64: if (!flg) SETERRQ(PETSC_ERR_ARG_CORRUPT,"Bad MPI communicator supplied; must be a PETSc communicator");
65: PetscSNPrintf(name,64,"%s_%D",obj->class_name,counter->namecount++);
66: PetscStrallocpy(name,&obj->name);
67: }
68: return(0);
69: }
73: /*@C
74: PetscObjectPublish - Publish an object
76: Collective on PetscObject
78: Input Parameters:
79: . obj - the Petsc variable
80: Thus must be cast with a (PetscObject), for example,
81: PetscObjectSetName((PetscObject)mat,name);
83: Level: advanced
85: Concepts: publishing object
87: Notes: Not currently used
89: .seealso: PetscObjectSetName()
91: @*/
92: PetscErrorCode PetscObjectPublish(PetscObject obj)
93: {
98: if (obj->bops->publish) {
99: (*obj->bops->publish)(obj);
100: }
101: return(0);
102: }
106: PetscErrorCode PetscObjectChangeTypeName(PetscObject obj,const char type_name[])
107: {
112: PetscObjectTakeAccess(obj);
113: PetscStrfree(obj->type_name);
114: PetscStrallocpy(type_name,&obj->type_name);
115: PetscObjectGrantAccess(obj);
116: return(0);
117: }