|
LIBINT 2.7.2
|
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 |
Public Types inherited from libint2::DGVertex | |
| 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. | |
Public Types inherited from libint2::Hashable< KeyTypes::InstanceID, ComputeKey > | |
| 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) override |
| Overloads DGVertex::add_exit_arc(). The default definition is used unless T = DGVertex (see algebra.cc) More... | |
| unsigned int | size () const override |
| Implements DGVertex::size() More... | |
| bool | equiv (const SafePtr< DGVertex > &a) const override |
| Implements DGVertex::equiv() More... | |
| bool | operator== (const SafePtr< AlgebraicOperator > &a) const |
| laboriously compare 2 operators element by element | |
| const std::string & | label () const override |
| Implements DGVertex::label() More... | |
| const std::string & | id () const override |
| Implements DGVertex::id() More... | |
| std::string | description () const override |
| Implements DGVertex::description() More... | |
| void | del_exit_arcs () override |
| Overloads DGVertex::del_exit_arcs() More... | |
| DGVertex::KeyReturnType | key () const override |
| Implements Hashable::key() More... | |
| void | print (std::ostream &os) const override |
| print(os) prints vertex info to os More... | |
| void | add_exit_arc (const SafePtr< DGArc > &a) |
| add_exit_arc(arc) adds arc as an arc connecting to children of this vertex. More... | |
Public Member Functions inherited from libint2::DGVertex | |
| 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 | |
| virtual void | add_exit_arc (const SafePtr< DGArc > &) |
| add_exit_arc(arc) adds arc as an arc connecting to children of this vertex. More... | |
| virtual void | del_exit_arcs () |
| del_exit_arcs() removes all exit arcs from this and corresponding children vertices. More... | |
| 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 | |
| virtual KeyReturnType | key () const =0 |
| computes key More... | |
| virtual bool | equiv (const SafePtr< DGVertex > &) const =0 |
| equiv(const DGVertex* aVertex) returns true if this vertex is equivalent to *aVertex. More... | |
| bool | precomputed () const |
| precomputed() returns whether this DGVertex is precomputed. More... | |
| virtual unsigned int | size () const =0 |
| Returns the amount of memory (in floating-point words) to be allocated for the vertex. More... | |
| virtual const std::string & | label () const =0 |
| label() returns a unique, short, descriptive label of DGVertex (e.g. More... | |
| virtual const std::string & | id () const =0 |
| id() returns a very short label of DGVertex which is (almost) guaranteed to be a symbol (e.g. More... | |
| virtual std::string | description () const =0 |
| description() returns a full, human-readable description of DGVertex (e.g. More... | |
| virtual void | print (std::ostream &os) const |
| print(os) prints vertex info to os 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. More... | |
| virtual bool | this_precomputed () const =0 |
| this_precomputed() is used by precomputed() to determine whether this object really is precomputed. More... | |
| virtual KeyReturnType | key () const=0 |
Additional Inherited Members | |
Public Attributes inherited from libint2::DGVertex | |
| ClassID | typeid_ |
| typeid stores the ClassID of the concrete type. More... | |
| InstanceID | instid_ |
| instid stores the InstanceID of the object. More... | |
Protected Attributes inherited from libint2::Hashable< KeyTypes::InstanceID, ComputeKey > | |
| 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().
|
overridevirtual |
Overloads DGVertex::add_exit_arc(). The default definition is used unless T = DGVertex (see algebra.cc)
Reimplemented from libint2::DGVertex.
|
inlineoverridevirtual |
Overloads DGVertex::del_exit_arcs()
Reimplemented from libint2::DGVertex.
|
inlineoverridevirtual |
Implements DGVertex::description()
Implements libint2::DGVertex.
Referenced by libint2::AlgebraicOperator< T >::equiv().
|
inlineoverridevirtual |
Implements DGVertex::equiv()
Implements libint2::DGVertex.
References libint2::AlgebraicOperator< T >::description(), libint2::AlgebraicOperator< T >::key(), and libint2::DGVertex::typeid_.
|
inlineoverridevirtual |
Implements DGVertex::id()
Implements libint2::DGVertex.
References libint2::AlgebraicOperator< T >::label().
|
inlineoverridevirtual |
Implements Hashable::key()
Implements libint2::DGVertex.
Referenced by libint2::AlgebraicOperator< T >::equiv().
|
inlineoverridevirtual |
Implements DGVertex::label()
Implements libint2::DGVertex.
Referenced by libint2::AlgebraicOperator< T >::id().
|
inlineoverridevirtual |
print(os) prints vertex info to os
Reimplemented from libint2::DGVertex.
References libint2::DGVertex::print().
|
inlineoverridevirtual |
Implements DGVertex::size()
Implements libint2::DGVertex.