Source code for bluebase.ix.type

from typing import Self

from dataclasses import dataclass

from bluebase.core import Value
from bluebase.pf import (
    PfPageId,
    PfPageData,
)
from bluebase.rm import RmRecordId


__all__ = (
    'IxSlotId',
    'IxNodeId',
    'IxNodeData',
    'IxPostingId',
    'IxBucketId',
    'IxBucketData',
    'IxEntry',
)


[docs] class IxSlotId(int): """ """
[docs] @classmethod def first(cls) -> Self: """ """ return cls(0)
[docs] def succ(self) -> Self: """ """ return type(self)(int(self) + 1)
[docs] def pred(self) -> Self: """ """ return type(self)(int(self) - 1)
[docs] class IxNodeId(PfPageId): """ """ pass
[docs] class IxNodeData(PfPageData): """ """ pass
[docs] class IxPostingId(int): """ """
[docs] @classmethod def first(cls) -> Self: """ """ return cls(0)
[docs] def succ(self) -> Self: """ """ return type(self)(int(self) + 1)
[docs] def pred(self) -> Self: """ """ return type(self)(int(self) - 1)
[docs] class IxBucketId(PfPageId): """ """ pass
[docs] class IxBucketData(PfPageData): """ """ pass
[docs] @dataclass(frozen=True, slots=True) class IxEntry: """ Attributes: value: rid: """ value: Value rid: RmRecordId