Example #1
0
//
// printValue
//
bool wb_print_wbl::printValue (wb_volume& v,
                               wb_adef& adef,
                               void *val,
                               int varSize,
                               char **svalp) 
{
  unsigned long sts;
  char timbuf[24];
  static char sval[512];
  bool retval = true;
  pwr_tOid oid;
  wb_object o;
  

  sval[0] = '\0';

  if (adef.flags() & PWR_MASK_POINTER) {
    sprintf(sval, "%u", *(unsigned int *) val);
    *svalp = sval;
    return TRUE;
  }

  switch (adef.type()) {
  case pwr_eType_Boolean:
    sprintf(sval, "%d", *(pwr_tBoolean *) val);
    break;
  case pwr_eType_Float32:
    if ( *(pwr_tFloat32 *)val == FLT_MIN)
      strcpy( sval, "FLT_MIN");
    else if ( *(pwr_tFloat32 *)val == FLT_MAX)
      strcpy( sval, "FLT_MAX");
    else
      sprintf(sval, "%.*e", FLT_DIG, *(pwr_tFloat32 *) val);
    break;
  case pwr_eType_Float64:
    sprintf(sval, "%.*e", DBL_DIG, *(pwr_tFloat64 *) val);
    break;
  case pwr_eType_Char:
    if (*(pwr_tChar *) val == 0)
      sprintf(sval, "\"\"");
    else
      sprintf(sval, "\"%c\"", *(pwr_tChar *) val);
    break;
  case pwr_eType_Int8:
    sprintf(sval, "%d", *(pwr_tInt8 *) val);
    break;
  case pwr_eType_Int16:
    sprintf(sval, "%d", *(pwr_tInt16 *) val);
    break;
  case pwr_eType_Int32:
    if ( *(pwr_tInt32 *)val == INT_MIN)
      strcpy( sval, "INT_MIN");
    else if ( *(pwr_tInt32 *)val == INT_MAX)
      strcpy( sval, "INT_MAX");
    else
      sprintf(sval, "%d", *(pwr_tInt32 *) val);
    break;
  case pwr_eType_Int64:
    sprintf(sval, pwr_dFormatInt64, *(pwr_tInt64 *) val);
    break;
  case pwr_eType_UInt8:
    sprintf(sval, "%u", *(pwr_tUInt8 *) val);
    break;
  case pwr_eType_UInt16:
    sprintf(sval, "%u", *(pwr_tUInt16 *) val);
    break;
  case pwr_eType_UInt32:
  case pwr_eType_DisableAttr:
    sprintf(sval, "%u", *(pwr_tUInt32 *) val);
    break;
  case pwr_eType_UInt64:
    sprintf(sval, pwr_dFormatUInt64, *(pwr_tUInt64 *) val);
    break;
  case pwr_eType_Mask:
    sprintf(sval, "%u", *(pwr_tUInt32 *) val);
    break;
  case pwr_eType_Enum:
    sprintf(sval, "%u", *(pwr_tUInt32 *) val);
    break;
  case pwr_eType_RefId:
    sprintf(sval, "0");
    break;
  case pwr_eType_Objid:
    if (cdh_ObjidIsNull(*(pwr_tOid *) val))
      sprintf(sval, "\"_O0.0.0.0:0\"");
    else {
      o = v.object(*(pwr_tOid *)val);
      if (o) {
	if ( o.oid().vid >= cdh_cUserVolMin && o.oid().vid != v.vid() && !m_keepName)
	  // Other user volume. Loadfile might not be created yet at load time.
	  sprintf(sval, "\"%s\"", cdh_ObjidToString(NULL, *(pwr_tObjid *)val, 1));
	else
	  sprintf(sval, "\"%s\"", o.longName().c_str());	  
      }
      else 
        sprintf(sval, "\"%s\"", cdh_ObjidToString(NULL, *(pwr_tObjid *)val, 1));
    }    
    break;
  case pwr_eType_ObjectIx:
    if ( *(pwr_tObjectIx *) val == 0)
      sprintf(sval, "0");
    else
      sprintf(sval, "\"%s\"", cdh_ObjectIxToString(NULL, *(pwr_tObjectIx *) val,1));
    break;
  case pwr_eType_VolumeId:
    if ( *(pwr_tVolumeId *) val == 0)
      sprintf(sval, "0");
    else
      sprintf(sval, "\"%s\"", cdh_VolumeIdToString(NULL, *(pwr_tVolumeId *) val,1,0));
    break;
  case pwr_eType_ClassId:
    if (*(pwr_tClassId *) val == 0)
      sprintf(sval, "0");
    else {
      wb_cdef cdef = v.cdef(*(pwr_tCid *)val);
      if (cdef)
        sprintf(sval, "\"%s\"", cdef.longName().c_str());
      else {
        sprintf(sval, "Unknown class, identity: %d", (*(pwr_tClassId *) val));
        m_errCnt++;
        retval = false;
      }
            
    }
    break;
  case pwr_eType_TypeId: /** @todo Modify when wb_tdef is OK q*/
  case pwr_eType_CastId:
    if (*(pwr_tTypeId *) val == 0)
      sprintf(sval, "0");
    else {
      oid = cdh_TypeIdToObjid(*(pwr_tTid *)val);
      o = v.object(oid);
      if (o)
        sprintf(sval, "\"%s\"", o.longName().c_str());
      else {
        sprintf(sval, "Unknown type, identity: %d", (*(pwr_tTypeId *) val));
        m_errCnt++;
        retval = false;
      }
    }    
    break;
  case pwr_eType_AttrRef: /** @todo */
    if (cdh_ObjidIsNull(((pwr_sAttrRef*)val)->Objid))
      sprintf(sval, "\"_O0.0.0.0:0\"");
    else {
      try {
	wb_attribute a = v.attribute((pwr_sAttrRef*)val);
	if (a)
	  sprintf(sval, "\"%s\"", a.longName().c_str());
	else {
	  sprintf(sval, "\"%s\"", cdh_ArefToString(NULL, (pwr_sAttrRef*)val, 1));
	}
      } catch ( wb_error &e) {
	if ( ldh_isSymbolicVid( ((pwr_sAttrRef *)val)->Objid.vid))
	  sprintf(sval, "\"%s\"", cdh_ArefToString(NULL, (pwr_sAttrRef*)val, 1));
	else {
	  sprintf(sval, "Unknown attribute reference");
	  m_errCnt++;
	  retval = FALSE;
	}
      }
    }
#if 0      
    } else {
Example #2
0
static void  attrvalue_to_string( int type_id, void *value_ptr, 
	char *str, int size, int *len, char *format)
{
  pwr_tObjid		objid;
  pwr_sAttrRef		*attrref;
  int			sts;
  char			timstr[64];

  if ( value_ptr == 0)
  {
    strcpy( str, "UNDEFINED");
    return;
  }

  switch ( type_id )
  {
    case pwr_eType_Boolean:
    {
      if ( !format)
        *len = sprintf( str, "%d", *(pwr_tBoolean *)value_ptr);
      else
        *len = sprintf( str, format, *(pwr_tBoolean *)value_ptr);
      break;
    }
    case pwr_eType_Float32:
    {
      if ( !format)
        *len = sprintf( str, "%f", *(float *)value_ptr);
      else
        *len = sprintf( str, format, *(float *)value_ptr);
      break;
    }
    case pwr_eType_Float64:
    {
      if ( !format)
        *len = sprintf( str, "%f", *(double *)value_ptr);
      else
        *len = sprintf( str, format, *(double *)value_ptr);
      break;
    }
    case pwr_eType_Char:
    {
      if ( !format)
        *len = sprintf( str, "%c", *(char *)value_ptr);
      else
        *len = sprintf( str, format, *(char *)value_ptr);
      break;
    }
    case pwr_eType_Int8:
    {
      if ( !format)
        *len = sprintf( str, "%d", *(char *)value_ptr);
      else
        *len = sprintf( str, format, *(char *)value_ptr);
      break;
    }
    case pwr_eType_Int16:
    {
      if ( !format)
        *len = sprintf( str, "%hd", *(short *)value_ptr);
      else
        *len = sprintf( str, format, *(short *)value_ptr);
      break;
    }
    case pwr_eType_Int32:
    {
      if ( !format)
        *len = sprintf( str, "%d", *(int *)value_ptr);
      else
        *len = sprintf( str, format, *(int *)value_ptr);
      break;
    }
    case pwr_eType_Int64:
    {
      if ( !format)
        *len = sprintf( str, pwr_dFormatInt64, *(pwr_tInt64 *)value_ptr);
      else
        *len = sprintf( str, format, *(pwr_tInt64 *)value_ptr);
      break;
    }
    case pwr_eType_UInt8:
    {
      if ( !format)
        *len = sprintf( str, "%d", *(unsigned char *)value_ptr);
      else
        *len = sprintf( str, format, *(unsigned char *)value_ptr);
      break;
    }
    case pwr_eType_UInt16:
    {
      if ( !format)
        *len = sprintf( str, "%hd", *(unsigned short *)value_ptr);
      else
        *len = sprintf( str, format, *(unsigned short *)value_ptr);
      break;
    }
    case pwr_eType_UInt32:
    case pwr_eType_Mask:
    case pwr_eType_Enum:
    {
      if ( !format)
        *len = sprintf( str, "%d", *(unsigned int *)value_ptr);
      else
        *len = sprintf( str, format, *(unsigned int *)value_ptr);
      break;
    }
    case pwr_eType_UInt64:
    {
      if ( !format)
        *len = sprintf( str, pwr_dFormatUInt64, *(pwr_tUInt64 *)value_ptr);
      else
        *len = sprintf( str, format, *(pwr_tUInt64 *)value_ptr);
      break;
    }
    case pwr_eType_String:
    {
      strncpy( str, (char *)value_ptr, size);
      str[size-1] = 0;
      *len = strlen(str);
      break;
    }
    case pwr_eType_Objid:
    {
      pwr_tOName hiername;

      objid = *(pwr_tObjid *)value_ptr;
      if ( !objid.oix)
        sts = gdh_ObjidToName ( objid, hiername, sizeof(hiername), 
			 cdh_mName_volumeStrict);
      else
        sts = gdh_ObjidToName ( objid, hiername, sizeof(hiername), 
		cdh_mNName);
      if (EVEN(sts))
      {
        strcpy( str, "");
        *len = 0;
        break;
      }
      *len = sprintf( str, "%s", hiername);
      break;
    }
    case pwr_eType_AttrRef:
    {
      pwr_tAName hiername;

      attrref = (pwr_sAttrRef *) value_ptr;
      sts = gdh_AttrrefToName ( attrref, hiername, sizeof(hiername), cdh_mNName);
      if (EVEN(sts))
      {
        strcpy( str, "");
        *len = 0;
        break;
      }
      *len = sprintf( str, "%s", hiername);
      break;
    }
    case pwr_eType_Time:
    {
      sts = time_AtoAscii( (pwr_tTime *) value_ptr, time_eFormat_DateAndTime, 
		timstr, sizeof(timstr));
      if ( EVEN(sts))
        strcpy( timstr, "-");
      *len = sprintf( str, "%s", timstr);
      break;
    }
    case pwr_eType_DeltaTime:
    {
      sts = time_DtoAscii( (pwr_tDeltaTime *) value_ptr, 1, 
		timstr, sizeof(timstr));
      if ( EVEN(sts))
        strcpy( timstr, "Undefined time");
      *len = sprintf( str, "%s", timstr);
      break;
    }
    case pwr_eType_ObjectIx:
    {
      *len = sprintf( str, "%s", cdh_ObjectIxToString( NULL, 
		*(pwr_tObjectIx *) value_ptr, 1));
      break;
    }
    case pwr_eType_ClassId:
    {
      pwr_tOName hiername;

      objid = cdh_ClassIdToObjid( *(pwr_tClassId *) value_ptr);
      sts = gdh_ObjidToName ( objid, hiername, sizeof(hiername), cdh_mNName);
      if (EVEN(sts))
      {
        strcpy( str, "");
        *len = 0;
        break;
      }
      *len = sprintf( str, "%s", hiername);
      break;
    }
    case pwr_eType_TypeId:
    {
      pwr_tOName hiername;

      objid = cdh_TypeIdToObjid( *(pwr_tTypeId *) value_ptr);
      sts = gdh_ObjidToName ( objid, hiername, sizeof(hiername), cdh_mNName);
      if (EVEN(sts))
      {
        strcpy( str, "");
        *len = 0;
        break;
      }
      *len = sprintf( str, "%s", hiername);
      break;
    }
    case pwr_eType_VolumeId:
    {
      *len = sprintf( str, "%s", cdh_VolumeIdToString( NULL, 
		*(pwr_tVolumeId *) value_ptr, 1, 0));
      break;
    }
    case pwr_eType_RefId:
    {
      *len = sprintf( str, "%s", cdh_SubidToString( NULL, 
		*(pwr_tSubid *) value_ptr, 1));
      break;
    }

  }
}
Example #3
0
static pwr_tStatus trace_get_attr_m4( 	WGre		*gre, 
					vldh_t_node	node, 
					char		*debug_par,
					char		*object_str, 
					char		*attr_str,
					flow_eTraceType	*trace_type,
					int		*inverted)
{
  pwr_tAName   		aname;
  pwr_tStatus		sts;
  int			size;
  pwr_sAttrRef		*objarp;
  pwr_sAttrRef		objar;
  char			parname[120];
  pwr_sTypeDef 		*tdef;
  pwr_tTid		tid;
  char			*np, *s;

  *inverted = 0;

  /* Get the objdid stored in the parameter Object */
  switch ( node->ln.cid) {
  case pwr_cClass_GetAp:
    strcpy( parname, "ApObject");
    break;
  case pwr_cClass_GetDp:
    strcpy( parname, "DpObject");
    break;
  default:
    strcpy( parname, "Object");
  }
  sts = ldh_GetObjectPar( node->hn.wind->hw.ldhses,  
		node->ln.oid, "DevBody", parname,
		(char **)&objarp, &size); 
  if ( EVEN(sts)) return sts;

  objar = *objarp;
  free((char *) objarp);

  sts = ldh_GetAttrRefTid( node->hn.wind->hw.ldhses,
	&objar, &tid);
  if( EVEN(sts) ) return sts;

  if ( cdh_tidIsCid( tid))
    return TRA__NOPAR;

  /* Get the name of the node */
  sts = ldh_AttrRefToName( node->hn.wind->hw.ldhses,  
			   &objar, cdh_mNName, &np,
			   &size);
  if( EVEN(sts)) return sts;
  strcpy( aname, np);

  s = strrchr( aname, '.');
  if ( !s) return TRA__NOPAR;
  strcpy( attr_str, s + 1);
  *s = 0;
  strcpy( object_str, aname);

  sts = ldh_GetObjectBody( node->hn.wind->hw.ldhses,
			   cdh_TypeIdToObjid(tid), "SysBody", (void **)&tdef, &size);
  if ( EVEN(sts)) return sts;

  switch( tdef->Type) {
    case pwr_eType_Boolean:
      *trace_type = flow_eTraceType_Boolean;
      break;
    case pwr_eType_Int32:
      *trace_type = flow_eTraceType_Int32;
      break;
    case pwr_eType_Float32:
      *trace_type = flow_eTraceType_Float32;
      break;
    default:
      *trace_type = flow_eTraceType_Int32;
      break;
  }
  free((char *) tdef);
  return TRA__SUCCESS;
}