Platform.Data.Doublets C++
Loading...
Searching...
No Matches
ExternalLinksTargetsSizeBalancedTreeMethods.h
Go to the documentation of this file.
2{
3 template <typename TLinksOptions>
5 : public ExternalLinksSizeBalancedTreeMethodsBase<ExternalLinksTargetsSizeBalancedTreeMethods<TLinksOptions>,
6 TLinksOptions>
7 {
8 public:
9 using LinksOptionsType = TLinksOptions;
10 using LinkAddressType = TLinksOptions::LinkAddressType;
11 using base =
13 TLinksOptions>;
14
15 public:
16 ExternalLinksTargetsSizeBalancedTreeMethods(std::byte* linksDataParts, std::byte* linksIndexParts,
17 std::byte* header)
18 : base(linksDataParts, linksIndexParts, header)
19 {
20 }
21
22 public:
24 {
25 return &(this->GetLinkIndexPartReference(node).LeftAsTarget);
26 }
27
28 public:
30 {
31 return &(this->GetLinkIndexPartReference(node).RightAsTarget);
32 }
33
34 public:
36 {
37 return this->GetLinkIndexPartReference(node).LeftAsTarget;
38 }
39
40 public:
42 {
43 return this->GetLinkIndexPartReference(node).RightAsTarget;
44 }
45
46 public:
48 {
49 this->GetLinkIndexPartReference(node).LeftAsTarget = left;
50 }
51
52 public:
54 {
55 this->GetLinkIndexPartReference(node).RightAsTarget = right;
56 }
57
58 public:
60 {
61 return this->GetLinkIndexPartReference(node).SizeAsTarget;
62 }
63
64 public:
66 {
67 this->GetLinkIndexPartReference(node).SizeAsTarget = size;
68 }
69
70 public:
71 // Intentional CRTP customization of the base tree algorithm.
72 // cppcheck-suppress duplInheritedMember
74 {
75 return this->GetHeaderReference().RootAsTarget;
76 }
77
78 public:
79 // Intentional CRTP customization of the base tree algorithm.
80 // cppcheck-suppress duplInheritedMember
82 {
83 return this->GetLinkDataPartReference(link).Target;
84 }
85
86 public:
87 // Intentional CRTP customization of the base tree algorithm.
88 // cppcheck-suppress duplInheritedMember
90 LinkAddressType secondSource, LinkAddressType secondTarget)
91 {
92 return (firstTarget < secondTarget) || (firstTarget == secondTarget && (firstSource < secondSource));
93 }
95
96 public:
97 // Intentional CRTP customization of the base tree algorithm.
98 // cppcheck-suppress duplInheritedMember
100 LinkAddressType secondSource, LinkAddressType secondTarget)
101 {
102 return firstTarget > secondTarget || (firstTarget == secondTarget && firstSource > secondSource);
103 }
105
106 public:
108 {
109 auto& link = this->GetLinkIndexPartReference(node);
110 link.LeftAsTarget = 0;
111 link.RightAsTarget = 0;
112 link.SizeAsTarget = 0;
113 }
114 };
115} // namespace Platform::Data::Doublets::Memory::Split::Generic
bool FirstIsToTheLeftOfSecond(LinkAddressType source, LinkAddressType target, LinkAddressType rootSource, LinkAddressType rootTarget)
Definition ExternalLinksSizeBalancedTreeMethodsBase.h:51
const RawLinkDataPart< LinkAddressType > & GetLinkDataPartReference(LinkAddressType link) const
Definition ExternalLinksSizeBalancedTreeMethodsBase.h:64
const RawLinkIndexPart< LinkAddressType > & GetLinkIndexPartReference(LinkAddressType link) const
Definition ExternalLinksSizeBalancedTreeMethodsBase.h:78
bool FirstIsToTheRightOfSecond(LinkAddressType source, LinkAddressType target, LinkAddressType rootSource, LinkAddressType rootTarget)
Definition ExternalLinksSizeBalancedTreeMethodsBase.h:44
LinkAddressType GetLeft(LinkAddressType node)
Definition ExternalLinksTargetsSizeBalancedTreeMethods.h:35
TLinksOptions::LinkAddressType LinkAddressType
Definition ExternalLinksTargetsSizeBalancedTreeMethods.h:10
LinkAddressType * GetLeftReference(LinkAddressType node)
Definition ExternalLinksTargetsSizeBalancedTreeMethods.h:23
LinkAddressType * GetRightReference(LinkAddressType node)
Definition ExternalLinksTargetsSizeBalancedTreeMethods.h:29
bool FirstIsToTheLeftOfSecond(LinkAddressType firstSource, LinkAddressType firstTarget, LinkAddressType secondSource, LinkAddressType secondTarget)
Definition ExternalLinksTargetsSizeBalancedTreeMethods.h:89
LinkAddressType GetTreeRoot()
Definition ExternalLinksTargetsSizeBalancedTreeMethods.h:73
void ClearNode(LinkAddressType node)
Definition ExternalLinksTargetsSizeBalancedTreeMethods.h:107
ExternalLinksTargetsSizeBalancedTreeMethods(std::byte *linksDataParts, std::byte *linksIndexParts, std::byte *header)
Definition ExternalLinksTargetsSizeBalancedTreeMethods.h:16
LinkAddressType GetBasePartValue(LinkAddressType link)
Definition ExternalLinksTargetsSizeBalancedTreeMethods.h:81
void SetRight(LinkAddressType node, LinkAddressType right)
Definition ExternalLinksTargetsSizeBalancedTreeMethods.h:53
LinkAddressType GetSize(LinkAddressType node)
Definition ExternalLinksTargetsSizeBalancedTreeMethods.h:59
void SetLeft(LinkAddressType node, LinkAddressType left)
Definition ExternalLinksTargetsSizeBalancedTreeMethods.h:47
TLinksOptions LinksOptionsType
Definition ExternalLinksTargetsSizeBalancedTreeMethods.h:9
LinkAddressType GetRight(LinkAddressType node)
Definition ExternalLinksTargetsSizeBalancedTreeMethods.h:41
void SetSize(LinkAddressType node, LinkAddressType size)
Definition ExternalLinksTargetsSizeBalancedTreeMethods.h:65
bool FirstIsToTheRightOfSecond(LinkAddressType firstSource, LinkAddressType firstTarget, LinkAddressType secondSource, LinkAddressType secondTarget)
Definition ExternalLinksTargetsSizeBalancedTreeMethods.h:99
Definition ExternalLinksRecursionlessSizeBalancedTreeMethodsBase.h:2