Skip to content

Commit

Permalink
Golang: add bool support to EncodeTo() and DecodeFrom() (stellar#155)
Browse files Browse the repository at this point in the history
Also, for types we can't or don't know how to decode directly, make sure we always call Decode() on a pointer reference
  • Loading branch information
2opremio authored Mar 22, 2023
1 parent 6e42b01 commit 80e38ef
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 5 deletions.
7 changes: 6 additions & 1 deletion lib/xdrgen/generators/go.rb
Original file line number Diff line number Diff line change
Expand Up @@ -451,6 +451,8 @@ def check_error(str)
out.puts check_error "_, err = e.EncodeUint(uint32(#{var}))"
when AST::Typespecs::Int
out.puts (check_error "_, err = e.EncodeInt(int32(#{var}))")
when AST::Typespecs::Bool
out.puts (check_error "_, err = e.EncodeBool(bool(#{var}))")
when AST::Typespecs::String
out.puts check_error "_, err = e.EncodeString(string(#{var}))"
when AST::Typespecs::Opaque
Expand Down Expand Up @@ -659,6 +661,9 @@ def render_decode_from_body(out, var, type, declared_variables:, self_encode:)
when AST::Typespecs::Int
out.puts " #{var}, nTmp, err = d.DecodeInt()"
out.puts tail
when AST::Typespecs::Bool
out.puts " #{var}, nTmp, err = d.DecodeBool()"
out.puts tail
when AST::Typespecs::String
arg = "0"
arg = type.decl.resolved_size unless type.decl.resolved_size.nil?
Expand Down Expand Up @@ -752,7 +757,7 @@ def render_decode_from_body(out, var, type, declared_variables:, self_encode:)
end
out.puts tail
else
out.puts " nTmp, err = d.Decode(#{var})"
out.puts " nTmp, err = d.Decode(&#{var})"
out.puts tail
end
if optional
Expand Down
8 changes: 4 additions & 4 deletions spec/output/generator_spec_go/test.x/MyXDR_generated.go
Original file line number Diff line number Diff line change
Expand Up @@ -899,7 +899,7 @@ if _, err = e.Encode(s.Field5); err != nil {
if _, err = e.Encode(s.Field6); err != nil {
return err
}
if _, err = e.Encode(s.Field7); err != nil {
if _, err = e.EncodeBool(bool(s.Field7)); err != nil {
return err
}
return nil
Expand Down Expand Up @@ -940,17 +940,17 @@ n += nTmp
if err != nil {
return n, fmt.Errorf("decoding Unsigned int: %s", err)
}
nTmp, err = d.Decode(s.Field5)
nTmp, err = d.Decode(&s.Field5)
n += nTmp
if err != nil {
return n, fmt.Errorf("decoding Float: %s", err)
}
nTmp, err = d.Decode(s.Field6)
nTmp, err = d.Decode(&s.Field6)
n += nTmp
if err != nil {
return n, fmt.Errorf("decoding Double: %s", err)
}
nTmp, err = d.Decode(s.Field7)
s.Field7, nTmp, err = d.DecodeBool()
n += nTmp
if err != nil {
return n, fmt.Errorf("decoding Bool: %s", err)
Expand Down

0 comments on commit 80e38ef

Please sign in to comment.