From 8ab1d9e092ff7cf42e4ada29f687ffad07621063 Mon Sep 17 00:00:00 2001 From: lmbsog0 Date: Wed, 5 Jul 2023 07:12:09 +0200 Subject: [PATCH 1/3] update go.mod --- go.mod | 5 ++--- go.sum | 12 +++--------- 2 files changed, 5 insertions(+), 12 deletions(-) diff --git a/go.mod b/go.mod index 5bff290..1182300 100644 --- a/go.mod +++ b/go.mod @@ -1,10 +1,10 @@ module github.com/sauci/a2l-grpc -go 1.18 +go 1.20 require ( github.com/antlr4-go/antlr/v4 v4.13.0 - github.com/stretchr/testify v1.8.3 + github.com/stretchr/testify v1.8.4 google.golang.org/grpc v1.55.0 google.golang.org/protobuf v1.30.0 ) @@ -18,6 +18,5 @@ require ( golang.org/x/sys v0.6.0 // indirect golang.org/x/text v0.8.0 // indirect google.golang.org/genproto v0.0.0-20230306155012-7f2fa6fef1f4 // indirect - gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go.sum b/go.sum index d35fd1e..6d29c3b 100644 --- a/go.sum +++ b/go.sum @@ -7,15 +7,10 @@ github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= -github.com/kr/pretty v0.2.1 h1:Fmg33tUaq4/8ym9TJN1x7sLJnHVwhP33CNkpYV/7rwI= -github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= -github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= -github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/stretchr/testify v1.8.3 h1:RP3t2pwF7cMEbC1dqtB6poj3niw/9gnV4Cjg5oW5gtY= -github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= golang.org/x/exp v0.0.0-20230515195305-f3d0a9c9a5cc h1:mCRnTeVUjcrhlRmO0VK8a6k6Rrf6TF9htwo2pJVSjIU= golang.org/x/exp v0.0.0-20230515195305-f3d0a9c9a5cc/go.mod h1:V1LtkGg67GoY2N1AnLN78QLrzxkLyJw7RJb1gzOOz9w= golang.org/x/net v0.8.0 h1:Zrh2ngAOFYneWTAIAPethzeaQLuHwhuBkuV6ZiRnUaQ= @@ -33,8 +28,7 @@ google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp0 google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.30.0 h1:kPPoIgf3TsEvrm0PFe15JQ+570QVxYzEvvHqChK+cng= google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= -gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= From 699b912589d7b121f4dd2272cc547b1a35803567 Mon Sep 17 00:00:00 2001 From: lmbsog0 Date: Wed, 30 Aug 2023 09:02:24 +0200 Subject: [PATCH 2/3] sort CHARACTERISTIC nodes if requested --- cmd/a2l/a2l.go | 10 +- pkg/a2l/a2lextension.go | 713 +++++++++++++++++++------------------ pkg/a2l/a2mlextension.go | 96 ++--- pkg/a2l/ifdataextension.go | 12 +- pkg/a2l/nodetype.go | 6 +- protobuf/API.proto | 1 + 6 files changed, 432 insertions(+), 406 deletions(-) diff --git a/cmd/a2l/a2l.go b/cmd/a2l/a2l.go index 8f4b976..e108652 100644 --- a/cmd/a2l/a2l.go +++ b/cmd/a2l/a2l.go @@ -145,7 +145,7 @@ func (s *grpcA2LImplType) GetTreeFromJSON(_ context.Context, request *a2l.TreeFr AllowPartial: allowPartial, } - if parseError = opt.Unmarshal([]byte(request.Json), result.Tree); parseError != nil { + if parseError = opt.Unmarshal(request.Json, result.Tree); parseError != nil { errString := parseError.Error() result.Error = &errString } @@ -155,13 +155,19 @@ func (s *grpcA2LImplType) GetTreeFromJSON(_ context.Context, request *a2l.TreeFr func (s *grpcA2LImplType) GetA2LFromTree(_ context.Context, request *a2l.A2LFromTreeRequest) (result *a2l.A2LResponse, err error) { indent := "" + sorted := false if request.Indent != nil { for i := uint32(0); i < *request.Indent; i++ { indent += " " } } - return &a2l.A2LResponse{A2L: []byte(request.Tree.MarshalA2L(0, indent))}, nil + + if request.Sorted != nil { + sorted = *request.Sorted + } + + return &a2l.A2LResponse{A2L: []byte(request.Tree.MarshalA2L(0, indent, sorted))}, nil } var serverMutex sync.Mutex diff --git a/pkg/a2l/a2lextension.go b/pkg/a2l/a2lextension.go index 915b2d6..d377ea2 100644 --- a/pkg/a2l/a2lextension.go +++ b/pkg/a2l/a2lextension.go @@ -2,6 +2,7 @@ package a2l import ( "fmt" + sort2 "sort" "strings" ) @@ -17,11 +18,15 @@ import ( // panic("leaf node") //} +func sortSortableList[T SortableNode](list []T) { + sort2.Slice(list, func(i, j int) bool { return list[i].UniqueKey() < list[j].UniqueKey() }) +} + func (t *A2MLVersionType) MapChildNodes(_ any) { panic("leaf node") } -func (t *A2MLVersionType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *A2MLVersionType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return indentContent(fmt.Sprintf("A2ML_VERSION %s %s", t.VersionNo.A2LString(), t.UpgradeNo.A2LString()), indentLevel, indentString) } @@ -29,7 +34,7 @@ func (t *AddrEpkType) MapChildNodes(_ any) { panic("leaf node") } -func (t *AddrEpkType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *AddrEpkType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return indentContent(fmt.Sprintf("ADDR_EPK %s", t.Address.A2LString()), indentLevel, indentString) } @@ -37,7 +42,7 @@ func (t *AlignmentByteType) MapChildNodes(_ any) { panic("leaf node") } -func (t *AlignmentByteType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *AlignmentByteType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return indentContent(fmt.Sprintf("ALIGNMENT_BYTE %s", t.AlignmentBorder.A2LString()), indentLevel, indentString) } @@ -45,7 +50,7 @@ func (t *AlignmentFloat32IeeeType) MapChildNodes(_ any) { panic("leaf node") } -func (t *AlignmentFloat32IeeeType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *AlignmentFloat32IeeeType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return indentContent(fmt.Sprintf("ALIGNMENT_FLOAT32_IEEE %s", t.AlignmentBorder.A2LString()), indentLevel, indentString) } @@ -53,7 +58,7 @@ func (t *AlignmentFloat64IeeeType) MapChildNodes(_ any) { panic("leaf node") } -func (t *AlignmentFloat64IeeeType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *AlignmentFloat64IeeeType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return indentContent(fmt.Sprintf("ALIGNMENT_FLOAT64_IEEE %s", t.AlignmentBorder.A2LString()), indentLevel, indentString) } @@ -61,7 +66,7 @@ func (t *AlignmentLongType) MapChildNodes(_ any) { panic("leaf node") } -func (t *AlignmentLongType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *AlignmentLongType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return indentContent(fmt.Sprintf("ALIGNMENT_LONG %s", t.AlignmentBorder.A2LString()), indentLevel, indentString) } @@ -69,7 +74,7 @@ func (t *AlignmentWordType) MapChildNodes(_ any) { panic("leaf node") } -func (t *AlignmentWordType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *AlignmentWordType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return indentContent(fmt.Sprintf("ALIGNMENT_WORD %s", t.AlignmentBorder.A2LString()), indentLevel, indentString) } @@ -77,7 +82,7 @@ func (t *AnnotationLabelType) MapChildNodes(_ any) { panic("leaf node") } -func (t *AnnotationLabelType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *AnnotationLabelType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return indentContent(fmt.Sprintf("ANNOTATION_LABEL %s", t.Label.A2LString()), indentLevel, indentString) } @@ -85,7 +90,7 @@ func (t *AnnotationOriginType) MapChildNodes(_ any) { panic("leaf node") } -func (t *AnnotationOriginType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *AnnotationOriginType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return indentContent(fmt.Sprintf("ANNOTATION_ORIGIN %s", t.Origin.A2LString()), indentLevel, indentString) } @@ -93,7 +98,7 @@ func (t *AnnotationTextType) MapChildNodes(_ any) { panic("leaf node") } -func (t *AnnotationTextType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *AnnotationTextType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { tmpResult := []string{indentContent(fmt.Sprintf("/begin ANNOTATION_TEXT"), indentLevel, indentString)} for _, annotationText := range t.AnnotationText { @@ -118,19 +123,19 @@ func (t *AnnotationType) MapChildNodes(node any) { } } -func (t *AnnotationType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *AnnotationType) MarshalA2L(indentLevel int, indentString string, sort bool) (result string) { tmpResult := []string{indentContent(fmt.Sprintf("/begin ANNOTATION"), indentLevel, indentString)} if t.ANNOTATION_LABEL != nil { - tmpResult = append(tmpResult, t.ANNOTATION_LABEL.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.ANNOTATION_LABEL.MarshalA2L(indentLevel+1, indentString, sort)) } if t.ANNOTATION_ORIGIN != nil { - tmpResult = append(tmpResult, t.ANNOTATION_ORIGIN.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.ANNOTATION_ORIGIN.MarshalA2L(indentLevel+1, indentString, sort)) } if t.ANNOTATION_TEXT != nil { - tmpResult = append(tmpResult, t.ANNOTATION_TEXT.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.ANNOTATION_TEXT.MarshalA2L(indentLevel+1, indentString, sort)) } tmpResult = append(tmpResult, indentContent("/end ANNOTATION", indentLevel, indentString)) @@ -142,7 +147,7 @@ func (t *ArraySizeType) MapChildNodes(_ any) { panic("leaf node") } -func (t *ArraySizeType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *ArraySizeType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return indentContent(fmt.Sprintf("ARRAY_SIZE %s", t.Number.A2LString()), indentLevel, indentString) } @@ -150,7 +155,7 @@ func (t *ASAP2VersionType) MapChildNodes(_ any) { panic("leaf node") } -func (t *ASAP2VersionType) MarshalA2L(indentLevel int, indentString string) string { +func (t *ASAP2VersionType) MarshalA2L(indentLevel int, indentString string, _ bool) string { return indentContent(fmt.Sprintf("ASAP2_VERSION %s %s", t.VersionNo.A2LString(), t.UpgradeNo.A2LString()), indentLevel, indentString) } @@ -191,7 +196,7 @@ func (t *AxisDescrType) MapChildNodes(node any) { } } -func (t *AxisDescrType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *AxisDescrType) MarshalA2L(indentLevel int, indentString string, sort bool) (result string) { tmpResult := []string{indentContent(fmt.Sprintf("/begin AXIS_DESCR %s %s %s %s %s %s", t.Attribute, t.InputQuantity.A2LString(), @@ -201,57 +206,57 @@ func (t *AxisDescrType) MarshalA2L(indentLevel int, indentString string) (result t.UpperLimit.A2LString()), indentLevel, indentString)} if t.READ_ONLY != nil { - tmpResult = append(tmpResult, t.READ_ONLY.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.READ_ONLY.MarshalA2L(indentLevel+1, indentString, sort)) } if t.FORMAT != nil { - tmpResult = append(tmpResult, t.FORMAT.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.FORMAT.MarshalA2L(indentLevel+1, indentString, sort)) } if t.ANNOTATION != nil { for _, annotation := range t.ANNOTATION { - tmpResult = append(tmpResult, annotation.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, annotation.MarshalA2L(indentLevel+1, indentString, sort)) } } if t.AXIS_PTS_REF != nil { - tmpResult = append(tmpResult, t.AXIS_PTS_REF.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.AXIS_PTS_REF.MarshalA2L(indentLevel+1, indentString, sort)) } if t.MAX_GRAD != nil { - tmpResult = append(tmpResult, t.MAX_GRAD.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.MAX_GRAD.MarshalA2L(indentLevel+1, indentString, sort)) } if t.MONOTONY != nil { - tmpResult = append(tmpResult, t.MONOTONY.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.MONOTONY.MarshalA2L(indentLevel+1, indentString, sort)) } if t.BYTE_ORDER != nil { - tmpResult = append(tmpResult, t.BYTE_ORDER.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.BYTE_ORDER.MarshalA2L(indentLevel+1, indentString, sort)) } if t.EXTENDED_LIMITS != nil { - tmpResult = append(tmpResult, t.EXTENDED_LIMITS.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.EXTENDED_LIMITS.MarshalA2L(indentLevel+1, indentString, sort)) } if t.FIX_AXIS_PAR != nil { - tmpResult = append(tmpResult, t.FIX_AXIS_PAR.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.FIX_AXIS_PAR.MarshalA2L(indentLevel+1, indentString, sort)) } if t.FIX_AXIS_PAR_DIST != nil { - tmpResult = append(tmpResult, t.FIX_AXIS_PAR_DIST.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.FIX_AXIS_PAR_DIST.MarshalA2L(indentLevel+1, indentString, sort)) } if t.FIX_AXIS_PAR_LIST != nil { - tmpResult = append(tmpResult, t.FIX_AXIS_PAR_LIST.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.FIX_AXIS_PAR_LIST.MarshalA2L(indentLevel+1, indentString, sort)) } if t.DEPOSIT != nil { - tmpResult = append(tmpResult, t.DEPOSIT.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.DEPOSIT.MarshalA2L(indentLevel+1, indentString, sort)) } if t.CURVE_AXIS_REF != nil { - tmpResult = append(tmpResult, t.CURVE_AXIS_REF.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.CURVE_AXIS_REF.MarshalA2L(indentLevel+1, indentString, sort)) } tmpResult = append(tmpResult, indentContent("/end AXIS_DESCR", indentLevel, indentString)) @@ -263,7 +268,7 @@ func (t *AxisPtsRefType) MapChildNodes(_ any) { panic("leaf node") } -func (t *AxisPtsRefType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *AxisPtsRefType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return indentContent(fmt.Sprintf("AXIS_PTS_REF %s", t.AxisPoints.A2LString()), indentLevel, indentString) } @@ -308,7 +313,7 @@ func (t *AxisPtsType) MapChildNodes(node any) { } } -func (t *AxisPtsType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *AxisPtsType) MarshalA2L(indentLevel int, indentString string, sort bool) (result string) { tmpResult := []string{indentContent(fmt.Sprintf("/begin AXIS_PTS %s %s %s %s %s %s %s %s %s %s", t.Name.A2LString(), t.LongIdentifier.A2LString(), @@ -322,59 +327,59 @@ func (t *AxisPtsType) MarshalA2L(indentLevel int, indentString string) (result s t.UpperLimit.A2LString()), indentLevel, indentString)} if t.DISPLAY_IDENTIFIER != nil { - tmpResult = append(tmpResult, t.DISPLAY_IDENTIFIER.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.DISPLAY_IDENTIFIER.MarshalA2L(indentLevel+1, indentString, sort)) } if t.READ_ONLY != nil { - tmpResult = append(tmpResult, t.READ_ONLY.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.READ_ONLY.MarshalA2L(indentLevel+1, indentString, sort)) } if t.FORMAT != nil { - tmpResult = append(tmpResult, t.FORMAT.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.FORMAT.MarshalA2L(indentLevel+1, indentString, sort)) } if t.DEPOSIT != nil { - tmpResult = append(tmpResult, t.DEPOSIT.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.DEPOSIT.MarshalA2L(indentLevel+1, indentString, sort)) } if t.BYTE_ORDER != nil { - tmpResult = append(tmpResult, t.BYTE_ORDER.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.BYTE_ORDER.MarshalA2L(indentLevel+1, indentString, sort)) } if t.FUNCTION_LIST != nil { - tmpResult = append(tmpResult, t.FUNCTION_LIST.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.FUNCTION_LIST.MarshalA2L(indentLevel+1, indentString, sort)) } if t.REF_MEMORY_SEGMENT != nil { - tmpResult = append(tmpResult, t.REF_MEMORY_SEGMENT.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.REF_MEMORY_SEGMENT.MarshalA2L(indentLevel+1, indentString, sort)) } if t.GUARD_RAILS != nil { - tmpResult = append(tmpResult, t.GUARD_RAILS.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.GUARD_RAILS.MarshalA2L(indentLevel+1, indentString, sort)) } if t.EXTENDED_LIMITS != nil { - tmpResult = append(tmpResult, t.EXTENDED_LIMITS.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.EXTENDED_LIMITS.MarshalA2L(indentLevel+1, indentString, sort)) } if t.ANNOTATION != nil { for _, annotation := range t.ANNOTATION { - tmpResult = append(tmpResult, annotation.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, annotation.MarshalA2L(indentLevel+1, indentString, sort)) } } if t.IF_DATA != nil { for _, ifData := range t.IF_DATA { - tmpResult = append(tmpResult, ifData.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, ifData.MarshalA2L(indentLevel+1, indentString, sort)) } } if t.CALIBRATION_ACCESS != nil { - tmpResult = append(tmpResult, t.CALIBRATION_ACCESS.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.CALIBRATION_ACCESS.MarshalA2L(indentLevel+1, indentString, sort)) } if t.ECU_ADDRESS_EXTENSION != nil { - tmpResult = append(tmpResult, t.ECU_ADDRESS_EXTENSION.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.ECU_ADDRESS_EXTENSION.MarshalA2L(indentLevel+1, indentString, sort)) } tmpResult = append(tmpResult, indentContent("/end AXIS_PTS", indentLevel, indentString)) @@ -386,7 +391,7 @@ func (t *AxisPtsXType) MapChildNodes(_ any) { panic("leaf node") } -func (t *AxisPtsXType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *AxisPtsXType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return indentContent(fmt.Sprintf("AXIS_PTS_X %s %s %s %s", t.Position.A2LString(), t.DataType.A2LString(), @@ -398,7 +403,7 @@ func (t *AxisPtsYType) MapChildNodes(_ any) { panic("leaf node") } -func (t *AxisPtsYType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *AxisPtsYType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return indentContent(fmt.Sprintf("AXIS_PTS_Y %s %s %s %s", t.Position.A2LString(), t.DataType.A2LString(), @@ -410,7 +415,7 @@ func (t *AxisPtsZType) MapChildNodes(_ any) { panic("leaf node") } -func (t *AxisPtsZType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *AxisPtsZType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return indentContent(fmt.Sprintf("AXIS_PTS_Z %s %s %s %s", t.Position.A2LString(), t.DataType.A2LString(), @@ -422,7 +427,7 @@ func (t *AxisRescaleXType) MapChildNodes(_ any) { panic("leaf node") } -func (t *AxisRescaleXType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *AxisRescaleXType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return indentContent(fmt.Sprintf("AXIS_RESCALE_X %s %s %s %s %s", t.Position.A2LString(), t.DataType.A2LString(), @@ -435,7 +440,7 @@ func (t *AxisRescaleYType) MapChildNodes(_ any) { panic("leaf node") } -func (t *AxisRescaleYType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *AxisRescaleYType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return indentContent(fmt.Sprintf("AXIS_RESCALE_Y %s %s %s %s %s", t.Position.A2LString(), t.DataType.A2LString(), @@ -448,7 +453,7 @@ func (t *AxisRescaleZType) MapChildNodes(_ any) { panic("leaf node") } -func (t *AxisRescaleZType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *AxisRescaleZType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return indentContent(fmt.Sprintf("AXIS_RESCALE_Z %s %s %s %s %s", t.Position.A2LString(), t.DataType.A2LString(), @@ -461,7 +466,7 @@ func (t *BitMaskType) MapChildNodes(_ any) { panic("leaf node") } -func (t *BitMaskType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *BitMaskType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return indentContent(fmt.Sprintf("BIT_MASK %s", t.Mask.A2LString()), indentLevel, indentString) } @@ -478,19 +483,19 @@ func (t *BitOperationType) MapChildNodes(node any) { } } -func (t *BitOperationType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *BitOperationType) MarshalA2L(indentLevel int, indentString string, sort bool) (result string) { tmpResult := []string{indentContent(fmt.Sprintf("/begin BIT_OPERATION"), indentLevel, indentString)} if t.LEFT_SHIFT != nil { - tmpResult = append(tmpResult, t.LEFT_SHIFT.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.LEFT_SHIFT.MarshalA2L(indentLevel+1, indentString, sort)) } if t.RIGHT_SHIFT != nil { - tmpResult = append(tmpResult, t.RIGHT_SHIFT.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.RIGHT_SHIFT.MarshalA2L(indentLevel+1, indentString, sort)) } if t.SIGN_EXTEND != nil { - tmpResult = append(tmpResult, t.SIGN_EXTEND.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.SIGN_EXTEND.MarshalA2L(indentLevel+1, indentString, sort)) } tmpResult = append(tmpResult, indentContent("/end BIT_OPERATION", indentLevel, indentString)) @@ -502,7 +507,7 @@ func (t *ByteOrderType) MapChildNodes(_ any) { panic("leaf node") } -func (t *ByteOrderType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *ByteOrderType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return indentContent(fmt.Sprintf("BYTE_ORDER %s", t.ByteOrder), indentLevel, indentString) } @@ -510,7 +515,7 @@ func (t *CalibrationAccessType) MapChildNodes(_ any) { panic("leaf node") } -func (t *CalibrationAccessType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *CalibrationAccessType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return indentContent(fmt.Sprintf("CALIBRATION_ACCESS %s", t.Type), indentLevel, indentString) } @@ -518,7 +523,7 @@ func (t *CalibrationHandleType) MapChildNodes(_ any) { panic("leaf node") } -func (t *CalibrationHandleType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *CalibrationHandleType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { tmpResult := []string{indentContent(fmt.Sprintf("/begin CALIBRATION_HANDLE"), indentLevel, indentString)} if t.Handle != nil { @@ -545,14 +550,14 @@ func (t *CalibrationMethodType) MapChildNodes(node any) { } } -func (t *CalibrationMethodType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *CalibrationMethodType) MarshalA2L(indentLevel int, indentString string, sort bool) (result string) { tmpResult := []string{indentContent(fmt.Sprintf("/begin CALIBRATION_METHOD %s %s", t.Method.A2LString(), t.Version.A2LString()), indentLevel, indentString)} if t.CALIBRATION_HANDLE != nil { for _, calibrationHandle := range t.CALIBRATION_HANDLE { - tmpResult = append(tmpResult, calibrationHandle.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, calibrationHandle.MarshalA2L(indentLevel+1, indentString, sort)) } } @@ -561,6 +566,10 @@ func (t *CalibrationMethodType) MarshalA2L(indentLevel int, indentString string) return strings.Join(tmpResult, "\n") } +func (t *CharacteristicType) UniqueKey() string { + return t.Name.Value +} + func (t *CharacteristicType) MapChildNodes(node any) { switch node.(type) { case *DisplayIdentifierType: @@ -622,7 +631,7 @@ func (t *CharacteristicType) MapChildNodes(node any) { } } -func (t *CharacteristicType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *CharacteristicType) MarshalA2L(indentLevel int, indentString string, sort bool) (result string) { tmpResult := []string{indentContent(fmt.Sprintf("/begin CHARACTERISTIC %s %s %s %s %s %s %s %s %s", t.Name.A2LString(), t.LongIdentifier.A2LString(), @@ -635,93 +644,93 @@ func (t *CharacteristicType) MarshalA2L(indentLevel int, indentString string) (r t.UpperLimit.A2LString()), indentLevel, indentString)} if t.DISPLAY_IDENTIFIER != nil { - tmpResult = append(tmpResult, t.DISPLAY_IDENTIFIER.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.DISPLAY_IDENTIFIER.MarshalA2L(indentLevel+1, indentString, sort)) } if t.FORMAT != nil { - tmpResult = append(tmpResult, t.FORMAT.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.FORMAT.MarshalA2L(indentLevel+1, indentString, sort)) } if t.BYTE_ORDER != nil { - tmpResult = append(tmpResult, t.BYTE_ORDER.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.BYTE_ORDER.MarshalA2L(indentLevel+1, indentString, sort)) } if t.BIT_MASK != nil { - tmpResult = append(tmpResult, t.BIT_MASK.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.BIT_MASK.MarshalA2L(indentLevel+1, indentString, sort)) } if t.FUNCTION_LIST != nil { - tmpResult = append(tmpResult, t.FUNCTION_LIST.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.FUNCTION_LIST.MarshalA2L(indentLevel+1, indentString, sort)) } if t.NUMBER != nil { - tmpResult = append(tmpResult, t.NUMBER.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.NUMBER.MarshalA2L(indentLevel+1, indentString, sort)) } if t.EXTENDED_LIMITS != nil { - tmpResult = append(tmpResult, t.EXTENDED_LIMITS.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.EXTENDED_LIMITS.MarshalA2L(indentLevel+1, indentString, sort)) } if t.READ_ONLY != nil { - tmpResult = append(tmpResult, t.READ_ONLY.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.READ_ONLY.MarshalA2L(indentLevel+1, indentString, sort)) } if t.GUARD_RAILS != nil { - tmpResult = append(tmpResult, t.GUARD_RAILS.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.GUARD_RAILS.MarshalA2L(indentLevel+1, indentString, sort)) } if t.MAP_LIST != nil { - tmpResult = append(tmpResult, t.MAP_LIST.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.MAP_LIST.MarshalA2L(indentLevel+1, indentString, sort)) } if t.MAX_REFRESH != nil { - tmpResult = append(tmpResult, t.MAX_REFRESH.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.MAX_REFRESH.MarshalA2L(indentLevel+1, indentString, sort)) } if t.DEPENDENT_CHARACTERISTIC != nil { - tmpResult = append(tmpResult, t.DEPENDENT_CHARACTERISTIC.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.DEPENDENT_CHARACTERISTIC.MarshalA2L(indentLevel+1, indentString, sort)) } if t.VIRTUAL_CHARACTERISTIC != nil { - tmpResult = append(tmpResult, t.VIRTUAL_CHARACTERISTIC.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.VIRTUAL_CHARACTERISTIC.MarshalA2L(indentLevel+1, indentString, sort)) } if t.REF_MEMORY_SEGMENT != nil { - tmpResult = append(tmpResult, t.REF_MEMORY_SEGMENT.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.REF_MEMORY_SEGMENT.MarshalA2L(indentLevel+1, indentString, sort)) } if t.ANNOTATION != nil { for _, annotation := range t.ANNOTATION { - tmpResult = append(tmpResult, annotation.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, annotation.MarshalA2L(indentLevel+1, indentString, sort)) } } if t.COMPARISON_QUANTITY != nil { - tmpResult = append(tmpResult, t.COMPARISON_QUANTITY.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.COMPARISON_QUANTITY.MarshalA2L(indentLevel+1, indentString, sort)) } if t.IF_DATA != nil { for _, ifData := range t.IF_DATA { - tmpResult = append(tmpResult, ifData.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, ifData.MarshalA2L(indentLevel+1, indentString, sort)) } } if t.AXIS_DESCR != nil { for _, axisDescr := range t.AXIS_DESCR { - tmpResult = append(tmpResult, axisDescr.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, axisDescr.MarshalA2L(indentLevel+1, indentString, sort)) } } if t.CALIBRATION_ACCESS != nil { - tmpResult = append(tmpResult, t.CALIBRATION_ACCESS.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.CALIBRATION_ACCESS.MarshalA2L(indentLevel+1, indentString, sort)) } if t.MATRIX_DIM != nil { - tmpResult = append(tmpResult, t.MATRIX_DIM.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.MATRIX_DIM.MarshalA2L(indentLevel+1, indentString, sort)) } if t.ECU_ADDRESS_EXTENSION != nil { - tmpResult = append(tmpResult, t.ECU_ADDRESS_EXTENSION.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.ECU_ADDRESS_EXTENSION.MarshalA2L(indentLevel+1, indentString, sort)) } tmpResult = append(tmpResult, indentContent("/end CHARACTERISTIC", indentLevel, indentString)) @@ -733,7 +742,7 @@ func (t *CoeffsType) MapChildNodes(_ any) { panic("leaf node") } -func (t *CoeffsType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *CoeffsType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return indentContent(fmt.Sprintf("COEFFS %s %s %s %s %s %s", t.A.A2LString(), t.B.A2LString(), @@ -747,7 +756,7 @@ func (t *ComparisonQuantityType) MapChildNodes(_ any) { panic("leaf node") } -func (t *ComparisonQuantityType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *ComparisonQuantityType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return indentContent(fmt.Sprintf("COMPARISON_QUANTITY %s", t.Name.A2LString()), indentLevel, indentString) } @@ -766,7 +775,7 @@ func (t *CompuMethodType) MapChildNodes(node any) { } } -func (t *CompuMethodType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *CompuMethodType) MarshalA2L(indentLevel int, indentString string, sort bool) (result string) { tmpResult := []string{indentContent(fmt.Sprintf("/begin COMPU_METHOD %s %s %s %s %s", t.Name.A2LString(), t.LongIdentifier.A2LString(), @@ -775,19 +784,19 @@ func (t *CompuMethodType) MarshalA2L(indentLevel int, indentString string) (resu t.Unit.A2LString()), indentLevel, indentString)} if t.FORMULA != nil { - tmpResult = append(tmpResult, t.FORMULA.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.FORMULA.MarshalA2L(indentLevel+1, indentString, sort)) } if t.COEFFS != nil { - tmpResult = append(tmpResult, t.COEFFS.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.COEFFS.MarshalA2L(indentLevel+1, indentString, sort)) } if t.COMPU_TAB_REF != nil { - tmpResult = append(tmpResult, t.COMPU_TAB_REF.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.COMPU_TAB_REF.MarshalA2L(indentLevel+1, indentString, sort)) } if t.REF_UNIT != nil { - tmpResult = append(tmpResult, t.REF_UNIT.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.REF_UNIT.MarshalA2L(indentLevel+1, indentString, sort)) } tmpResult = append(tmpResult, indentContent("/end COMPU_METHOD", indentLevel, indentString)) @@ -799,7 +808,7 @@ func (t *CompuTabRefType) MapChildNodes(_ any) { panic("leaf node") } -func (t *CompuTabRefType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *CompuTabRefType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return indentContent(fmt.Sprintf("COMPU_TAB_REF %s", t.ConversionTable.A2LString()), indentLevel, indentString) } @@ -812,7 +821,7 @@ func (t *CompuTabType) MapChildNodes(node any) { } } -func (t *CompuTabType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *CompuTabType) MarshalA2L(indentLevel int, indentString string, sort bool) (result string) { tmpResult := []string{indentContent(fmt.Sprintf("/begin COMPU_TAB %s %s %s %s", t.Name.A2LString(), t.LongIdentifier.A2LString(), @@ -827,7 +836,7 @@ func (t *CompuTabType) MarshalA2L(indentLevel int, indentString string) (result } if t.DEFAULT_VALUE != nil { - tmpResult = append(tmpResult, t.DEFAULT_VALUE.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.DEFAULT_VALUE.MarshalA2L(indentLevel+1, indentString, sort)) } tmpResult = append(tmpResult, indentContent("/end COMPU_TAB", indentLevel, indentString)) @@ -844,7 +853,7 @@ func (t *CompuVTabRangeType) MapChildNodes(node any) { } } -func (t *CompuVTabRangeType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *CompuVTabRangeType) MarshalA2L(indentLevel int, indentString string, sort bool) (result string) { tmpResult := []string{indentContent(fmt.Sprintf("/begin COMPU_VTAB_RANGE %s %s %s", t.Name.A2LString(), t.LongIdentifier.A2LString(), @@ -860,7 +869,7 @@ func (t *CompuVTabRangeType) MarshalA2L(indentLevel int, indentString string) (r } if t.DEFAULT_VALUE != nil { - tmpResult = append(tmpResult, t.DEFAULT_VALUE.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.DEFAULT_VALUE.MarshalA2L(indentLevel+1, indentString, sort)) } tmpResult = append(tmpResult, indentContent("/end COMPU_VTAB_RANGE", indentLevel, indentString)) @@ -877,7 +886,7 @@ func (t *CompuVTabType) MapChildNodes(node any) { } } -func (t *CompuVTabType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *CompuVTabType) MarshalA2L(indentLevel int, indentString string, sort bool) (result string) { tmpResult := []string{indentContent(fmt.Sprintf("/begin COMPU_VTAB %s %s %s %s", t.Name.A2LString(), t.LongIdentifier.A2LString(), @@ -893,7 +902,7 @@ func (t *CompuVTabType) MarshalA2L(indentLevel int, indentString string) (result } if t.DEFAULT_VALUE != nil { - tmpResult = append(tmpResult, t.DEFAULT_VALUE.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.DEFAULT_VALUE.MarshalA2L(indentLevel+1, indentString, sort)) } tmpResult = append(tmpResult, indentContent("/end COMPU_VTAB", indentLevel, indentString)) @@ -905,7 +914,7 @@ func (t *CpuTypeType) MapChildNodes(_ any) { panic("leaf node") } -func (t *CpuTypeType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *CpuTypeType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return indentContent(fmt.Sprintf("CPU_TYPE %s", t.Cpu.A2LString()), indentLevel, indentString) } @@ -913,7 +922,7 @@ func (t *CurveAxisRefType) MapChildNodes(_ any) { panic("leaf node") } -func (t *CurveAxisRefType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *CurveAxisRefType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return indentContent(fmt.Sprintf("CURVE_AXIS_REF %s", t.CurveAxis.A2LString()), indentLevel, indentString) } @@ -921,7 +930,7 @@ func (t *CustomerNoType) MapChildNodes(_ any) { panic("leaf node") } -func (t *CustomerNoType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *CustomerNoType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return indentContent(fmt.Sprintf("CUSTOMER_NO %s", t.Number.A2LString()), indentLevel, indentString) } @@ -929,7 +938,7 @@ func (t *CustomerType) MapChildNodes(_ any) { panic("leaf node") } -func (t *CustomerType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *CustomerType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return indentContent(fmt.Sprintf("CUSTOMER %s", t.Customer.A2LString()), indentLevel, indentString) } @@ -937,7 +946,7 @@ func (t *DataSizeType) MapChildNodes(_ any) { panic("leaf node") } -func (t *DataSizeType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *DataSizeType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return indentContent(fmt.Sprintf("DATA_SIZE %s", t.Size.A2LString()), indentLevel, indentString) } @@ -945,7 +954,7 @@ func (t *DefaultValueType) MapChildNodes(_ any) { panic("leaf node") } -func (t *DefaultValueType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *DefaultValueType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return indentContent(fmt.Sprintf("DEFAULT_VALUE %s", t.DisplayString.A2LString()), indentLevel, indentString) } @@ -953,7 +962,7 @@ func (t *DefCharacteristicType) MapChildNodes(_ any) { panic("leaf node") } -func (t *DefCharacteristicType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *DefCharacteristicType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { tmpResult := []string{indentContent(fmt.Sprintf("/begin DEF_CHARACTERISTIC"), indentLevel, indentString)} if t.Identifier != nil { @@ -971,7 +980,7 @@ func (t *DependentCharacteristicType) MapChildNodes(_ any) { panic("leaf node") } -func (t *DependentCharacteristicType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *DependentCharacteristicType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { tmpResult := []string{indentContent(fmt.Sprintf("/begin DEPENDENT_CHARACTERISTIC %s", t.Formula.A2LString()), indentLevel, indentString)} @@ -990,7 +999,7 @@ func (t *DepositType) MapChildNodes(_ any) { panic("leaf node") } -func (t *DepositType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *DepositType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return indentContent(fmt.Sprintf("DEPOSIT %s", t.Mode), indentLevel, indentString) } @@ -998,7 +1007,7 @@ func (t *DisplayIdentifierType) MapChildNodes(_ any) { panic("leaf node") } -func (t *DisplayIdentifierType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *DisplayIdentifierType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return indentContent(fmt.Sprintf("DISPLAY_IDENTIFIER %s", t.DisplayName.A2LString()), indentLevel, indentString) } @@ -1006,7 +1015,7 @@ func (t *DistOpXType) MapChildNodes(_ any) { panic("leaf node") } -func (t *DistOpXType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *DistOpXType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return indentContent(fmt.Sprintf("DIST_OP_X %s %s", t.Position.A2LString(), t.DataType.A2LString()), indentLevel, indentString) @@ -1016,7 +1025,7 @@ func (t *DistOpYType) MapChildNodes(_ any) { panic("leaf node") } -func (t *DistOpYType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *DistOpYType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return indentContent(fmt.Sprintf("DIST_OP_Y %s %s", t.Position.A2LString(), t.DataType.A2LString()), indentLevel, indentString) @@ -1026,7 +1035,7 @@ func (t *DistOpZType) MapChildNodes(_ any) { panic("leaf node") } -func (t *DistOpZType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *DistOpZType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return indentContent(fmt.Sprintf("DIST_OP_Z %s %s", t.Position.A2LString(), t.DataType.A2LString()), indentLevel, indentString) @@ -1036,7 +1045,7 @@ func (t *EcuAddressExtensionType) MapChildNodes(_ any) { panic("leaf node") } -func (t *EcuAddressExtensionType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *EcuAddressExtensionType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return indentContent(fmt.Sprintf("ECU_ADDRESS_EXTENSION %s", t.Extension.A2LString()), indentLevel, indentString) } @@ -1044,7 +1053,7 @@ func (t *EcuAddressType) MapChildNodes(_ any) { panic("leaf node") } -func (t *EcuAddressType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *EcuAddressType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return indentContent(fmt.Sprintf("ECU_ADDRESS %s", t.Address.A2LString()), indentLevel, indentString) } @@ -1052,7 +1061,7 @@ func (t *EcuCalibrationOffsetType) MapChildNodes(_ any) { panic("leaf node") } -func (t *EcuCalibrationOffsetType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *EcuCalibrationOffsetType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return indentContent(fmt.Sprintf("ECU_CALIBRATION_OFFSET %s", t.Offset.A2LString()), indentLevel, indentString) } @@ -1060,7 +1069,7 @@ func (t *EcuType) MapChildNodes(_ any) { panic("leaf node") } -func (t *EcuType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *EcuType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return indentContent(fmt.Sprintf("ECU %s", t.ControlUnit.A2LString()), indentLevel, indentString) } @@ -1068,7 +1077,7 @@ func (t *EpkType) MapChildNodes(_ any) { panic("leaf node") } -func (t *EpkType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *EpkType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return indentContent(fmt.Sprintf("EPK %s", t.Identifier.A2LString()), indentLevel, indentString) } @@ -1076,7 +1085,7 @@ func (t *ErrorMaskType) MapChildNodes(_ any) { panic("leaf node") } -func (t *ErrorMaskType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *ErrorMaskType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return indentContent(fmt.Sprintf("ERROR_MASK %s", t.Mask.A2LString()), indentLevel, indentString) } @@ -1084,7 +1093,7 @@ func (t *ExtendedLimitsType) MapChildNodes(_ any) { panic("leaf node") } -func (t *ExtendedLimitsType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *ExtendedLimitsType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return indentContent(fmt.Sprintf("EXTENDED_LIMITS %s %s", t.LowerLimit.A2LString(), t.UpperLimit.A2LString()), indentLevel, indentString) @@ -1094,7 +1103,7 @@ func (t *FixAxisParDistType) MapChildNodes(_ any) { panic("leaf node") } -func (t *FixAxisParDistType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *FixAxisParDistType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return indentContent(fmt.Sprintf("FIX_AXIS_PAR_DIST %s %s %s", t.Offset.A2LString(), t.Distance.A2LString(), @@ -1105,7 +1114,7 @@ func (t *FixAxisParListType) MapChildNodes(_ any) { panic("leaf node") } -func (t *FixAxisParListType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *FixAxisParListType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { tmpResult := []string{indentContent("/begin FIX_AXIS_PAR_LIST", indentLevel, indentString)} if t.AxisPtsValue != nil { @@ -1123,7 +1132,7 @@ func (t *FixAxisParType) MapChildNodes(_ any) { panic("leaf node") } -func (t *FixAxisParType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *FixAxisParType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return indentContent(fmt.Sprintf("FIX_AXIS_PAR %s %s %s", t.Offset.A2LString(), t.Shift.A2LString(), @@ -1134,7 +1143,7 @@ func (t *FixNoAxisPtsXType) MapChildNodes(_ any) { panic("leaf node") } -func (t *FixNoAxisPtsXType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *FixNoAxisPtsXType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return indentContent(fmt.Sprintf("FIX_NO_AXIS_PTS_X %s", t.NumberOfAxisPoints.A2LString()), indentLevel, indentString) } @@ -1142,7 +1151,7 @@ func (t *FixNoAxisPtsYType) MapChildNodes(_ any) { panic("leaf node") } -func (t *FixNoAxisPtsYType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *FixNoAxisPtsYType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return indentContent(fmt.Sprintf("FIX_NO_AXIS_PTS_Y %s", t.NumberOfAxisPoints.A2LString()), indentLevel, indentString) } @@ -1150,7 +1159,7 @@ func (t *FixNoAxisPtsZType) MapChildNodes(_ any) { panic("leaf node") } -func (t *FixNoAxisPtsZType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *FixNoAxisPtsZType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return indentContent(fmt.Sprintf("FIX_NO_AXIS_PTS_Z %s", t.NumberOfAxisPoints.A2LString()), indentLevel, indentString) } @@ -1158,7 +1167,7 @@ func (t *FncValuesType) MapChildNodes(_ any) { panic("leaf node") } -func (t *FncValuesType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *FncValuesType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return indentContent(fmt.Sprintf("FNC_VALUES %s %s %s %s", t.Position.A2LString(), t.DataType.A2LString(), @@ -1170,7 +1179,7 @@ func (t *FormatType) MapChildNodes(_ any) { panic("leaf node") } -func (t *FormatType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *FormatType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return indentContent(fmt.Sprintf("FORMAT %s", t.FormatString.A2LString()), indentLevel, indentString) } @@ -1178,7 +1187,7 @@ func (t *FormulaInvType) MapChildNodes(_ any) { panic("leaf node") } -func (t *FormulaInvType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *FormulaInvType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return indentContent(fmt.Sprintf("FORMULA_INV %s", t.GX.A2LString()), indentLevel, indentString) } @@ -1191,11 +1200,11 @@ func (t *FormulaType) MapChildNodes(node any) { } } -func (t *FormulaType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *FormulaType) MarshalA2L(indentLevel int, indentString string, sort bool) (result string) { tmpResult := []string{indentContent(fmt.Sprintf("/begin FORMULA %s", t.FX.A2LString()), indentLevel, indentString)} if t.FORMULA_INV != nil { - tmpResult = append(tmpResult, t.FORMULA_INV.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.FORMULA_INV.MarshalA2L(indentLevel+1, indentString, sort)) } tmpResult = append(tmpResult, indentContent("/end FORMULA", indentLevel, indentString)) @@ -1207,7 +1216,7 @@ func (t *FrameMeasurementType) MapChildNodes(_ any) { panic("leaf node") } -func (t *FrameMeasurementType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *FrameMeasurementType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { result = indentContent("FRAME_MEASUREMENT", indentLevel, indentString) if t.Identifier != nil { @@ -1234,7 +1243,7 @@ func (t *FrameType) MapChildNodes(node any) { } } -func (t *FrameType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *FrameType) MarshalA2L(indentLevel int, indentString string, sort bool) (result string) { tmpResult := []string{indentContent(fmt.Sprintf("/begin FRAME %s %s %s %s", t.Name.A2LString(), t.LongIdentifier.A2LString(), @@ -1242,12 +1251,12 @@ func (t *FrameType) MarshalA2L(indentLevel int, indentString string) (result str t.Rate.A2LString()), indentLevel, indentString)} if t.FRAME_MEASUREMENT != nil { - tmpResult = append(tmpResult, t.FRAME_MEASUREMENT.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.FRAME_MEASUREMENT.MarshalA2L(indentLevel+1, indentString, sort)) } if t.IF_DATA != nil { for _, ifData := range t.IF_DATA { - tmpResult = append(tmpResult, ifData.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, ifData.MarshalA2L(indentLevel+1, indentString, sort)) } } @@ -1260,7 +1269,7 @@ func (t *FunctionListType) MapChildNodes(_ any) { panic("leaf node") } -func (t *FunctionListType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *FunctionListType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { tmpResult := []string{indentContent("/begin FUNCTION_LIST", indentLevel, indentString)} if t.Name != nil { @@ -1301,43 +1310,43 @@ func (t *FunctionType) MapChildNodes(node any) { } } -func (t *FunctionType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *FunctionType) MarshalA2L(indentLevel int, indentString string, sort bool) (result string) { tmpResult := []string{indentContent(fmt.Sprintf("/begin FUNCTION %s %s", t.Name.A2LString(), t.LongIdentifier.A2LString()), indentLevel, indentString)} if t.ANNOTATION != nil { for _, annotation := range t.ANNOTATION { - tmpResult = append(tmpResult, annotation.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, annotation.MarshalA2L(indentLevel+1, indentString, sort)) } } if t.DEF_CHARACTERISTIC != nil { - tmpResult = append(tmpResult, t.DEF_CHARACTERISTIC.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.DEF_CHARACTERISTIC.MarshalA2L(indentLevel+1, indentString, sort)) } if t.REF_CHARACTERISTIC != nil { - tmpResult = append(tmpResult, t.REF_CHARACTERISTIC.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.REF_CHARACTERISTIC.MarshalA2L(indentLevel+1, indentString, sort)) } if t.IN_MEASUREMENT != nil { - tmpResult = append(tmpResult, t.IN_MEASUREMENT.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.IN_MEASUREMENT.MarshalA2L(indentLevel+1, indentString, sort)) } if t.OUT_MEASUREMENT != nil { - tmpResult = append(tmpResult, t.OUT_MEASUREMENT.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.OUT_MEASUREMENT.MarshalA2L(indentLevel+1, indentString, sort)) } if t.LOC_MEASUREMENT != nil { - tmpResult = append(tmpResult, t.LOC_MEASUREMENT.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.LOC_MEASUREMENT.MarshalA2L(indentLevel+1, indentString, sort)) } if t.SUB_FUNCTION != nil { - tmpResult = append(tmpResult, t.SUB_FUNCTION.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.SUB_FUNCTION.MarshalA2L(indentLevel+1, indentString, sort)) } if t.FUNCTION_VERSION != nil { - tmpResult = append(tmpResult, t.FUNCTION_VERSION.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.FUNCTION_VERSION.MarshalA2L(indentLevel+1, indentString, sort)) } tmpResult = append(tmpResult, indentContent("/end FUNCTION", indentLevel, indentString)) @@ -1349,7 +1358,7 @@ func (t *FunctionVersionType) MapChildNodes(_ any) { panic("leaf node") } -func (t *FunctionVersionType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *FunctionVersionType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return indentContent(fmt.Sprintf("FUNCTION_VERSION %s", t.VersionIdentifier.A2LString()), indentLevel, indentString) } @@ -1376,35 +1385,35 @@ func (t *GroupType) MapChildNodes(node any) { } } -func (t *GroupType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *GroupType) MarshalA2L(indentLevel int, indentString string, sort bool) (result string) { tmpResult := []string{indentContent(fmt.Sprintf("/begin GROUP %s %s", t.GroupName.A2LString(), t.GroupLongIdentifier.A2LString()), indentLevel, indentString)} if t.ANNOTATION != nil { for _, annotation := range t.ANNOTATION { - tmpResult = append(tmpResult, annotation.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, annotation.MarshalA2L(indentLevel+1, indentString, sort)) } } if t.ROOT != nil { - tmpResult = append(tmpResult, t.ROOT.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.ROOT.MarshalA2L(indentLevel+1, indentString, sort)) } if t.REF_CHARACTERISTIC != nil { - tmpResult = append(tmpResult, t.REF_CHARACTERISTIC.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.REF_CHARACTERISTIC.MarshalA2L(indentLevel+1, indentString, sort)) } if t.REF_MEASUREMENT != nil { - tmpResult = append(tmpResult, t.REF_MEASUREMENT.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.REF_MEASUREMENT.MarshalA2L(indentLevel+1, indentString, sort)) } if t.FUNCTION_LIST != nil { - tmpResult = append(tmpResult, t.FUNCTION_LIST.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.FUNCTION_LIST.MarshalA2L(indentLevel+1, indentString, sort)) } if t.SUB_GROUP != nil { - tmpResult = append(tmpResult, t.SUB_GROUP.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.SUB_GROUP.MarshalA2L(indentLevel+1, indentString, sort)) } tmpResult = append(tmpResult, indentContent("/end GROUP", indentLevel, indentString)) @@ -1416,7 +1425,7 @@ func (t *GuardRailsType) MapChildNodes(_ any) { panic("leaf node") } -func (t *GuardRailsType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *GuardRailsType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return indentContent("GUARD_RAILS", indentLevel, indentString) } @@ -1431,15 +1440,15 @@ func (t *HeaderType) MapChildNodes(node any) { } } -func (t *HeaderType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *HeaderType) MarshalA2L(indentLevel int, indentString string, sort bool) (result string) { tmpResult := []string{indentContent(fmt.Sprintf("/begin HEADER %s", t.Comment.A2LString()), indentLevel, indentString)} if t.VERSION != nil { - tmpResult = append(tmpResult, t.VERSION.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.VERSION.MarshalA2L(indentLevel+1, indentString, sort)) } if t.PROJECT_NO != nil { - tmpResult = append(tmpResult, t.PROJECT_NO.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.PROJECT_NO.MarshalA2L(indentLevel+1, indentString, sort)) } tmpResult = append(tmpResult, indentContent("/end HEADER", indentLevel, indentString)) @@ -1451,7 +1460,7 @@ func (t *IdentificationType) MapChildNodes(_ any) { panic("leaf node") } -func (t *IdentificationType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *IdentificationType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return indentContent(fmt.Sprintf("IDENTIFICATION %s %s", t.Position.A2LString(), t.DataType.A2LString()), indentLevel, indentString) } @@ -1459,7 +1468,7 @@ func (t *InMeasurementType) MapChildNodes(_ any) { panic("leaf node") } -func (t *InMeasurementType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *InMeasurementType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { tmpResult := []string{indentContent("/begin IN_MEASUREMENT", indentLevel, indentString)} if t.Identifier != nil { @@ -1477,7 +1486,7 @@ func (t *LeftShiftType) MapChildNodes(_ any) { panic("leaf node") } -func (t *LeftShiftType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *LeftShiftType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return indentContent(fmt.Sprintf("LEFT_SHIFT %s", t.BitCount.A2LString()), indentLevel, indentString) } @@ -1485,7 +1494,7 @@ func (t *LocMeasurementType) MapChildNodes(_ any) { panic("leaf node") } -func (t *LocMeasurementType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *LocMeasurementType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { tmpResult := []string{indentContent("/begin LOC_MEASUREMENT", indentLevel, indentString)} if t.Identifier != nil { @@ -1503,7 +1512,7 @@ func (t *MapListType) MapChildNodes(_ any) { panic("leaf node") } -func (t *MapListType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *MapListType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { tmpResult := []string{indentContent("/begin MAP_LIST", indentLevel, indentString)} if t.Name != nil { @@ -1521,7 +1530,7 @@ func (t *MatrixDimType) MapChildNodes(_ any) { panic("leaf node") } -func (t *MatrixDimType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *MatrixDimType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return indentContent(fmt.Sprintf("MATRIX_DIM %s %s %s", t.XDim.A2LString(), t.YDim.A2LString(), t.ZDim.A2LString()), indentLevel, indentString) } @@ -1529,7 +1538,7 @@ func (t *MaxGradType) MapChildNodes(_ any) { panic("leaf node") } -func (t *MaxGradType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *MaxGradType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return indentContent(fmt.Sprintf("MAX_GRAD %s", t.MaxGradient.A2LString()), indentLevel, indentString) } @@ -1537,7 +1546,7 @@ func (t *MaxRefreshType) MapChildNodes(_ any) { panic("leaf node") } -func (t *MaxRefreshType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *MaxRefreshType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return indentContent(fmt.Sprintf("MAX_REFRESH %s %s", t.ScalingUnit.A2LString(), t.Rate.A2LString()), indentLevel, indentString) } @@ -1592,7 +1601,7 @@ func (t *MeasurementType) MapChildNodes(node any) { } } -func (t *MeasurementType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *MeasurementType) MarshalA2L(indentLevel int, indentString string, sort bool) (result string) { tmpResult := []string{indentContent(fmt.Sprintf("/begin MEASUREMENT %s %s %s %s %s %s %s %s", t.Name.A2LString(), t.LongIdentifier.A2LString(), @@ -1604,75 +1613,75 @@ func (t *MeasurementType) MarshalA2L(indentLevel int, indentString string) (resu t.UpperLimit.A2LString()), indentLevel, indentString)} if t.DISPLAY_IDENTIFIER != nil { - tmpResult = append(tmpResult, t.DISPLAY_IDENTIFIER.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.DISPLAY_IDENTIFIER.MarshalA2L(indentLevel+1, indentString, sort)) } if t.READ_WRITE != nil { - tmpResult = append(tmpResult, t.READ_WRITE.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.READ_WRITE.MarshalA2L(indentLevel+1, indentString, sort)) } if t.FORMAT != nil { - tmpResult = append(tmpResult, t.FORMAT.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.FORMAT.MarshalA2L(indentLevel+1, indentString, sort)) } if t.ARRAY_SIZE != nil { - tmpResult = append(tmpResult, t.ARRAY_SIZE.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.ARRAY_SIZE.MarshalA2L(indentLevel+1, indentString, sort)) } if t.BIT_MASK != nil { - tmpResult = append(tmpResult, t.BIT_MASK.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.BIT_MASK.MarshalA2L(indentLevel+1, indentString, sort)) } if t.BIT_OPERATION != nil { - tmpResult = append(tmpResult, t.BIT_OPERATION.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.BIT_OPERATION.MarshalA2L(indentLevel+1, indentString, sort)) } if t.BYTE_ORDER != nil { - tmpResult = append(tmpResult, t.BYTE_ORDER.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.BYTE_ORDER.MarshalA2L(indentLevel+1, indentString, sort)) } if t.MAX_REFRESH != nil { - tmpResult = append(tmpResult, t.MAX_REFRESH.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.MAX_REFRESH.MarshalA2L(indentLevel+1, indentString, sort)) } if t.VIRTUAL != nil { - tmpResult = append(tmpResult, t.VIRTUAL.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.VIRTUAL.MarshalA2L(indentLevel+1, indentString, sort)) } if t.FUNCTION_LIST != nil { - tmpResult = append(tmpResult, t.FUNCTION_LIST.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.FUNCTION_LIST.MarshalA2L(indentLevel+1, indentString, sort)) } if t.ECU_ADDRESS != nil { - tmpResult = append(tmpResult, t.ECU_ADDRESS.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.ECU_ADDRESS.MarshalA2L(indentLevel+1, indentString, sort)) } if t.ERROR_MASK != nil { - tmpResult = append(tmpResult, t.ERROR_MASK.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.ERROR_MASK.MarshalA2L(indentLevel+1, indentString, sort)) } if t.REF_MEMORY_SEGMENT != nil { - tmpResult = append(tmpResult, t.REF_MEMORY_SEGMENT.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.REF_MEMORY_SEGMENT.MarshalA2L(indentLevel+1, indentString, sort)) } if t.ANNOTATION != nil { for _, annotation := range t.ANNOTATION { - tmpResult = append(tmpResult, annotation.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, annotation.MarshalA2L(indentLevel+1, indentString, sort)) } } if t.IF_DATA != nil { for _, ifData := range t.IF_DATA { - tmpResult = append(tmpResult, ifData.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, ifData.MarshalA2L(indentLevel+1, indentString, sort)) } } if t.MATRIX_DIM != nil { - tmpResult = append(tmpResult, t.MATRIX_DIM.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.MATRIX_DIM.MarshalA2L(indentLevel+1, indentString, sort)) } if t.ECU_ADDRESS_EXTENSION != nil { - tmpResult = append(tmpResult, t.ECU_ADDRESS_EXTENSION.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.ECU_ADDRESS_EXTENSION.MarshalA2L(indentLevel+1, indentString, sort)) } tmpResult = append(tmpResult, indentContent("/end MEASUREMENT", indentLevel, indentString)) @@ -1693,7 +1702,7 @@ func (t *MemoryLayoutType) MapChildNodes(node any) { } } -func (t *MemoryLayoutType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *MemoryLayoutType) MarshalA2L(indentLevel int, indentString string, sort bool) (result string) { tmpResult := []string{indentContent(fmt.Sprintf("/begin MEMORY_LAYOUT %s %s %s %s %s %s %s %s", t.PrgType, t.Address.A2LString(), @@ -1706,7 +1715,7 @@ func (t *MemoryLayoutType) MarshalA2L(indentLevel int, indentString string) (res if t.IF_DATA != nil { for _, ifData := range t.IF_DATA { - tmpResult = append(tmpResult, ifData.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, ifData.MarshalA2L(indentLevel+1, indentString, sort)) } } @@ -1728,7 +1737,7 @@ func (t *MemorySegmentType) MapChildNodes(node any) { } } -func (t *MemorySegmentType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *MemorySegmentType) MarshalA2L(indentLevel int, indentString string, sort bool) (result string) { tmpResult := []string{indentContent(fmt.Sprintf("/begin MEMORY_SEGMENT %s %s %s %s %s %s %s %s %s %s %s %s", t.Name.A2LString(), t.LongIdentifier.A2LString(), @@ -1745,7 +1754,7 @@ func (t *MemorySegmentType) MarshalA2L(indentLevel int, indentString string) (re if t.IF_DATA != nil { for _, ifData := range t.IF_DATA { - tmpResult = append(tmpResult, ifData.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, ifData.MarshalA2L(indentLevel+1, indentString, sort)) } } @@ -1779,43 +1788,43 @@ func (t *ModCommonType) MapChildNodes(node any) { } } -func (t *ModCommonType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *ModCommonType) MarshalA2L(indentLevel int, indentString string, sort bool) (result string) { tmpResult := []string{indentContent(fmt.Sprintf("/begin MOD_COMMON %s", t.Comment.A2LString()), indentLevel, indentString)} if t.S_REC_LAYOUT != nil { - tmpResult = append(tmpResult, t.S_REC_LAYOUT.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.S_REC_LAYOUT.MarshalA2L(indentLevel+1, indentString, sort)) } if t.DEPOSIT != nil { - tmpResult = append(tmpResult, t.DEPOSIT.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.DEPOSIT.MarshalA2L(indentLevel+1, indentString, sort)) } if t.BYTE_ORDER != nil { - tmpResult = append(tmpResult, t.BYTE_ORDER.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.BYTE_ORDER.MarshalA2L(indentLevel+1, indentString, sort)) } if t.DATA_SIZE != nil { - tmpResult = append(tmpResult, t.DATA_SIZE.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.DATA_SIZE.MarshalA2L(indentLevel+1, indentString, sort)) } if t.ALIGNMENT_BYTE != nil { - tmpResult = append(tmpResult, t.ALIGNMENT_BYTE.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.ALIGNMENT_BYTE.MarshalA2L(indentLevel+1, indentString, sort)) } if t.ALIGNMENT_WORD != nil { - tmpResult = append(tmpResult, t.ALIGNMENT_WORD.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.ALIGNMENT_WORD.MarshalA2L(indentLevel+1, indentString, sort)) } if t.ALIGNMENT_LONG != nil { - tmpResult = append(tmpResult, t.ALIGNMENT_LONG.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.ALIGNMENT_LONG.MarshalA2L(indentLevel+1, indentString, sort)) } if t.ALIGNMENT_FLOAT32_IEEE != nil { - tmpResult = append(tmpResult, t.ALIGNMENT_FLOAT32_IEEE.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.ALIGNMENT_FLOAT32_IEEE.MarshalA2L(indentLevel+1, indentString, sort)) } if t.ALIGNMENT_FLOAT64_IEEE != nil { - tmpResult = append(tmpResult, t.ALIGNMENT_FLOAT64_IEEE.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.ALIGNMENT_FLOAT64_IEEE.MarshalA2L(indentLevel+1, indentString, sort)) } tmpResult = append(tmpResult, indentContent("/end MOD_COMMON", indentLevel, indentString)) @@ -1882,80 +1891,80 @@ func (t *ModParType) MapChildNodes(node any) { } } -func (t *ModParType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *ModParType) MarshalA2L(indentLevel int, indentString string, sort bool) (result string) { tmpResult := []string{indentContent(fmt.Sprintf("/begin MOD_PAR %s", t.Comment.A2LString()), indentLevel, indentString)} if t.VERSION != nil { - tmpResult = append(tmpResult, t.VERSION.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.VERSION.MarshalA2L(indentLevel+1, indentString, sort)) } if t.ADDR_EPK != nil { for _, addrEpk := range t.ADDR_EPK { - tmpResult = append(tmpResult, addrEpk.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, addrEpk.MarshalA2L(indentLevel+1, indentString, sort)) } } if t.EPK != nil { - tmpResult = append(tmpResult, t.EPK.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.EPK.MarshalA2L(indentLevel+1, indentString, sort)) } if t.SUPPLIER != nil { - tmpResult = append(tmpResult, t.SUPPLIER.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.SUPPLIER.MarshalA2L(indentLevel+1, indentString, sort)) } if t.CUSTOMER != nil { - tmpResult = append(tmpResult, t.CUSTOMER.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.CUSTOMER.MarshalA2L(indentLevel+1, indentString, sort)) } if t.CUSTOMER_NO != nil { - tmpResult = append(tmpResult, t.CUSTOMER_NO.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.CUSTOMER_NO.MarshalA2L(indentLevel+1, indentString, sort)) } if t.USER != nil { - tmpResult = append(tmpResult, t.USER.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.USER.MarshalA2L(indentLevel+1, indentString, sort)) } if t.PHONE_NO != nil { - tmpResult = append(tmpResult, t.PHONE_NO.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.PHONE_NO.MarshalA2L(indentLevel+1, indentString, sort)) } if t.ECU != nil { - tmpResult = append(tmpResult, t.ECU.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.ECU.MarshalA2L(indentLevel+1, indentString, sort)) } if t.CPU_TYPE != nil { - tmpResult = append(tmpResult, t.CPU_TYPE.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.CPU_TYPE.MarshalA2L(indentLevel+1, indentString, sort)) } if t.NO_OF_INTERFACES != nil { - tmpResult = append(tmpResult, t.NO_OF_INTERFACES.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.NO_OF_INTERFACES.MarshalA2L(indentLevel+1, indentString, sort)) } if t.ECU_CALIBRATION_OFFSET != nil { - tmpResult = append(tmpResult, t.ECU_CALIBRATION_OFFSET.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.ECU_CALIBRATION_OFFSET.MarshalA2L(indentLevel+1, indentString, sort)) } if t.CALIBRATION_METHOD != nil { for _, calibrationMethod := range t.CALIBRATION_METHOD { - tmpResult = append(tmpResult, calibrationMethod.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, calibrationMethod.MarshalA2L(indentLevel+1, indentString, sort)) } } if t.MEMORY_LAYOUT != nil { for _, memoryLayout := range t.MEMORY_LAYOUT { - tmpResult = append(tmpResult, memoryLayout.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, memoryLayout.MarshalA2L(indentLevel+1, indentString, sort)) } } if t.MEMORY_SEGMENT != nil { for _, memorySegment := range t.MEMORY_SEGMENT { - tmpResult = append(tmpResult, memorySegment.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, memorySegment.MarshalA2L(indentLevel+1, indentString, sort)) } } if t.SYSTEM_CONSTANT != nil { for _, systemConstant := range t.SYSTEM_CONSTANT { - tmpResult = append(tmpResult, systemConstant.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, systemConstant.MarshalA2L(indentLevel+1, indentString, sort)) } } @@ -2059,106 +2068,112 @@ func (t *ModuleType) MapChildNodes(node any) { } } -func (t *ModuleType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *ModuleType) MarshalA2L(indentLevel int, indentString string, sort bool) (result string) { tmpResult := []string{indentContent(fmt.Sprintf("/begin MODULE %s %s", t.Name.A2LString(), t.LongIdentifier.A2LString()), indentLevel, indentString)} if t.A2ML != nil { - tmpResult = append(tmpResult, t.A2ML.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.A2ML.MarshalA2L(indentLevel+1, indentString, sort)) } if t.MOD_PAR != nil { - tmpResult = append(tmpResult, t.MOD_PAR.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.MOD_PAR.MarshalA2L(indentLevel+1, indentString, sort)) } if t.MOD_COMMON != nil { - tmpResult = append(tmpResult, t.MOD_COMMON.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.MOD_COMMON.MarshalA2L(indentLevel+1, indentString, sort)) } if t.IF_DATA != nil { for _, ifData := range t.IF_DATA { - tmpResult = append(tmpResult, ifData.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, ifData.MarshalA2L(indentLevel+1, indentString, sort)) } } if t.CHARACTERISTIC != nil { - for _, characteristic := range t.CHARACTERISTIC { - tmpResult = append(tmpResult, characteristic.MarshalA2L(indentLevel+1, indentString)) + characteristics := t.CHARACTERISTIC + + if sort { + sortSortableList[*CharacteristicType](characteristics) + } + + for _, characteristic := range characteristics { + tmpResult = append(tmpResult, characteristic.MarshalA2L(indentLevel+1, indentString, sort)) } } if t.AXIS_PTS != nil { for _, axisPts := range t.AXIS_PTS { - tmpResult = append(tmpResult, axisPts.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, axisPts.MarshalA2L(indentLevel+1, indentString, sort)) } } if t.MEASUREMENT != nil { for _, measurement := range t.MEASUREMENT { - tmpResult = append(tmpResult, measurement.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, measurement.MarshalA2L(indentLevel+1, indentString, sort)) } } if t.COMPU_METHOD != nil { for _, compuMethod := range t.COMPU_METHOD { - tmpResult = append(tmpResult, compuMethod.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, compuMethod.MarshalA2L(indentLevel+1, indentString, sort)) } } if t.COMPU_TAB != nil { for _, compuTab := range t.COMPU_TAB { - tmpResult = append(tmpResult, compuTab.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, compuTab.MarshalA2L(indentLevel+1, indentString, sort)) } } if t.COMPU_VTAB != nil { for _, compuVTab := range t.COMPU_VTAB { - tmpResult = append(tmpResult, compuVTab.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, compuVTab.MarshalA2L(indentLevel+1, indentString, sort)) } } if t.COMPU_VTAB_RANGE != nil { for _, compuVTabRange := range t.COMPU_VTAB_RANGE { - tmpResult = append(tmpResult, compuVTabRange.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, compuVTabRange.MarshalA2L(indentLevel+1, indentString, sort)) } } if t.FUNCTION != nil { for _, function := range t.FUNCTION { - tmpResult = append(tmpResult, function.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, function.MarshalA2L(indentLevel+1, indentString, sort)) } } if t.GROUP != nil { for _, group := range t.GROUP { - tmpResult = append(tmpResult, group.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, group.MarshalA2L(indentLevel+1, indentString, sort)) } } if t.RECORD_LAYOUT != nil { for _, recordLayout := range t.RECORD_LAYOUT { - tmpResult = append(tmpResult, recordLayout.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, recordLayout.MarshalA2L(indentLevel+1, indentString, sort)) } } if t.VARIANT_CODING != nil { - tmpResult = append(tmpResult, t.VARIANT_CODING.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.VARIANT_CODING.MarshalA2L(indentLevel+1, indentString, sort)) } if t.FRAME != nil { - tmpResult = append(tmpResult, t.FRAME.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.FRAME.MarshalA2L(indentLevel+1, indentString, sort)) } if t.USER_RIGHTS != nil { for _, userRights := range t.USER_RIGHTS { - tmpResult = append(tmpResult, userRights.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, userRights.MarshalA2L(indentLevel+1, indentString, sort)) } } if t.UNIT != nil { for _, unit := range t.UNIT { - tmpResult = append(tmpResult, unit.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, unit.MarshalA2L(indentLevel+1, indentString, sort)) } } @@ -2171,7 +2186,7 @@ func (t *MonotonyType) MapChildNodes(_ any) { panic("leaf node") } -func (t *MonotonyType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *MonotonyType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return indentContent(fmt.Sprintf("MONOTONY %s", t.Monotony), indentLevel, indentString) } @@ -2179,7 +2194,7 @@ func (t *NoAxisPtsXType) MapChildNodes(_ any) { panic("leaf node") } -func (t *NoAxisPtsXType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *NoAxisPtsXType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return indentContent(fmt.Sprintf("NO_AXIS_PTS_X %s %s", t.Position.A2LString(), t.DataType.A2LString()), indentLevel, indentString) } @@ -2187,7 +2202,7 @@ func (t *NoAxisPtsYType) MapChildNodes(_ any) { panic("leaf node") } -func (t *NoAxisPtsYType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *NoAxisPtsYType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return indentContent(fmt.Sprintf("NO_AXIS_PTS_Y %s %s", t.Position.A2LString(), t.DataType.A2LString()), indentLevel, indentString) } @@ -2195,7 +2210,7 @@ func (t *NoAxisPtsZType) MapChildNodes(_ any) { panic("leaf node") } -func (t *NoAxisPtsZType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *NoAxisPtsZType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return indentContent(fmt.Sprintf("NO_AXIS_PTS_Z %s %s", t.Position.A2LString(), t.DataType.A2LString()), indentLevel, indentString) } @@ -2203,7 +2218,7 @@ func (t *NoOfInterfacesType) MapChildNodes(_ any) { panic("leaf node") } -func (t *NoOfInterfacesType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *NoOfInterfacesType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return indentContent(fmt.Sprintf("NO_OF_INTERFACES %s", t.Num.A2LString()), indentLevel, indentString) } @@ -2211,7 +2226,7 @@ func (t *NoRescaleXType) MapChildNodes(_ any) { panic("leaf node") } -func (t *NoRescaleXType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *NoRescaleXType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return indentContent(fmt.Sprintf("NO_RESCALE_X %s %s", t.Position.A2LString(), t.DataType.A2LString()), indentLevel, indentString) } @@ -2219,7 +2234,7 @@ func (t *NoRescaleYType) MapChildNodes(_ any) { panic("leaf node") } -func (t *NoRescaleYType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *NoRescaleYType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return indentContent(fmt.Sprintf("NO_RESCALE_Y %s %s", t.Position.A2LString(), t.DataType.A2LString()), indentLevel, indentString) } @@ -2227,7 +2242,7 @@ func (t *NoRescaleZType) MapChildNodes(_ any) { panic("leaf node") } -func (t *NoRescaleZType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *NoRescaleZType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return indentContent(fmt.Sprintf("NO_RESCALE_Z %s %s", t.Position.A2LString(), t.DataType.A2LString()), indentLevel, indentString) } @@ -2235,7 +2250,7 @@ func (t *NumberType) MapChildNodes(_ any) { panic("leaf node") } -func (t *NumberType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *NumberType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return indentContent(fmt.Sprintf("NUMBER %s", t.Number.A2LString()), indentLevel, indentString) } @@ -2243,7 +2258,7 @@ func (t *OffsetXType) MapChildNodes(_ any) { panic("leaf node") } -func (t *OffsetXType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *OffsetXType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return indentContent(fmt.Sprintf("OFFSET_X %s %s", t.Position.A2LString(), t.DataType.A2LString()), indentLevel, indentString) } @@ -2251,7 +2266,7 @@ func (t *OffsetYType) MapChildNodes(_ any) { panic("leaf node") } -func (t *OffsetYType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *OffsetYType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return indentContent(fmt.Sprintf("OFFSET_Y %s %s", t.Position.A2LString(), t.DataType.A2LString()), indentLevel, indentString) } @@ -2259,7 +2274,7 @@ func (t *OffsetZType) MapChildNodes(_ any) { panic("leaf node") } -func (t *OffsetZType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *OffsetZType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return indentContent(fmt.Sprintf("OFFSET_Z %s %s", t.Position.A2LString(), t.DataType.A2LString()), indentLevel, indentString) } @@ -2267,7 +2282,7 @@ func (t *OutMeasurementType) MapChildNodes(_ any) { panic("leaf node") } -func (t *OutMeasurementType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *OutMeasurementType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { tmpResult := []string{indentContent("/begin OUT_MEASUREMENT", indentLevel, indentString)} if t.Identifier != nil { @@ -2285,7 +2300,7 @@ func (t *PhoneNoType) MapChildNodes(_ any) { panic("leaf node") } -func (t *PhoneNoType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *PhoneNoType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return indentContent(fmt.Sprintf("PHONE_NO %s", t.TelNum.A2LString()), indentLevel, indentString) } @@ -2293,7 +2308,7 @@ func (t *ProjectNoType) MapChildNodes(_ any) { panic("leaf node") } -func (t *ProjectNoType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *ProjectNoType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return indentContent(fmt.Sprintf("PROJECT_NO %s", t.ProjectNumber.A2LString()), indentLevel, indentString) } @@ -2310,18 +2325,18 @@ func (t *ProjectType) MapChildNodes(node any) { } } -func (t *ProjectType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *ProjectType) MarshalA2L(indentLevel int, indentString string, sort bool) (result string) { tmpResult := []string{indentContent(fmt.Sprintf("/begin PROJECT %s %s", t.Name.A2LString(), t.LongIdentifier.A2LString()), indentLevel, indentString)} if t.HEADER != nil { - tmpResult = append(tmpResult, t.HEADER.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.HEADER.MarshalA2L(indentLevel+1, indentString, sort)) } if t.MODULE != nil { for _, module := range t.MODULE { - tmpResult = append(tmpResult, module.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, module.MarshalA2L(indentLevel+1, indentString, sort)) } } @@ -2334,7 +2349,7 @@ func (t *ReadOnlyType) MapChildNodes(_ any) { panic("leaf node") } -func (t *ReadOnlyType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *ReadOnlyType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return indentContent("READ_ONLY", indentLevel, indentString) } @@ -2342,7 +2357,7 @@ func (t *ReadWriteType) MapChildNodes(_ any) { panic("leaf node") } -func (t *ReadWriteType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *ReadWriteType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return indentContent("READ_WRITE", indentLevel, indentString) } @@ -2435,164 +2450,164 @@ func (t *RecordLayoutType) MapChildNodes(node any) { } } -func (t *RecordLayoutType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *RecordLayoutType) MarshalA2L(indentLevel int, indentString string, sort bool) (result string) { tmpResult := []string{indentContent(fmt.Sprintf("/begin RECORD_LAYOUT %s", t.Name.A2LString()), indentLevel, indentString)} if t.FNC_VALUES != nil { - tmpResult = append(tmpResult, t.FNC_VALUES.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.FNC_VALUES.MarshalA2L(indentLevel+1, indentString, sort)) } if t.IDENTIFICATION != nil { - tmpResult = append(tmpResult, t.IDENTIFICATION.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.IDENTIFICATION.MarshalA2L(indentLevel+1, indentString, sort)) } if t.AXIS_PTS_X != nil { - tmpResult = append(tmpResult, t.AXIS_PTS_X.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.AXIS_PTS_X.MarshalA2L(indentLevel+1, indentString, sort)) } if t.AXIS_PTS_Y != nil { - tmpResult = append(tmpResult, t.AXIS_PTS_Y.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.AXIS_PTS_Y.MarshalA2L(indentLevel+1, indentString, sort)) } if t.AXIS_PTS_Z != nil { - tmpResult = append(tmpResult, t.AXIS_PTS_Z.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.AXIS_PTS_Z.MarshalA2L(indentLevel+1, indentString, sort)) } if t.AXIS_RESCALE_X != nil { - tmpResult = append(tmpResult, t.AXIS_RESCALE_X.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.AXIS_RESCALE_X.MarshalA2L(indentLevel+1, indentString, sort)) } if t.AXIS_RESCALE_Y != nil { - tmpResult = append(tmpResult, t.AXIS_RESCALE_Y.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.AXIS_RESCALE_Y.MarshalA2L(indentLevel+1, indentString, sort)) } if t.AXIS_RESCALE_Z != nil { - tmpResult = append(tmpResult, t.AXIS_RESCALE_Z.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.AXIS_RESCALE_Z.MarshalA2L(indentLevel+1, indentString, sort)) } if t.NO_AXIS_PTS_X != nil { - tmpResult = append(tmpResult, t.NO_AXIS_PTS_X.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.NO_AXIS_PTS_X.MarshalA2L(indentLevel+1, indentString, sort)) } if t.NO_AXIS_PTS_Y != nil { - tmpResult = append(tmpResult, t.NO_AXIS_PTS_Y.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.NO_AXIS_PTS_Y.MarshalA2L(indentLevel+1, indentString, sort)) } if t.NO_AXIS_PTS_Z != nil { - tmpResult = append(tmpResult, t.NO_AXIS_PTS_Z.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.NO_AXIS_PTS_Z.MarshalA2L(indentLevel+1, indentString, sort)) } if t.NO_RESCALE_X != nil { - tmpResult = append(tmpResult, t.NO_RESCALE_X.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.NO_RESCALE_X.MarshalA2L(indentLevel+1, indentString, sort)) } if t.NO_RESCALE_Y != nil { - tmpResult = append(tmpResult, t.NO_RESCALE_Y.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.NO_RESCALE_Y.MarshalA2L(indentLevel+1, indentString, sort)) } if t.NO_RESCALE_Z != nil { - tmpResult = append(tmpResult, t.NO_RESCALE_Z.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.NO_RESCALE_Z.MarshalA2L(indentLevel+1, indentString, sort)) } if t.FIX_NO_AXIS_PTS_X != nil { - tmpResult = append(tmpResult, t.FIX_NO_AXIS_PTS_X.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.FIX_NO_AXIS_PTS_X.MarshalA2L(indentLevel+1, indentString, sort)) } if t.FIX_NO_AXIS_PTS_Y != nil { - tmpResult = append(tmpResult, t.FIX_NO_AXIS_PTS_Y.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.FIX_NO_AXIS_PTS_Y.MarshalA2L(indentLevel+1, indentString, sort)) } if t.FIX_NO_AXIS_PTS_Z != nil { - tmpResult = append(tmpResult, t.FIX_NO_AXIS_PTS_Z.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.FIX_NO_AXIS_PTS_Z.MarshalA2L(indentLevel+1, indentString, sort)) } if t.SRC_ADDR_X != nil { - tmpResult = append(tmpResult, t.SRC_ADDR_X.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.SRC_ADDR_X.MarshalA2L(indentLevel+1, indentString, sort)) } if t.SRC_ADDR_Y != nil { - tmpResult = append(tmpResult, t.SRC_ADDR_Y.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.SRC_ADDR_Y.MarshalA2L(indentLevel+1, indentString, sort)) } if t.SRC_ADDR_Z != nil { - tmpResult = append(tmpResult, t.SRC_ADDR_Z.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.SRC_ADDR_Z.MarshalA2L(indentLevel+1, indentString, sort)) } if t.RIP_ADDR_X != nil { - tmpResult = append(tmpResult, t.RIP_ADDR_X.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.RIP_ADDR_X.MarshalA2L(indentLevel+1, indentString, sort)) } if t.RIP_ADDR_Y != nil { - tmpResult = append(tmpResult, t.RIP_ADDR_Y.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.RIP_ADDR_Y.MarshalA2L(indentLevel+1, indentString, sort)) } if t.RIP_ADDR_Z != nil { - tmpResult = append(tmpResult, t.RIP_ADDR_Z.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.RIP_ADDR_Z.MarshalA2L(indentLevel+1, indentString, sort)) } if t.RIP_ADDR_W != nil { - tmpResult = append(tmpResult, t.RIP_ADDR_W.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.RIP_ADDR_W.MarshalA2L(indentLevel+1, indentString, sort)) } if t.SHIFT_OP_X != nil { - tmpResult = append(tmpResult, t.SHIFT_OP_X.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.SHIFT_OP_X.MarshalA2L(indentLevel+1, indentString, sort)) } if t.SHIFT_OP_Y != nil { - tmpResult = append(tmpResult, t.SHIFT_OP_Y.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.SHIFT_OP_Y.MarshalA2L(indentLevel+1, indentString, sort)) } if t.SHIFT_OP_Z != nil { - tmpResult = append(tmpResult, t.SHIFT_OP_Z.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.SHIFT_OP_Z.MarshalA2L(indentLevel+1, indentString, sort)) } if t.OFFSET_X != nil { - tmpResult = append(tmpResult, t.OFFSET_X.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.OFFSET_X.MarshalA2L(indentLevel+1, indentString, sort)) } if t.OFFSET_Y != nil { - tmpResult = append(tmpResult, t.OFFSET_Y.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.OFFSET_Y.MarshalA2L(indentLevel+1, indentString, sort)) } if t.OFFSET_Z != nil { - tmpResult = append(tmpResult, t.OFFSET_Z.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.OFFSET_Z.MarshalA2L(indentLevel+1, indentString, sort)) } if t.DIST_OP_X != nil { - tmpResult = append(tmpResult, t.DIST_OP_X.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.DIST_OP_X.MarshalA2L(indentLevel+1, indentString, sort)) } if t.DIST_OP_Y != nil { - tmpResult = append(tmpResult, t.DIST_OP_Y.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.DIST_OP_Y.MarshalA2L(indentLevel+1, indentString, sort)) } if t.DIST_OP_Z != nil { - tmpResult = append(tmpResult, t.DIST_OP_Z.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.DIST_OP_Z.MarshalA2L(indentLevel+1, indentString, sort)) } if t.ALIGNMENT_BYTE != nil { - tmpResult = append(tmpResult, t.ALIGNMENT_BYTE.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.ALIGNMENT_BYTE.MarshalA2L(indentLevel+1, indentString, sort)) } if t.ALIGNMENT_WORD != nil { - tmpResult = append(tmpResult, t.ALIGNMENT_WORD.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.ALIGNMENT_WORD.MarshalA2L(indentLevel+1, indentString, sort)) } if t.ALIGNMENT_LONG != nil { - tmpResult = append(tmpResult, t.ALIGNMENT_LONG.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.ALIGNMENT_LONG.MarshalA2L(indentLevel+1, indentString, sort)) } if t.ALIGNMENT_FLOAT32_IEEE != nil { - tmpResult = append(tmpResult, t.ALIGNMENT_FLOAT32_IEEE.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.ALIGNMENT_FLOAT32_IEEE.MarshalA2L(indentLevel+1, indentString, sort)) } if t.ALIGNMENT_FLOAT64_IEEE != nil { - tmpResult = append(tmpResult, t.ALIGNMENT_FLOAT64_IEEE.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.ALIGNMENT_FLOAT64_IEEE.MarshalA2L(indentLevel+1, indentString, sort)) } if t.RESERVED != nil { for _, reserved := range t.RESERVED { - tmpResult = append(tmpResult, reserved.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, reserved.MarshalA2L(indentLevel+1, indentString, sort)) } } @@ -2605,7 +2620,7 @@ func (t *RefCharacteristicType) MapChildNodes(_ any) { panic("leaf node") } -func (t *RefCharacteristicType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *RefCharacteristicType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { tmpResult := []string{indentContent("/begin REF_CHARACTERISTIC", indentLevel, indentString)} if t.Identifier != nil { @@ -2623,7 +2638,7 @@ func (t *RefGroupType) MapChildNodes(_ any) { panic("leaf node") } -func (t *RefGroupType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *RefGroupType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { tmpResult := []string{indentContent("/begin REF_GROUP", indentLevel, indentString)} if t.Identifier != nil { @@ -2641,7 +2656,7 @@ func (t *RefMeasurementType) MapChildNodes(_ any) { panic("leaf node") } -func (t *RefMeasurementType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *RefMeasurementType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { tmpResult := []string{indentContent("/begin REF_MEASUREMENT", indentLevel, indentString)} if t.Identifier != nil { @@ -2659,7 +2674,7 @@ func (t *RefMemorySegmentType) MapChildNodes(_ any) { panic("leaf node") } -func (t *RefMemorySegmentType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *RefMemorySegmentType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return indentContent(fmt.Sprintf("REF_MEMORY_SEGMENT %s", t.Name.A2LString()), indentLevel, indentString) } @@ -2667,7 +2682,7 @@ func (t *RefUnitType) MapChildNodes(_ any) { panic("leaf node") } -func (t *RefUnitType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *RefUnitType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return indentContent(fmt.Sprintf("REF_UNIT %s", t.Unit.A2LString()), indentLevel, indentString) } @@ -2675,7 +2690,7 @@ func (t *ReservedType) MapChildNodes(_ any) { panic("leaf node") } -func (t *ReservedType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *ReservedType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return indentContent(fmt.Sprintf("RESERVED %s %s", t.Position.A2LString(), t.DataSize), indentLevel, indentString) } @@ -2683,7 +2698,7 @@ func (t *RightShiftType) MapChildNodes(_ any) { panic("leaf node") } -func (t *RightShiftType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *RightShiftType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return indentContent(fmt.Sprintf("RIGHT_SHIFT %s", t.BitCount.A2LString()), indentLevel, indentString) } @@ -2691,7 +2706,7 @@ func (t *RipAddrWType) MapChildNodes(_ any) { panic("leaf node") } -func (t *RipAddrWType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *RipAddrWType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return indentContent(fmt.Sprintf("RIP_ADDR_W %s %s", t.Position.A2LString(), t.DataType.A2LString()), indentLevel, indentString) } @@ -2699,7 +2714,7 @@ func (t *RipAddrXType) MapChildNodes(_ any) { panic("leaf node") } -func (t *RipAddrXType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *RipAddrXType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return indentContent(fmt.Sprintf("RIP_ADDR_X %s %s", t.Position.A2LString(), t.DataType.A2LString()), indentLevel, indentString) } @@ -2707,7 +2722,7 @@ func (t *RipAddrYType) MapChildNodes(_ any) { panic("leaf node") } -func (t *RipAddrYType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *RipAddrYType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return indentContent(fmt.Sprintf("RIP_ADDR_Y %s %s", t.Position.A2LString(), t.DataType.A2LString()), indentLevel, indentString) } @@ -2715,7 +2730,7 @@ func (t *RipAddrZType) MapChildNodes(_ any) { panic("leaf node") } -func (t *RipAddrZType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *RipAddrZType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return indentContent(fmt.Sprintf("RIP_ADDR_Z %s %s", t.Position.A2LString(), t.DataType.A2LString()), indentLevel, indentString) } @@ -2732,19 +2747,19 @@ func (t *RootNodeType) MapChildNodes(node any) { } } -func (t *RootNodeType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *RootNodeType) MarshalA2L(indentLevel int, indentString string, sort bool) (result string) { tmpResult := make([]string, 0) if t.ASAP2_VERSION != nil { - tmpResult = append(tmpResult, t.ASAP2_VERSION.MarshalA2L(indentLevel, indentString)) + tmpResult = append(tmpResult, t.ASAP2_VERSION.MarshalA2L(indentLevel, indentString, sort)) } if t.A2ML_VERSION != nil { - tmpResult = append(tmpResult, t.A2ML_VERSION.MarshalA2L(indentLevel, indentString)) + tmpResult = append(tmpResult, t.A2ML_VERSION.MarshalA2L(indentLevel, indentString, sort)) } if t.PROJECT != nil { - tmpResult = append(tmpResult, t.PROJECT.MarshalA2L(indentLevel, indentString)) + tmpResult = append(tmpResult, t.PROJECT.MarshalA2L(indentLevel, indentString, sort)) } return strings.Join(tmpResult, "\n") @@ -2754,7 +2769,7 @@ func (t *RootType) MapChildNodes(_ any) { panic("leaf node") } -func (t *RootType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *RootType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return indentContent("ROOT", indentLevel, indentString) } @@ -2762,7 +2777,7 @@ func (t *ShiftOpXType) MapChildNodes(_ any) { panic("leaf node") } -func (t *ShiftOpXType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *ShiftOpXType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return indentContent(fmt.Sprintf("SHIFT_OP_X %s %s", t.Position.A2LString(), t.DataType.A2LString()), indentLevel, indentString) } @@ -2770,7 +2785,7 @@ func (t *ShiftOpYType) MapChildNodes(_ any) { panic("leaf node") } -func (t *ShiftOpYType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *ShiftOpYType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return indentContent(fmt.Sprintf("SHIFT_OP_Y %s %s", t.Position.A2LString(), t.DataType.A2LString()), indentLevel, indentString) } @@ -2778,7 +2793,7 @@ func (t *ShiftOpZType) MapChildNodes(_ any) { panic("leaf node") } -func (t *ShiftOpZType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *ShiftOpZType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return indentContent(fmt.Sprintf("SHIFT_OP_Z %s %s", t.Position.A2LString(), t.DataType.A2LString()), indentLevel, indentString) } @@ -2786,7 +2801,7 @@ func (t *SiExponentsType) MapChildNodes(_ any) { panic("leaf node") } -func (t *SiExponentsType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *SiExponentsType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return indentContent(fmt.Sprintf("SI_EXPONENTS %s %s %s %s %s %s %s", t.Length.A2LString(), t.Mass.A2LString(), @@ -2801,7 +2816,7 @@ func (t *SignExtendType) MapChildNodes(_ any) { panic("leaf node") } -func (t *SignExtendType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *SignExtendType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return indentContent("SIGN_EXTEND", indentLevel, indentString) } @@ -2809,7 +2824,7 @@ func (t *SrcAddrXType) MapChildNodes(_ any) { panic("leaf node") } -func (t *SrcAddrXType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *SrcAddrXType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return indentContent(fmt.Sprintf("SRC_ADDR_X %s %s", t.Position.A2LString(), t.DataType.A2LString()), indentLevel, indentString) } @@ -2817,7 +2832,7 @@ func (t *SrcAddrYType) MapChildNodes(_ any) { panic("leaf node") } -func (t *SrcAddrYType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *SrcAddrYType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return indentContent(fmt.Sprintf("SRC_ADDR_Y %s %s", t.Position.A2LString(), t.DataType.A2LString()), indentLevel, indentString) } @@ -2825,7 +2840,7 @@ func (t *SrcAddrZType) MapChildNodes(_ any) { panic("leaf node") } -func (t *SrcAddrZType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *SrcAddrZType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return indentContent(fmt.Sprintf("SRC_ADDR_Z %s %s", t.Position.A2LString(), t.DataType.A2LString()), indentLevel, indentString) } @@ -2833,7 +2848,7 @@ func (t *SRecLayoutType) MapChildNodes(_ any) { panic("leaf node") } -func (t *SRecLayoutType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *SRecLayoutType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return indentContent(fmt.Sprintf("S_REC_LAYOUT %s", t.Name.A2LString()), indentLevel, indentString) } @@ -2841,7 +2856,7 @@ func (t *SubFunctionType) MapChildNodes(_ any) { panic("leaf node") } -func (t *SubFunctionType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *SubFunctionType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { tmpResult := []string{indentContent("/begin SUB_FUNCTION", indentLevel, indentString)} if t.Identifier != nil { @@ -2859,7 +2874,7 @@ func (t *SubGroupType) MapChildNodes(_ any) { panic("leaf node") } -func (t *SubGroupType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *SubGroupType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { tmpResult := []string{indentContent("/begin SUB_GROUP", indentLevel, indentString)} if t.Identifier != nil { @@ -2877,7 +2892,7 @@ func (t *SupplierType) MapChildNodes(_ any) { panic("leaf node") } -func (t *SupplierType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *SupplierType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return indentContent(fmt.Sprintf("SUPPLIER %s", t.Manufacturer.A2LString()), indentLevel, indentString) } @@ -2885,7 +2900,7 @@ func (t *SystemConstantType) MapChildNodes(_ any) { panic("leaf node") } -func (t *SystemConstantType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *SystemConstantType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return indentContent(fmt.Sprintf("SYSTEM_CONSTANT %s %s", t.Name.A2LString(), t.Value.A2LString()), indentLevel, indentString) } @@ -2893,7 +2908,7 @@ func (t *UnitConversionType) MapChildNodes(_ any) { panic("leaf node") } -func (t *UnitConversionType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *UnitConversionType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return indentContent(fmt.Sprintf("UNIT_CONVERSION %s %s", t.Gradient.A2LString(), t.Offset.A2LString()), indentLevel, indentString) } @@ -2910,7 +2925,7 @@ func (t *UnitType) MapChildNodes(node any) { } } -func (t *UnitType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *UnitType) MarshalA2L(indentLevel int, indentString string, sort bool) (result string) { tmpResult := []string{indentContent(fmt.Sprintf("/begin UNIT %s %s %s %s", t.Name.A2LString(), t.LongIdentifier.A2LString(), @@ -2918,15 +2933,15 @@ func (t *UnitType) MarshalA2L(indentLevel int, indentString string) (result stri t.Type), indentLevel, indentString)} if t.SI_EXPONENTS != nil { - tmpResult = append(tmpResult, t.SI_EXPONENTS.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.SI_EXPONENTS.MarshalA2L(indentLevel+1, indentString, sort)) } if t.REF_UNIT != nil { - tmpResult = append(tmpResult, t.REF_UNIT.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.REF_UNIT.MarshalA2L(indentLevel+1, indentString, sort)) } if t.UNIT_CONVERSION != nil { - tmpResult = append(tmpResult, t.UNIT_CONVERSION.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.UNIT_CONVERSION.MarshalA2L(indentLevel+1, indentString, sort)) } tmpResult = append(tmpResult, indentContent("/end UNIT", indentLevel, indentString)) @@ -2949,17 +2964,17 @@ func (t *UserRightsType) MapChildNodes(node any) { } } -func (t *UserRightsType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *UserRightsType) MarshalA2L(indentLevel int, indentString string, sort bool) (result string) { tmpResult := []string{indentContent(fmt.Sprintf("/begin USER_RIGHTS %s", t.UserLevelId.A2LString()), indentLevel, indentString)} if t.REF_GROUP != nil { for _, refGroup := range t.REF_GROUP { - tmpResult = append(tmpResult, refGroup.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, refGroup.MarshalA2L(indentLevel+1, indentString, sort)) } } if t.READ_ONLY != nil { - tmpResult = append(tmpResult, t.READ_ONLY.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.READ_ONLY.MarshalA2L(indentLevel+1, indentString, sort)) } tmpResult = append(tmpResult, indentContent("/end USER_RIGHTS", indentLevel, indentString)) @@ -2971,7 +2986,7 @@ func (t *UserType) MapChildNodes(_ any) { panic("leaf node") } -func (t *UserType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *UserType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return indentContent(fmt.Sprintf("USER %s", t.UserName.A2LString()), indentLevel, indentString) } @@ -2979,7 +2994,7 @@ func (t *VarAddressType) MapChildNodes(_ any) { panic("leaf node") } -func (t *VarAddressType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *VarAddressType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { tmpResult := []string{indentContent("/begin VAR_ADDRESS", indentLevel, indentString)} if t.Address != nil { @@ -3002,7 +3017,7 @@ func (t *VarCharacteristicType) MapChildNodes(node any) { } } -func (t *VarCharacteristicType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *VarCharacteristicType) MarshalA2L(indentLevel int, indentString string, sort bool) (result string) { tmpResult := []string{indentContent(fmt.Sprintf("/begin VAR_CHARACTERISTIC %s", t.Name.A2LString()), indentLevel, indentString)} if t.CriterionName != nil { @@ -3012,7 +3027,7 @@ func (t *VarCharacteristicType) MarshalA2L(indentLevel int, indentString string) } if t.VAR_ADDRESS != nil { - tmpResult = append(tmpResult, t.VAR_ADDRESS.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.VAR_ADDRESS.MarshalA2L(indentLevel+1, indentString, sort)) } tmpResult = append(tmpResult, indentContent("/end VAR_CHARACTERISTIC", indentLevel, indentString)) @@ -3031,7 +3046,7 @@ func (t *VarCriterionType) MapChildNodes(node any) { } } -func (t *VarCriterionType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *VarCriterionType) MarshalA2L(indentLevel int, indentString string, sort bool) (result string) { tmpResult := []string{indentContent(fmt.Sprintf("/begin VAR_CRITERION %s %s", t.Name.A2LString(), t.LongIdentifier.A2LString()), indentLevel, indentString)} @@ -3043,11 +3058,11 @@ func (t *VarCriterionType) MarshalA2L(indentLevel int, indentString string) (res } if t.VAR_MEASUREMENT != nil { - tmpResult = append(tmpResult, t.VAR_MEASUREMENT.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.VAR_MEASUREMENT.MarshalA2L(indentLevel+1, indentString, sort)) } if t.VAR_SELECTION_CHARACTERISTIC != nil { - tmpResult = append(tmpResult, t.VAR_SELECTION_CHARACTERISTIC.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.VAR_SELECTION_CHARACTERISTIC.MarshalA2L(indentLevel+1, indentString, sort)) } tmpResult = append(tmpResult, indentContent("/end VAR_CRITERION", indentLevel, indentString)) @@ -3059,7 +3074,7 @@ func (t *VarForbiddenCombType) MapChildNodes(_ any) { panic("leaf node") } -func (t *VarForbiddenCombType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *VarForbiddenCombType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { tmpResult := []string{indentContent("/begin VAR_FORBIDDEN_COMB", indentLevel, indentString)} if t.CriterionNameCriterionValue != nil { @@ -3104,32 +3119,32 @@ func (t *VariantCodingType) MapChildNodes(node any) { } } -func (t *VariantCodingType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *VariantCodingType) MarshalA2L(indentLevel int, indentString string, sort bool) (result string) { tmpResult := []string{indentContent("/begin VARIANT_CODING", indentLevel, indentString)} if t.VAR_SEPARATOR != nil { - tmpResult = append(tmpResult, t.VAR_SEPARATOR.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.VAR_SEPARATOR.MarshalA2L(indentLevel+1, indentString, sort)) } if t.VAR_NAMING != nil { - tmpResult = append(tmpResult, t.VAR_NAMING.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.VAR_NAMING.MarshalA2L(indentLevel+1, indentString, sort)) } if t.VAR_CRITERION != nil { for _, varCriterion := range t.VAR_CRITERION { - tmpResult = append(tmpResult, varCriterion.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, varCriterion.MarshalA2L(indentLevel+1, indentString, sort)) } } if t.VAR_FORBIDDEN_COMB != nil { for _, varForbiddenComb := range t.VAR_FORBIDDEN_COMB { - tmpResult = append(tmpResult, varForbiddenComb.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, varForbiddenComb.MarshalA2L(indentLevel+1, indentString, sort)) } } if t.VAR_CHARACTERISTIC != nil { for _, varCharacteristic := range t.VAR_CHARACTERISTIC { - tmpResult = append(tmpResult, varCharacteristic.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, varCharacteristic.MarshalA2L(indentLevel+1, indentString, sort)) } } @@ -3142,7 +3157,7 @@ func (t *VarMeasurementType) MapChildNodes(_ any) { panic("leaf node") } -func (t *VarMeasurementType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *VarMeasurementType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return indentContent(fmt.Sprintf("VAR_MEASUREMENT %s", t.Name.A2LString()), indentLevel, indentString) } @@ -3150,7 +3165,7 @@ func (t *VarNamingType) MapChildNodes(_ any) { panic("leaf node") } -func (t *VarNamingType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *VarNamingType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return indentContent(fmt.Sprintf("VAR_NAMING %s", t.Tag), indentLevel, indentString) } @@ -3158,7 +3173,7 @@ func (t *VarSelectionCharacteristicType) MapChildNodes(_ any) { panic("leaf node") } -func (t *VarSelectionCharacteristicType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *VarSelectionCharacteristicType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return indentContent(fmt.Sprintf("VAR_SELECTION_CHARACTERISTIC %s", t.Name.A2LString()), indentLevel, indentString) } @@ -3166,7 +3181,7 @@ func (t *VarSeparatorType) MapChildNodes(_ any) { panic("leaf node") } -func (t *VarSeparatorType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *VarSeparatorType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return indentContent(fmt.Sprintf("VAR_SEPARATOR %s", t.Separator.A2LString()), indentLevel, indentString) } @@ -3174,7 +3189,7 @@ func (t *VersionType) MapChildNodes(_ any) { panic("leaf node") } -func (t *VersionType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *VersionType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return indentContent(fmt.Sprintf("VERSION %s", t.VersionIdentifier.A2LString()), indentLevel, indentString) } @@ -3182,7 +3197,7 @@ func (t *VirtualCharacteristicType) MapChildNodes(_ any) { panic("leaf node") } -func (t *VirtualCharacteristicType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *VirtualCharacteristicType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { tmpResult := []string{indentContent(fmt.Sprintf("/begin VIRTUAL_CHARACTERISTIC %s", t.Formula.A2LString()), indentLevel, indentString)} if t.Characteristic != nil { @@ -3200,7 +3215,7 @@ func (t *VirtualType) MapChildNodes(_ any) { panic("leaf node") } -func (t *VirtualType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *VirtualType) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { tmpResult := []string{indentContent("/begin VIRTUAL", indentLevel, indentString)} if t.MeasuringChannel != nil { diff --git a/pkg/a2l/a2mlextension.go b/pkg/a2l/a2mlextension.go index 0209a8e..55c4057 100644 --- a/pkg/a2l/a2mlextension.go +++ b/pkg/a2l/a2mlextension.go @@ -24,12 +24,12 @@ func (t *A2MLType) MapChildNodes(node any) { } } -func (t *A2MLType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *A2MLType) MarshalA2L(indentLevel int, indentString string, sort bool) (result string) { tmpResult := []string{indentContent("/begin A2ML", indentLevel, indentString)} if t.Declaration != nil { for _, declaration := range t.Declaration { - tmpResult = append(tmpResult, declaration.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, declaration.MarshalA2L(indentLevel+1, indentString, sort)) } } @@ -49,12 +49,12 @@ func (t *Declaration) MapChildNodes(node any) { } } -func (t *Declaration) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *Declaration) MarshalA2L(indentLevel int, indentString string, sort bool) (result string) { switch t.Oneof.(type) { case *Declaration_TypeDefinition: - result = t.Oneof.(*Declaration_TypeDefinition).TypeDefinition.MarshalA2L(indentLevel, indentString) + result = t.Oneof.(*Declaration_TypeDefinition).TypeDefinition.MarshalA2L(indentLevel, indentString, sort) case *Declaration_BlockDefinition: - result = t.Oneof.(*Declaration_BlockDefinition).BlockDefinition.MarshalA2L(indentLevel, indentString) + result = t.Oneof.(*Declaration_BlockDefinition).BlockDefinition.MarshalA2L(indentLevel, indentString, sort) default: panic("not implemented yet...") } @@ -71,8 +71,8 @@ func (t *TypeDefinition) MapChildNodes(node any) { } } -func (t *TypeDefinition) MarshalA2L(indentLevel int, indentString string) (result string) { - return t.TypeName.MarshalA2L(indentLevel, indentString) +func (t *TypeDefinition) MarshalA2L(indentLevel int, indentString string, sort bool) (result string) { + return t.TypeName.MarshalA2L(indentLevel, indentString, sort) } func (t *TypeName) MapChildNodes(node any) { @@ -100,18 +100,18 @@ func (t *TypeName) MapChildNodes(node any) { } } -func (t *TypeName) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *TypeName) MarshalA2L(indentLevel int, indentString string, sort bool) (result string) { switch t.Oneof.(type) { case *TypeName_PredefinedTypeName: - result = t.Oneof.(*TypeName_PredefinedTypeName).PredefinedTypeName.MarshalA2L(indentLevel, indentString) + result = t.Oneof.(*TypeName_PredefinedTypeName).PredefinedTypeName.MarshalA2L(indentLevel, indentString, sort) case *TypeName_StructTypeName: - result = t.Oneof.(*TypeName_StructTypeName).StructTypeName.MarshalA2L(indentLevel, indentString) + result = t.Oneof.(*TypeName_StructTypeName).StructTypeName.MarshalA2L(indentLevel, indentString, sort) case *TypeName_TaggedstructTypeName: - result = t.Oneof.(*TypeName_TaggedstructTypeName).TaggedstructTypeName.MarshalA2L(indentLevel, indentString) + result = t.Oneof.(*TypeName_TaggedstructTypeName).TaggedstructTypeName.MarshalA2L(indentLevel, indentString, sort) case *TypeName_TaggedunionTypeName: - result = t.Oneof.(*TypeName_TaggedunionTypeName).TaggedunionTypeName.MarshalA2L(indentLevel, indentString) + result = t.Oneof.(*TypeName_TaggedunionTypeName).TaggedunionTypeName.MarshalA2L(indentLevel, indentString, sort) case *TypeName_EnumTypeName: - result = t.Oneof.(*TypeName_EnumTypeName).EnumTypeName.MarshalA2L(indentLevel, indentString) + result = t.Oneof.(*TypeName_EnumTypeName).EnumTypeName.MarshalA2L(indentLevel, indentString, sort) default: panic("not implemented yet...") } @@ -123,7 +123,7 @@ func (t *PredefinedTypeName) MapChildNodes(_ any) { panic("not implemented yet...") } -func (t *PredefinedTypeName) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *PredefinedTypeName) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return indentContent(t.Name, indentLevel, indentString) } @@ -131,7 +131,7 @@ func (t *TypeName_PredefinedTypeName) MapChildNodes(_ any) { panic("not implemented yet...") } -func (t *TypeName_PredefinedTypeName) MarshalA2L(_ int, _ string) (result string) { +func (t *TypeName_PredefinedTypeName) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return result } @@ -148,7 +148,7 @@ func (t *TypeName_EnumTypeName) MapChildNodes(node any) { } } -func (t *TypeName_EnumTypeName) MarshalA2L(_ int, _ string) (result string) { +func (t *TypeName_EnumTypeName) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return result } @@ -165,7 +165,7 @@ func (t *TypeName_StructTypeName) MapChildNodes(node any) { } } -func (t *TypeName_StructTypeName) MarshalA2L(_ int, _ string) (result string) { +func (t *TypeName_StructTypeName) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return result } @@ -191,7 +191,7 @@ func (t *TypeName_TaggedstructTypeName) MapChildNodes(node any) { } } -func (t *TypeName_TaggedstructTypeName) MarshalA2L(_ int, _ string) (result string) { +func (t *TypeName_TaggedstructTypeName) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return result } @@ -216,7 +216,7 @@ func (t *TypeName_TaggedunionTypeName) MapChildNodes(node any) { } } -func (t *TypeName_TaggedunionTypeName) MarshalA2L(_ int, _ string) (result string) { +func (t *TypeName_TaggedunionTypeName) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return result } @@ -231,7 +231,7 @@ func (t *BlockDefinition) MapChildNodes(node any) { } } -func (t *BlockDefinition) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *BlockDefinition) MarshalA2L(indentLevel int, indentString string, sort bool) (result string) { tmpResult := []string{fmt.Sprintf(indentContent("block ", indentLevel, indentString))} if t.Tag != nil { @@ -240,9 +240,9 @@ func (t *BlockDefinition) MarshalA2L(indentLevel int, indentString string) (resu switch t.Oneof.(type) { case *BlockDefinition_TypeName: - tmpResult = append(tmpResult, t.Oneof.(*BlockDefinition_TypeName).TypeName.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.Oneof.(*BlockDefinition_TypeName).TypeName.MarshalA2L(indentLevel+1, indentString, sort)) case *BlockDefinition_Member: - tmpResult = append(tmpResult, t.Oneof.(*BlockDefinition_Member).Member.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.Oneof.(*BlockDefinition_Member).Member.MarshalA2L(indentLevel+1, indentString, sort)) default: panic("not implemented yet...") } @@ -263,7 +263,7 @@ func (t *EnumTypeName) MapChildNodes(node any) { } } -func (t *EnumTypeName) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *EnumTypeName) MarshalA2L(indentLevel int, indentString string, sort bool) (result string) { tmpResult := []string{indentContent("enum ", indentLevel, indentString)} if t.Identifier != nil { @@ -274,7 +274,7 @@ func (t *EnumTypeName) MarshalA2L(indentLevel int, indentString string) (result tmpResult[0] += "{" for i, enumerator := range t.EnumeratorList { - tmpResult = append(tmpResult, indentContent(enumerator.MarshalA2L(indentLevel, indentString), indentLevel+1, indentString)) + tmpResult = append(tmpResult, indentContent(enumerator.MarshalA2L(indentLevel, indentString, sort), indentLevel+1, indentString)) if i < len(t.EnumeratorList)-1 { tmpResult[len(tmpResult)-1] += "," @@ -291,7 +291,7 @@ func (t *Enumerator) MapChildNodes(_ any) { panic("not implemented yet...") } -func (t *Enumerator) MarshalA2L(_ int, _ string) (result string) { +func (t *Enumerator) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { result = t.Keyword.A2LString() if t.Constant != nil { @@ -314,7 +314,7 @@ func (t *StructTypeName) MapChildNodes(node any) { } } -func (t *StructTypeName) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *StructTypeName) MarshalA2L(indentLevel int, indentString string, sort bool) (result string) { tmpResult := []string{indentContent("struct ", indentLevel, indentString)} if t.Identifier != nil { @@ -325,7 +325,7 @@ func (t *StructTypeName) MarshalA2L(indentLevel int, indentString string) (resul tmpResult[0] += "{" for _, structMember := range t.StructMemberList { - tmpResult = append(tmpResult, structMember.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, structMember.MarshalA2L(indentLevel+1, indentString, sort)) } tmpResult = append(tmpResult, indentContent("}", indentLevel, indentString)) @@ -343,8 +343,8 @@ func (t *StructMember) MapChildNodes(node any) { } } -func (t *StructMember) MarshalA2L(indentLevel int, indentString string) (result string) { - return fmt.Sprintf("%s;", t.Member.MarshalA2L(indentLevel, indentString)) +func (t *StructMember) MarshalA2L(indentLevel int, indentString string, sort bool) (result string) { + return fmt.Sprintf("%s;", t.Member.MarshalA2L(indentLevel, indentString, sort)) } func (t *Member) MapChildNodes(node any) { @@ -356,8 +356,8 @@ func (t *Member) MapChildNodes(node any) { } } -func (t *Member) MarshalA2L(indentLevel int, indentString string) (result string) { - result = t.TypeName.MarshalA2L(indentLevel, indentString) +func (t *Member) MarshalA2L(indentLevel int, indentString string, sort bool) (result string) { + result = t.TypeName.MarshalA2L(indentLevel, indentString, sort) if t.ArraySpecifier != nil { result += "[" @@ -387,7 +387,7 @@ func (t *TaggedstructTypeName) MapChildNodes(node any) { } } -func (t *TaggedstructTypeName) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *TaggedstructTypeName) MarshalA2L(indentLevel int, indentString string, sort bool) (result string) { tmpResult := []string{indentContent("taggedstruct ", indentLevel, indentString)} if t.Identifier != nil { @@ -398,7 +398,7 @@ func (t *TaggedstructTypeName) MarshalA2L(indentLevel int, indentString string) tmpResult[0] += "{" for _, taggedStructMember := range t.TaggedstructMemberList { - tmpResult = append(tmpResult, taggedStructMember.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, taggedStructMember.MarshalA2L(indentLevel+1, indentString, sort)) } tmpResult = append(tmpResult, indentContent("}", indentLevel, indentString)) @@ -425,7 +425,7 @@ func (t *TaggedstructMember) MapChildNodes(node any) { } } -func (t *TaggedstructMember) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *TaggedstructMember) MarshalA2L(indentLevel int, indentString string, sort bool) (result string) { tmpResult := make([]string, 0) if t.Star { @@ -434,9 +434,9 @@ func (t *TaggedstructMember) MarshalA2L(indentLevel int, indentString string) (r switch t.Oneof.(type) { case *TaggedstructMember_TaggedstructDefinition: - tmpResult = append(tmpResult, t.Oneof.(*TaggedstructMember_TaggedstructDefinition).TaggedstructDefinition.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.Oneof.(*TaggedstructMember_TaggedstructDefinition).TaggedstructDefinition.MarshalA2L(indentLevel+1, indentString, sort)) case *TaggedstructMember_BlockDefinition: - tmpResult = append(tmpResult, t.Oneof.(*TaggedstructMember_BlockDefinition).BlockDefinition.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.Oneof.(*TaggedstructMember_BlockDefinition).BlockDefinition.MarshalA2L(indentLevel+1, indentString, sort)) default: panic("not implemented yet...") } @@ -454,7 +454,7 @@ func (t *TaggedstructMember_TaggedstructDefinition) MapChildNodes(_ any) { panic("not implemented yet...") } -func (t *TaggedstructMember_TaggedstructDefinition) MarshalA2L(_ int, _ string) (result string) { +func (t *TaggedstructMember_TaggedstructDefinition) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return result } @@ -462,7 +462,7 @@ func (t *TaggedstructMember_BlockDefinition) MapChildNodes(_ any) { panic("not implemented yet...") } -func (t *TaggedstructMember_BlockDefinition) MarshalA2L(_ int, _ string) (result string) { +func (t *TaggedstructMember_BlockDefinition) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return result } @@ -475,7 +475,7 @@ func (t *TaggedstructDefinition) MapChildNodes(node any) { } } -func (t *TaggedstructDefinition) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *TaggedstructDefinition) MarshalA2L(indentLevel int, indentString string, sort bool) (result string) { tmpResult := []string{indentContent(fmt.Sprintf("%s", t.Tag.A2LString()), indentLevel, indentString)} if t.Star { @@ -483,7 +483,7 @@ func (t *TaggedstructDefinition) MarshalA2L(indentLevel int, indentString string } if t.Member != nil { // not part of the spec... - tmpResult = append(tmpResult, t.Member.MarshalA2L(indentLevel, indentString)) + tmpResult = append(tmpResult, t.Member.MarshalA2L(indentLevel, indentString, sort)) } if t.Star { @@ -518,7 +518,7 @@ func (t *TaggedunionTypeName) MapChildNodes(node any) { } } -func (t *TaggedunionTypeName) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *TaggedunionTypeName) MarshalA2L(indentLevel int, indentString string, sort bool) (result string) { tmpResult := []string{indentContent("taggedunion ", indentLevel, indentString)} if t.Identifier != nil { @@ -529,7 +529,7 @@ func (t *TaggedunionTypeName) MarshalA2L(indentLevel int, indentString string) ( tmpResult[0] += "{" for _, taggedunionMember := range t.TaggedunionMemberList { - tmpResult = append(tmpResult, taggedunionMember.MarshalA2L(indentLevel, indentString)) + tmpResult = append(tmpResult, taggedunionMember.MarshalA2L(indentLevel, indentString, sort)) } tmpResult = append(tmpResult, indentContent("}", indentLevel, indentString)) @@ -547,12 +547,12 @@ func (t *TaggedunionMember) MapChildNodes(node any) { } } -func (t *TaggedunionMember) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *TaggedunionMember) MarshalA2L(indentLevel int, indentString string, sort bool) (result string) { switch t.Oneof.(type) { case *TaggedunionMember_TagMember: - result = t.Oneof.(*TaggedunionMember_TagMember).TagMember.MarshalA2L(indentLevel+1, indentString) + result = t.Oneof.(*TaggedunionMember_TagMember).TagMember.MarshalA2L(indentLevel+1, indentString, sort) case *TaggedunionMember_BlockDefinition: - result = t.Oneof.(*TaggedunionMember_BlockDefinition).BlockDefinition.MarshalA2L(indentLevel+1, indentString) + result = t.Oneof.(*TaggedunionMember_BlockDefinition).BlockDefinition.MarshalA2L(indentLevel+1, indentString, sort) default: panic("not implemented yet...") } @@ -569,13 +569,13 @@ func (t *TagMember) MapChildNodes(node any) { } } -func (t *TagMember) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *TagMember) MarshalA2L(indentLevel int, indentString string, sort bool) (result string) { tmpResult := make([]string, 0) if t.Tag != nil { tmpResult = append(tmpResult, indentContent(t.Tag.A2LString(), indentLevel, indentString)) } - tmpResult = append(tmpResult, t.Member.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, t.Member.MarshalA2L(indentLevel+1, indentString, sort)) return strings.Join(tmpResult, "\n") } @@ -589,6 +589,6 @@ func (t *TaggedunionMember_TagMember) MapChildNodes(node any) { } } -func (t *TaggedunionMember_TagMember) MarshalA2L(_ int, _ string) (result string) { +func (t *TaggedunionMember_TagMember) MarshalA2L(indentLevel int, indentString string, _ bool) (result string) { return result } diff --git a/pkg/a2l/ifdataextension.go b/pkg/a2l/ifdataextension.go index 9b4f822..ccdf146 100644 --- a/pkg/a2l/ifdataextension.go +++ b/pkg/a2l/ifdataextension.go @@ -18,12 +18,12 @@ func (t *IfDataType) MapChildNodes(node any) { } } -func (t *IfDataType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *IfDataType) MarshalA2L(indentLevel int, indentString string, sort bool) (result string) { tmpResult := []string{indentContent(fmt.Sprintf("/begin IF_DATA %s", t.Name.A2LString()), indentLevel, indentString)} if t.Blob != nil { for _, blob := range t.Blob { - tmpResult = append(tmpResult, blob.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, blob.MarshalA2L(indentLevel+1, indentString, sort)) } } @@ -41,7 +41,7 @@ func (t *GenericParameterType) MapChildNodes(node any) { } } -func (t *GenericParameterType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *GenericParameterType) MarshalA2L(indentLevel int, indentString string, sort bool) (result string) { switch t.Oneof.(type) { case *GenericParameterType_Tag: result = indentContent(t.Oneof.(*GenericParameterType_Tag).Tag.A2LString(), indentLevel, indentString) @@ -52,7 +52,7 @@ func (t *GenericParameterType) MarshalA2L(indentLevel int, indentString string) case *GenericParameterType_Float: result = indentContent(t.Oneof.(*GenericParameterType_Float).Float.A2LString(), indentLevel, indentString) case *GenericParameterType_Generic: - result = t.Oneof.(*GenericParameterType_Generic).Generic.MarshalA2L(indentLevel, indentString) + result = t.Oneof.(*GenericParameterType_Generic).Generic.MarshalA2L(indentLevel, indentString, sort) case *GenericParameterType_Identifier: result = indentContent(t.Oneof.(*GenericParameterType_Identifier).Identifier.A2LString(), indentLevel, indentString) default: @@ -75,12 +75,12 @@ func (t *GenericNodeType) MapChildNodes(node any) { } } -func (t *GenericNodeType) MarshalA2L(indentLevel int, indentString string) (result string) { +func (t *GenericNodeType) MarshalA2L(indentLevel int, indentString string, sort bool) (result string) { tmpResult := []string{indentContent(fmt.Sprintf("/begin %s", t.Name.A2LString()), indentLevel, indentString)} if t.Element != nil { for _, element := range t.Element { - tmpResult = append(tmpResult, element.MarshalA2L(indentLevel+1, indentString)) + tmpResult = append(tmpResult, element.MarshalA2L(indentLevel+1, indentString, sort)) } } diff --git a/pkg/a2l/nodetype.go b/pkg/a2l/nodetype.go index efc4806..71a6268 100644 --- a/pkg/a2l/nodetype.go +++ b/pkg/a2l/nodetype.go @@ -2,7 +2,11 @@ package a2l type IIndentedNode interface { MapChildNodes(node any) - MarshalA2L(indentLevel int, indentString string) (result string) + MarshalA2L(indentLevel int, indentString string, sort bool) (result string) +} + +type SortableNode interface { + UniqueKey() string } func indentContent(content string, indentLevel int, indentString string) (result string) { diff --git a/protobuf/API.proto b/protobuf/API.proto index 1461de6..60bcfe8 100644 --- a/protobuf/API.proto +++ b/protobuf/API.proto @@ -30,6 +30,7 @@ message JSONFromTreeRequest { message A2LFromTreeRequest { RootNodeType tree = 1; optional uint32 indent = 2; + optional bool sorted = 3; } message TreeResponse { From 7c9e175df811538517f0e9683e56aa5f2219b64f Mon Sep 17 00:00:00 2001 From: lmbsog0 Date: Wed, 30 Aug 2023 09:32:20 +0200 Subject: [PATCH 3/3] sort all children of MODULE node --- pkg/a2l/a2lextension.go | 138 ++++++++++++++++++++++++++++++++++++---- 1 file changed, 124 insertions(+), 14 deletions(-) diff --git a/pkg/a2l/a2lextension.go b/pkg/a2l/a2lextension.go index d377ea2..67f9c09 100644 --- a/pkg/a2l/a2lextension.go +++ b/pkg/a2l/a2lextension.go @@ -272,6 +272,10 @@ func (t *AxisPtsRefType) MarshalA2L(indentLevel int, indentString string, _ bool return indentContent(fmt.Sprintf("AXIS_PTS_REF %s", t.AxisPoints.A2LString()), indentLevel, indentString) } +func (t *AxisPtsType) UniqueKey() string { + return t.Name.Value +} + func (t *AxisPtsType) MapChildNodes(node any) { switch node.(type) { case *DisplayIdentifierType: @@ -760,6 +764,10 @@ func (t *ComparisonQuantityType) MarshalA2L(indentLevel int, indentString string return indentContent(fmt.Sprintf("COMPARISON_QUANTITY %s", t.Name.A2LString()), indentLevel, indentString) } +func (t *CompuMethodType) UniqueKey() string { + return t.Name.Value +} + func (t *CompuMethodType) MapChildNodes(node any) { switch node.(type) { case *FormulaType: @@ -812,6 +820,10 @@ func (t *CompuTabRefType) MarshalA2L(indentLevel int, indentString string, _ boo return indentContent(fmt.Sprintf("COMPU_TAB_REF %s", t.ConversionTable.A2LString()), indentLevel, indentString) } +func (t *CompuTabType) UniqueKey() string { + return t.Name.Value +} + func (t *CompuTabType) MapChildNodes(node any) { switch node.(type) { case *DefaultValueType: @@ -844,6 +856,10 @@ func (t *CompuTabType) MarshalA2L(indentLevel int, indentString string, sort boo return strings.Join(tmpResult, "\n") } +func (t *CompuVTabRangeType) UniqueKey() string { + return t.Name.Value +} + func (t *CompuVTabRangeType) MapChildNodes(node any) { switch node.(type) { case *DefaultValueType: @@ -877,6 +893,10 @@ func (t *CompuVTabRangeType) MarshalA2L(indentLevel int, indentString string, so return strings.Join(tmpResult, "\n") } +func (t *CompuVTabType) UniqueKey() string { + return t.Name.Value +} + func (t *CompuVTabType) MapChildNodes(node any) { switch node.(type) { case *DefaultValueType: @@ -1283,6 +1303,10 @@ func (t *FunctionListType) MarshalA2L(indentLevel int, indentString string, _ bo return strings.Join(tmpResult, "\n") } +func (t *FunctionType) UniqueKey() string { + return t.Name.Value +} + func (t *FunctionType) MapChildNodes(node any) { switch node.(type) { case *AnnotationType: @@ -1362,6 +1386,10 @@ func (t *FunctionVersionType) MarshalA2L(indentLevel int, indentString string, _ return indentContent(fmt.Sprintf("FUNCTION_VERSION %s", t.VersionIdentifier.A2LString()), indentLevel, indentString) } +func (t *GroupType) UniqueKey() string { + return t.GroupName.Value +} + func (t *GroupType) MapChildNodes(node any) { switch node.(type) { case *AnnotationType: @@ -1550,6 +1578,10 @@ func (t *MaxRefreshType) MarshalA2L(indentLevel int, indentString string, _ bool return indentContent(fmt.Sprintf("MAX_REFRESH %s %s", t.ScalingUnit.A2LString(), t.Rate.A2LString()), indentLevel, indentString) } +func (t *MeasurementType) UniqueKey() string { + return t.Name.Value +} + func (t *MeasurementType) MapChildNodes(node any) { switch node.(type) { case *DataTypeType: @@ -2092,67 +2124,121 @@ func (t *ModuleType) MarshalA2L(indentLevel int, indentString string, sort bool) } if t.CHARACTERISTIC != nil { - characteristics := t.CHARACTERISTIC + items := t.CHARACTERISTIC if sort { - sortSortableList[*CharacteristicType](characteristics) + sortSortableList[*CharacteristicType](items) } - for _, characteristic := range characteristics { + for _, characteristic := range items { tmpResult = append(tmpResult, characteristic.MarshalA2L(indentLevel+1, indentString, sort)) } } if t.AXIS_PTS != nil { - for _, axisPts := range t.AXIS_PTS { + items := t.AXIS_PTS + + if sort { + sortSortableList[*AxisPtsType](items) + } + + for _, axisPts := range items { tmpResult = append(tmpResult, axisPts.MarshalA2L(indentLevel+1, indentString, sort)) } } if t.MEASUREMENT != nil { - for _, measurement := range t.MEASUREMENT { + items := t.MEASUREMENT + + if sort { + sortSortableList[*MeasurementType](items) + } + + for _, measurement := range items { tmpResult = append(tmpResult, measurement.MarshalA2L(indentLevel+1, indentString, sort)) } } if t.COMPU_METHOD != nil { - for _, compuMethod := range t.COMPU_METHOD { + items := t.COMPU_METHOD + + if sort { + sortSortableList[*CompuMethodType](items) + } + + for _, compuMethod := range items { tmpResult = append(tmpResult, compuMethod.MarshalA2L(indentLevel+1, indentString, sort)) } } if t.COMPU_TAB != nil { - for _, compuTab := range t.COMPU_TAB { + items := t.COMPU_TAB + + if sort { + sortSortableList[*CompuTabType](items) + } + + for _, compuTab := range items { tmpResult = append(tmpResult, compuTab.MarshalA2L(indentLevel+1, indentString, sort)) } } if t.COMPU_VTAB != nil { - for _, compuVTab := range t.COMPU_VTAB { + items := t.COMPU_VTAB + + if sort { + sortSortableList[*CompuVTabType](items) + } + + for _, compuVTab := range items { tmpResult = append(tmpResult, compuVTab.MarshalA2L(indentLevel+1, indentString, sort)) } } if t.COMPU_VTAB_RANGE != nil { - for _, compuVTabRange := range t.COMPU_VTAB_RANGE { + items := t.COMPU_VTAB_RANGE + + if sort { + sortSortableList[*CompuVTabRangeType](items) + } + + for _, compuVTabRange := range items { tmpResult = append(tmpResult, compuVTabRange.MarshalA2L(indentLevel+1, indentString, sort)) } } if t.FUNCTION != nil { - for _, function := range t.FUNCTION { + items := t.FUNCTION + + if sort { + sortSortableList[*FunctionType](items) + } + + for _, function := range items { tmpResult = append(tmpResult, function.MarshalA2L(indentLevel+1, indentString, sort)) } } if t.GROUP != nil { - for _, group := range t.GROUP { + items := t.GROUP + + if sort { + sortSortableList[*GroupType](items) + } + + for _, group := range items { tmpResult = append(tmpResult, group.MarshalA2L(indentLevel+1, indentString, sort)) } } if t.RECORD_LAYOUT != nil { - for _, recordLayout := range t.RECORD_LAYOUT { + items := t.RECORD_LAYOUT + + if sort { + sortSortableList[*RecordLayoutType](items) + } + + for _, recordLayout := range items { tmpResult = append(tmpResult, recordLayout.MarshalA2L(indentLevel+1, indentString, sort)) } } @@ -2166,13 +2252,25 @@ func (t *ModuleType) MarshalA2L(indentLevel int, indentString string, sort bool) } if t.USER_RIGHTS != nil { - for _, userRights := range t.USER_RIGHTS { + items := t.USER_RIGHTS + + if sort { + sortSortableList[*UserRightsType](items) + } + + for _, userRights := range items { tmpResult = append(tmpResult, userRights.MarshalA2L(indentLevel+1, indentString, sort)) } } if t.UNIT != nil { - for _, unit := range t.UNIT { + items := t.UNIT + + if sort { + sortSortableList[*UnitType](items) + } + + for _, unit := range items { tmpResult = append(tmpResult, unit.MarshalA2L(indentLevel+1, indentString, sort)) } } @@ -2361,6 +2459,10 @@ func (t *ReadWriteType) MarshalA2L(indentLevel int, indentString string, _ bool) return indentContent("READ_WRITE", indentLevel, indentString) } +func (t *RecordLayoutType) UniqueKey() string { + return t.Name.Value +} + func (t *RecordLayoutType) MapChildNodes(node any) { switch node.(type) { case *FncValuesType: @@ -2912,6 +3014,10 @@ func (t *UnitConversionType) MarshalA2L(indentLevel int, indentString string, _ return indentContent(fmt.Sprintf("UNIT_CONVERSION %s %s", t.Gradient.A2LString(), t.Offset.A2LString()), indentLevel, indentString) } +func (t *UnitType) UniqueKey() string { + return t.Name.Value +} + func (t *UnitType) MapChildNodes(node any) { switch node.(type) { case *SiExponentsType: @@ -2949,6 +3055,10 @@ func (t *UnitType) MarshalA2L(indentLevel int, indentString string, sort bool) ( return strings.Join(tmpResult, "\n") } +func (t *UserRightsType) UniqueKey() string { + return t.UserLevelId.Value +} + func (t *UserRightsType) MapChildNodes(node any) { switch node.(type) { case *RefGroupType: