diff --git a/src/capnp_compile.erl b/src/capnp_compile.erl index a6cac8a..758aaea 100644 --- a/src/capnp_compile.erl +++ b/src/capnp_compile.erl @@ -531,23 +531,49 @@ generate_follow_struct_list_pointer() -> { [], ast_follow_struct_list_pointer(), [generate_decode_far_pointer] }. -ast_forms_function(#{name => ast_follow_struct_list_pointer}). - follow_tagged_struct_list_pointer(_DecodeFun, 0, _MessageRef) -> + follow_struct_list_pointer(_DecodeFun, 0, _MessageRef) -> undefined; - follow_tagged_struct_list_pointer(DecodeFun, PointerInt, MessageRef) when PointerInt band 3 == 1 -> + follow_struct_list_pointer(DecodeFun, PointerInt, MessageRef) + when PointerInt band 3 == 1 andalso (PointerInt bsr 32) band 7 >= 5 -> PointerOffset = case PointerInt band (1 bsl 31) of 0 -> ((PointerInt bsr 2) band (1 bsl 30 - 1)) + 1; _ -> ((PointerInt bsr 2) band (1 bsl 30 - 1)) - (1 bsl 30) + 1 end, + LengthFromPointer = (PointerInt bsr 35) band (1 bsl 29 - 1), NewOffset = MessageRef#message_ref.current_offset + PointerOffset, - SkipBits = NewOffset bsl 6, - <<_:SkipBits, Tag:64/little-unsigned-integer, _/binary>> = MessageRef#message_ref.current_segment, - Length = ((Tag bsr 2) band (1 bsl 30 - 1)), - DWords = (Tag bsr 32) band (1 bsl 16 - 1), - PWords = (Tag bsr 48) band (1 bsl 16 - 1), - decode_struct_list(DecodeFun, Length, DWords, PWords, MessageRef#message_ref{current_offset=NewOffset+1}); - follow_tagged_struct_list_pointer(DecodeFun, PointerInt, MessageRef=#message_ref{}) when PointerInt band 3 == 2 -> + case (PointerInt bsr 32) band 7 of + 5 -> + % Pointer to a list of primitive words. Treat like a list of + % structs with a single data word. + Length = LengthFromPointer, + DWords = 1, + PWords = 0, + ListStartOffset = NewOffset; + 6 -> + % Pointer to a list of pointers. Treat like a list of structs + % with a single pointer word. + Length = LengthFromPointer, + DWords = 0, + PWords = 1, + ListStartOffset = NewOffset; + 7 -> + % Tagged struct list. Decode the tag. + SkipBits = NewOffset bsl 6, + <<_:SkipBits, Tag:64/little-unsigned-integer, _/binary>> = MessageRef#message_ref.current_segment, + 0 = (Tag band 3), % Sanity check. + Length = ((Tag bsr 2) band (1 bsl 30 - 1)), + DWords = (Tag bsr 32) band (1 bsl 16 - 1), + PWords = (Tag bsr 48) band (1 bsl 16 - 1), + LengthFromPointer = Length * (DWords + PWords), % Sanity check + ListStartOffset = NewOffset + 1 + end, + decode_struct_list(DecodeFun, Length, DWords, PWords, MessageRef#message_ref{current_offset=ListStartOffset}); + follow_struct_list_pointer(_DecodeFun, PointerInt, _MessageRef) + when PointerInt band 3 == 1 andalso (PointerInt bsr 32) band 7 < 5 -> + erlang:error({not_supported, "cannot currently decode List(struct {}) which is stored as a list of subword values"}); + follow_struct_list_pointer(DecodeFun, PointerInt, MessageRef=#message_ref{}) when PointerInt band 3 == 2 -> {NewPointerInt, NewMessageRef} = decode_far_pointer(PointerInt, MessageRef), - follow_tagged_struct_list_pointer(DecodeFun, NewPointerInt, NewMessageRef). + follow_struct_list_pointer(DecodeFun, NewPointerInt, NewMessageRef). decode_struct_list(DecodeFun, Length, DWords, PWords, MessageRef) -> Offset = MessageRef#message_ref.current_offset, @@ -1266,14 +1292,14 @@ decoder(#ptr_type{type=struct, extra={TypeName, _, _}}, undefined, Var, Line, Me ast(follow_struct_pointer(quote(Decoder), quote(Var), quote(MessageRef))); decoder(#ptr_type{type=list, extra=#ptr_type{type=struct, extra={TypeName, _, _}}}, undefined, Var, Line, MessageRef, _Schema) -> Decoder = {'fun', Line, {function, to_atom(append("internal_decode_", TypeName)), 3}}, - ast(follow_tagged_struct_list_pointer(quote(Decoder), quote(Var), quote(MessageRef))); + ast(follow_struct_list_pointer(quote(Decoder), quote(Var), quote(MessageRef))); decoder(#ptr_type{type=list, extra=#native_type{name=Name}}, undefined, Var, Line, MessageRef, _Schema) -> Decoder = make_atom(Line, append("follow_", append(Name, "_list_pointer"))), ast((quote(Decoder))(quote(Var), quote(MessageRef))); decoder(#ptr_type{type=list, extra=#ptr_type{type=text_or_data, extra=TextType}}, undefined, Var, Line, MessageRef, _Schema) -> DecoderName = to_atom(append("internal_decode_", TextType)), Decoder = {'fun', Line, {function, DecoderName, 3}}, - ast(follow_tagged_struct_list_pointer(quote(Decoder), quote(Var), quote(MessageRef))); + ast(follow_struct_list_pointer(quote(Decoder), quote(Var), quote(MessageRef))); decoder(#ptr_type{type=text_or_data, extra=text}, undefined, Var, _Line, MessageRef, _Schema) -> ast(follow_text_pointer(quote(Var), quote(MessageRef))); decoder(#ptr_type{type=text_or_data, extra=data}, undefined, Var, _Line, MessageRef, _Schema) -> diff --git a/src/capnp_schema.erl b/src/capnp_schema.erl index 604e17d..3f1f21c 100644 --- a/src/capnp_schema.erl +++ b/src/capnp_schema.erl @@ -3178,6 +3178,66 @@ envelope_Value(Input) -> follow_data_pointer(PointerInt, MessageRef) -> follow_text_or_data_pointer(PointerInt, MessageRef, 0). +follow_struct_list_pointer(_DecodeFun, 0, _MessageRef) -> + undefined; +follow_struct_list_pointer(DecodeFun, PointerInt, MessageRef) + when + PointerInt band 3 == 1 + andalso + (PointerInt bsr 32) band 7 >= 5 -> + PointerOffset = + case PointerInt band (1 bsl 31) of + 0 -> + (PointerInt bsr 2) band (1 bsl 30 - 1) + 1; + _ -> + (PointerInt bsr 2) band (1 bsl 30 - 1) - (1 bsl 30) + 1 + end, + LengthFromPointer = (PointerInt bsr 35) band (1 bsl 29 - 1), + NewOffset = MessageRef#message_ref.current_offset + PointerOffset, + case (PointerInt bsr 32) band 7 of + 5 -> + Length = LengthFromPointer, + DWords = 1, + PWords = 0, + ListStartOffset = NewOffset; + 6 -> + Length = LengthFromPointer, + DWords = 0, + PWords = 1, + ListStartOffset = NewOffset; + 7 -> + SkipBits = NewOffset bsl 6, + <<_:SkipBits,Tag:64/little-unsigned-integer,_/binary>> = + MessageRef#message_ref.current_segment, + 0 = Tag band 3, + Length = (Tag bsr 2) band (1 bsl 30 - 1), + DWords = (Tag bsr 32) band (1 bsl 16 - 1), + PWords = (Tag bsr 48) band (1 bsl 16 - 1), + LengthFromPointer = Length * (DWords + PWords), + ListStartOffset = NewOffset + 1 + end, + decode_struct_list(DecodeFun, + Length, + DWords, + PWords, + MessageRef#message_ref{current_offset = + ListStartOffset}); +follow_struct_list_pointer(_DecodeFun, PointerInt, _MessageRef) + when + PointerInt band 3 == 1 + andalso + (PointerInt bsr 32) band 7 < 5 -> + error({not_supported, + "cannot currently decode List(struct {}) which is stored as " + "a list of subword values"}); +follow_struct_list_pointer(DecodeFun, + PointerInt, + MessageRef = #message_ref{}) + when PointerInt band 3 == 2 -> + {NewPointerInt,NewMessageRef} = + decode_far_pointer(PointerInt, MessageRef), + follow_struct_list_pointer(DecodeFun, NewPointerInt, NewMessageRef). + follow_struct_pointer(_DecodeFun, 0, _MessageRef) -> undefined; follow_struct_pointer(DecodeFun, PointerInt, MessageRef) @@ -3208,40 +3268,6 @@ follow_struct_pointer(DecodeFun, decode_far_pointer(PointerInt, MessageRef), follow_struct_pointer(DecodeFun, NewPointerInt, NewMessageRef). -follow_tagged_struct_list_pointer(_DecodeFun, 0, _MessageRef) -> - undefined; -follow_tagged_struct_list_pointer(DecodeFun, PointerInt, MessageRef) - when PointerInt band 3 == 1 -> - PointerOffset = - case PointerInt band (1 bsl 31) of - 0 -> - (PointerInt bsr 2) band (1 bsl 30 - 1) + 1; - _ -> - (PointerInt bsr 2) band (1 bsl 30 - 1) - (1 bsl 30) + 1 - end, - NewOffset = MessageRef#message_ref.current_offset + PointerOffset, - SkipBits = NewOffset bsl 6, - <<_:SkipBits,Tag:64/little-unsigned-integer,_/binary>> = - MessageRef#message_ref.current_segment, - Length = (Tag bsr 2) band (1 bsl 30 - 1), - DWords = (Tag bsr 32) band (1 bsl 16 - 1), - PWords = (Tag bsr 48) band (1 bsl 16 - 1), - decode_struct_list(DecodeFun, - Length, - DWords, - PWords, - MessageRef#message_ref{current_offset = - NewOffset + 1}); -follow_tagged_struct_list_pointer(DecodeFun, - PointerInt, - MessageRef = #message_ref{}) - when PointerInt band 3 == 2 -> - {NewPointerInt,NewMessageRef} = - decode_far_pointer(PointerInt, MessageRef), - follow_tagged_struct_list_pointer(DecodeFun, - NewPointerInt, - NewMessageRef). - follow_text_or_data_pointer(0, _MessageRef, _Trail) -> undefined; follow_text_or_data_pointer(PointerInt, MessageRef, Trail) @@ -3318,12 +3344,12 @@ internal_decode_Brand(<<>>, <>, MessageRef) -> #'Brand'{scopes = - follow_tagged_struct_list_pointer(fun internal_decode_Brand_Scope/3, - Varscopes, - MessageRef#message_ref{current_offset = - MessageRef#message_ref.current_offset - + - 0})}; + follow_struct_list_pointer(fun internal_decode_Brand_Scope/3, + Varscopes, + MessageRef#message_ref{current_offset = + MessageRef#message_ref.current_offset + + + 0})}; internal_decode_Brand(Data, Pointers, MessageRef = #message_ref{}) -> DataPadLength = 0 - bit_size(Data), if @@ -3430,12 +3456,12 @@ internal_decode_Brand_Scope(Data, Pointers, MessageRef = #message_ref{}) -> <<_:0,Var:64/little-unsigned-integer,_/bitstring>> = Pointers, {bind, - follow_tagged_struct_list_pointer(fun internal_decode_Brand_Binding/3, - Var, - MessageRef#message_ref{current_offset = - MessageRef#message_ref.current_offset - + - 0})}; + follow_struct_list_pointer(fun internal_decode_Brand_Binding/3, + Var, + MessageRef#message_ref{current_offset = + MessageRef#message_ref.current_offset + + + 0})}; 1 -> {inherit,undefined} end; @@ -3469,19 +3495,19 @@ internal_decode_CodeGeneratorRequest(<<>>, VarrequestedFiles:64/little-unsigned-integer>>, MessageRef) -> #'CodeGeneratorRequest'{nodes = - follow_tagged_struct_list_pointer(fun internal_decode_Node/3, - Varnodes, - MessageRef#message_ref{current_offset = - MessageRef#message_ref.current_offset - + - 0}), + follow_struct_list_pointer(fun internal_decode_Node/3, + Varnodes, + MessageRef#message_ref{current_offset = + MessageRef#message_ref.current_offset + + + 0}), requestedFiles = - follow_tagged_struct_list_pointer(fun internal_decode_CodeGeneratorRequest_RequestedFile/3, - VarrequestedFiles, - MessageRef#message_ref{current_offset = - MessageRef#message_ref.current_offset - + - 1})}; + follow_struct_list_pointer(fun internal_decode_CodeGeneratorRequest_RequestedFile/3, + VarrequestedFiles, + MessageRef#message_ref{current_offset = + MessageRef#message_ref.current_offset + + + 1})}; internal_decode_CodeGeneratorRequest(Data, Pointers, MessageRef = #message_ref{}) -> @@ -3519,12 +3545,12 @@ internal_decode_CodeGeneratorRequest_RequestedFile(< DataPadLength = 64 - bit_size(Data), if @@ -3645,12 +3671,12 @@ internal_decode_Field(Data = + 0}), annotations = - follow_tagged_struct_list_pointer(fun internal_decode_Annotation/3, - Varannotations, - MessageRef#message_ref{current_offset = - MessageRef#message_ref.current_offset - + - 1}), + follow_struct_list_pointer(fun internal_decode_Annotation/3, + Varannotations, + MessageRef#message_ref{current_offset = + MessageRef#message_ref.current_offset + + + 1}), '' = 'internal_decode_Field.'(Data, Pointers, MessageRef), ordinal = internal_decode_Field_ordinal(Data, @@ -3848,12 +3874,12 @@ internal_decode_Method(< DataPadLength = 192 - bit_size(Data), if @@ -3928,26 +3954,26 @@ internal_decode_Node(Data = + 0}), nestedNodes = - follow_tagged_struct_list_pointer(fun internal_decode_Node_NestedNode/3, - VarnestedNodes, - MessageRef#message_ref{current_offset = - MessageRef#message_ref.current_offset - + - 1}), + follow_struct_list_pointer(fun internal_decode_Node_NestedNode/3, + VarnestedNodes, + MessageRef#message_ref{current_offset = + MessageRef#message_ref.current_offset + + + 1}), annotations = - follow_tagged_struct_list_pointer(fun internal_decode_Annotation/3, - Varannotations, - MessageRef#message_ref{current_offset = - MessageRef#message_ref.current_offset - + - 2}), + follow_struct_list_pointer(fun internal_decode_Annotation/3, + Varannotations, + MessageRef#message_ref{current_offset = + MessageRef#message_ref.current_offset + + + 2}), parameters = - follow_tagged_struct_list_pointer(fun internal_decode_Node_Parameter/3, - Varparameters, - MessageRef#message_ref{current_offset = - MessageRef#message_ref.current_offset - + - 5}), + follow_struct_list_pointer(fun internal_decode_Node_Parameter/3, + Varparameters, + MessageRef#message_ref{current_offset = + MessageRef#message_ref.current_offset + + + 5}), '' = 'internal_decode_Node.'(Data, Pointers, MessageRef)}; internal_decode_Node(Data, Pointers, MessageRef = #message_ref{}) -> DataPadLength = 320 - bit_size(Data), @@ -3986,12 +4012,12 @@ internal_decode_Node(Data, Pointers, MessageRef = #message_ref{}) -> <<_:192,Var:64/little-unsigned-integer,_/bitstring>> = Pointers, {enum, - follow_tagged_struct_list_pointer(fun internal_decode_Enumerant/3, - Var, - MessageRef#message_ref{current_offset = - MessageRef#message_ref.current_offset - + - 3})}; + follow_struct_list_pointer(fun internal_decode_Enumerant/3, + Var, + MessageRef#message_ref{current_offset = + MessageRef#message_ref.current_offset + + + 3})}; 3 -> {interface, internal_decode_Node_interface(Data, Pointers, MessageRef)}; @@ -4274,12 +4300,12 @@ internal_decode_Node_enum(<<_:320/integer>>, _:128/integer>>, MessageRef) -> #'Node_enum'{enumerants = - follow_tagged_struct_list_pointer(fun internal_decode_Enumerant/3, - Varenumerants, - MessageRef#message_ref{current_offset = - MessageRef#message_ref.current_offset - + - 3})}; + follow_struct_list_pointer(fun internal_decode_Enumerant/3, + Varenumerants, + MessageRef#message_ref{current_offset = + MessageRef#message_ref.current_offset + + + 3})}; internal_decode_Node_enum(Data, Pointers, MessageRef = #message_ref{}) -> DataPadLength = 320 - bit_size(Data), if @@ -4308,19 +4334,19 @@ internal_decode_Node_interface(<<_:320/integer>>, _:64/integer>>, MessageRef) -> #'Node_interface'{methods = - follow_tagged_struct_list_pointer(fun internal_decode_Method/3, - Varmethods, - MessageRef#message_ref{current_offset = - MessageRef#message_ref.current_offset - + - 3}), + follow_struct_list_pointer(fun internal_decode_Method/3, + Varmethods, + MessageRef#message_ref{current_offset = + MessageRef#message_ref.current_offset + + + 3}), superclasses = - follow_tagged_struct_list_pointer(fun internal_decode_Superclass/3, - Varsuperclasses, - MessageRef#message_ref{current_offset = - MessageRef#message_ref.current_offset - + - 4})}; + follow_struct_list_pointer(fun internal_decode_Superclass/3, + Varsuperclasses, + MessageRef#message_ref{current_offset = + MessageRef#message_ref.current_offset + + + 4})}; internal_decode_Node_interface(Data, Pointers, MessageRef = #message_ref{}) -> @@ -4383,12 +4409,12 @@ internal_decode_Node_struct(<<_:112/integer, discriminantCount = VardiscriminantCount, discriminantOffset = VardiscriminantOffset, fields = - follow_tagged_struct_list_pointer(fun internal_decode_Field/3, - Varfields, - MessageRef#message_ref{current_offset = - MessageRef#message_ref.current_offset - + - 3})}; + follow_struct_list_pointer(fun internal_decode_Field/3, + Varfields, + MessageRef#message_ref{current_offset = + MessageRef#message_ref.current_offset + + + 3})}; internal_decode_Node_struct(Data, Pointers, MessageRef = #message_ref{}) -> DataPadLength = 320 - bit_size(Data), if diff --git a/src/erlcapnp_test1.erl b/src/erlcapnp_test1.erl index c1b33a4..ced6b84 100644 --- a/src/erlcapnp_test1.erl +++ b/src/erlcapnp_test1.erl @@ -2056,6 +2056,66 @@ follow_int8_list_pointer(PointerInt, MessageRef) <> <= ListData ]. +follow_struct_list_pointer(_DecodeFun, 0, _MessageRef) -> + undefined; +follow_struct_list_pointer(DecodeFun, PointerInt, MessageRef) + when + PointerInt band 3 == 1 + andalso + (PointerInt bsr 32) band 7 >= 5 -> + PointerOffset = + case PointerInt band (1 bsl 31) of + 0 -> + (PointerInt bsr 2) band (1 bsl 30 - 1) + 1; + _ -> + (PointerInt bsr 2) band (1 bsl 30 - 1) - (1 bsl 30) + 1 + end, + LengthFromPointer = (PointerInt bsr 35) band (1 bsl 29 - 1), + NewOffset = MessageRef#message_ref.current_offset + PointerOffset, + case (PointerInt bsr 32) band 7 of + 5 -> + Length = LengthFromPointer, + DWords = 1, + PWords = 0, + ListStartOffset = NewOffset; + 6 -> + Length = LengthFromPointer, + DWords = 0, + PWords = 1, + ListStartOffset = NewOffset; + 7 -> + SkipBits = NewOffset bsl 6, + <<_:SkipBits,Tag:64/little-unsigned-integer,_/binary>> = + MessageRef#message_ref.current_segment, + 0 = Tag band 3, + Length = (Tag bsr 2) band (1 bsl 30 - 1), + DWords = (Tag bsr 32) band (1 bsl 16 - 1), + PWords = (Tag bsr 48) band (1 bsl 16 - 1), + LengthFromPointer = Length * (DWords + PWords), + ListStartOffset = NewOffset + 1 + end, + decode_struct_list(DecodeFun, + Length, + DWords, + PWords, + MessageRef#message_ref{current_offset = + ListStartOffset}); +follow_struct_list_pointer(_DecodeFun, PointerInt, _MessageRef) + when + PointerInt band 3 == 1 + andalso + (PointerInt bsr 32) band 7 < 5 -> + error({not_supported, + "cannot currently decode List(struct {}) which is stored as " + "a list of subword values"}); +follow_struct_list_pointer(DecodeFun, + PointerInt, + MessageRef = #message_ref{}) + when PointerInt band 3 == 2 -> + {NewPointerInt,NewMessageRef} = + decode_far_pointer(PointerInt, MessageRef), + follow_struct_list_pointer(DecodeFun, NewPointerInt, NewMessageRef). + follow_struct_pointer(_DecodeFun, 0, _MessageRef) -> undefined; follow_struct_pointer(DecodeFun, PointerInt, MessageRef) @@ -2086,40 +2146,6 @@ follow_struct_pointer(DecodeFun, decode_far_pointer(PointerInt, MessageRef), follow_struct_pointer(DecodeFun, NewPointerInt, NewMessageRef). -follow_tagged_struct_list_pointer(_DecodeFun, 0, _MessageRef) -> - undefined; -follow_tagged_struct_list_pointer(DecodeFun, PointerInt, MessageRef) - when PointerInt band 3 == 1 -> - PointerOffset = - case PointerInt band (1 bsl 31) of - 0 -> - (PointerInt bsr 2) band (1 bsl 30 - 1) + 1; - _ -> - (PointerInt bsr 2) band (1 bsl 30 - 1) - (1 bsl 30) + 1 - end, - NewOffset = MessageRef#message_ref.current_offset + PointerOffset, - SkipBits = NewOffset bsl 6, - <<_:SkipBits,Tag:64/little-unsigned-integer,_/binary>> = - MessageRef#message_ref.current_segment, - Length = (Tag bsr 2) band (1 bsl 30 - 1), - DWords = (Tag bsr 32) band (1 bsl 16 - 1), - PWords = (Tag bsr 48) band (1 bsl 16 - 1), - decode_struct_list(DecodeFun, - Length, - DWords, - PWords, - MessageRef#message_ref{current_offset = - NewOffset + 1}); -follow_tagged_struct_list_pointer(DecodeFun, - PointerInt, - MessageRef = #message_ref{}) - when PointerInt band 3 == 2 -> - {NewPointerInt,NewMessageRef} = - decode_far_pointer(PointerInt, MessageRef), - follow_tagged_struct_list_pointer(DecodeFun, - NewPointerInt, - NewMessageRef). - follow_text_or_data_pointer(0, _MessageRef, _Trail) -> undefined; follow_text_or_data_pointer(PointerInt, MessageRef, Trail) @@ -2279,19 +2305,19 @@ internal_decode_erlcapnp_TestCompositeList(<<>>, VartestVar2:64/little-unsigned-integer>>, MessageRef) -> #erlcapnp_TestCompositeList{testVar1 = - follow_tagged_struct_list_pointer(fun internal_decode_erlcapnp_TestMultipleIntegers/3, - VartestVar1, - MessageRef#message_ref{current_offset = - MessageRef#message_ref.current_offset - + - 0}), + follow_struct_list_pointer(fun internal_decode_erlcapnp_TestMultipleIntegers/3, + VartestVar1, + MessageRef#message_ref{current_offset = + MessageRef#message_ref.current_offset + + + 0}), testVar2 = - follow_tagged_struct_list_pointer(fun internal_decode_erlcapnp_TestLessBoringPointer/3, - VartestVar2, - MessageRef#message_ref{current_offset = - MessageRef#message_ref.current_offset - + - 1})}; + follow_struct_list_pointer(fun internal_decode_erlcapnp_TestLessBoringPointer/3, + VartestVar2, + MessageRef#message_ref{current_offset = + MessageRef#message_ref.current_offset + + + 1})}; internal_decode_erlcapnp_TestCompositeList(Data, Pointers, MessageRef = #message_ref{}) -> @@ -2755,12 +2781,12 @@ internal_decode_erlcapnp_TestPointerList(<<>>, <>, MessageRef) -> #erlcapnp_TestPointerList{testVar1 = - follow_tagged_struct_list_pointer(fun internal_decode_erlcapnp_TestBoringPointer/3, - VartestVar1, - MessageRef#message_ref{current_offset = - MessageRef#message_ref.current_offset - + - 0})}; + follow_struct_list_pointer(fun internal_decode_erlcapnp_TestBoringPointer/3, + VartestVar1, + MessageRef#message_ref{current_offset = + MessageRef#message_ref.current_offset + + + 0})}; internal_decode_erlcapnp_TestPointerList(Data, Pointers, MessageRef = #message_ref{}) -> @@ -2853,19 +2879,19 @@ internal_decode_erlcapnp_TestShortList(<<>>, VartestVar2:64/little-unsigned-integer>>, MessageRef) -> #erlcapnp_TestShortList{testVar1 = - follow_tagged_struct_list_pointer(fun internal_decode_erlcapnp_TestBoringInteger/3, - VartestVar1, - MessageRef#message_ref{current_offset = - MessageRef#message_ref.current_offset - + - 0}), + follow_struct_list_pointer(fun internal_decode_erlcapnp_TestBoringInteger/3, + VartestVar1, + MessageRef#message_ref{current_offset = + MessageRef#message_ref.current_offset + + + 0}), testVar2 = - follow_tagged_struct_list_pointer(fun internal_decode_erlcapnp_SimpleShortStruct/3, - VartestVar2, - MessageRef#message_ref{current_offset = - MessageRef#message_ref.current_offset - + - 1})}; + follow_struct_list_pointer(fun internal_decode_erlcapnp_SimpleShortStruct/3, + VartestVar2, + MessageRef#message_ref{current_offset = + MessageRef#message_ref.current_offset + + + 1})}; internal_decode_erlcapnp_TestShortList(Data, Pointers, MessageRef = #message_ref{}) -> @@ -2895,12 +2921,12 @@ internal_decode_erlcapnp_TestTextList(<<>>, <>, MessageRef) -> #erlcapnp_TestTextList{testVar1 = - follow_tagged_struct_list_pointer(fun internal_decode_text/3, - VartestVar1, - MessageRef#message_ref{current_offset = - MessageRef#message_ref.current_offset - + - 0})}; + follow_struct_list_pointer(fun internal_decode_text/3, + VartestVar1, + MessageRef#message_ref{current_offset = + MessageRef#message_ref.current_offset + + + 0})}; internal_decode_erlcapnp_TestTextList(Data, Pointers, MessageRef = #message_ref{}) ->