Skip to content

src/storage/trie/supergenius_trie/supergenius_node.cpp

Namespaces

Name
sgns
sgns::storage
sgns::storage::trie

Source code

#include "storage/trie/supergenius_trie/supergenius_node.hpp"

namespace sgns::storage::trie {

  int BranchNode::getType() const {
    return static_cast<int>(value ? SuperGeniusNode::Type::BranchWithValue
                                  : SuperGeniusNode::Type::BranchEmptyValue);
  }

  uint16_t BranchNode::childrenBitmap() const {
    uint16_t bitmap = 0u;
    for (auto i = 0u; i < kMaxChildren; i++) {
      if (children.at(i)) {
        bitmap = bitmap | 1u << i;
      }
    }
    return bitmap;
  }

  uint8_t BranchNode::childrenNum() const {
    return std::count_if(children.begin(),
                         children.end(),
                         [](auto const &child) { return child; });
    ;
  }

  int LeafNode::getType() const {
    return static_cast<int>(SuperGeniusNode::Type::Leaf);
  }

}  // namespace sgns::storage::trie

Updated on 2026-03-04 at 13:10:45 -0800