# NV::Rules::IAction Class Reference
[NvRules Python garbage-collected classes.]

Action interface. More...

## Public Member Functions
virtual PYRETURN IMetric * | add_double_metric (const char *value_name, IMetric::ValueKind value_kind, double value)=0
| Add a single floating point metric to this action.
virtual PYRETURN IMetric * | add_integer_metric (const char *value_name, IMetric::ValueKind value_kind, uint64_t value)=0
| Add a single integer metric to this action.
virtual PYRETURN IMetric * | add_string_metric (const char *value_name, IMetric::ValueKind value_kind, const char *value)=0
| Add a single string metric to this action.
virtual PYRETURN IMetric * | metric_by_name (const char *metric_name)=0
| Get a single metric by name.
virtual std::set< std::string > | metric_names ()=0
| Get the set of metric names.
virtual const char * | name ()=0
| Get the action name.
virtual PYRETURN INvtxState * | nvtx_state ()=0
| Get the NVTX state associated with this action.
virtual PYRETURN ISourceInfo * | source_info (uint64_t address)=0
| Get the source info for a function address within this action.

## Detailed Description

Represents an activity such as a CUDA kernel on a single range, for which zero or more metrics were collected

## Member Function Documentation

virtual PYRETURN IMetric* NV::Rules::IAction::add_double_metric | ( | const char * | value_name,
|  | IMetric::ValueKind | value_kind,
|  | double | value |
| ) |  |  | `[pure virtual]`

Returns:
  the new IMetric

Add a single floating point metric with name `value_name` and kind `value_kind` to this action

virtual PYRETURN IMetric* NV::Rules::IAction::add_integer_metric | ( | const char * | value_name,
|  | IMetric::ValueKind | value_kind,
|  | uint64_t | value |
| ) |  |  | `[pure virtual]`

Returns:
  the new IMetric

Add a single integer metric to with name `value_name` and kind `value_kind` this action.

virtual PYRETURN IMetric* NV::Rules::IAction::add_string_metric | ( | const char * | value_name,
|  | IMetric::ValueKind | value_kind,
|  | const char * | value |
| ) |  |  | `[pure virtual]`

Returns:
  the new IMetric

Add a single string metric with name `value_name` and kind `value_kind` to this action

virtual PYRETURN IMetric* NV::Rules::IAction::metric_by_name | ( | const char * | metric_name | ) | `[pure virtual]`

Get a single IMetric by `metric_name`

virtual std::set<std::string> NV::Rules::IAction::metric_names | ( |  | ) | `[pure virtual]`

Get the set of metrics available for this action

virtual const char* NV::Rules::IAction::name | ( |  | ) | `[pure virtual]`

Get the action name

virtual PYRETURN INvtxState* NV::Rules::IAction::nvtx_state | ( |  | ) | `[pure virtual]`

Returns:
  a new INvtxState object if any NVTX state is available for this action.

virtual PYRETURN ISourceInfo* NV::Rules::IAction::source_info | ( | uint64_t | address | ) | `[pure virtual]`

Returns:
  a new ISourceInfo object if it is available

Get the source info for `address` within this action. Addresses are commonly obtained as correlation ids of source-correlated metrics.