2 #include "edgelist.h"
\r
12 EdgeList::~EdgeList()
\r
17 void EdgeList::Clear()
\r
27 void EdgeList::Add(unsigned uNode1, unsigned uNode2)
\r
29 if (m_uCount <= m_uCacheSize)
\r
31 m_uNode1[m_uCount] = uNode1;
\r
32 m_uNode2[m_uCount] = uNode2;
\r
36 unsigned EdgeList::GetCount() const
\r
41 void EdgeList::GetEdge(unsigned uIndex, unsigned *ptruNode1, unsigned *ptruNode2) const
\r
43 if (uIndex > m_uCount)
\r
44 Quit("EdgeList::GetEdge(%u) count=%u", uIndex, m_uCount);
\r
45 *ptruNode1 = m_uNode1[uIndex];
\r
46 *ptruNode2 = m_uNode2[uIndex];
\r
49 void EdgeList::Copy(const EdgeList &rhs)
\r
52 const unsigned uCount = rhs.GetCount();
\r
53 for (unsigned n = 0; n < uCount; ++n)
\r
57 rhs.GetEdge(n, &uNode1, &uNode2);
\r
58 Add(uNode1, uNode2);
\r
62 void EdgeList::Expand()
\r
64 unsigned uNewCacheSize = m_uCacheSize + 512;
\r
65 unsigned *NewNode1 = new unsigned[uNewCacheSize];
\r
66 unsigned *NewNode2 = new unsigned[uNewCacheSize];
\r
69 memcpy(NewNode1, m_uNode1, m_uCount*sizeof(unsigned));
\r
70 memcpy(NewNode2, m_uNode2, m_uCount*sizeof(unsigned));
\r
74 m_uNode1 = NewNode1;
\r
75 m_uNode2 = NewNode2;
\r
76 m_uCacheSize = uNewCacheSize;
\r
79 void EdgeList::LogMe() const
\r
81 for (unsigned n = 0; n < m_uCount; ++n)
\r
85 Log("%u->%u", m_uNode1[n], m_uNode2[n]);
\r