refactor: move utility functions to dedicated util package and adjust references

This commit is contained in:
adman
2026-05-06 16:51:45 +02:00
parent 12005df68b
commit 0600315e69
5 changed files with 18 additions and 18 deletions
+9 -9
View File
@@ -198,7 +198,7 @@ func FixPointerReceivers(e ast.Expr) (td ast.Expr, ret ast.Expr) {
func (g *Generator) GenerateTypes(prefix string, types Types) (err error) {
g.CurrentlyGeneratingTypes = types
g.CurrentlyGeneratingTypesPrefix = prefix
for _, k := range OrderedKeys(types.Types) {
for _, k := range util.OrderedKeys(types.Types) {
v := types.Types[k]
g.Depth = 0
e, err2 := g.VisitType(v)
@@ -267,11 +267,11 @@ func (g *Generator) GenerateProtocol(protocol Protocol, version string) (err err
}
// Move common packet to their own areas to make packets more identifiable
for _, k := range OrderedKeys(protocol.Types.Types) {
for _, k := range util.OrderedKeys(protocol.Types.Types) {
v := protocol.Types.Types[k]
if strings.Contains(k, "packet") {
delete(protocol.Types.Types, k)
for _, prefix := range OrderedKeys(prefixTypeMap) {
for _, prefix := range util.OrderedKeys(prefixTypeMap) {
types := prefixTypeMap[prefix]
if prefix == "" {
continue
@@ -281,18 +281,18 @@ func (g *Generator) GenerateProtocol(protocol Protocol, version string) (err err
}
}
for _, prefix := range OrderedKeys(prefixTypeMap) {
for _, prefix := range util.OrderedKeys(prefixTypeMap) {
types := prefixTypeMap[prefix]
for _, k := range OrderedKeys(types.Types.Types) {
for _, k := range util.OrderedKeys(types.Types.Types) {
typeData := types.Types.Types[k]
if k != "packet" {
continue
}
packetIds := typeData.([]any)[1].([]any)[0].(map[string]any)["type"].([]any)[1].(map[string]any)["mappings"].(map[string]any)
packetIdsStrings := AssertAndConvertMapValues[string](packetIds)
packetIdsRev := ReverseMap(packetIdsStrings)
packetIdsStrings := util.AssertAndConvertMapValues[string](packetIds)
packetIdsRev := util.ReverseMap(packetIdsStrings)
v := typeData.([]any)[1].([]any)[1].(map[string]any)["type"].([]any)[1].(map[string]any)["fields"].(map[string]any)
for _, k2 := range OrderedKeys(v) {
for _, k2 := range util.OrderedKeys(v) {
v2 := v[k2].(string)
typeName := prefix + util.CamelCase(v2)
g.packetInfos = append(g.packetInfos, PacketInfo{
@@ -309,7 +309,7 @@ func (g *Generator) GenerateProtocol(protocol Protocol, version string) (err err
}
}
for _, prefix := range OrderedKeys(prefixTypeMap) {
for _, prefix := range util.OrderedKeys(prefixTypeMap) {
types := prefixTypeMap[prefix]
err = g.GenerateTypes(prefix, types.Types)
if err != nil {
+4 -4
View File
@@ -21,7 +21,7 @@ func (g *Generator) ParseCompareTo(compareTo string) (e ast.Expr, cet CaseExprTy
}
parts = parts[downPrefixCount:]
startingPoint := g.ContainerStack[len(g.ContainerStack)-downPrefixCount-1]
e, cet, err = g.VisitCompareTo(parts, startingPoint.VarToSet, CombineNamAndData("container", startingPoint.Data))
e, cet, err = g.VisitCompareTo(parts, startingPoint.VarToSet, util.CombineNamAndData("container", startingPoint.Data))
// return ParseCompareToLegacy(compareTo, varToSet)
return
}
@@ -46,7 +46,7 @@ func ContainerCompareTo(g *Generator, parts []string, inExpr ast.Expr, dataRaw a
return
}
name, parts, ok := PopFront(parts)
name, parts, ok := util.PopFront(parts)
if !ok {
err = errors.New("expected name part")
return
@@ -70,7 +70,7 @@ func BitfieldCompareTo(_ *Generator, parts []string, inExpr ast.Expr, dataRaw an
if err != nil {
return
}
fieldName, parts, found := PopFront(parts)
fieldName, parts, found := util.PopFront(parts)
if !found {
err = errors.New("expected name part")
return
@@ -98,7 +98,7 @@ func BitflagsCompareTo(_ *Generator, parts []string, inExpr ast.Expr, dataRaw an
if err != nil {
return
}
name, parts, ok := PopFront(parts)
name, parts, ok := util.PopFront(parts)
if !ok {
err = errors.New("expected name part")
return
+2 -2
View File
@@ -249,7 +249,7 @@ func SwitchDecoder(g *Generator, varToSet ast.Expr, dataRaw any, name string) (s
if err != nil {
return
}
for _, fName := range OrderedKeys(data.Fields) {
for _, fName := range util.OrderedKeys(data.Fields) {
fType := data.Fields[fName]
e := MultiTypeFix(fName, &cet)
if e == nil {
@@ -324,7 +324,7 @@ func MapperDecoder(g *Generator, varToSet ast.Expr, dataRaw any, name string) (s
mName := name + "Map"
expressions := Exprs()
for _, k := range OrderedKeys(data.Mappings) {
for _, k := range util.OrderedKeys(data.Mappings) {
v := data.Mappings[k]
expressions = append(expressions, KeyValueExpr(NumLitStr(k), StrLit(v)))
}
+2 -2
View File
@@ -201,7 +201,7 @@ func SwitchEncoder(g *Generator, varToSet ast.Expr, dataRaw any, name string) (s
if err != nil {
return
}
for _, fName := range OrderedKeys(data.Fields) {
for _, fName := range util.OrderedKeys(data.Fields) {
fType := data.Fields[fName]
e := MultiTypeFix(fName, &cet)
if e == nil {
@@ -275,7 +275,7 @@ func MapperEncoder(g *Generator, varToSet ast.Expr, dataRaw any, name string) (s
mName := name + "ReverseMap"
exprs := Exprs()
for _, k := range OrderedKeys(data.Mappings) {
for _, k := range util.OrderedKeys(data.Mappings) {
v := data.Mappings[k]
exprs = append(exprs, KeyValueExpr(StrLit(v), NumLitStr(k)))
}
-42
View File
@@ -1,42 +0,0 @@
package main
import (
"cmp"
"maps"
"slices"
)
func OrderedKeys[Map map[K]V, K cmp.Ordered, V any](m Map) []K {
keysIter := maps.Keys(m)
keys := slices.Collect(keysIter)
slices.Sort(keys)
return keys
}
func AssertAndConvertMapValues[T any, M map[K]any, K cmp.Ordered](m M) map[K]T {
ret := map[K]T{}
for k, v := range m {
ret[k] = v.(T)
}
return ret
}
func ReverseMap[M map[K]V, K cmp.Ordered, V cmp.Ordered](m M) map[V]K {
ret := map[V]K{}
for k, v := range m {
ret[v] = k
}
return ret
}
func PopFront[T any](s []T) (T, []T, bool) {
if len(s) == 0 {
var zero T
return zero, s, false
}
return s[0], s[1:], true
}
func CombineNamAndData(name string, data any) []any {
return []any{name, data}
}