Files
mautrix-telegram/pkg/gotd/gen/make_vector.go
T
2025-06-27 20:03:37 -07:00

57 lines
1.1 KiB
Go

package gen
import (
"strings"
"github.com/gotd/tl"
)
func (g *Generator) makeVector(className string) (class classBinding, err error) {
class, ok := g.classes[className]
if ok {
return class, nil
}
elementName := strings.TrimPrefix(className[:len(className)-1], "Vector<")
goElementName := g.classes[elementName].Name
if goElementName == "" {
goElementName = elementName
}
f, err := g.makeField(tl.Parameter{
Name: "Elems",
Type: tl.Type{
Name: "Vector",
GenericArg: &tl.Type{
Name: elementName,
},
},
}, nil)
if err != nil {
return class, err
}
f.Comment = []string{"Elements of " + className}
goName := strings.Title(goElementName) + "Vector"
class = classBinding{
Name: goName,
Func: f.Type,
Singular: true,
Vector: true,
}
g.classes[className] = class
g.structs = append(g.structs, structDef{
Name: goName,
Receiver: "vec",
BufArg: "b",
RawType: className,
Vector: true,
Fields: []fieldDef{f},
BaseName: goName,
Comment: goName + " is a box for " + className,
})
return class, nil
}