///|
fn demonstrate() -> Unit raise {
let pairs : Ref[Int32] = { val: 0, }
let parser = @valve.new_stream_parser(
event => {
if event is @valve.Pair(_, _) {
pairs.val += 1
}
true
},
options={
..@valve.ParseOptions::default(),
max_entries: 1000001,
max_input_chars: 50000000,
},
)
parser.feed("root {\n")
for i in 0..<1000000 {
parser.feed("key \{i}\n")
}
parser.feed("}\n")
parser.finish()
assert_eq(pairs.val, 1000000)
println(
"\{pairs.val} pairs from \{parser.characters_seen()} characters without a document tree",
)
}
///|
fn main {
demonstrate() catch {
error => println(error.to_string())
}
}