Platform.Data.Doublets C++
Loading...
Searching...
No Matches
cpp
Platform.Data.Doublets
Stacks
Stack.h
Go to the documentation of this file.
1
namespace
Platform::Data::Doublets::Stacks
2
{
3
template
<
typename
...>
4
class
Stack
;
5
template
<std::
int
egral TLinkAddress>
6
class
Stack<TLinkAddress>
:
public
LinksOperatorBase<TLinkAddress>, IStack<TLinkAddress>
7
{
8
private
:
9
TLinkAddress
_stack = 0;
10
11
public
:
12
bool
IsEmpty
()
13
{
14
return
this->Peek() == _stack;
15
}
16
17
public
:
18
Stack
(ILinks<TLinkAddress>& storage,
TLinkAddress
stack) : base(storage)
19
{
20
return
_stack = stack;
21
}
22
23
private
:
24
TLinkAddress
GetStackMarker()
25
{
26
return
_links.GetSource(_stack);
27
}
28
29
private
:
30
TLinkAddress
GetTop()
31
{
32
return
_links.GetTarget(_stack);
33
}
34
35
public
:
36
TLinkAddress
Peek
()
37
{
38
return
_links.GetTarget(this->GetTop());
39
}
40
41
public
:
42
TLinkAddress
Pop
()
43
{
44
auto
element = this->Peek();
45
if
(element != _stack)
46
{
47
auto
top = this->GetTop();
48
auto
previousTop = _links.GetSource(top);
49
_links.Update(_stack, this->GetStackMarker(), previousTop);
50
_links.Delete(top);
51
}
52
return
element;
53
}
54
55
public
:
56
void
Push
(
TLinkAddress
element)
57
{
58
_links.Update(_stack, this->GetStackMarker(), _links.GetOrCreate(this->GetTop(), element));
59
}
60
};
61
}
// namespace Platform::Data::Doublets::Stacks
TLinkAddress
std::uint32_t TLinkAddress
Definition
UInt32Links.h:3
Platform::Data::Doublets::Stacks::Stack< TLinkAddress >::Peek
TLinkAddress Peek()
Definition
Stack.h:36
Platform::Data::Doublets::Stacks::Stack< TLinkAddress >::Pop
TLinkAddress Pop()
Definition
Stack.h:42
Platform::Data::Doublets::Stacks::Stack< TLinkAddress >::Push
void Push(TLinkAddress element)
Definition
Stack.h:56
Platform::Data::Doublets::Stacks::Stack< TLinkAddress >::Stack
Stack(ILinks< TLinkAddress > &storage, TLinkAddress stack)
Definition
Stack.h:18
Platform::Data::Doublets::Stacks::Stack< TLinkAddress >::IsEmpty
bool IsEmpty()
Definition
Stack.h:12
Platform::Data::Doublets::Stacks::Stack
Definition
Stack.h:4
Platform::Data::Doublets::Stacks
Definition
Stack.h:2
Generated by
1.9.8