Mercurial > hg > Game > Cerium
comparison TaskManager/kernel/memory/MemList.cc @ 368:1a80a2aa696c draft
change TaskManager
author | aaa |
---|---|
date | Mon, 27 Jul 2009 18:26:50 +0900 |
parents | TaskManager/kernel/memory/MemList.cpp@b96f80683af6 |
children | 93b33cecba37 |
comparison
equal
deleted
inserted
replaced
367:b96f80683af6 | 368:1a80a2aa696c |
---|---|
1 /*! | |
2 MemList は空にならない。最低1個は要素が入っていて | |
3 1個目は特別扱いする。getFirst すると first->next を返す | |
4 */ | |
5 | |
6 #include "MemorySegment.h" | |
7 | |
8 /*! | |
9 最初の1個は特別扱いなので、それの後に追加していく | |
10 */ | |
11 void | |
12 addFirst(MemorySegment* e) | |
13 { | |
14 e->prev = first; | |
15 e->next = first->next; | |
16 first->next->prev = e; | |
17 first->next = e; | |
18 } | |
19 | |
20 void | |
21 addLast(MemorySegment* e) | |
22 { | |
23 e->next = first; | |
24 e->prev = last; | |
25 last->next = e; | |
26 last = e; | |
27 } | |
28 | |
29 MemorySegment | |
30 getFirst() | |
31 { | |
32 return first->next; | |
33 } | |
34 | |
35 MemorySegment | |
36 getLast() | |
37 { | |
38 return last; | |
39 } | |
40 | |
41 int | |
42 remove(MemorySegment* e) | |
43 { | |
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; | |
52 } | |
53 | |
54 void | |
55 moveToFirst(MemorySegment* e) | |
56 { | |
57 remove(e); | |
58 addFirst(e); | |
59 } |