---
name: "QmcMetric"
section: "3"
platform: "linux"
package: "pcp"
version: "7.2.2-2"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/QmcMetric"
---

# QmcMetric(3)

container for a metric and all its values

## NAME

**QmcMetric** - container for a metric and all its values

## C++ SYNOPSIS

**#include \<pcp/pmc/Metric.h\>**

**c++ ... -lpcp\_qmc -lpcp**

## DESCRIPTION

A **QmcMetric** object is a container for a single metric and all its values.

The **QmcMetricValue** structure is used to hold the instance index, values and errors of each instance.  In the case of a singular metric, a single **QmcMetricValue** object is used.

A **QmcMetric** object consists of a list of **QmcMetricValue** objects, indexes to the descriptors in the metric's **QmcGroup** and **QmcContext** and flags to indicate if the instances are explicit or implicit, and if only active metrics are required after **QmcMetric::updateIndom** is called.

## CONSTRUCTORS

Metrics should be constructed through the **QmcGroup::addMetric** methods as this will ensure that the references to the metric's context, descriptor and instance domain are correctly initialized.

## INSTANCES

For metrics with an instance domain it is possible to add and remove any instance, and also update the instance list to reflect changes in a dynamic instance domain.

- **bool updateIndom();**

  Update the metric to include new instances.  This method will first call **QmcContext::update** to update the instance domain.  If the *active* flag is set in the **QmcGroup::addMetric** call, only instances will exported by the metric, otherwise the metric will export all instances listed in the domain.

  The ordering of instances may change as a result of this call.  Instances that already existed will keep their current and previous values and errors, even if they are in a different order.

- **int addInst(QString const& name);**

  Add the instance **name** to the metric.  If the instance does not exist in the instance domain, a [**PMAPI**(3)](/PMAPI/3.md) error will be returned.  This method ignores the value of the *active* flag set in the **QmcMetric** constructor.

- **void removeInst(uint\_t index);**

  Remove the instance at position *index* from the metric.

## DIAGNOSTICS

Error messages are generated using [**pmprintf**(3)](/pmprintf/3.md) but are not flushed. It is the responsibility of the user to call [**pmflush**(3)](/pmflush/3.md) to output any messages.

Additional diagnostics may be activated by adding the option **pmc** to the global debugging specification, as described in [**pmSetDebug**(3)](/pmSetDebug/3.md).

## SEE ALSO

[**PMAPI**(3)](/PMAPI/3.md), [**QMC**(3)](/QMC/3.md), [**QmcContext**(3)](/QmcContext/3.md), [**QmcGroup**(3)](/QmcGroup/3.md), [**pmflush**(3)](/pmflush/3.md) and [**pmprintf**(3)](/pmprintf/3.md).
