368
|
1 /*!
|
|
2 MemList は空にならない。最低1個は要素が入っていて
|
|
3 1個目は特別扱いする。getFirst すると first->next を返す
|
|
4 */
|
366
|
5
|
368
|
6 #include "MemorySegment.h"
|
|
7
|
|
8 /*!
|
|
9 最初の1個は特別扱いなので、それの後に追加していく
|
|
10 */
|
366
|
11 void
|
|
12 addFirst(MemorySegment* e)
|
|
13 {
|
368
|
14 e->prev = first;
|
|
15 e->next = first->next;
|
|
16 first->next->prev = e;
|
|
17 first->next = e;
|
366
|
18 }
|
|
19
|
|
20 void
|
|
21 addLast(MemorySegment* e)
|
|
22 {
|
368
|
23 e->next = first;
|
|
24 e->prev = last;
|
|
25 last->next = e;
|
366
|
26 last = e;
|
|
27 }
|
|
28
|
|
29 MemorySegment
|
|
30 getFirst()
|
|
31 {
|
368
|
32 return first->next;
|
366
|
33 }
|
|
34
|
|
35 MemorySegment
|
|
36 getLast()
|
|
37 {
|
368
|
38 return last;
|
366
|
39 }
|
|
40
|
368
|
41 int
|
366
|
42 remove(MemorySegment* e)
|
|
43 {
|
368
|
44 e->prev->next = e->next;
|
|
45 if (e->next != NULL) {
|
|
46 e->next->prev = e->prev;
|
|
47 }
|
|
48 e->prev = NULL;
|
|
49 e->next = NULL;
|
|
50
|
|
51 return 1;
|
366
|
52 }
|
|
53
|
|
54 void
|
|
55 moveToFirst(MemorySegment* e)
|
|
56 {
|
|
57 remove(e);
|
|
58 addFirst(e);
|
|
59 }
|