LIBINT
2.1.0-stable
|
AlgebraicOperator is an algebraic operator that acts on objects of type T. More...
#include <algebra.h>
Public Types | |
typedef algebra::OperatorTypes | OperatorTypes |
typedef algebra::OperatorTypes::OperatorType | OperatorType |
![]() | |
typedef MemoryManager::Address | Address |
The address on the stack during computation is described using this type. | |
typedef MemoryManager::Size | Size |
The size of a block the stack during computation is described using this type. | |
typedef NotSet< Address > | AddressNotSet |
Exception thrown if address is not set. | |
typedef NotSet< std::string > | GraphLabelNotSet |
Exception thrown if graph label is not set. | |
typedef NotSet< std::string > | SymbolNotSet |
Exception thrown if code symbol is not set. | |
typedef KeyTypes::ClassID | ClassID |
Type identifier. | |
typedef KeyTypes::InstanceID | InstanceID |
Instance identifier. | |
typedef KeyTypes::InstanceID | KeyType |
DGVertex provides function key() which computes key of type KeyType and returns it using KeyReturnType. | |
typedef Hashable< KeyType, ComputeKey >::KeyReturnType | KeyReturnType |
typedef std::list< SafePtr< DGArc > > | ArcSetType |
ArcSetType is a container used to maintain entry and exit arcs. | |
![]() | |
typedef KeyTraits< KeyTypes::InstanceID >::ReturnType | KeyReturnType |
Public Member Functions | |
AlgebraicOperator (OperatorType OT, const SafePtr< T > &left, const SafePtr< T > &right) | |
AlgebraicOperator (const SafePtr< AlgebraicOperator > &A, const SafePtr< T > &left, const SafePtr< T > &right) | |
Clone A but replace operands with left and right. | |
OperatorType | type () const |
Returns the OperatorType. | |
const SafePtr< T > & | left () const |
Returns the left argument. | |
const SafePtr< T > & | right () const |
Returns the right argument. | |
void | add_exit_arc (const SafePtr< DGArc > &a) |
Overloads DGVertex::add_exit_arc(). The default definition is used unless T = DGVertex (see algebra.cc) | |
unsigned int | size () const |
Implements DGVertex::size() | |
bool | equiv (const SafePtr< DGVertex > &a) const |
Implements DGVertex::equiv() | |
bool | operator== (const SafePtr< AlgebraicOperator > &a) const |
laboriously compare 2 operators element by element | |
const std::string & | label () const |
Implements DGVertex::label() | |
const std::string & | id () const |
Implements DGVertex::id() | |
std::string | description () const |
Implements DGVertex::description() | |
void | del_exit_arcs () |
Overloads DGVertex::del_exit_arcs() | |
DGVertex::KeyReturnType | key () const |
Implements Hashable::key() | |
void | print (std::ostream &os) const |
print(os) prints vertex info to os | |
template<> | |
void | add_exit_arc (const SafePtr< DGArc > &a) |
add_exit_arc(arc) adds arc as an arc connecting to children of this vertex. More... | |
![]() | |
DGVertex (ClassID tid) | |
Sets typeid to tid. | |
DGVertex (ClassID tid, const std::vector< SafePtr< DGArc > > &parents, const std::vector< SafePtr< DGArc > > &children) | |
Sets typeid to tid. | |
DGVertex (const DGVertex &v) | |
This is a copy constructor. | |
void | make_a_target () |
make_a_target() marks this vertex as a target | |
bool | is_a_target () const |
is_a_target() returns true if this vertex is a target | |
void | replace_exit_arc (const SafePtr< DGArc > &A, const SafePtr< DGArc > &B) |
replace_exit_arc() replaces A with B. More... | |
void | detach () |
this function detaches the vertex from other vertices. More... | |
const ArcSetType & | exit_arcs () const |
const ArcSetType & | entry_arcs () const |
unsigned int | num_entry_arcs () const |
returns the number of parents | |
ArcSetType::const_iterator | first_entry_arc () const |
returns parents::begin() | |
ArcSetType::const_iterator | plast_entry_arc () const |
returns parents::end() | |
unsigned int | num_exit_arcs () const |
returns the number of children | |
ArcSetType::const_iterator | first_exit_arc () const |
returns children::begin() | |
ArcSetType::const_iterator | plast_exit_arc () const |
returns children::end() | |
const SafePtr< DGArc > & | exit_arc (const SafePtr< DGVertex > &v) const |
return arc connecting this to v, otherwise null pointer | |
bool | precomputed () const |
precomputed() returns whether this DGVertex is precomputed. More... | |
const DirectedGraph * | dg () const |
Returns pointer to the DirectedGraph to which this DGVertex belongs to. | |
void | dg (const DirectedGraph *d) |
Sets pointer to the DirectedGraph to which this DGVertex belongs to. Should be used with utmost caution. | |
const std::string & | graph_label () const |
returns the label used for this vertex when visualizing graph. can throw GraphLabelNotSet. | |
void | set_graph_label (const std::string &graph_label) |
sets the graph label | |
const SafePtr< DRTree > & | subtree () const |
Returns the subtree to which this vertex belongs. | |
void | refer_this_to (const SafePtr< DGVertex > &V) |
refer_this_to(V) makes this vertex act like a reference to V so that calls to symbol() and address() report code symbol and stack address of V | |
bool | refers_to_another () const |
refers to another vertex? | |
const std::string & | symbol () const |
returns the code symbol. can throw SymbolNotSet | |
void | set_symbol (const std::string &symbol) |
sets the code symbol | |
bool | symbol_set () const |
returns true if the symbol has been set | |
void | reset_symbol () |
this function void the symbol, i.e. it is no longer set after calling this member | |
Address | address () const |
returns the address of this quantity on Libint's stack. can throw AddressNotSet | |
void | set_address (const Address &address) |
sets the address of this quantity on Libint's stack | |
bool | address_set () const |
returns true if the address has been set | |
void | need_to_compute (bool ntc) |
indicates whether this vertex needs to be computed. More... | |
void | not_need_to_compute () |
shortcut to need_to_compute(false) | |
bool | need_to_compute () const |
returns true if this index needs to be computed. | |
bool | declared () const |
void | declared (bool d) |
void | prepare_to_traverse () |
prepare_to_traverse() must be called before traversal of the graph starts | |
unsigned int | tag () |
tag() tags the vertex and returns the total number of tags this vertex has received | |
void | schedule () |
schedule() marks the vertex as scheduled, hence its code exists | |
bool | scheduled () const |
scheduled() returns true if the vertex has been scheduled | |
SafePtr< DGVertex > | postcalc () const |
Returns pointer to vertex to be computed after this vertex, 0 if this is the last vertex. | |
void | set_postcalc (const SafePtr< DGVertex > &postcalc) |
Sets postcalc. | |
void | reset () |
Resets the vertex, releasing all arcs. | |
virtual void | unregister () const |
If vertex is a singleton then remove it from the SingletonManager. Must be reimplemented in derived singleton class. | |
Additional Inherited Members | |
![]() | |
ClassID | typeid_ |
typeid stores the ClassID of the concrete type. More... | |
InstanceID | instid_ |
instid stores the InstanceID of the object. More... | |
![]() | |
KeyStore< KeyTypes::InstanceID, OwnKey< KeyMP >::result > | key_ |
AlgebraicOperator is an algebraic operator that acts on objects of type T.
An algebraic operator has 2 arguments, to the left and to the right ( L oper R ).
|
virtual |
add_exit_arc(arc) adds arc as an arc connecting to children of this vertex.
Thus, arcs are owned by their PARENTS. This function is virtual because certain types of vertices have duplicate references to children in their definition (such as AlgebraicOperator). Such DGVertices need to update their private members.
Reimplemented from libint2::DGVertex.
References libint2::DGVertex::add_exit_arc().