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: }