stringscanner

Stateful String Scanner

Functions

FunctionDescription
_ss_byte_at
_ss_copy
ss_newCreate new scanner over source string.
ss_scanTry to match pattern at current position. If found, advance and return 1.
ss_checkCheck if pattern matches at current position without advancing.
ss_skipAdvance position by n bytes.
ss_skip_untilSkip forward until pattern is found. Returns distance skipped, -1 if not found.
ss_restCopy remaining unscanned portion to out. Returns length.
ss_rest_lenLength of remaining unscanned portion.
ss_eos1 if at end of string.
ss_posCurrent scan position.
ss_resetReset scanner to beginning.
ss_matchedCopy last matched string to out. Returns length.
ss_peekPeek at next n bytes without advancing. Returns bytes copied.
ss_scan_byteRead one byte and advance. Returns byte value or -1 at end.

Details

_ss_byte_at

fn _ss_byte_at(buf: &i8, idx: i64) -> i64

_ss_copy

fn _ss_copy(dst: &i8, doff: i64, src: &i8, soff: i64, n: i64)

ss_new

fn ss_new(src: &i8, len: i64) -> &i64

Create new scanner over source string.

ss_scan

fn ss_scan(ss: &i64, pat: &i8, plen: i64) -> i64

Try to match pattern at current position. If found, advance and return 1.

ss_check

fn ss_check(ss: &i64, pat: &i8, plen: i64) -> i64

Check if pattern matches at current position without advancing.

ss_skip

fn ss_skip(ss: &i64, n: i64)

Advance position by n bytes.

ss_skip_until

fn ss_skip_until(ss: &i64, pat: &i8, plen: i64) -> i64

Skip forward until pattern is found. Returns distance skipped, -1 if not found.

ss_rest

fn ss_rest(ss: &i64, out: &i8) -> i64

Copy remaining unscanned portion to out. Returns length.

ss_rest_len

fn ss_rest_len(ss: &i64) -> i64

Length of remaining unscanned portion.

ss_eos

fn ss_eos(ss: &i64) -> i64

1 if at end of string.

ss_pos

fn ss_pos(ss: &i64) -> i64

Current scan position.

ss_reset

fn ss_reset(ss: &i64)

Reset scanner to beginning.

ss_matched

fn ss_matched(ss: &i64, out: &i8) -> i64

Copy last matched string to out. Returns length.

ss_peek

fn ss_peek(ss: &i64, n: i64, out: &i8) -> i64

Peek at next n bytes without advancing. Returns bytes copied.

ss_scan_byte

fn ss_scan_byte(ss: &i64) -> i64

Read one byte and advance. Returns byte value or -1 at end.