ROSE
0.11.83.2
|
Information tagged to a path node.
Tags can be attached to path nodes to mark interesting things about a certain location within a path. Each node can have zero or more tags associated with it, and the same tag can be attached to more than one node. Tags have some information which is common to all (or most) types of tags, but users may create their own subclasses for special things.
#include <Rose/BinaryAnalysis/ModelChecker/Tag.h>
Public Types | |
using | Ptr = TagPtr |
Public Member Functions | |
size_t | nodeStep () const |
Property: Node step. More... | |
virtual std::string | name () const =0 |
Property: Generic name of tag. More... | |
virtual std::string | printableName () const =0 |
String to identify this tag. More... | |
virtual void | print (std::ostream &, const std::string &prefix) const =0 |
Print multi-line information about the tag. More... | |
virtual void | toYaml (std::ostream &, const std::string &prefix) const =0 |
Print multi-line information about the tag in YAML format. More... | |
Protected Member Functions | |
Tag (size_t nodeStep) | |
size_t Rose::BinaryAnalysis::ModelChecker::Tag::nodeStep | ( | ) | const |
Property: Node step.
This is the index of the step within this node to which this tag applies. The index is specified when the tag is created.
Thread safety: This property accessor is thread safe.
|
pure virtual |
Property: Generic name of tag.
For instance, the name of a null pointer dereference tag might be the words "null pointer dereference" (see NullDerefTag for the actual value).
Thread safety: The implementation must be thread safe.
Implemented in Rose::BinaryAnalysis::ModelChecker::NameTag, Rose::BinaryAnalysis::ModelChecker::OobTag, Rose::BinaryAnalysis::ModelChecker::UninitVarTag, and Rose::BinaryAnalysis::ModelChecker::NullDerefTag.
|
pure virtual |
String to identify this tag.
Returns a single line string (no line feed) that is suitable for printing on a terminal (no special characters). This is used mostly in diagnostic messages.
Thread safety: The implementation must be thread safe.
Implemented in Rose::BinaryAnalysis::ModelChecker::NameTag, Rose::BinaryAnalysis::ModelChecker::OobTag, Rose::BinaryAnalysis::ModelChecker::UninitVarTag, and Rose::BinaryAnalysis::ModelChecker::NullDerefTag.
|
pure virtual |
Print multi-line information about the tag.
First line should be the full name of the tag. Next lines are indented by at least two spaces and contain additional information about the tag. All lines start with the prefix
.
Thread safety: The implementation must be thread safe for gathering the information but need not concern itself with ensuring that no other threads are sending output to the same stream.
Implemented in Rose::BinaryAnalysis::ModelChecker::NameTag, Rose::BinaryAnalysis::ModelChecker::ErrorTag, Rose::BinaryAnalysis::ModelChecker::OobTag, Rose::BinaryAnalysis::ModelChecker::UninitVarTag, and Rose::BinaryAnalysis::ModelChecker::NullDerefTag.
|
pure virtual |
Print multi-line information about the tag in YAML format.
The first line starts with the prefix
, and the following lines start with that number of spaces.
Thread safety: The implementation must be thread safe for gathering the information but need not concern itself with ensuring that no other threads are sending output to the same stream.
Implemented in Rose::BinaryAnalysis::ModelChecker::NameTag, Rose::BinaryAnalysis::ModelChecker::ErrorTag, Rose::BinaryAnalysis::ModelChecker::OobTag, Rose::BinaryAnalysis::ModelChecker::UninitVarTag, and Rose::BinaryAnalysis::ModelChecker::NullDerefTag.