def phase_step

mylsm-lsm-store@0.3.2.0 · src/SstFileV2.bend:246

import mylsm-lsm-store@0.3.2.0/src/SstFileV2.bend as SstFileV2
import Base
import mylsm-lsm-store@0.3.2.0/src/Decimal.bend as Decimal

246def phase_step(phase: Phase, +ch: Char) -> Transition:
247  match phase:
248    case NeedS{}:
249      expected_char(Char.is_eq(ch, 'S'), Need2{}, UnknownVersion{})
250    case Need2{}:
251      expected_char(Char.is_eq(ch, '2'), NeedHeaderSemi{}, UnknownVersion{})
252    case NeedHeaderSemi{}:
253      expected_char(Char.is_eq(ch, ';'), ReadLevel{Decimal.Reading{0n, False{}, False{}}}, UnknownVersion{})
254    case ReadLevel{scan}:
255      level_scan(Decimal.scan_step(ch, scan, max_level(), Decimal.Delimited{';'}))
256    case ReadCount{scan}:
257      count_scan(Decimal.scan_step(ch, scan, max_entries(), Decimal.Delimited{';'}))
258    case ReadTag{}:
259      tag_step(ch)
260    case ReadTagSemi{tag}:
261      expected_char(Char.is_eq(ch, ';'), ReadKeyLength{tag, Decimal.Reading{0n, False{}, False{}}}, InvalidEntryTag{})
262    case ReadKeyLength{tag, scan}:
263      key_length_scan(tag, Decimal.scan_step(ch, scan, max_key_chars(), Decimal.Delimited{';'}))
264    case ReadValueLength{key_length, scan}:
265      value_length_scan(key_length, Decimal.scan_step(ch, scan, max_value_chars(), Decimal.Delimited{';'}))
266    case ReadKey{tag, remaining, value_length, reversed}:
267      key_step(tag, remaining, value_length, reversed, ch)
268    case ReadValue{key, remaining, reversed}:
269      value_step(key, remaining, reversed, ch)
270    case NeedHash{}:
271      expected_char(Char.is_eq(ch, '#'), ReadChecksum{SNil{}}, TruncatedChecksum{})
272    case ReadChecksum{reversed}:
273      checksum_step(reversed, ch)

Uses (23)

Used by (1)