SpiecsEngine
 
Loading...
Searching...
No Matches
SpanList.cpp
Go to the documentation of this file.
1/**
2* @file SpanList.h.
3* @brief The span_list Class Implementation.
4* @author tcmalloc.
5*/
6
7#include "Pchheader.h"
8#include "SpanList.h"
9
10namespace scl {
11
13 : m_PageId(0)
14 , m_NPages(0)
15 , m_Next(nullptr)
16 , m_Prev(nullptr)
17 , m_FreeList(nullptr)
18 , m_UseCount(0)
19 , m_IsUse(false)
20 , m_BlockSize(0)
21 {}
22
24 {
25 m_Head = new span;
26
29 }
30
32 {
33 if (m_Head)
34 {
35 delete m_Head;
36 m_Head = nullptr;
37 }
38 }
39
41 {
43 }
44
46 {
47 span* front = m_Head->m_Next;
48
49 Erase(front);
50
51 return front;
52 }
53
55 {
56 return Begin() == End();
57 }
58
60 {
61 return m_Head->m_Next;
62 }
63
64 span* span_list::End() const
65 {
66 return m_Head;
67 }
68
69 void span_list::Insert(span* pos, span* ptr)
70 {
71 assert(pos);
72 assert(ptr);
73
74 span* prev = pos->m_Prev;
75
76 prev->m_Next = ptr;
77 ptr->m_Prev = prev;
78
79 ptr->m_Next = pos;
80 pos->m_Prev = ptr;
81 }
82
83 void span_list::Erase(span* pos) const
84 {
85 assert(pos);
86 assert(pos != m_Head);
87
88 span* prev = pos->m_Prev;
89 span* next = pos->m_Next;
90
91 prev->m_Next = next;
92 next->m_Prev = prev;
93
94 pos->m_Next = nullptr;
95 pos->m_Prev = nullptr;
96 }
97}
static void Insert(span *pos, span *ptr)
Insert a span before in given position.
Definition SpanList.cpp:69
span_list()
Constructor Function.
Definition SpanList.cpp:23
span * PopFront()
Pop a span from front.
Definition SpanList.cpp:45
void PushFront(span *s)
Push a span to this list.
Definition SpanList.cpp:40
void Erase(span *pos) const
Erase a span form this list.
Definition SpanList.cpp:83
bool Empty()
Empty if Begin equals to End.
Definition SpanList.cpp:54
span * m_Head
list entry point.
Definition SpanList.h:140
virtual ~span_list()
Destructor Function.
Definition SpanList.cpp:31
span * Begin() const
Get begin pointer.
Definition SpanList.cpp:59
span * End() const
Get end pointer.
Definition SpanList.cpp:64
Bidirectional cyclic linked list for span.
Definition SpanList.h:73
span * m_Next
next span.
Definition SpanList.h:41
span * m_Prev
previous span.
Definition SpanList.h:46
void * m_FreeList
current pointer.
Definition SpanList.h:51
span()
Constructor Function.
Definition SpanList.cpp:12
bool m_IsUse
True if in use.
Definition SpanList.h:61
Used for manage multiple page memory.
Definition SpanList.h:15