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/06/19 13:50:57 UTC

[plc4x] 02/05: feat(plc4go/tools): add support for atomic.Pointer to plc4xgenerator

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 915b6b54089bcd157ac9103f460b85dd1e0a241d
Author: Sebastian Rühl <sr...@apache.org>
AuthorDate: Mon Jun 19 15:28:07 2023 +0200

    feat(plc4go/tools): add support for atomic.Pointer to plc4xgenerator
---
 plc4go/tools/plc4xgenerator/gen.go | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/plc4go/tools/plc4xgenerator/gen.go b/plc4go/tools/plc4xgenerator/gen.go
index 1e4fe23f60..3644e4ceca 100644
--- a/plc4go/tools/plc4xgenerator/gen.go
+++ b/plc4go/tools/plc4xgenerator/gen.go
@@ -278,6 +278,18 @@ func (g *Generator) generate(typeName string) {
 				}
 			}
 			g.Printf(serializableFieldTemplate, "d."+field.name, fieldNameUntitled)
+		case *ast.IndexExpr:
+			x := fieldType.X
+			if fieldType, isxFieldSelector := x.(*ast.SelectorExpr); isxFieldSelector { // TODO: we need to refactor this so we can reuse...
+				xIdent, xIsIdent := fieldType.X.(*ast.Ident)
+				sel := fieldType.Sel
+				if xIsIdent && xIdent.Name == "atomic" && sel.Name == "Pointer" {
+					g.Printf(serializableFieldTemplate, "(*d."+field.name+".Load())", fieldNameUntitled)
+					continue
+				}
+			}
+			fmt.Printf("no support yet for %#q\n", fieldType)
+			continue
 		case *ast.Ident:
 			switch fieldType.Name {
 			case "byte":