Otawa
0.10
|
A parametric processor allows to generate processor for parametric feature. More...
#include <otawa/proc/ParamProcessor.h>
Classes | |
class | AbstractMaker |
class | Maker |
Public Member Functions | |
ParamProcessor (cstring name, Version version, AbstractMaker *maker) | |
~ParamProcessor (void) | |
virtual Processor * | instantiate (const ActualFeature &feature) const |
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 | |
AbstractMaker * | _maker |
A parametric processor allows to generate processor for parametric feature.
The actual processor is passed to the constructor using an instance of AbstractMaker class.
To use it, we have to define the parametric processor in the header file as:
In the source file, we have to do:
|
inline |
name | Name of the parametric processor. |
version | Version of the parametric processor. |
maker | Processor maker. |
|
inline |
References _maker.
|
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().
|
inlinevirtual |
Called to instantiate a processor.
Must be overloaded by subclasses.
feature | Actual feature of the instantiation. |
Implements otawa::AbstractParamProcessor.
References _maker, otawa::ParamProcessor::AbstractMaker::instantiate(), otawa::AbstractIdentifier::name(), and otawa::AbstractParamProcessor::version().
|
inlineinherited |
Get the string name of the identifier.
References otawa::AbstractIdentifier::nam.
Referenced by otawa::AlternativeProcessor::AlternativeProcessor(), otawa::AbstractIdentifier::fromString(), 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. |
|
inlineinherited |
Get the version of the parametric processor.
References otawa::AbstractParamProcessor::vers.
Referenced by instantiate().
|
private |
Referenced by instantiate(), and ~ParamProcessor().
|
staticinherited |
This is an empty proplist for convenience.