Skip to content

Commit cd79b96

Browse files
authored
Change name RedixPage -> RadixPage in RadixTree.cc (#2413)
change name RedixPage -> RadixPage
1 parent 905620c commit cd79b96

File tree

1 file changed

+39
-39
lines changed

1 file changed

+39
-39
lines changed

cpp/serve/radix_tree.cc

Lines changed: 39 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -130,13 +130,13 @@ class SequenceIDNodePool {
130130
* Each page records the sequence excatly ends with the prefix tokens stored in page. In other word,
131131
* all sequences locate in the boundary of each page, or the end of each page.
132132
*/
133-
struct RedixPage {
133+
struct RadixPage {
134134
/*! \brief The parent page. */
135-
RedixPage* parent;
135+
RadixPage* parent;
136136
/*! \brief The first child page. */
137-
RedixPage* first_child;
137+
RadixPage* first_child;
138138
/*! \brief The sibling page shareing the same parent page. */
139-
RedixPage* next_sibiling;
139+
RadixPage* next_sibiling;
140140
/*! \brief The head of sequence ID linked list. */
141141
SequenceIDNode* seq_ids;
142142
/*! \brief The capacity of maximum stored prefix tokens. */
@@ -146,7 +146,7 @@ struct RedixPage {
146146
/*! \brief The length of stored prefix tokens. The legal value is of [0, capacity). */
147147
size_t length;
148148
/*! \brief The offset of first prefix token in memory layout. */
149-
static constexpr int kDataOffset = (sizeof(RedixPage*) * 3 + sizeof(SequenceIDNode*) +
149+
static constexpr int kDataOffset = (sizeof(RadixPage*) * 3 + sizeof(SequenceIDNode*) +
150150
sizeof(size_t) * 3 + sizeof(int32_t) - 1) /
151151
sizeof(int32_t);
152152

@@ -242,7 +242,7 @@ struct RedixPage {
242242
std::vector<int64_t> FindAllChildSequence() {
243243
std::vector<int64_t> output = GetLocalSequence();
244244
if (first_child) {
245-
first_child->Iterate([&output](const RedixPage* page) {
245+
first_child->Iterate([&output](const RadixPage* page) {
246246
for (SequenceIDNode* node = page->seq_ids; node; node = node->next) {
247247
output.push_back(node->id);
248248
}
@@ -267,10 +267,10 @@ struct RedixPage {
267267
* \return The page whose next_sibling is current page, or nullptr if current is the fisrt_child
268268
* of its parent page.
269269
*/
270-
RedixPage* GetLastSibling() {
270+
RadixPage* GetLastSibling() {
271271
if (parent == nullptr) return nullptr;
272272
if (parent->first_child == this) return nullptr;
273-
for (RedixPage* child = parent->first_child; child; child = child->next_sibiling) {
273+
for (RadixPage* child = parent->first_child; child; child = child->next_sibiling) {
274274
if (child->next_sibiling == this) return child;
275275
}
276276
return nullptr;
@@ -280,17 +280,17 @@ struct RedixPage {
280280
* \brief Find the child indexed by first token.
281281
* \return The child page started with first token, or nullptr if no such child page.
282282
*/
283-
RedixPage* FindChild(int64_t first_token) {
283+
RadixPage* FindChild(int64_t first_token) {
284284
int32_t casted = first_token;
285285
// Iterate all child radix pages, as the child radix pages are stored unorderly.
286-
for (RedixPage* child = first_child; child; child = child->next_sibiling) {
286+
for (RadixPage* child = first_child; child; child = child->next_sibiling) {
287287
if ((*child)[0] == casted) return child;
288288
}
289289
return nullptr;
290290
}
291291

292292
/*! \brief Insert a new child page. */
293-
void InsertChild(RedixPage* child) {
293+
void InsertChild(RadixPage* child) {
294294
child->parent = this;
295295
child->next_sibiling = first_child;
296296
first_child = child;
@@ -300,7 +300,7 @@ struct RedixPage {
300300
* \brief Remove a child page.
301301
* \throw Error if page to be removed is not child page.
302302
*/
303-
void RemoveChild(RedixPage* child) {
303+
void RemoveChild(RadixPage* child) {
304304
CHECK(child->parent == this);
305305
if (first_child == child) {
306306
first_child = child->next_sibiling;
@@ -362,14 +362,14 @@ class RadixPagePool {
362362
* If there is no available page, it will allocate a new radix page block.
363363
* \return The allocated radix page.
364364
*/
365-
RedixPage* Allocate() {
365+
RadixPage* Allocate() {
366366
if (free_page_indices_.empty()) {
367367
NewPageBlock_();
368368
CHECK(!free_page_indices_.empty());
369369
}
370370
int id = free_page_indices_.back();
371371
free_page_indices_.pop_back();
372-
RedixPage* page = pages_[id];
372+
RadixPage* page = pages_[id];
373373
used_pages_[page] = id;
374374
page->parent = page->first_child = page->next_sibiling = nullptr;
375375
page->capacity = kPageCapacity_;
@@ -382,7 +382,7 @@ class RadixPagePool {
382382
* \brief Free a radix page to pool.
383383
* \param page The radix page to free.
384384
*/
385-
void Free(RedixPage* page) {
385+
void Free(RadixPage* page) {
386386
CHECK_EQ(page->seq_ids, nullptr);
387387
CHECK(used_pages_.find(page) != used_pages_.end());
388388
free_page_indices_.push_back(used_pages_[page]);
@@ -423,17 +423,17 @@ class RadixPagePool {
423423
/*! \brief The page capacity of each paged radix tree page. */
424424
static constexpr size_t kPageCapacity_ = 64;
425425
/*! \brief The page size of each paged radix tree page. */
426-
static constexpr size_t kPageSize_ = kPageCapacity_ + RedixPage::kDataOffset;
426+
static constexpr size_t kPageSize_ = kPageCapacity_ + RadixPage::kDataOffset;
427427
/*! \brief The raw paged radix tree page block pool,
428428
each element is a raw paged radix tree page array. */
429429
std::vector<int32_t*> page_blocks_;
430430
/*! \brief The paged radix tree page pool,
431431
each element is a raw paged radix tree page pointer. */
432-
std::vector<RedixPage*> pages_;
432+
std::vector<RadixPage*> pages_;
433433
/*! \brief The indices of free paged radix page in page pool. */
434434
std::vector<size_t> free_page_indices_;
435435
/*! \brief The map from used paged radix tree page to its index in page pool. */
436-
std::unordered_map<RedixPage*, size_t> used_pages_;
436+
std::unordered_map<RadixPage*, size_t> used_pages_;
437437

438438
/*! \brief Allocate a new page pool block. */
439439
void NewPageBlock_() {
@@ -442,7 +442,7 @@ class RadixPagePool {
442442
pages_.reserve(pages_.size() + kPageBlockSize_);
443443
free_page_indices_.reserve(free_page_indices_.size() + kPageBlockSize_);
444444
for (size_t i = 0; i < kPageBlockSize_; ++i) {
445-
pages_.push_back(reinterpret_cast<RedixPage*>(page_blocks_.back() + i * kPageSize_));
445+
pages_.push_back(reinterpret_cast<RadixPage*>(page_blocks_.back() + i * kPageSize_));
446446
free_page_indices_.push_back(i + page_id_offset);
447447
}
448448
}
@@ -456,19 +456,19 @@ class RadixPagePool {
456456
class PagedRadixTreeImpl : public PagedRadixTreeObj {
457457
public:
458458
/*! \brief The map from sequence to paged radix tree node it is stored. */
459-
std::unordered_map<int32_t, RedixPage*> seq2page;
459+
std::unordered_map<int32_t, RadixPage*> seq2page;
460460
/*! \brief The sequence ID node pool. */
461461
SequenceIDNodePool* seq_id_node_pool = nullptr;
462462
/*! \brief The radix page pool. */
463463
RadixPagePool* radix_page_pool = nullptr;
464464
/*! \brief The root page of paged radix tree. */
465-
RedixPage* root = nullptr;
465+
RadixPage* root = nullptr;
466466

467467
explicit PagedRadixTreeImpl() {
468468
seq_id_node_pool = new SequenceIDNodePool();
469469
radix_page_pool = new RadixPagePool();
470470

471-
root = reinterpret_cast<RedixPage*>(new int32_t[RedixPage::kDataOffset]);
471+
root = reinterpret_cast<RadixPage*>(new int32_t[RadixPage::kDataOffset]);
472472
root->parent = root->first_child = root->next_sibiling = nullptr;
473473
root->offset = root->length = root->capacity = 0;
474474
root->seq_ids = nullptr;
@@ -493,7 +493,7 @@ class PagedRadixTreeImpl : public PagedRadixTreeObj {
493493
size_t length = GetSequenceLength(seq_id);
494494
std::vector<int64_t> output(length);
495495
size_t offset = length;
496-
for (RedixPage* page = seq2page[seq_id]; page; page = page->parent) {
496+
for (RadixPage* page = seq2page[seq_id]; page; page = page->parent) {
497497
offset -= page->length;
498498
for (int i = 0; i < page->length; ++i) {
499499
output[offset + i] = (*page)[i];
@@ -524,7 +524,7 @@ class PagedRadixTreeImpl : public PagedRadixTreeObj {
524524
size_t GetSequenceLength(int64_t seq_id) {
525525
CHECK(seq2page.find(seq_id) != seq2page.end());
526526
size_t length = 0;
527-
for (RedixPage* page = seq2page[seq_id]; page; page = page->parent) {
527+
for (RadixPage* page = seq2page[seq_id]; page; page = page->parent) {
528528
length += page->length;
529529
}
530530
return length;
@@ -546,7 +546,7 @@ class PagedRadixTreeImpl : public PagedRadixTreeObj {
546546
CHECK_GT(forked_offset, 0);
547547
size_t length = GetSequenceLength(parent_seq_id);
548548
CHECK_LE(forked_offset, length);
549-
for (RedixPage* page = seq2page[parent_seq_id]; page; page = page->parent) {
549+
for (RadixPage* page = seq2page[parent_seq_id]; page; page = page->parent) {
550550
if (forked_offset >= length - page->length) {
551551
if (forked_offset < length) {
552552
// Split radix page if forked position is within page
@@ -582,7 +582,7 @@ class PagedRadixTreeImpl : public PagedRadixTreeObj {
582582
CHECK(seq2page.find(seq_id) != seq2page.end());
583583
const int64_t* suffix = tokens.data();
584584
size_t length = tokens.size();
585-
RedixPage* original_page = seq2page[seq_id];
585+
RadixPage* original_page = seq2page[seq_id];
586586
original_page->PopSequence(seq_id_node_pool, seq_id);
587587
auto [page, offset, in_page_offset] = MatchSequence(original_page, suffix, length);
588588
if (in_page_offset < page->length) {
@@ -597,7 +597,7 @@ class PagedRadixTreeImpl : public PagedRadixTreeObj {
597597
}
598598
while (offset < length) {
599599
// Allocate new radix page and extend tokens
600-
RedixPage* new_page = radix_page_pool->Allocate();
600+
RadixPage* new_page = radix_page_pool->Allocate();
601601
page->InsertChild(new_page);
602602
page = new_page;
603603
size_t suffix_length = std::min(page->capacity - page->length, length - offset);
@@ -628,14 +628,14 @@ class PagedRadixTreeImpl : public PagedRadixTreeObj {
628628
AddSequence(seq_id);
629629
return;
630630
}
631-
RedixPage* page = seq2page[seq_id];
631+
RadixPage* page = seq2page[seq_id];
632632
// Remove the sequence temporarily, but keeping the data and starting rolling back.
633633
page->PopSequence(seq_id_node_pool, seq_id);
634634
seq2page.erase(seq_id);
635635
while (page->length <= num_tokens) {
636636
// Roll back entire page
637637
num_tokens -= page->length;
638-
RedixPage* parent = page->parent;
638+
RadixPage* parent = page->parent;
639639
if (page->seq_ids == nullptr && page->first_child == nullptr) {
640640
// The leaf page is removable
641641
parent->RemoveChild(page);
@@ -666,11 +666,11 @@ class PagedRadixTreeImpl : public PagedRadixTreeObj {
666666
* \throw Error if sequence ID is not valid.
667667
*/
668668
void RemoveSequence(int64_t seq_id) {
669-
RedixPage* page = seq2page[seq_id];
669+
RadixPage* page = seq2page[seq_id];
670670
page->PopSequence(seq_id_node_pool, seq_id);
671671
seq2page.erase(seq_id);
672672
while (page->parent && !page->seq_ids && !page->first_child) {
673-
RedixPage* parent = page->parent;
673+
RadixPage* parent = page->parent;
674674
parent->RemoveChild(page);
675675
radix_page_pool->Free(page);
676676
page = parent;
@@ -710,15 +710,15 @@ class PagedRadixTreeImpl : public PagedRadixTreeObj {
710710
* And the page to be merged should be page->Mergeable().
711711
* \param page The parent radix tree page.
712712
*/
713-
void MergePage(RedixPage* page) {
713+
void MergePage(RadixPage* page) {
714714
CHECK(page->Mergeable());
715-
RedixPage* child = page->first_child;
715+
RadixPage* child = page->first_child;
716716
for (int i = 0; i < child->length; ++i) {
717717
(*page)[i + page->length] = (*child)[i];
718718
}
719719
page->length += child->length;
720720
page->first_child = child->first_child;
721-
for (RedixPage* p = child->first_child; p; p = p->next_sibiling) {
721+
for (RadixPage* p = child->first_child; p; p = p->next_sibiling) {
722722
p->parent = page;
723723
}
724724
page->seq_ids = child->seq_ids;
@@ -736,12 +736,12 @@ class PagedRadixTreeImpl : public PagedRadixTreeObj {
736736
* \return The splitted radix tree page. It can be different from the input radix tree page, as
737737
* there may be implicit radix tree page merge.
738738
*/
739-
RedixPage* SplitPage(RedixPage* page, size_t offset) {
739+
RadixPage* SplitPage(RadixPage* page, size_t offset) {
740740
CHECK_LT(offset, page->length);
741-
RedixPage* child = radix_page_pool->Allocate();
741+
RadixPage* child = radix_page_pool->Allocate();
742742
child->parent = page;
743743
child->first_child = page->first_child;
744-
for (RedixPage* p = page->first_child; p; p = p->next_sibiling) {
744+
for (RadixPage* p = page->first_child; p; p = p->next_sibiling) {
745745
p->parent = child;
746746
}
747747
page->first_child = child;
@@ -772,11 +772,11 @@ class PagedRadixTreeImpl : public PagedRadixTreeObj {
772772
* \param tokens The given tokens to match.
773773
* \param length The length of given tokens.
774774
*/
775-
std::tuple<RedixPage*, size_t, size_t> MatchSequence(RedixPage* page, const int64_t* tokens,
775+
std::tuple<RadixPage*, size_t, size_t> MatchSequence(RadixPage* page, const int64_t* tokens,
776776
size_t length) {
777777
size_t offset = 0;
778778
while (offset < length) {
779-
if (RedixPage* child = page->FindChild(tokens[offset])) {
779+
if (RadixPage* child = page->FindChild(tokens[offset])) {
780780
// If child page starts with offset-th token, common prefix at least ends with child page
781781
size_t matched_offset = child->MatchPrefix(tokens + offset, length - offset);
782782
offset += matched_offset;

0 commit comments

Comments
 (0)