int QmcEventRecord::setParameter(int index, pmID pmid, QmcContext *context, pmValueSet const *vsp) { QString *name; QmcDesc *desc; QmcIndom *indom; int sts, type; if (vsp->numval <= 0) // no value or an error return vsp->numval; if ((sts = context->lookup(pmid, &name, &desc, &indom)) < 0) return sts; QmcEventParameter ¶meter = my.parameters[index]; parameter.setPMID(pmid); parameter.setNamePtr(name); parameter.setDescPtr(desc); parameter.setIndomPtr(indom); parameter.setValueCount(vsp->numval); type = desc->desc().type; for (int i = 0; i < vsp->numval; i++) { pmAtomValue result; const pmValue *vp = &vsp->vlist[i]; QmcMetricValue *value = parameter.valuePtr(i); sts = PM_ERR_TYPE; // no nesting events if (QmcMetric::real(type) == true) { if ((sts = pmExtractValue(vsp->valfmt, vp, type, &result, PM_TYPE_DOUBLE)) >= 0) value->setCurrentValue(result.d); } else if (QmcMetric::aggregate(type) == true) { char buffer[32]; QmcMetric::aggregateAsString(vp, buffer, sizeof(buffer)); value->setStringValue(buffer); } else if (QmcMetric::event(type) == false) { if ((sts = pmExtractValue(vsp->valfmt, vp, type, &result, PM_TYPE_STRING)) >= 0) { value->setStringValue(result.cp); free(result.cp); } } value->setInstance(vp->inst); if (sts < 0) value->setCurrentError(sts); } return 0; }
void Launch::postColor(const QmcDesc &desc, const char *instance, QString &str) { const pmDesc d = desc.desc(); if (_version == PM_LAUNCH_VERSION2) { str.setNum(d.type).append(' '); str.setNum(d.sem).append(' '); str.setNum(d.units.scaleSpace).append(' '); str.setNum(d.units.scaleTime).append(' '); str.setNum(d.units.scaleCount).append(' '); } str.setNum(d.units.dimSpace).append(' '); str.setNum(d.units.dimTime).append(' '); str.setNum(d.units.dimCount).append(' '); str.setNum((int)(d.indom)).append(" ["); if (instance != NULL) str.append(instance); str.append("]\n"); }