Otawa
0.10
|
Abstract form of a parametric processor. More...
#include <otawa/proc/ParamProcessor.h>
Public Member Functions | |
AbstractParamProcessor (cstring name, Version version) | |
virtual | ~AbstractParamProcessor (void) |
virtual Processor * | instantiate (const ActualFeature &feature) const =0 |
Called to instantiate a processor. More... | |
const Version & | version (void) const |
Get the version of the parametric processor. More... | |
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 Attributes | |
Version | vers |
Abstract form of a parametric processor.
|
virtual |
|
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(), otawa::AbstractIdentifier::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 * >.
References otawa::AbstractIdentifier::copy().
Referenced by otawa::AbstractIdentifier::copy().
|
virtualinherited |
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().
|
staticinherited |
Find an abstract identifier by its name.
name | Name of the looked identifier. |
Referenced by otawa::ProcessorPlugin::getIdentifier(), and otawa::Application::run().
|
virtualinherited |
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 otawa::AbstractIdentifier::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().
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 otawa::AbstractIdentifier::AbstractIdentifier().
|
pure virtual |
Called to instantiate a processor.
Must be overloaded by subclasses.
feature | Actual feature of the instantiation. |
Implemented in otawa::ParamProcessor.
Referenced by otawa::ActualFeature::process().
|
inlineinherited |
Get the string name of the identifier.
References otawa::AbstractIdentifier::nam.
Referenced by otawa::AlternativeProcessor::AlternativeProcessor(), otawa::AbstractIdentifier::fromString(), otawa::ParamProcessor::instantiate(), otawa::UnsupportedFeatureException::message(), otawa::UnavailableFeatureException::message(), and otawa::WorkSpace::provide().
|
inherited |
|
virtualinherited |
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 * >.
|
inlineinherited |
References otawa::AbstractIdentifier::print().
Referenced by otawa::AbstractIdentifier::print().
|
virtualinherited |
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 * >.
|
inlineinherited |
References otawa::AbstractIdentifier::printFormatted().
Referenced by otawa::AbstractIdentifier::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().
|
virtualinherited |
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().
|
virtualinherited |
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.
|
virtualinherited |
Unserialize the workspace to the current unserializer.
In the default implementation, do nothing.
unserializer | Unserializer to unserialize to. |
|
inline |
Get the version of the parametric processor.
References vers.
Referenced by otawa::ParamProcessor::instantiate().
|
staticinherited |
This is an empty proplist for convenience.