Otawa
0.10
|
Represents a unique identifier used by the annotation system. More...
#include <otawa/prop/AbstractIdentifier.h>
Public Member Functions | |
AbstractIdentifier (void) | |
Build an anonymous identifier. More... | |
AbstractIdentifier (cstring name) | |
Build a new identifier. More... | |
AbstractIdentifier (cstring name, Property *prop, VarArg &args) | |
Build an identifier with the given name and properties read from the given arguments that must be a list of Property * pointer (1) ended by a null identifier pointer and (2) and will be released by the current identifier. More... | |
virtual | ~AbstractIdentifier (void) |
const string | name (void) const |
Get the string name of the identifier. More... | |
void | print (elm::io::Output &out) const |
Print the identifier. More... | |
virtual void | print (elm::io::Output &output, const Property *prop) const |
Print the value of the given property (accordint the property matches the given identifier). More... | |
void | print (elm::io::Output &output, const Property &prop) const |
virtual void | printFormatted (io::Output &out, const Property *prop) const |
Print the value of the given property in a formatted way, that is, possibly to perform re-scanning after. More... | |
void | printFormatted (elm::io::Output &output, const Property &prop) const |
virtual const Type & | type (void) const |
Get the identifier of data linked with this property. More... | |
virtual void | fromString (PropList &props, const string &str) const |
Get value of an identifier from a string and store it in the given property list. More... | |
virtual bool | equals (const Property *prop1, const Property *prop2) const |
Test if two properties are equal. More... | |
virtual Property * | copy (Property &prop) const |
Build a copy of the given property. More... | |
Property * | copy (Property *prop) const |
virtual void | serialize (Property *prop, elm::serial2::Serializer &serializer) |
Serialize the workspace to the current serializer. More... | |
virtual Property * | unserialize (elm::serial2::Unserializer &unserializer) |
Unserialize the workspace to the current unserializer. More... | |
Property * | getProp (const AbstractIdentifier *id) const |
Find a property by its identifier. More... | |
void | setProp (Property *prop) |
Set the property in the property list removing any double. More... | |
void | setProp (const AbstractIdentifier *id) |
void | removeProp (const AbstractIdentifier *id) |
Remove a property matching the given identifier. More... | |
void | removeProp (const AbstractIdentifier &id) |
Property * | extractProp (const AbstractIdentifier *id) |
Remove a property matching the given identifier and return it. More... | |
Property * | extractProp (const AbstractIdentifier &id) |
Remove a property matching the given identifier and return it. More... | |
void | addProp (Property *prop) |
Add property to the list without checking of duplication. More... | |
void | removeAllProp (const AbstractIdentifier *id) |
Remove all the properties matching the given identifier. More... | |
bool | hasProp (const AbstractIdentifier &id) const |
Test if the property list contains a property matching the given identifier. More... | |
void | clearProps (void) |
Remove all properties from the list. More... | |
void | addProps (const PropList &props) |
Add all properties from the given property list, in a reverse order. More... | |
Static Public Member Functions | |
static AbstractIdentifier * | find (const string &name) |
Find an abstract identifier by its name. More... | |
Static Public Attributes | |
static const PropList | EMPTY |
This is an empty proplist for convenience. More... | |
Protected Member Functions | |
void | initProps (Property *prop, VarArg &args) |
Add the properties found in the arguments (list of Property * ended by null) to the identifier properties. More... | |
Private Member Functions | |
void | initialize (void) |
For internal use only. More... | |
Private Attributes | |
string | nam |
Friends | |
class | elm::Initializer< AbstractIdentifier > |
Represents a unique identifier used by the annotation system.
Identifier pointers may be compared for testing equality.
To have nice display of identifier and their value, one can provide to the OTAWA identifier system informations for human reading. As an identifier is also a property list, one may attach properties with the following identifier: otawa::IDENTIFIER_LABEL – a short label to display in front of the property value, otawa::IDENTIFIER_DESC – a more precise description of the identifier.
Both information may be set using some dedicated macros:
otawa::AbstractIdentifier::AbstractIdentifier | ( | void | ) |
Build an anonymous identifier.
otawa::AbstractIdentifier::AbstractIdentifier | ( | cstring | name | ) |
Build an identifier with the given name and properties read from the given arguments that must be a list of Property * pointer (1) ended by a null identifier pointer and (2) and will be released by the current identifier.
name | Name of the identifier ("" for anonymous) |
prop | First property. |
args | Arguments to derive identifier properties. |
References initProps().
|
inlinevirtual |
|
inherited |
Add property to the list without checking of duplication.
prop | Property to add. |
References otawa::Property::_next.
Referenced by otawa::Identifier< T >::add(), otawa::ast::ASTInfo::ASTInfo(), otawa::Identifier< otawa::arm::Info * >::copy(), initProps(), otawa::ContextualProperty::make(), otawa::script::Script::makeConfig(), otawa::ccg::Builder::processLBlockSet(), otawa::ipet::ILPSystemGetter::processWorkSpace(), otawa::Identifier< T >::ref(), otawa::ContextualProperty::ref(), and otawa::ContextualProperty::refProps().
|
inherited |
Add all properties from the given property list, in a reverse order.
props | Property list to clone. |
References copy(), otawa::PropList::head, and otawa::Property::next().
Referenced by otawa::display::CFGDrawer::CFGDrawer(), otawa::display::GraphVizGraph::GraphVizGraph(), otawa::ParamFeature::instantiate(), otawa::Manager::loadXML(), otawa::display::GraphVizGraph::newEdge(), otawa::display::GraphVizGraph::newNode(), otawa::PropList::operator=(), otawa::Process::Process(), otawa::PropList::PropList(), otawa::display::GraphVizItem::setProps(), otawa::VirtualBasicBlock::VirtualBasicBlock(), and otawa::VirtualCFG::VirtualCFG().
|
inherited |
Remove all properties from the list.
References otawa::Property::next().
Referenced by otawa::PSTBuilder::getVCFG(), otawa::PropList::operator=(), otawa::display::GraphVizItem::setProps(), otawa::PropList::~PropList(), and otawa::WorkSpace::~WorkSpace().
Build a copy of the given property.
prop | Property to copy. |
Reimplemented in otawa::Identifier< T >, otawa::Identifier< otawa::ccg::Node * >, otawa::Identifier< typename Problem::Domain * >, otawa::Identifier< dfa::BitSet * >, otawa::Identifier< double >, otawa::Identifier< otawa::CFG * >, otawa::Identifier< otawa::ast::AST * >, otawa::Identifier< elm::system::elm::sys::Path >, otawa::Identifier< otawa::Microprocessor< ExeNode > * >, otawa::Identifier< otawa::ccg::Collection * >, otawa::Identifier< Domain * >, otawa::Identifier< AbstractParamProcessor * >, otawa::Identifier< otawa::CFGInfo * >, otawa::Identifier< otawa::StatInfo * >, otawa::Identifier< int >, otawa::Identifier< T * >, otawa::Identifier< elm::sys::Path >, otawa::Identifier< otawa::PropList * >, otawa::Identifier< elm::genstruct::DLList * >, otawa::Identifier< elm::system::time_t >, otawa::Identifier< display::kind_t >, otawa::Identifier< typename P::Domain * >, otawa::Identifier< typename otawa::dfa::hai::FirstUnrollingFixPoint::FixPointState * >, otawa::Identifier< otawa::PCG * >, otawa::Identifier< otawa::BasicBlock * >, otawa::Identifier< elm::String >, otawa::Identifier< Processor * >, otawa::Identifier< otawa::tsim::TreePath< otawa::BasicBlock *, otawa::tsim::BBPath * > * >, otawa::Identifier< log_level_t >, otawa::Identifier< otawa::CEClass * >, otawa::Identifier< elm::io::elm::io::OutStream * >, otawa::Identifier< bool >, otawa::Identifier< otawa::AbstractParamIdentifier * >, otawa::Identifier< typename otawa::dfa::hai::WideningFixPoint::FixPointState * >, otawa::Identifier< elm::io::elm::io::Output * >, otawa::Identifier< otawa::Progress * >, otawa::Identifier< elm::CString >, otawa::Identifier< typename otawa::dfa::hai::DefaultFixPoint::FixPointState * >, otawa::Identifier< typename FixPoint::FixPointState * >, otawa::Identifier< otawa::Symbol * >, otawa::Identifier< otawa::display::ILPSystemAddon * >, otawa::Identifier< AbstractIdentifier * >, otawa::Identifier< elm::Pair >, and otawa::Identifier< otawa::arm::Info * >.
|
virtual |
Test if two properties are equal.
prop1 | First property. |
prop2 | Second property. |
|
inherited |
Remove a property matching the given identifier and return it.
Caller is responsible of the management of the obtained property.
id | Identifier of the property to extract. |
References otawa::Property::_next, and otawa::Property::next().
Referenced by otawa::script::Script::makeConfig().
|
inlineinherited |
Remove a property matching the given identifier and return it.
Caller is responsible of the management of the obtained property.
id | Identifier of the property to extract. |
References otawa::PropList::extractProp().
Referenced by otawa::PropList::extractProp().
|
static |
Find an abstract identifier by its name.
name | Name of the looked identifier. |
Referenced by otawa::ProcessorPlugin::getIdentifier(), and otawa::Application::run().
Get value of an identifier from a string and store it in the given property list.
props | Property list to store result into. |
str | String to get value from. |
Reimplemented in otawa::Identifier< T >, otawa::Identifier< T >, otawa::Identifier< T >, otawa::Identifier< T >, otawa::Identifier< T >, otawa::Identifier< T >, otawa::Identifier< T >, otawa::Identifier< T >, otawa::Identifier< T >, otawa::Identifier< T >, otawa::Identifier< T >, otawa::Identifier< T >, otawa::Identifier< T >, otawa::Identifier< T >, otawa::Identifier< T >, otawa::Identifier< T >, otawa::Identifier< T >, otawa::Identifier< T >, otawa::Identifier< T >, otawa::Identifier< T >, otawa::Identifier< T >, otawa::Identifier< T >, otawa::Identifier< T >, otawa::Identifier< otawa::ccg::Node * >, otawa::Identifier< typename Problem::Domain * >, otawa::Identifier< dfa::BitSet * >, otawa::Identifier< double >, otawa::Identifier< otawa::CFG * >, otawa::Identifier< otawa::ast::AST * >, otawa::Identifier< elm::system::elm::sys::Path >, otawa::Identifier< otawa::Microprocessor< ExeNode > * >, otawa::Identifier< otawa::ccg::Collection * >, otawa::Identifier< Domain * >, otawa::Identifier< AbstractParamProcessor * >, otawa::Identifier< otawa::CFGInfo * >, otawa::Identifier< otawa::StatInfo * >, otawa::Identifier< int >, otawa::Identifier< T * >, otawa::Identifier< elm::sys::Path >, otawa::Identifier< otawa::PropList * >, otawa::Identifier< elm::genstruct::DLList * >, otawa::Identifier< elm::system::time_t >, otawa::Identifier< display::kind_t >, otawa::Identifier< typename P::Domain * >, otawa::Identifier< typename otawa::dfa::hai::FirstUnrollingFixPoint::FixPointState * >, otawa::Identifier< otawa::PCG * >, otawa::Identifier< otawa::BasicBlock * >, otawa::Identifier< elm::String >, otawa::Identifier< Processor * >, otawa::Identifier< otawa::tsim::TreePath< otawa::BasicBlock *, otawa::tsim::BBPath * > * >, otawa::Identifier< log_level_t >, otawa::Identifier< otawa::CEClass * >, otawa::Identifier< elm::io::elm::io::OutStream * >, otawa::Identifier< bool >, otawa::Identifier< otawa::AbstractParamIdentifier * >, otawa::Identifier< typename otawa::dfa::hai::WideningFixPoint::FixPointState * >, otawa::Identifier< elm::io::elm::io::Output * >, otawa::Identifier< otawa::Progress * >, otawa::Identifier< elm::CString >, otawa::Identifier< typename otawa::dfa::hai::DefaultFixPoint::FixPointState * >, otawa::Identifier< typename FixPoint::FixPointState * >, otawa::Identifier< otawa::Symbol * >, otawa::Identifier< otawa::display::ILPSystemAddon * >, otawa::Identifier< AbstractIdentifier * >, otawa::Identifier< elm::Pair >, otawa::Identifier< otawa::arm::Info * >, and otawa::Identifier< T >.
References name().
|
inherited |
Find a property by its identifier.
id | Identifier of the property to find. |
References otawa::Property::_next, and otawa::Property::next().
Referenced by otawa::Identifier< otawa::arm::Info * >::exists(), otawa::ContextualProperty::exists(), otawa::ContextualProperty::find(), otawa::Identifier< T >::get(), otawa::PropList::hasProp(), otawa::ContextualProperty::make(), otawa::ParamFeature::matches(), otawa::ImmutableRef< T, I >::print(), otawa::ContextualProperty::print(), otawa::Identifier< T >::ref(), otawa::ContextualProperty::ref(), otawa::ContextualProperty::refProps(), otawa::Identifier< T >::set(), otawa::Identifier< T >::use(), and otawa::Identifier< T >::value().
|
inlineinherited |
Test if the property list contains a property matching the given identifier.
id | Property identifier to look for. |
References otawa::PropList::getProp().
Referenced by otawa::ipet::BasicConstraintsBuilder::addEntryConstraint(), otawa::Monitor::configure(), otawa::ImmutableRef< T, I >::exists(), and otawa::Manager::setVerbosity().
|
private |
Add the properties found in the arguments (list of Property * ended by null) to the identifier properties.
prop | First property. |
args | Null-ended properties to scan. |
References otawa::PropList::addProp(), and elm::VarArg::next().
Referenced by AbstractIdentifier().
|
inline |
Get the string name of the identifier.
References nam.
Referenced by otawa::AlternativeProcessor::AlternativeProcessor(), fromString(), otawa::ParamProcessor::instantiate(), otawa::UnsupportedFeatureException::message(), otawa::UnavailableFeatureException::message(), and otawa::WorkSpace::provide().
void otawa::AbstractIdentifier::print | ( | elm::io::Output & | out | ) | const |
|
virtual |
Print the value of the given property (accordint the property matches the given identifier).
It is an error to call this method with a property matching a different identifier.
Use the print() method of a property instead.
Reimplemented in otawa::Identifier< T >, otawa::Identifier< T >, otawa::Identifier< otawa::ccg::Node * >, otawa::Identifier< typename Problem::Domain * >, otawa::Identifier< dfa::BitSet * >, otawa::Identifier< double >, otawa::Identifier< otawa::CFG * >, otawa::Identifier< otawa::ast::AST * >, otawa::Identifier< elm::system::elm::sys::Path >, otawa::Identifier< otawa::Microprocessor< ExeNode > * >, otawa::Identifier< otawa::ccg::Collection * >, otawa::Identifier< Domain * >, otawa::Identifier< AbstractParamProcessor * >, otawa::Identifier< otawa::CFGInfo * >, otawa::Identifier< otawa::StatInfo * >, otawa::Identifier< int >, otawa::Identifier< T * >, otawa::Identifier< elm::sys::Path >, otawa::Identifier< otawa::PropList * >, otawa::Identifier< elm::genstruct::DLList * >, otawa::Identifier< elm::system::time_t >, otawa::Identifier< display::kind_t >, otawa::Identifier< typename P::Domain * >, otawa::Identifier< typename otawa::dfa::hai::FirstUnrollingFixPoint::FixPointState * >, otawa::Identifier< otawa::PCG * >, otawa::Identifier< otawa::BasicBlock * >, otawa::Identifier< elm::String >, otawa::Identifier< Processor * >, otawa::Identifier< otawa::tsim::TreePath< otawa::BasicBlock *, otawa::tsim::BBPath * > * >, otawa::Identifier< log_level_t >, otawa::Identifier< otawa::CEClass * >, otawa::Identifier< elm::io::elm::io::OutStream * >, otawa::Identifier< bool >, otawa::Identifier< otawa::AbstractParamIdentifier * >, otawa::Identifier< typename otawa::dfa::hai::WideningFixPoint::FixPointState * >, otawa::Identifier< elm::io::elm::io::Output * >, otawa::Identifier< otawa::Progress * >, otawa::Identifier< elm::CString >, otawa::Identifier< typename otawa::dfa::hai::DefaultFixPoint::FixPointState * >, otawa::Identifier< typename FixPoint::FixPointState * >, otawa::Identifier< otawa::Symbol * >, otawa::Identifier< otawa::display::ILPSystemAddon * >, otawa::Identifier< AbstractIdentifier * >, otawa::Identifier< elm::Pair >, and otawa::Identifier< otawa::arm::Info * >.
|
inline |
|
virtual |
Print the value of the given property in a formatted way, that is, possibly to perform re-scanning after.
For example, string are quoted and special character escaped.
out | Output to use. |
prop | Property to display. |
Reimplemented in otawa::Identifier< T >, otawa::Identifier< T >, otawa::Identifier< T >, otawa::Identifier< T >, otawa::Identifier< T >, otawa::Identifier< T >, otawa::Identifier< T >, otawa::Identifier< T >, otawa::Identifier< T >, otawa::Identifier< T >, otawa::Identifier< T >, otawa::Identifier< otawa::ccg::Node * >, otawa::Identifier< typename Problem::Domain * >, otawa::Identifier< dfa::BitSet * >, otawa::Identifier< double >, otawa::Identifier< otawa::CFG * >, otawa::Identifier< otawa::ast::AST * >, otawa::Identifier< elm::system::elm::sys::Path >, otawa::Identifier< otawa::Microprocessor< ExeNode > * >, otawa::Identifier< otawa::ccg::Collection * >, otawa::Identifier< Domain * >, otawa::Identifier< AbstractParamProcessor * >, otawa::Identifier< otawa::CFGInfo * >, otawa::Identifier< otawa::StatInfo * >, otawa::Identifier< int >, otawa::Identifier< T * >, otawa::Identifier< elm::sys::Path >, otawa::Identifier< otawa::PropList * >, otawa::Identifier< elm::genstruct::DLList * >, otawa::Identifier< elm::system::time_t >, otawa::Identifier< display::kind_t >, otawa::Identifier< typename P::Domain * >, otawa::Identifier< typename otawa::dfa::hai::FirstUnrollingFixPoint::FixPointState * >, otawa::Identifier< otawa::PCG * >, otawa::Identifier< otawa::BasicBlock * >, otawa::Identifier< elm::String >, otawa::Identifier< Processor * >, otawa::Identifier< otawa::tsim::TreePath< otawa::BasicBlock *, otawa::tsim::BBPath * > * >, otawa::Identifier< log_level_t >, otawa::Identifier< otawa::CEClass * >, otawa::Identifier< elm::io::elm::io::OutStream * >, otawa::Identifier< bool >, otawa::Identifier< otawa::AbstractParamIdentifier * >, otawa::Identifier< typename otawa::dfa::hai::WideningFixPoint::FixPointState * >, otawa::Identifier< elm::io::elm::io::Output * >, otawa::Identifier< otawa::Progress * >, otawa::Identifier< elm::CString >, otawa::Identifier< typename otawa::dfa::hai::DefaultFixPoint::FixPointState * >, otawa::Identifier< typename FixPoint::FixPointState * >, otawa::Identifier< otawa::Symbol * >, otawa::Identifier< otawa::display::ILPSystemAddon * >, otawa::Identifier< AbstractIdentifier * >, otawa::Identifier< elm::Pair >, and otawa::Identifier< otawa::arm::Info * >.
|
inline |
References printFormatted().
Referenced by printFormatted().
|
inherited |
Remove all the properties matching the given identifier.
id | Identifier of properties to remove. |
References otawa::Property::_next, and otawa::Property::next().
Referenced by otawa::LoopUnroller::unroll().
|
inherited |
Remove a property matching the given identifier.
id | Identifier of the property to remove. |
References otawa::Property::_next, and otawa::Property::next().
Referenced by otawa::PSTBuilder::buildTree(), otawa::BBRemover< T >::clean(), otawa::display::CFGOutput::processCFG(), otawa::SubCFGBuilder::processWorkSpace(), otawa::Ref< T, I >::remove(), and otawa::ContextualPath::Ref< T >::remove().
|
inlineinherited |
References otawa::PropList::removeProp().
Referenced by otawa::PropList::removeProp().
|
virtual |
Serialize the workspace to the current serializer.
In the default implementation, do nothing.
prop | Property containing the value to serialize. |
serializer | Serializer to serialize to. |
|
inherited |
Set the property in the property list removing any double.
prop | Property to set. |
References otawa::Property::_next, otawa::Property::id(), and otawa::Property::next().
|
inlineinherited |
References otawa::PropList::setProp().
Referenced by otawa::PropList::setProp().
|
virtual |
Get the identifier of data linked with this property.
It may return Type::no_type ever meaning that the identifier does not support type system or that it is just a flag without associated data.
Reimplemented in otawa::Identifier< T >, otawa::Identifier< otawa::ccg::Node * >, otawa::Identifier< typename Problem::Domain * >, otawa::Identifier< dfa::BitSet * >, otawa::Identifier< double >, otawa::Identifier< otawa::CFG * >, otawa::Identifier< otawa::ast::AST * >, otawa::Identifier< elm::system::elm::sys::Path >, otawa::Identifier< otawa::Microprocessor< ExeNode > * >, otawa::Identifier< otawa::ccg::Collection * >, otawa::Identifier< Domain * >, otawa::Identifier< AbstractParamProcessor * >, otawa::Identifier< otawa::CFGInfo * >, otawa::Identifier< otawa::StatInfo * >, otawa::Identifier< int >, otawa::Identifier< T * >, otawa::Identifier< elm::sys::Path >, otawa::Identifier< otawa::PropList * >, otawa::Identifier< elm::genstruct::DLList * >, otawa::Identifier< elm::system::time_t >, otawa::Identifier< display::kind_t >, otawa::Identifier< typename P::Domain * >, otawa::Identifier< typename otawa::dfa::hai::FirstUnrollingFixPoint::FixPointState * >, otawa::Identifier< otawa::PCG * >, otawa::Identifier< otawa::BasicBlock * >, otawa::Identifier< elm::String >, otawa::Identifier< Processor * >, otawa::Identifier< otawa::tsim::TreePath< otawa::BasicBlock *, otawa::tsim::BBPath * > * >, otawa::Identifier< log_level_t >, otawa::Identifier< otawa::CEClass * >, otawa::Identifier< elm::io::elm::io::OutStream * >, otawa::Identifier< bool >, otawa::Identifier< otawa::AbstractParamIdentifier * >, otawa::Identifier< typename otawa::dfa::hai::WideningFixPoint::FixPointState * >, otawa::Identifier< elm::io::elm::io::Output * >, otawa::Identifier< otawa::Progress * >, otawa::Identifier< elm::CString >, otawa::Identifier< typename otawa::dfa::hai::DefaultFixPoint::FixPointState * >, otawa::Identifier< typename FixPoint::FixPointState * >, otawa::Identifier< otawa::Symbol * >, otawa::Identifier< otawa::display::ILPSystemAddon * >, otawa::Identifier< AbstractIdentifier * >, otawa::Identifier< elm::Pair >, and otawa::Identifier< otawa::arm::Info * >.
References otawa::Type::no_type.
|
virtual |
Unserialize the workspace to the current unserializer.
In the default implementation, do nothing.
unserializer | Unserializer to unserialize to. |
|
friend |
|
staticinherited |
This is an empty proplist for convenience.
|
private |
Referenced by AbstractIdentifier(), initialize(), name(), and print().