Class MetricAttribute#
Defined in File AstAttributeMechanism.h
Inheritance Relationships#
Base Type#
public AstAttribute(Class AstAttribute)
Class Documentation#
-
class MetricAttribute : public AstAttribute#
Attribute corresponding to a metric.
A metric attribute represents a numeric value obtained by either dynamic analysis (gprof or hpct) or static analysis (for example number of flop operations in a function) It MetricAttribute can be a raw (observed), or a propagated (derived) count It containes no name-string, because the attribute is stored in an AttributeMechanism-map, where the name is the key.
Public Functions
-
inline MetricAttribute()#
-
inline MetricAttribute(double value, bool is_derived = false)#
-
virtual AstAttribute *copy() const override#
Virtual copy constructor.
Copy-constructs a new object on the heap and returns its pointer. All subclasses must implement this in order to instantiate the correct dynamic type, although many don’t. If this copy method returns a null pointer (like the base implementation) then the attribute is not copied as part of copying its container. E.g., an attribute stored in an AST will not be copied when the AST is copied if that attribute is directly derived from AstAttribute and fails to implement copy. If a subclass fails to implement copy and inherits from a class that does implement a copy that returns non-null, then the copied attribute will have an incorrect dynamic type.
It would be nice if we could make this pure virtual, but unfortunately ROSETTA-generated code fails to compile because it generates an instantiation of this interface (whether or not that code is ever executed is unkown). [Robb Matzke 2015-11-10]
-
virtual std::string attribute_class_name() const override#
Attribute class name.
Returns the name of the dynamic type. All subclasses must implement this in order to return the correct type name, although many don’t. If a subclass fails to implement this then it will return an incorrect class name.
It would be nice if this could be pure virtual, but unfortunately ROSETTA-generated code fails to compile because it generates an instantiation of this interface (whether or not that code is ever executed is unknown). [Robb Matzke 2015-11-10]
-
inline virtual bool isDerived() const#
-
inline virtual double getValue() const#
-
inline virtual void setValue(double newVal)#
-
virtual std::string toString() override#
Convert an attribute to a string.
This is used by other components to print the value of an attribute. For example the pdf generation calls this function to print the value of an attribute in the pdf file. The default implementation is to return the attribute address in the heap as a string.
-
virtual int packed_size() override#
Packing support.
-
virtual char *packed_data() override#
-
virtual void unpacked_data(int size, char *data) override#
-
MetricAttribute &operator+=(const MetricAttribute &other)#
-
MetricAttribute &operator-=(const MetricAttribute &other)#
-
MetricAttribute &operator*=(const MetricAttribute &other)#
-
MetricAttribute &operator/=(const MetricAttribute &other)#
-
inline MetricAttribute()#