Platform.Data.Doublets C++
Loading...
Searching...
No Matches
UnusedLinksListMethods.h
Go to the documentation of this file.
2{
3 template <typename TLinksOptions>
5 : public Platform::Collections::Methods::Lists::AbsoluteCircularDoublyLinkedListMethods<
6 UnusedLinksListMethods<TLinksOptions>,
7 typename TLinksOptions::LinkAddressType> /*, ILinksListMethods<typename TLinksOptions::LinkAddressType> */
8 {
9 public:
10 using LinksOptionsType = TLinksOptions;
11 using LinkAddressType = typename LinksOptionsType::LinkAddressType;
12 using LinkType = typename LinksOptionsType::LinkType;
13 using WriteHandlerType = typename LinksOptionsType::WriteHandlerType;
14 using ReadHandlerType = typename LinksOptionsType::ReadHandlerType;
15 using base = Platform::Collections::Methods::Lists::AbsoluteCircularDoublyLinkedListMethods<
16 UnusedLinksListMethods<TLinksOptions>, typename TLinksOptions::LinkAddressType>;
17
18 public:
19 static constexpr auto Constants = LinksOptionsType::Constants;
20
21 private:
22 std::byte* _storage;
23
24 private:
25 std::byte* _header;
26
27 public:
28 UnusedLinksListMethods(std::byte* storage, std::byte* header)
29 {
30 _storage = storage;
31 _header = header;
32 }
33
34 public:
36 {
37 return *reinterpret_cast<LinksHeader<LinkAddressType>*>(_header);
38 }
39
40 public:
42 {
43 return *reinterpret_cast<LinksHeader<LinkAddressType>*>(_header);
44 }
45
46 public:
52
53 public:
59
60 public:
62 {
63 return this->GetHeaderReference().FirstFreeLink;
64 }
65
66 public:
68 {
69 return this->GetHeaderReference().LastFreeLink;
70 }
71
72 public:
74 {
75 return this->GetLinkDataPartReference(element).Source;
76 }
77
78 public:
80 {
81 return this->GetLinkDataPartReference(element).Target;
82 }
83
84 public:
86 {
87 return this->GetHeaderReference().FreeLinks;
88 }
89
90 public:
92 {
93 this->GetHeaderReference().FirstFreeLink = element;
94 }
95
96 public:
98 {
99 this->GetHeaderReference().LastFreeLink = element;
100 }
101
102 public:
104 {
105 this->GetLinkDataPartReference(element).Source = previous;
106 }
107
108 public:
110 {
111 this->GetLinkDataPartReference(element).Target = next;
112 }
113
114 public:
116 {
117 this->GetHeaderReference().FreeLinks = size;
118 }
119 };
120} // namespace Platform::Data::Doublets::Memory::Split::Generic
LinkAddressType GetPrevious(LinkAddressType element)
Definition UnusedLinksListMethods.h:73
LinkAddressType GetLast()
Definition UnusedLinksListMethods.h:67
LinksHeader< LinkAddressType > & GetHeaderReference()
Definition UnusedLinksListMethods.h:41
typename LinksOptionsType::LinkType LinkType
Definition UnusedLinksListMethods.h:12
typename LinksOptionsType::ReadHandlerType ReadHandlerType
Definition UnusedLinksListMethods.h:14
LinkAddressType GetNext(LinkAddressType element)
Definition UnusedLinksListMethods.h:79
const LinksHeader< LinkAddressType > & GetHeaderReference() const
Definition UnusedLinksListMethods.h:35
void SetNext(LinkAddressType element, LinkAddressType next)
Definition UnusedLinksListMethods.h:109
static constexpr auto Constants
Definition UnusedLinksListMethods.h:19
RawLinkDataPart< LinkAddressType > & GetLinkDataPartReference(LinkAddressType link)
Definition UnusedLinksListMethods.h:54
typename LinksOptionsType::WriteHandlerType WriteHandlerType
Definition UnusedLinksListMethods.h:13
LinkAddressType GetFirst()
Definition UnusedLinksListMethods.h:61
TLinksOptions LinksOptionsType
Definition UnusedLinksListMethods.h:10
typename LinksOptionsType::LinkAddressType LinkAddressType
Definition UnusedLinksListMethods.h:11
void SetPrevious(LinkAddressType element, LinkAddressType previous)
Definition UnusedLinksListMethods.h:103
void SetSize(LinkAddressType size)
Definition UnusedLinksListMethods.h:115
LinkAddressType GetSize()
Definition UnusedLinksListMethods.h:85
Platform::Collections::Methods::Lists::AbsoluteCircularDoublyLinkedListMethods< UnusedLinksListMethods< TLinksOptions >, typename TLinksOptions::LinkAddressType > base
Definition UnusedLinksListMethods.h:16
const RawLinkDataPart< LinkAddressType > & GetLinkDataPartReference(LinkAddressType link) const
Definition UnusedLinksListMethods.h:47
UnusedLinksListMethods(std::byte *storage, std::byte *header)
Definition UnusedLinksListMethods.h:28
void SetFirst(LinkAddressType element)
Definition UnusedLinksListMethods.h:91
void SetLast(LinkAddressType element)
Definition UnusedLinksListMethods.h:97
Definition ExternalLinksRecursionlessSizeBalancedTreeMethodsBase.h:2