23 #include <smart_ptr.h> 25 #ifndef _libint2_src_bin_libint_dgarc_h_ 26 #define _libint2_src_bin_libint_dgarc_h_ 30 class RecurrenceRelation;
36 SafePtr<DGVertex> orig_;
37 SafePtr<DGVertex> dest_;
40 DGArc(
const SafePtr<DGVertex>& orig,
const SafePtr<DGVertex>& dest);
43 SafePtr<DGVertex> orig()
const {
return orig_; }
44 SafePtr<DGVertex> dest()
const {
return dest_; }
47 virtual void print(std::ostream& os)
const =0;
56 DGArcDirect(
const SafePtr<DGVertex>& orig,
const SafePtr<DGVertex>& dest) :
DGArc(orig,dest) {}
60 void print(std::ostream& os)
const 62 os <<
"DGArcDirect: connects " << orig().get() <<
" to " << dest().get();
74 virtual SafePtr<RecurrenceRelation>
rr()
const =0;
77 DGArcRR(
const SafePtr<DGVertex>& orig,
const SafePtr<DGVertex>& dest);
90 DGArcRel(
const SafePtr<DGVertex>& orig,
const SafePtr<DGVertex>& dest,
91 const SafePtr<ArcRel>& rel);
95 SafePtr<RecurrenceRelation>
rr()
const {
return dynamic_pointer_cast<RecurrenceRelation,ArcRel>(rel_); }
97 void print(std::ostream& os)
const 99 os <<
"DGArcRel<T>: connects " << orig().get() <<
" to " << dest().get() << std::endl;
104 template <
class ArcRel>
105 DGArcRel<ArcRel>::DGArcRel(
const SafePtr<DGVertex>& orig,
const SafePtr<DGVertex>& dest,
106 const SafePtr<ArcRel>& rel) :
107 DGArcRR(orig,dest), rel_(rel)
111 template <
class ArcRel>
112 DGArcRel<ArcRel>::~DGArcRel()
virtual void print(std::ostream &os) const =0
Print out the arc.
Defaults definitions for various parameters assumed by Libint.
Definition: algebra.cc:24
void print(std::ostream &os) const
Overload of DGArc::print()
Definition: dgarc.h:97
virtual SafePtr< RecurrenceRelation > rr() const =0
rr() returns pointer to the RecurrenceRelation describing the arc
Class DGArcRR describes arcs correspond to recurrence relations.
Definition: dgarc.h:68
SafePtr< RecurrenceRelation > rr() const
Implementation of DGArcRR::rr()
Definition: dgarc.h:95
Class DGArc describes arcs in a directed graph.
Definition: dgarc.h:34
Class DGArcRel describes arcs in a directed graph which is represented by a relationship ArcRel.
Definition: dg.h:44
Class DGArcDirect describes arcs that does not correspond to any relationship.
Definition: dgarc.h:53
void print(std::ostream &os) const
Overload of DGArc::print()
Definition: dgarc.h:60