Skip to content

Commit

Permalink
feat: support maps with value type string
Browse files Browse the repository at this point in the history
  • Loading branch information
frrist committed Apr 19, 2023
1 parent cd5f708 commit a4e5b3e
Show file tree
Hide file tree
Showing 3 changed files with 177 additions and 2 deletions.
18 changes: 18 additions & 0 deletions gen.go
Original file line number Diff line number Diff line change
Expand Up @@ -491,6 +491,10 @@ func emitCborMarshalMapField(w io.Writer, f Field) error {

// Map value
switch f.Type.Elem().Kind() {
case reflect.String:
if err := emitCborMarshalStringField(w, Field{Name: "v"}); err != nil {
return err
}
case reflect.Ptr:
if f.Type.Elem().Elem().Kind() != reflect.Struct {
return fmt.Errorf("unsupported map elem ptr type: %s", f.Type.Elem())
Expand Down Expand Up @@ -991,6 +995,20 @@ func emitCborUnmarshalMapField(w io.Writer, f Field) error {
var pointer bool
t := f.Type.Elem()
switch t.Kind() {
case reflect.String:
if err := doTemplate(w, f, `
var v string
`); err != nil {
return err
}
if err := emitCborUnmarshalStringField(w, Field{Name: "v"}); err != nil {
return err
}
if err := doTemplate(w, f, `
{{ .Name }}[k] = v
`); err != nil {
return err
}
case reflect.Ptr:
if t.Elem().Kind() != reflect.Struct {
return fmt.Errorf("unsupported map elem ptr type: %s", t)
Expand Down
3 changes: 1 addition & 2 deletions testgen/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,6 @@ func main() {
types.FixedArrays{},
types.ThingWithSomeTime{},
types.BigField{},
// TODO this fails with error: failed to generate encoders: currently unsupported map elem type: string
types.MapStringString{},
); err != nil {
panic(err)
}
Expand All @@ -29,6 +27,7 @@ func main() {
types.TestEmpty{},
types.TestConstField{},
types.TestCanonicalFieldOrder{},
types.MapStringString{},
); err != nil {
panic(err)
}
Expand Down
158 changes: 158 additions & 0 deletions testing/cbor_map_gen.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit a4e5b3e

Please sign in to comment.