27#ifndef _ODDBGRAPH_H_INCLUDED_
28#define _ODDBGRAPH_H_INCLUDED_
97 void*
data()
const {
return m_pData; }
105 void* pData) { m_pData = pData; }
110 int numOut()
const {
return m_outgoing.size(); }
115 int numIn()
const {
return m_incoming.size(); }
126 int refIndex)
const {
return m_incoming.at(refIndex); }
136 int refIndex)
const {
return m_outgoing.at(refIndex); }
204 OdUInt8 flags)
const {
return ((m_flags & flags)==flags); }
341 int refIndex)
const {
return m_cycleIn[refIndex]; }
356 int refIndex)
const {
return m_cycleOut[refIndex]; }
386 throw OdError(eInvalidOwnerObject);
427 int initPhysicalLength = 0,
428 int initGrowLength = 8)
429 : m_stack(initPhysicalLength, initGrowLength) {}
452 m_stack.removeLast();
470 bool isEmpty()
const {
return m_stack.empty(); }
512 int nodeIndex)
const {
return m_nodes.at(nodeIndex); }
656 void setDirty() { m_bDirty =
true; }
657 bool isDirty()
const {
return m_bDirty; }
OdSmartPtr< OdDbGraphNode > OdDbGraphNodePtr
OdArray< OdDbGraphNode *, OdMemoryAllocator< OdDbGraphNode * > > OdDbGraphNodeArray
#define GETBIT(flags, bit)
typename OdMemoryAllocator< OdDbGraphNode * >::size_type size_type
void getOutgoing(OdDbGraphNodeArray &outgoing)
void clearAll(OdUInt8 flags)
OdDbGraphNode * node(int nodeIndex) const
friend class OdDbGraphNode
void addNode(OdDbGraphNode *pNode)
void delNode(OdDbGraphNode *pNode)
void breakCycleEdge(OdDbGraphNode *pFrom, OdDbGraphNode *pTo)
void addEdge(OdDbGraphNode *pFrom, OdDbGraphNode *pTo)
virtual bool findCycles(OdDbGraphNode *pStart=0)
OdDbGraphNode * rootNode() const
OdDbGraph * owner() const
friend struct if_leaf_push_to
bool isMarkedAs(OdUInt8 flags) const
OdDbGraphNode * cycleIn(int refIndex) const
void addRefTo(OdDbGraphNode *pTo)
void markAs(OdUInt8 flags)
friend struct clear_cycles
OdDbGraphNode * nextCycleNode() const
void clear(OdUInt8 flags)
void setData(void *pData)
OdDbGraphNode * cycleOut(int refIndex) const
void removeRefTo(OdDbGraphNode *pNode)
OdDbGraphNode * out(int refIndex) const
OdDbGraphNode * in(int refIndex) const
void markTree(OdUInt8 flags, OdDbGraphNodeArray *pNodeArray=0)
ODRX_DECLARE_MEMBERS(OdDbGraphNode)
friend void break_edge(OdDbGraphNode *, OdDbGraphNode *)
OdDbGraphStack(int initPhysicalLength=0, int initGrowLength=8)
OdDbGraphNode * top() const
void push(OdDbGraphNode *pNode)