44 return (index >= _passes.size()) ?
nullptr : _passes.at(index).get();
49 if(pass && conditional)
52 _passes.push_back(std::move(pass));
63 for(
auto &
pass : _passes)
75 for(
auto &
pass : _passes)
87 if(index >= _passes.size())
92 auto &
pass = _passes.at(index);
IGraphMutator * pass(size_t index)
Accessor of a pass at a given index.
void run_index(Graph &g, size_t index)
Runs a specific mutation pass on a given graph.
decltype(strategy::transforms) typedef type
#define ARM_COMPUTE_LOG_GRAPH_INFO(x)
Copyright (c) 2017-2021 Arm Limited.
virtual void mutate(Graph &g)=0
Walk the graph and perform a specific mutation.
void clear()
Clears all the passes.
PassManager()
Constructor.
virtual const char * name()=0
Returns mutator name.
void run_type(Graph &g, IGraphMutator::MutationType type)
Runs a mutation passes of a specific type on a given graph.
void append(std::unique_ptr< IGraphMutator > pass, bool conditional=true)
Appends a mutation pass.
virtual MutationType type() const =0
Returns mutation type.
const std::vector< std::unique_ptr< IGraphMutator > > & passes() const
Mutation passes accessors.
MutationType
Mutation type.
#define ARM_COMPUTE_LOG_GRAPH_VERBOSE(x)
void run_all(Graph &g)
Runs all the mutation passes on a given graph.