You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by sr...@apache.org on 2023/08/01 16:29:54 UTC
[plc4x] 01/02: feat(plc4go/gen): add support for non string keyed maps
This is an automated email from the ASF dual-hosted git repository.
sruehl pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/plc4x.git
commit 07130ed03ac441565638f3c4c7c9b91721c8f7e8
Author: Sebastian Rühl <sr...@apache.org>
AuthorDate: Tue Aug 1 18:29:21 2023 +0200
feat(plc4go/gen): add support for non string keyed maps
---
plc4go/internal/cbus/Subscriber.go | 2 +-
plc4go/internal/cbus/Subscriber_plc4xgen.go | 27 ++++++++++++++++++++++
plc4go/pkg/api/plcDriverManger_plc4xgen.go | 6 +++--
plc4go/spi/model/DefaultPlcBrowseItem_plc4xgen.go | 6 +++--
.../DefaultPlcBrowseRequestBuilder_plc4xgen.go | 3 ++-
.../spi/model/DefaultPlcBrowseRequest_plc4xgen.go | 3 ++-
.../spi/model/DefaultPlcBrowseResponse_plc4xgen.go | 3 ++-
.../spi/model/DefaultPlcDiscoveryItem_plc4xgen.go | 6 +++--
.../model/DefaultPlcReadRequestBuilder_plc4xgen.go | 6 +++--
.../spi/model/DefaultPlcReadResponse_plc4xgen.go | 3 ++-
.../model/DefaultPlcSubscriptionEvent_plc4xgen.go | 3 ++-
plc4go/spi/model/DefaultPlcSubscriptionRequest.go | 2 +-
...efaultPlcSubscriptionRequestBuilder_plc4xgen.go | 26 +++++++++++++++++----
.../DefaultPlcSubscriptionRequest_plc4xgen.go | 6 +++--
.../DefaultPlcSubscriptionResponse_plc4xgen.go | 3 ++-
plc4go/spi/model/DefaultPlcTagRequest_plc4xgen.go | 3 ++-
.../DefaultPlcWriteRequestBuilder_plc4xgen.go | 9 +++++---
.../spi/model/DefaultPlcWriteRequest_plc4xgen.go | 3 ++-
.../spi/model/DefaultPlcWriteResponse_plc4xgen.go | 3 ++-
plc4go/tools/plc4xgenerator/gen.go | 15 ++++++++----
20 files changed, 106 insertions(+), 32 deletions(-)
diff --git a/plc4go/internal/cbus/Subscriber.go b/plc4go/internal/cbus/Subscriber.go
index fde8f8bc05..8ca29b091b 100644
--- a/plc4go/internal/cbus/Subscriber.go
+++ b/plc4go/internal/cbus/Subscriber.go
@@ -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
diff --git a/plc4go/internal/cbus/Subscriber_plc4xgen.go b/plc4go/internal/cbus/Subscriber_plc4xgen.go
index 53bc4edefb..d76c87cf19 100644
--- a/plc4go/internal/cbus/Subscriber_plc4xgen.go
+++ b/plc4go/internal/cbus/Subscriber_plc4xgen.go
@@ -42,6 +42,33 @@ func (d *Subscriber) SerializeWithWriteBuffer(ctx context.Context, writeBuffer u
if err := writeBuffer.PushContext("Subscriber"); err != nil {
return err
}
+ if err := writeBuffer.PushContext("consumers", utils.WithRenderAsList(true)); err != nil {
+ return err
+ }
+ for _name, elem := range d.consumers {
+ name := fmt.Sprintf("%v", _name)
+
+ var elem any = elem
+ if serializable, ok := elem.(utils.Serializable); ok {
+ if err := writeBuffer.PushContext(name); err != nil {
+ return err
+ }
+ if err := serializable.SerializeWithWriteBuffer(ctx, writeBuffer); err != nil {
+ return err
+ }
+ if err := writeBuffer.PopContext(name); err != nil {
+ return err
+ }
+ } else {
+ elemAsString := fmt.Sprintf("%v", elem)
+ if err := writeBuffer.WriteString(name, uint32(len(elemAsString)*8), "UTF-8", elemAsString); err != nil {
+ return err
+ }
+ }
+ }
+ if err := writeBuffer.PopContext("consumers", utils.WithRenderAsList(true)); err != nil {
+ return err
+ }
if err := writeBuffer.WriteBit("addSubscriber", d.addSubscriber != nil); err != nil {
return err
diff --git a/plc4go/pkg/api/plcDriverManger_plc4xgen.go b/plc4go/pkg/api/plcDriverManger_plc4xgen.go
index ca16ab26c9..c1042deddc 100644
--- a/plc4go/pkg/api/plcDriverManger_plc4xgen.go
+++ b/plc4go/pkg/api/plcDriverManger_plc4xgen.go
@@ -45,7 +45,8 @@ func (d *plcDriverManger) SerializeWithWriteBuffer(ctx context.Context, writeBuf
if err := writeBuffer.PushContext("drivers", utils.WithRenderAsList(true)); err != nil {
return err
}
- for name, elem := range d.drivers {
+ for _name, elem := range d.drivers {
+ name := _name
_value := fmt.Sprintf("%v", elem)
if err := writeBuffer.WriteString(name, uint32(len(_value)*8), "UTF-8", _value); err != nil {
@@ -58,7 +59,8 @@ func (d *plcDriverManger) SerializeWithWriteBuffer(ctx context.Context, writeBuf
if err := writeBuffer.PushContext("transports", utils.WithRenderAsList(true)); err != nil {
return err
}
- for name, elem := range d.transports {
+ for _name, elem := range d.transports {
+ name := _name
var elem any = elem
if serializable, ok := elem.(utils.Serializable); ok {
diff --git a/plc4go/spi/model/DefaultPlcBrowseItem_plc4xgen.go b/plc4go/spi/model/DefaultPlcBrowseItem_plc4xgen.go
index 65ff4663a5..695569c335 100644
--- a/plc4go/spi/model/DefaultPlcBrowseItem_plc4xgen.go
+++ b/plc4go/spi/model/DefaultPlcBrowseItem_plc4xgen.go
@@ -84,7 +84,8 @@ func (d *DefaultPlcBrowseItem) SerializeWithWriteBuffer(ctx context.Context, wri
if err := writeBuffer.PushContext("children", utils.WithRenderAsList(true)); err != nil {
return err
}
- for name, elem := range d.Children {
+ for _name, elem := range d.Children {
+ name := _name
var elem any = elem
if serializable, ok := elem.(utils.Serializable); ok {
@@ -110,7 +111,8 @@ func (d *DefaultPlcBrowseItem) SerializeWithWriteBuffer(ctx context.Context, wri
if err := writeBuffer.PushContext("options", utils.WithRenderAsList(true)); err != nil {
return err
}
- for name, elem := range d.Options {
+ for _name, elem := range d.Options {
+ name := _name
var elem any = elem
if serializable, ok := elem.(utils.Serializable); ok {
diff --git a/plc4go/spi/model/DefaultPlcBrowseRequestBuilder_plc4xgen.go b/plc4go/spi/model/DefaultPlcBrowseRequestBuilder_plc4xgen.go
index a9d69dd885..fa1f0ea27b 100644
--- a/plc4go/spi/model/DefaultPlcBrowseRequestBuilder_plc4xgen.go
+++ b/plc4go/spi/model/DefaultPlcBrowseRequestBuilder_plc4xgen.go
@@ -56,7 +56,8 @@ func (d *DefaultPlcBrowseRequestBuilder) SerializeWithWriteBuffer(ctx context.Co
if err := writeBuffer.PushContext("queryStrings", utils.WithRenderAsList(true)); err != nil {
return err
}
- for name, elem := range d.queryStrings {
+ for _name, elem := range d.queryStrings {
+ name := _name
if err := writeBuffer.WriteString(name, uint32(len(elem)*8), "UTF-8", elem); err != nil {
return err
diff --git a/plc4go/spi/model/DefaultPlcBrowseRequest_plc4xgen.go b/plc4go/spi/model/DefaultPlcBrowseRequest_plc4xgen.go
index 6f13649df7..307d715789 100644
--- a/plc4go/spi/model/DefaultPlcBrowseRequest_plc4xgen.go
+++ b/plc4go/spi/model/DefaultPlcBrowseRequest_plc4xgen.go
@@ -75,7 +75,8 @@ func (d *DefaultPlcBrowseRequest) SerializeWithWriteBuffer(ctx context.Context,
if err := writeBuffer.PushContext("queries", utils.WithRenderAsList(true)); err != nil {
return err
}
- for name, elem := range d.queries {
+ for _name, elem := range d.queries {
+ name := _name
var elem any = elem
if serializable, ok := elem.(utils.Serializable); ok {
diff --git a/plc4go/spi/model/DefaultPlcBrowseResponse_plc4xgen.go b/plc4go/spi/model/DefaultPlcBrowseResponse_plc4xgen.go
index e34f01597d..9d59448e32 100644
--- a/plc4go/spi/model/DefaultPlcBrowseResponse_plc4xgen.go
+++ b/plc4go/spi/model/DefaultPlcBrowseResponse_plc4xgen.go
@@ -68,7 +68,8 @@ func (d *DefaultPlcBrowseResponse) SerializeWithWriteBuffer(ctx context.Context,
if err := writeBuffer.PushContext("results", utils.WithRenderAsList(true)); err != nil {
return err
}
- for name, elem := range d.results {
+ for _name, elem := range d.results {
+ name := _name
var elem any = elem
if serializable, ok := elem.(utils.Serializable); ok {
diff --git a/plc4go/spi/model/DefaultPlcDiscoveryItem_plc4xgen.go b/plc4go/spi/model/DefaultPlcDiscoveryItem_plc4xgen.go
index 64963d9ffd..014ec63b7f 100644
--- a/plc4go/spi/model/DefaultPlcDiscoveryItem_plc4xgen.go
+++ b/plc4go/spi/model/DefaultPlcDiscoveryItem_plc4xgen.go
@@ -53,7 +53,8 @@ func (d *DefaultPlcDiscoveryItem) SerializeWithWriteBuffer(ctx context.Context,
if err := writeBuffer.PushContext("options", utils.WithRenderAsList(true)); err != nil {
return err
}
- for name, elem := range d.Options {
+ for _name, elem := range d.Options {
+ name := _name
_value := fmt.Sprintf("%v", elem)
if err := writeBuffer.WriteString(name, uint32(len(_value)*8), "UTF-8", _value); err != nil {
@@ -70,7 +71,8 @@ func (d *DefaultPlcDiscoveryItem) SerializeWithWriteBuffer(ctx context.Context,
if err := writeBuffer.PushContext("attributes", utils.WithRenderAsList(true)); err != nil {
return err
}
- for name, elem := range d.Attributes {
+ for _name, elem := range d.Attributes {
+ name := _name
var elem any = elem
if serializable, ok := elem.(utils.Serializable); ok {
diff --git a/plc4go/spi/model/DefaultPlcReadRequestBuilder_plc4xgen.go b/plc4go/spi/model/DefaultPlcReadRequestBuilder_plc4xgen.go
index 2ae90c109d..a060e54860 100644
--- a/plc4go/spi/model/DefaultPlcReadRequestBuilder_plc4xgen.go
+++ b/plc4go/spi/model/DefaultPlcReadRequestBuilder_plc4xgen.go
@@ -56,7 +56,8 @@ func (d *DefaultPlcReadRequestBuilder) SerializeWithWriteBuffer(ctx context.Cont
if err := writeBuffer.PushContext("tagAddresses", utils.WithRenderAsList(true)); err != nil {
return err
}
- for name, elem := range d.tagAddresses {
+ for _name, elem := range d.tagAddresses {
+ name := _name
if err := writeBuffer.WriteString(name, uint32(len(elem)*8), "UTF-8", elem); err != nil {
return err
@@ -68,7 +69,8 @@ func (d *DefaultPlcReadRequestBuilder) SerializeWithWriteBuffer(ctx context.Cont
if err := writeBuffer.PushContext("tags", utils.WithRenderAsList(true)); err != nil {
return err
}
- for name, elem := range d.tags {
+ for _name, elem := range d.tags {
+ name := _name
var elem any = elem
if serializable, ok := elem.(utils.Serializable); ok {
diff --git a/plc4go/spi/model/DefaultPlcReadResponse_plc4xgen.go b/plc4go/spi/model/DefaultPlcReadResponse_plc4xgen.go
index 7b1d127788..344b55788a 100644
--- a/plc4go/spi/model/DefaultPlcReadResponse_plc4xgen.go
+++ b/plc4go/spi/model/DefaultPlcReadResponse_plc4xgen.go
@@ -64,7 +64,8 @@ func (d *DefaultPlcReadResponse) SerializeWithWriteBuffer(ctx context.Context, w
if err := writeBuffer.PushContext("values", utils.WithRenderAsList(true)); err != nil {
return err
}
- for name, elem := range d.values {
+ for _name, elem := range d.values {
+ name := _name
var elem any = elem
if serializable, ok := elem.(utils.Serializable); ok {
diff --git a/plc4go/spi/model/DefaultPlcSubscriptionEvent_plc4xgen.go b/plc4go/spi/model/DefaultPlcSubscriptionEvent_plc4xgen.go
index 347717d86d..91f666fcd4 100644
--- a/plc4go/spi/model/DefaultPlcSubscriptionEvent_plc4xgen.go
+++ b/plc4go/spi/model/DefaultPlcSubscriptionEvent_plc4xgen.go
@@ -45,7 +45,8 @@ func (d *DefaultPlcSubscriptionEvent) SerializeWithWriteBuffer(ctx context.Conte
if err := writeBuffer.PushContext("values", utils.WithRenderAsList(true)); err != nil {
return err
}
- for name, elem := range d.values {
+ for _name, elem := range d.values {
+ name := _name
var elem any = elem
if serializable, ok := elem.(utils.Serializable); ok {
diff --git a/plc4go/spi/model/DefaultPlcSubscriptionRequest.go b/plc4go/spi/model/DefaultPlcSubscriptionRequest.go
index 55f24ff65e..8e5e9a9eb5 100644
--- a/plc4go/spi/model/DefaultPlcSubscriptionRequest.go
+++ b/plc4go/spi/model/DefaultPlcSubscriptionRequest.go
@@ -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 {
diff --git a/plc4go/spi/model/DefaultPlcSubscriptionRequestBuilder_plc4xgen.go b/plc4go/spi/model/DefaultPlcSubscriptionRequestBuilder_plc4xgen.go
index 5d94807233..629d0a8fcb 100644
--- a/plc4go/spi/model/DefaultPlcSubscriptionRequestBuilder_plc4xgen.go
+++ b/plc4go/spi/model/DefaultPlcSubscriptionRequestBuilder_plc4xgen.go
@@ -56,7 +56,8 @@ func (d *DefaultPlcSubscriptionRequestBuilder) SerializeWithWriteBuffer(ctx cont
if err := writeBuffer.PushContext("tagAddresses", utils.WithRenderAsList(true)); err != nil {
return err
}
- for name, elem := range d.tagAddresses {
+ for _name, elem := range d.tagAddresses {
+ name := _name
if err := writeBuffer.WriteString(name, uint32(len(elem)*8), "UTF-8", elem); err != nil {
return err
@@ -68,7 +69,8 @@ func (d *DefaultPlcSubscriptionRequestBuilder) SerializeWithWriteBuffer(ctx cont
if err := writeBuffer.PushContext("tags", utils.WithRenderAsList(true)); err != nil {
return err
}
- for name, elem := range d.tags {
+ for _name, elem := range d.tags {
+ name := _name
var elem any = elem
if serializable, ok := elem.(utils.Serializable); ok {
@@ -94,7 +96,8 @@ func (d *DefaultPlcSubscriptionRequestBuilder) SerializeWithWriteBuffer(ctx cont
if err := writeBuffer.PushContext("types", utils.WithRenderAsList(true)); err != nil {
return err
}
- for name, elem := range d.types {
+ for _name, elem := range d.types {
+ name := _name
var elem any = elem
if serializable, ok := elem.(utils.Serializable); ok {
@@ -120,7 +123,8 @@ func (d *DefaultPlcSubscriptionRequestBuilder) SerializeWithWriteBuffer(ctx cont
if err := writeBuffer.PushContext("intervals", utils.WithRenderAsList(true)); err != nil {
return err
}
- for name, elem := range d.intervals {
+ for _name, elem := range d.intervals {
+ name := _name
var elem any = elem
if serializable, ok := elem.(utils.Serializable); ok {
@@ -143,6 +147,20 @@ func (d *DefaultPlcSubscriptionRequestBuilder) SerializeWithWriteBuffer(ctx cont
if err := writeBuffer.PopContext("intervals", utils.WithRenderAsList(true)); err != nil {
return err
}
+ if err := writeBuffer.PushContext("preRegisteredConsumers", utils.WithRenderAsList(true)); err != nil {
+ return err
+ }
+ for _name, elem := range d.preRegisteredConsumers {
+ name := _name
+ _value := fmt.Sprintf("%v", elem)
+
+ if err := writeBuffer.WriteString(name, uint32(len(_value)*8), "UTF-8", _value); err != nil {
+ return err
+ }
+ }
+ if err := writeBuffer.PopContext("preRegisteredConsumers", utils.WithRenderAsList(true)); err != nil {
+ return err
+ }
if err := writeBuffer.PopContext("PlcSubscriptionRequestBuilder"); err != nil {
return err
}
diff --git a/plc4go/spi/model/DefaultPlcSubscriptionRequest_plc4xgen.go b/plc4go/spi/model/DefaultPlcSubscriptionRequest_plc4xgen.go
index c05822e2bf..e956f3a5d0 100644
--- a/plc4go/spi/model/DefaultPlcSubscriptionRequest_plc4xgen.go
+++ b/plc4go/spi/model/DefaultPlcSubscriptionRequest_plc4xgen.go
@@ -48,7 +48,8 @@ func (d *DefaultPlcSubscriptionRequest) SerializeWithWriteBuffer(ctx context.Con
if err := writeBuffer.PushContext("types", utils.WithRenderAsList(true)); err != nil {
return err
}
- for name, elem := range d.types {
+ for _name, elem := range d.types {
+ name := _name
var elem any = elem
if serializable, ok := elem.(utils.Serializable); ok {
@@ -74,7 +75,8 @@ func (d *DefaultPlcSubscriptionRequest) SerializeWithWriteBuffer(ctx context.Con
if err := writeBuffer.PushContext("intervals", utils.WithRenderAsList(true)); err != nil {
return err
}
- for name, elem := range d.intervals {
+ for _name, elem := range d.intervals {
+ name := _name
var elem any = elem
if serializable, ok := elem.(utils.Serializable); ok {
diff --git a/plc4go/spi/model/DefaultPlcSubscriptionResponse_plc4xgen.go b/plc4go/spi/model/DefaultPlcSubscriptionResponse_plc4xgen.go
index 29f23c1933..4568376a19 100644
--- a/plc4go/spi/model/DefaultPlcSubscriptionResponse_plc4xgen.go
+++ b/plc4go/spi/model/DefaultPlcSubscriptionResponse_plc4xgen.go
@@ -64,7 +64,8 @@ func (d *DefaultPlcSubscriptionResponse) SerializeWithWriteBuffer(ctx context.Co
if err := writeBuffer.PushContext("values", utils.WithRenderAsList(true)); err != nil {
return err
}
- for name, elem := range d.values {
+ for _name, elem := range d.values {
+ name := _name
var elem any = elem
if serializable, ok := elem.(utils.Serializable); ok {
diff --git a/plc4go/spi/model/DefaultPlcTagRequest_plc4xgen.go b/plc4go/spi/model/DefaultPlcTagRequest_plc4xgen.go
index c96fe5e9eb..1be3d59e12 100644
--- a/plc4go/spi/model/DefaultPlcTagRequest_plc4xgen.go
+++ b/plc4go/spi/model/DefaultPlcTagRequest_plc4xgen.go
@@ -45,7 +45,8 @@ func (d *DefaultPlcTagRequest) SerializeWithWriteBuffer(ctx context.Context, wri
if err := writeBuffer.PushContext("tags", utils.WithRenderAsList(true)); err != nil {
return err
}
- for name, elem := range d.tags {
+ for _name, elem := range d.tags {
+ name := _name
var elem any = elem
if serializable, ok := elem.(utils.Serializable); ok {
diff --git a/plc4go/spi/model/DefaultPlcWriteRequestBuilder_plc4xgen.go b/plc4go/spi/model/DefaultPlcWriteRequestBuilder_plc4xgen.go
index dc5205e71b..4c49ea3c67 100644
--- a/plc4go/spi/model/DefaultPlcWriteRequestBuilder_plc4xgen.go
+++ b/plc4go/spi/model/DefaultPlcWriteRequestBuilder_plc4xgen.go
@@ -56,7 +56,8 @@ func (d *DefaultPlcWriteRequestBuilder) SerializeWithWriteBuffer(ctx context.Con
if err := writeBuffer.PushContext("tagAddresses", utils.WithRenderAsList(true)); err != nil {
return err
}
- for name, elem := range d.tagAddresses {
+ for _name, elem := range d.tagAddresses {
+ name := _name
if err := writeBuffer.WriteString(name, uint32(len(elem)*8), "UTF-8", elem); err != nil {
return err
@@ -68,7 +69,8 @@ func (d *DefaultPlcWriteRequestBuilder) SerializeWithWriteBuffer(ctx context.Con
if err := writeBuffer.PushContext("tags", utils.WithRenderAsList(true)); err != nil {
return err
}
- for name, elem := range d.tags {
+ for _name, elem := range d.tags {
+ name := _name
var elem any = elem
if serializable, ok := elem.(utils.Serializable); ok {
@@ -94,7 +96,8 @@ func (d *DefaultPlcWriteRequestBuilder) SerializeWithWriteBuffer(ctx context.Con
if err := writeBuffer.PushContext("values", utils.WithRenderAsList(true)); err != nil {
return err
}
- for name, elem := range d.values {
+ for _name, elem := range d.values {
+ name := _name
_value := fmt.Sprintf("%v", elem)
if err := writeBuffer.WriteString(name, uint32(len(_value)*8), "UTF-8", _value); err != nil {
diff --git a/plc4go/spi/model/DefaultPlcWriteRequest_plc4xgen.go b/plc4go/spi/model/DefaultPlcWriteRequest_plc4xgen.go
index 306e898538..b1cc945790 100644
--- a/plc4go/spi/model/DefaultPlcWriteRequest_plc4xgen.go
+++ b/plc4go/spi/model/DefaultPlcWriteRequest_plc4xgen.go
@@ -48,7 +48,8 @@ func (d *DefaultPlcWriteRequest) SerializeWithWriteBuffer(ctx context.Context, w
if err := writeBuffer.PushContext("values", utils.WithRenderAsList(true)); err != nil {
return err
}
- for name, elem := range d.values {
+ for _name, elem := range d.values {
+ name := _name
var elem any = elem
if serializable, ok := elem.(utils.Serializable); ok {
diff --git a/plc4go/spi/model/DefaultPlcWriteResponse_plc4xgen.go b/plc4go/spi/model/DefaultPlcWriteResponse_plc4xgen.go
index 4ddba20792..335c543df0 100644
--- a/plc4go/spi/model/DefaultPlcWriteResponse_plc4xgen.go
+++ b/plc4go/spi/model/DefaultPlcWriteResponse_plc4xgen.go
@@ -64,7 +64,8 @@ func (d *DefaultPlcWriteResponse) SerializeWithWriteBuffer(ctx context.Context,
if err := writeBuffer.PushContext("responseCodes", utils.WithRenderAsList(true)); err != nil {
return err
}
- for name, elem := range d.responseCodes {
+ for _name, elem := range d.responseCodes {
+ name := _name
var elem any = elem
if serializable, ok := elem.(utils.Serializable); ok {
diff --git a/plc4go/tools/plc4xgenerator/gen.go b/plc4go/tools/plc4xgenerator/gen.go
index bf83a678e4..de4f403d89 100644
--- a/plc4go/tools/plc4xgenerator/gen.go
+++ b/plc4go/tools/plc4xgenerator/gen.go
@@ -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")