// // 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 {
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; } } }
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; }