-module(gwr@parser@convention_parser). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]). -export([parse_vector/2]). -spec parse_vector( gwr@parser@binary_reader:binary_reader(), fun((gwr@parser@binary_reader:binary_reader()) -> {ok, {gwr@parser@binary_reader:binary_reader(), HCZ}} | {error, binary()}) ) -> {ok, {gwr@parser@binary_reader:binary_reader(), list(HCZ)}} | {error, binary()}. parse_vector(Reader, Parse_element) -> gleam@result:'try'( gwr@parser@value_parser:parse_unsigned_leb128_integer(Reader), fun(_use0) -> {Reader@1, Vector_length} = _use0, gleam@bool:guard( Vector_length =:= 0, {ok, {Reader@1, []}}, fun() -> gleam@result:'try'( gleam@iterator:try_fold( gleam@iterator:range(0, Vector_length - 1), {Reader@1, []}, fun(State, _) -> {Reader@2, Objects_list} = State, gleam@bool:guard( not gwr@parser@binary_reader:can_read( Reader@2 ), {ok, State}, fun() -> gleam@result:'try'( Parse_element(Reader@2), fun(_use0@1) -> {Reader@3, Object} = _use0@1, {ok, {Reader@3, lists:append( Objects_list, [Object] )}} end ) end ) end ), fun(_use0@2) -> {Reader@4, Objects_list@1} = _use0@2, {ok, {Reader@4, Objects_list@1}} end ) end ) end ).