Skip to content

Commit 34c452e

Browse files
committed
merge SingleLinkList.inline.cc into .cc, .h
1 parent 7627b46 commit 34c452e

File tree

4 files changed

+62
-76
lines changed

4 files changed

+62
-76
lines changed

src/clstepcore/CMakeLists.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ set(LIBSTEPCORE_SRCS
1111
sdai.cc
1212
sdaiSelect.cc
1313
SingleLinkList.cc
14-
SingleLinkList.inline.cc
1514
Registry.inline.cc
1615
ExpDict.cc
1716
ExpDict.inline.cc

src/clstepcore/SingleLinkList.cc

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,50 @@
1212

1313
#include <SingleLinkList.h>
1414
#include "sc_memmgr.h"
15+
#include <iostream>
16+
17+
//
18+
SingleLinkNode * SingleLinkNode::NextNode() const {
19+
return next;
20+
}
21+
22+
SingleLinkList::SingleLinkList() : head( 0 ), tail( 0 ) {
23+
}
24+
25+
SingleLinkList::~SingleLinkList() {
26+
Empty();
27+
}
28+
29+
void SingleLinkList::Empty() {
30+
SingleLinkNode * tmp = head;
31+
while( tmp ) {
32+
tmp = head -> NextNode();
33+
delete head;
34+
head = tmp;
35+
}
36+
}
37+
38+
SingleLinkNode * SingleLinkList::NewNode() {
39+
// defined in subtypes
40+
std::cerr << "\n\n******BUG****** a virtually defined function should \n"
41+
<< "be called for SingleLinkList::NewNode()\n\n";
42+
return new SingleLinkNode();
43+
}
44+
45+
SingleLinkNode * SingleLinkList::GetHead() const {
46+
return ( head );
47+
}
48+
49+
int SingleLinkList::EntryCount() const {
50+
int entryCount = 0;
51+
SingleLinkNode * entryPtr = head;
52+
53+
while( entryPtr != 0 ) {
54+
entryPtr = entryPtr->NextNode();
55+
entryCount++;
56+
}
57+
return entryCount;
58+
}
1559

1660
void SingleLinkList::DeleteFollowingNodes( SingleLinkNode * item ) {
1761
if( head ) {

src/clstepcore/SingleLinkList.h

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -14,18 +14,17 @@
1414

1515
#include <sc_export.h>
1616

17+
/** Base class for a singly-linked list.
18+
* \sa SingleLinkNode
19+
*
20+
* node which represents the value is contained in the subclass
21+
* since it may have different types for different lists
22+
*/
1723
class SC_CORE_EXPORT SingleLinkList {
18-
19-
// node which represents the value is contained in the subclass
20-
// since it may have different types for different lists
21-
2224
protected:
23-
2425
class SingleLinkNode * head;
2526
SingleLinkNode * tail;
26-
2727
public:
28-
2928
virtual SingleLinkNode * NewNode();
3029
virtual void AppendNode( SingleLinkNode * );
3130
virtual void DeleteNode( SingleLinkNode * );
@@ -38,23 +37,26 @@ class SC_CORE_EXPORT SingleLinkList {
3837

3938
SingleLinkList();
4039
virtual ~SingleLinkList();
40+
};
4141

42-
}
43-
;
44-
45-
42+
/** Base class for nodes of a single-linked list.
43+
* \sa SingleLinkList
44+
*/
4645
class SC_CORE_EXPORT SingleLinkNode {
4746
friend class SingleLinkList;
48-
protected:
49-
5047
public:
5148
SingleLinkList * owner;
5249
SingleLinkNode * next;
5350

54-
virtual SingleLinkNode * NextNode() const;
55-
SingleLinkNode() : owner( 0 ), next( 0 ) { }
56-
virtual ~SingleLinkNode() { }
51+
virtual SingleLinkNode * NextNode() const {
52+
return next;
53+
}
54+
55+
SingleLinkNode() : owner( 0 ), next( 0 ) {
56+
}
5757

58+
virtual ~SingleLinkNode() {
59+
}
5860
};
5961

6062
#endif

src/clstepcore/SingleLinkList.inline.cc

Lines changed: 0 additions & 59 deletions
This file was deleted.

0 commit comments

Comments
 (0)