OpenASIP  2.0
Public Types | Public Member Functions | Protected Member Functions | List of all members
GraphBase< GraphNode, GraphEdge > Class Template Referenceabstract

#include <Graph.hh>

Inheritance diagram for GraphBase< GraphNode, GraphEdge >:
Inheritance graph
Collaboration diagram for GraphBase< GraphNode, GraphEdge >:
Collaboration graph

Public Types

typedef std::set< GraphNode *, typename GraphNode::ComparatorNodeSet
 
typedef std::set< GraphEdge *, typename GraphEdge::ComparatorEdgeSet
 
typedef GraphNode Node
 Node type of this graph (possibly, a base class). More...
 
typedef GraphEdge Edge
 Edge type of this graph (possibly, a base class). More...
 

Public Member Functions

 GraphBase ()
 
virtual ~GraphBase ()
 
virtual int nodeCount () const =0
 
virtual int edgeCount () const =0
 
virtual Nodenode (const int index) const =0
 
virtual Edgeedge (const int index) const =0
 
virtual int outDegree (const Node &node) const =0
 
virtual int inDegree (const Node &node) const =0
 
virtual EdgeoutEdge (const Node &node, const int index) const =0
 
virtual EdgeinEdge (const Node &node, const int index) const =0
 
virtual EdgeSet outEdges (const Node &node) const =0
 
virtual EdgeSet inEdges (const Node &node) const =0
 
virtual NodetailNode (const Edge &edge) const =0
 
virtual NodeheadNode (const Edge &edge) const =0
 
virtual bool hasEdge (const Node &nTail, const Node &nHead) const =0
 
virtual EdgeSet connectingEdges (const Node &nTail, const Node &nHead) const =0
 
virtual TCEString dotString () const
 
virtual void writeToDotFile (const TCEString &fileName) const
 
virtual void addNode (Node &node)=0
 
virtual void removeNode (Node &node)=0
 
virtual void removeEdge (Edge &e)=0
 
virtual void connectNodes (const Node &nTail, const Node &nHead, Edge &e)=0
 
virtual void disconnectNodes (const Node &nTail, const Node &nHead)=0
 
virtual const TCEStringname () const =0
 

Protected Member Functions

virtual bool hasNode (const Node &) const =0
 

Detailed Description

template<typename GraphNode, typename GraphEdge>
class GraphBase< GraphNode, GraphEdge >

Graph base interface shared by all clients within the project.

Templated interface with node and edge types as parameters. If an implementation of this interface deals with multiple types of nodes, all types must share a common base type. Ditto for edges.

Definition at line 51 of file Graph.hh.

Member Typedef Documentation

◆ Edge

template<typename GraphNode , typename GraphEdge >
typedef GraphEdge GraphBase< GraphNode, GraphEdge >::Edge

Edge type of this graph (possibly, a base class).

Definition at line 62 of file Graph.hh.

◆ EdgeSet

template<typename GraphNode , typename GraphEdge >
typedef std::set<GraphEdge*, typename GraphEdge::Comparator > GraphBase< GraphNode, GraphEdge >::EdgeSet

Definition at line 54 of file Graph.hh.

◆ Node

template<typename GraphNode , typename GraphEdge >
typedef GraphNode GraphBase< GraphNode, GraphEdge >::Node

Node type of this graph (possibly, a base class).

Definition at line 60 of file Graph.hh.

◆ NodeSet

template<typename GraphNode , typename GraphEdge >
typedef std::set<GraphNode*, typename GraphNode::Comparator > GraphBase< GraphNode, GraphEdge >::NodeSet

Definition at line 53 of file Graph.hh.

Constructor & Destructor Documentation

◆ GraphBase()

template<typename GraphNode , typename GraphEdge >
GraphBase< GraphNode, GraphEdge >::GraphBase ( )
inline

Definition at line 56 of file Graph.hh.

56 {}

◆ ~GraphBase()

template<typename GraphNode , typename GraphEdge >
virtual GraphBase< GraphNode, GraphEdge >::~GraphBase ( )
inlinevirtual

Definition at line 57 of file Graph.hh.

57 {}

Member Function Documentation

◆ addNode()

template<typename GraphNode , typename GraphEdge >
virtual void GraphBase< GraphNode, GraphEdge >::addNode ( Node node)
pure virtual

◆ connectingEdges()

template<typename GraphNode , typename GraphEdge >
virtual EdgeSet GraphBase< GraphNode, GraphEdge >::connectingEdges ( const Node nTail,
const Node nHead 
) const
pure virtual

◆ connectNodes()

template<typename GraphNode , typename GraphEdge >
virtual void GraphBase< GraphNode, GraphEdge >::connectNodes ( const Node nTail,
const Node nHead,
Edge e 
)
pure virtual

◆ disconnectNodes()

template<typename GraphNode , typename GraphEdge >
virtual void GraphBase< GraphNode, GraphEdge >::disconnectNodes ( const Node nTail,
const Node nHead 
)
pure virtual

◆ dotString()

template<typename GraphNode , typename GraphEdge >
virtual TCEString GraphBase< GraphNode, GraphEdge >::dotString ( ) const
virtual

◆ edge()

template<typename GraphNode , typename GraphEdge >
virtual Edge& GraphBase< GraphNode, GraphEdge >::edge ( const int  index) const
pure virtual

◆ edgeCount()

template<typename GraphNode , typename GraphEdge >
virtual int GraphBase< GraphNode, GraphEdge >::edgeCount ( ) const
pure virtual

◆ hasEdge()

template<typename GraphNode , typename GraphEdge >
virtual bool GraphBase< GraphNode, GraphEdge >::hasEdge ( const Node nTail,
const Node nHead 
) const
pure virtual

◆ hasNode()

template<typename GraphNode , typename GraphEdge >
virtual bool GraphBase< GraphNode, GraphEdge >::hasNode ( const Node ) const
protectedpure virtual

◆ headNode()

template<typename GraphNode , typename GraphEdge >
virtual Node& GraphBase< GraphNode, GraphEdge >::headNode ( const Edge edge) const
pure virtual

◆ inDegree()

template<typename GraphNode , typename GraphEdge >
virtual int GraphBase< GraphNode, GraphEdge >::inDegree ( const Node node) const
pure virtual

◆ inEdge()

template<typename GraphNode , typename GraphEdge >
virtual Edge& GraphBase< GraphNode, GraphEdge >::inEdge ( const Node node,
const int  index 
) const
pure virtual

◆ inEdges()

template<typename GraphNode , typename GraphEdge >
virtual EdgeSet GraphBase< GraphNode, GraphEdge >::inEdges ( const Node node) const
pure virtual

◆ name()

template<typename GraphNode , typename GraphEdge >
virtual const TCEString& GraphBase< GraphNode, GraphEdge >::name ( ) const
pure virtual

◆ node()

template<typename GraphNode , typename GraphEdge >
virtual Node& GraphBase< GraphNode, GraphEdge >::node ( const int  index) const
pure virtual

◆ nodeCount()

template<typename GraphNode , typename GraphEdge >
virtual int GraphBase< GraphNode, GraphEdge >::nodeCount ( ) const
pure virtual

◆ outDegree()

template<typename GraphNode , typename GraphEdge >
virtual int GraphBase< GraphNode, GraphEdge >::outDegree ( const Node node) const
pure virtual

◆ outEdge()

template<typename GraphNode , typename GraphEdge >
virtual Edge& GraphBase< GraphNode, GraphEdge >::outEdge ( const Node node,
const int  index 
) const
pure virtual

◆ outEdges()

template<typename GraphNode , typename GraphEdge >
virtual EdgeSet GraphBase< GraphNode, GraphEdge >::outEdges ( const Node node) const
pure virtual

◆ removeEdge()

template<typename GraphNode , typename GraphEdge >
virtual void GraphBase< GraphNode, GraphEdge >::removeEdge ( Edge e)
pure virtual

◆ removeNode()

template<typename GraphNode , typename GraphEdge >
virtual void GraphBase< GraphNode, GraphEdge >::removeNode ( Node node)
pure virtual

◆ tailNode()

template<typename GraphNode , typename GraphEdge >
virtual Node& GraphBase< GraphNode, GraphEdge >::tailNode ( const Edge edge) const
pure virtual

◆ writeToDotFile()

template<typename GraphNode , typename GraphEdge >
virtual void GraphBase< GraphNode, GraphEdge >::writeToDotFile ( const TCEString fileName) const
virtual

Referenced by LoopAnalyzer::analyze(), ResourceConstraintAnalyzer::analyze(), ResourceConstraintAnalyzer::analyzeRegisterAntideps(), BFOptimization::assign(), BFOptimization::assignCopyToPrologEpilog(), LLVMTCEDataDependenceGraphBuilder::buildFromCFG(), BUMoveNodeSelector::BUMoveNodeSelector(), BUBasicBlockScheduler::bypassNode(), BUMoveNodeSelector::candidates(), BFOptimization::checkPrologDDG(), llvm::LLVMTCEIRBuilder::compileOptimized(), ProgramDependenceGraph::computeRelations(), DataDependenceGraphBuilder::constructIndividualBB(), CriticalPathBBMoveNodeSelector::CriticalPathBBMoveNodeSelector(), BasicBlockPass::ddgSnapshot(), BasicBlockScheduler::ddgSnapshot(), MoveNodeDuplicator::dumpDDG(), BUBasicBlockScheduler::finalizeSchedule(), BUBasicBlockScheduler::findBypassDestinations(), SimpleIfConverter::handleControlFlowGraph(), BUBasicBlockScheduler::handleDDG(), BasicBlockScheduler::handleDDG(), BF2Scheduler::handleDDG(), BUBasicBlockScheduler::handleLoopDDG(), BasicBlockScheduler::handleLoopDDG(), BF2Scheduler::handleLoopDDG(), BBSchedulerController::handleProcedure(), BUMoveNodeSelector::initializeReadylist(), CriticalPathBBMoveNodeSelector::notifyScheduled(), BFLateBypassGuard::operator()(), BFPostpassBypass::operator()(), BFPushMoveUp::operator()(), BFScheduleBU::operator()(), ResourceConstraintAnalyzer::optimalScheduleResourceUsage(), DataDependenceGraphBuilder::processTriggerPO(), BFUnscheduleMove::returnOriginal(), BFUnscheduleFromBody::returnOriginal(), BF2Scheduler::revertBBLiveRangeBookkeepingForDestination(), BF2Scheduler::revertBBLiveRangeBookkeepingForSource(), InstructionPatternAnalyzer::runOnMachineFunction(), BF2Scheduler::scheduleDDG(), BF2ScheduleFront::scheduleFrontFromMove(), BUBasicBlockScheduler::scheduleInputOperandTempMoves(), BasicBlockScheduler::scheduleMove(), BUBasicBlockScheduler::scheduleMove(), BasicBlockScheduler::scheduleOperandWrites(), BasicBlockScheduler::scheduleOperation(), BUBasicBlockScheduler::scheduleOperation(), BasicBlockScheduler::scheduleRRMove(), BUBasicBlockScheduler::scheduleRRMove(), BUBasicBlockScheduler::scheduleRRTempMoves(), SimpleIfConverter::successors(), BUBasicBlockScheduler::undoBypass(), BFLateBypass::undoOnlyMe(), BFUnscheduleFromBody::unscheduleOriginal(), BFUnscheduleMove::unscheduleOriginal(), OperationDAGDialog::updateDAG(), and llvm::LLVMTCEIRBuilder::writeMachineFunction().


The documentation for this class was generated from the following file: