libpolys
tests
cxxtest
LinkedList.cpp
Go to the documentation of this file.
1
#ifndef __cxxtest__LinkedList_cpp__
2
#define __cxxtest__LinkedList_cpp__
3
4
#include <
cxxtest/LinkedList.h
>
5
6
namespace
CxxTest
7
{
8
List
GlobalFixture::_list
= { 0, 0 };
9
List
RealSuiteDescription::_suites
= { 0, 0 };
10
11
void
List::initialize
()
12
{
13
_head
=
_tail
= 0;
14
}
15
16
Link
*
List::head
()
17
{
18
Link
*
l
=
_head
;
19
while
( l && !l->
active
() )
20
l = l->
next
();
21
return
l
;
22
}
23
24
const
Link
*
List::head
()
const
25
{
26
Link
*
l
=
_head
;
27
while
( l && !l->
active
() )
28
l = l->
next
();
29
return
l
;
30
}
31
32
Link
*
List::tail
()
33
{
34
Link
*
l
=
_tail
;
35
while
( l && !l->
active
() )
36
l = l->
prev
();
37
return
l
;
38
}
39
40
const
Link
*
List::tail
()
const
41
{
42
Link
*
l
=
_tail
;
43
while
( l && !l->
active
() )
44
l = l->
prev
();
45
return
l
;
46
}
47
48
bool
List::empty
()
const
49
{
50
return
(
_head
== 0);
51
}
52
53
unsigned
List::size
()
const
54
{
55
unsigned
count
= 0;
56
for
(
const
Link
*
l
=
head
();
l
!= 0;
l
=
l
->next() )
57
++ count;
58
return
count
;
59
}
60
61
Link
*
List::nth
(
unsigned
n )
62
{
63
Link
*
l
=
head
();
64
while
( n -- )
65
l = l->
next
();
66
return
l
;
67
}
68
69
void
List::activateAll
()
70
{
71
for
(
Link
*
l
=
_head
;
l
!= 0;
l
=
l
->justNext() )
72
l
->setActive(
true
);
73
}
74
75
void
List::leaveOnly
(
const
Link
&link )
76
{
77
for
(
Link
*
l
=
head
();
l
!= 0;
l
=
l
->next() )
78
if
(
l
!= &link )
79
l
->setActive(
false
);
80
}
81
82
Link::Link
() :
83
_next( 0 ),
84
_prev( 0 ),
85
_active( true )
86
{
87
}
88
89
Link::~Link
()
90
{
91
}
92
93
bool
Link::active
()
const
94
{
95
return
_active
;
96
}
97
98
void
Link::setActive
(
bool
value )
99
{
100
_active
= value;
101
}
102
103
Link
*
Link::justNext
()
104
{
105
return
_next
;
106
}
107
108
Link
*
Link::justPrev
()
109
{
110
return
_prev
;
111
}
112
113
Link
*
Link::next
()
114
{
115
Link
*
l
=
_next
;
116
while
( l && !l->
_active
)
117
l = l->
_next
;
118
return
l
;
119
}
120
121
Link
*
Link::prev
()
122
{
123
Link
*
l
=
_prev
;
124
while
( l && !l->
_active
)
125
l = l->
_prev
;
126
return
l
;
127
}
128
129
const
Link
*
Link::next
()
const
130
{
131
Link
*
l
=
_next
;
132
while
( l && !l->
_active
)
133
l = l->
_next
;
134
return
l
;
135
}
136
137
const
Link
*
Link::prev
()
const
138
{
139
Link
*
l
=
_prev
;
140
while
( l && !l->
_active
)
141
l = l->
_prev
;
142
return
l
;
143
}
144
145
void
Link::attach
(
List
&
l
)
146
{
147
if
( l.
_tail
)
148
l.
_tail
->
_next
=
this
;
149
150
_prev
= l.
_tail
;
151
_next
= 0;
152
153
if
( l.
_head
== 0 )
154
l.
_head
=
this
;
155
l.
_tail
=
this
;
156
}
157
158
void
Link::detach
(
List
&
l
)
159
{
160
if
(
_prev
)
161
_prev
->
_next
=
_next
;
162
else
163
l.
_head
=
_next
;
164
165
if
(
_next
)
166
_next
->
_prev
=
_prev
;
167
else
168
l.
_tail
=
_prev
;
169
}
170
};
171
172
#endif // __cxxtest__LinkedList_cpp__
count
int status int void size_t count
Definition:
si_signals.h:59
CxxTest::Link::attach
void attach(List &l)
Definition:
LinkedList.cpp:145
CxxTest::List
Definition:
LinkedList.h:11
CxxTest::Link::_next
Link * _next
Definition:
LinkedList.h:55
CxxTest::List::_tail
Link * _tail
Definition:
LinkedList.h:14
CxxTest::Link::Link
Link()
Definition:
LinkedList.cpp:82
CxxTest::Link::active
bool active() const
Definition:
LinkedList.cpp:93
CxxTest::Link::setActive
void setActive(bool value=true)
Definition:
LinkedList.cpp:98
CxxTest::List::nth
Link * nth(unsigned n)
Definition:
LinkedList.cpp:61
CxxTest::Link
Definition:
LinkedList.h:31
CxxTest::Link::next
Link * next()
Definition:
LinkedList.cpp:113
CxxTest::List::activateAll
void activateAll()
Definition:
LinkedList.cpp:69
CxxTest::Link::_active
bool _active
Definition:
LinkedList.h:57
CxxTest::Link::detach
void detach(List &l)
Definition:
LinkedList.cpp:158
CxxTest::RealSuiteDescription::_suites
static List _suites
Definition:
RealDescriptions.h:78
CxxTest::List::tail
Link * tail()
Definition:
LinkedList.cpp:32
CxxTest::Link::~Link
virtual ~Link()
Definition:
LinkedList.cpp:89
CxxTest::GlobalFixture::_list
static List _list
Definition:
GlobalFixture.h:25
CxxTest::List::initialize
void initialize()
Definition:
LinkedList.cpp:11
LinkedList.h
List
Definition:
ftmpl_list.h:22
CxxTest::List::leaveOnly
void leaveOnly(const Link &link)
Definition:
LinkedList.cpp:75
CxxTest::List::empty
bool empty() const
Definition:
LinkedList.cpp:48
CxxTest::Link::prev
Link * prev()
Definition:
LinkedList.cpp:121
CxxTest::List::head
Link * head()
Definition:
LinkedList.cpp:16
CxxTest::Link::justPrev
Link * justPrev()
Definition:
LinkedList.cpp:108
CxxTest::List::_head
Link * _head
Definition:
LinkedList.h:13
CxxTest::Link::_prev
Link * _prev
Definition:
LinkedList.h:56
CxxTest
Definition:
Descriptions.cpp:6
CxxTest::List::size
unsigned size() const
Definition:
LinkedList.cpp:53
l
int l
Definition:
cfEzgcd.cc:94
CxxTest::Link::justNext
Link * justNext()
Definition:
LinkedList.cpp:103
Generated on Wed Oct 4 2017 21:04:43 by
doxygen 1.8.13
for
Singular UNKNOWN_GIT_VERSION