Skip to content

Commit

Permalink
feat(plc4go/gen): add support for non string keyed maps
Browse files Browse the repository at this point in the history
  • Loading branch information
sruehl committed Aug 1, 2023
1 parent 2c34096 commit 07130ed
Show file tree
Hide file tree
Showing 20 changed files with 106 additions and 32 deletions.
2 changes: 1 addition & 1 deletion plc4go/internal/cbus/Subscriber.go
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ import (

//go:generate go run ../../tools/plc4xgenerator/gen.go -type=Subscriber
type Subscriber struct {
consumers map[*spiModel.DefaultPlcConsumerRegistration]apiModel.PlcSubscriptionEventConsumer `ignore:"true"`
consumers map[*spiModel.DefaultPlcConsumerRegistration]apiModel.PlcSubscriptionEventConsumer
addSubscriber func(subscriber *Subscriber)

consumersMutex sync.RWMutex
Expand Down
27 changes: 27 additions & 0 deletions plc4go/internal/cbus/Subscriber_plc4xgen.go

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

6 changes: 4 additions & 2 deletions plc4go/pkg/api/plcDriverManger_plc4xgen.go

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

6 changes: 4 additions & 2 deletions plc4go/spi/model/DefaultPlcBrowseItem_plc4xgen.go

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

3 changes: 2 additions & 1 deletion plc4go/spi/model/DefaultPlcBrowseRequestBuilder_plc4xgen.go

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

3 changes: 2 additions & 1 deletion plc4go/spi/model/DefaultPlcBrowseRequest_plc4xgen.go

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

3 changes: 2 additions & 1 deletion plc4go/spi/model/DefaultPlcBrowseResponse_plc4xgen.go

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

6 changes: 4 additions & 2 deletions plc4go/spi/model/DefaultPlcDiscoveryItem_plc4xgen.go

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

6 changes: 4 additions & 2 deletions plc4go/spi/model/DefaultPlcReadRequestBuilder_plc4xgen.go

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

3 changes: 2 additions & 1 deletion plc4go/spi/model/DefaultPlcReadResponse_plc4xgen.go

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

3 changes: 2 additions & 1 deletion plc4go/spi/model/DefaultPlcSubscriptionEvent_plc4xgen.go

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

2 changes: 1 addition & 1 deletion plc4go/spi/model/DefaultPlcSubscriptionRequest.go
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ type DefaultPlcSubscriptionRequestBuilder struct {
tags map[string]apiModel.PlcSubscriptionTag
types map[string]apiModel.PlcSubscriptionType
intervals map[string]time.Duration
preRegisteredConsumers map[string][]apiModel.PlcSubscriptionEventConsumer `ignore:"true"`
preRegisteredConsumers map[string][]apiModel.PlcSubscriptionEventConsumer
}

func NewDefaultPlcSubscriptionRequestBuilder(tagHandler spi.PlcTagHandler, valueHandler spi.PlcValueHandler, subscriber spi.PlcSubscriber) apiModel.PlcSubscriptionRequestBuilder {
Expand Down
26 changes: 22 additions & 4 deletions plc4go/spi/model/DefaultPlcSubscriptionRequestBuilder_plc4xgen.go

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

6 changes: 4 additions & 2 deletions plc4go/spi/model/DefaultPlcSubscriptionRequest_plc4xgen.go

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

3 changes: 2 additions & 1 deletion plc4go/spi/model/DefaultPlcSubscriptionResponse_plc4xgen.go

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

3 changes: 2 additions & 1 deletion plc4go/spi/model/DefaultPlcTagRequest_plc4xgen.go

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

9 changes: 6 additions & 3 deletions plc4go/spi/model/DefaultPlcWriteRequestBuilder_plc4xgen.go

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

3 changes: 2 additions & 1 deletion plc4go/spi/model/DefaultPlcWriteRequest_plc4xgen.go

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

3 changes: 2 additions & 1 deletion plc4go/spi/model/DefaultPlcWriteResponse_plc4xgen.go

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

15 changes: 11 additions & 4 deletions plc4go/tools/plc4xgenerator/gen.go
Original file line number Diff line number Diff line change
Expand Up @@ -347,12 +347,19 @@ func (g *Generator) generate(typeName string) {
g.Printf("if err := writeBuffer.PopContext(%s, utils.WithRenderAsList(true)); err != nil {\n\t\treturn err\n\t}\n", fieldNameUntitled)
}
case *ast.MapType:
if ident, ok := fieldType.Key.(*ast.Ident); !ok || ident.Name != "string" {
fmt.Printf("Only string types are supported for maps right now")
}
g.Printf("if err := writeBuffer.PushContext(%s, utils.WithRenderAsList(true)); err != nil {\n\t\treturn err\n\t}\n", fieldNameUntitled)
// TODO: we use serializable or strings as we don't want to over-complex this
g.Printf("for name, elem := range d.%s {\n", fieldName)
g.Printf("for _name, elem := range d.%s {\n", fieldName)
if ident, ok := fieldType.Key.(*ast.Ident); !ok || ident.Name != "string" {
switch ident.Name {
case "uint", "uint8", "uint16", "uint32", "uint64", "int", "int8", "int16", "int32", "int64": // TODO: add other types
g.Printf("\t\tname := fmt.Sprintf(\"%s\", _name)\n", "%v")
default:
g.Printf("\t\tname := fmt.Sprintf(\"%s\", &_name)\n", "%v")
}
} else {
g.Printf("\t\tname := _name\n")
}
switch eltType := fieldType.Value.(type) {
case *ast.StarExpr, *ast.SelectorExpr:
g.Printf("\n\t\tvar elem any = elem\n")
Expand Down

0 comments on commit 07130ed

Please sign in to comment.