github.com/ipld/go-ipld-prime@v0.21.0/schema/gen/go/mixins/listGenMixin.go (about) 1 package mixins 2 3 import ( 4 "io" 5 6 "github.com/ipld/go-ipld-prime/datamodel" 7 ) 8 9 type ListTraits struct { 10 PkgName string 11 TypeName string // see doc in kindTraitsGenerator 12 TypeSymbol string // see doc in kindTraitsGenerator 13 } 14 15 func (ListTraits) Kind() datamodel.Kind { 16 return datamodel.Kind_List 17 } 18 func (g ListTraits) EmitNodeMethodKind(w io.Writer) { 19 doTemplate(` 20 func ({{ .TypeSymbol }}) Kind() datamodel.Kind { 21 return datamodel.Kind_List 22 } 23 `, w, g) 24 } 25 func (g ListTraits) EmitNodeMethodLookupByString(w io.Writer) { 26 kindTraitsGenerator{g.PkgName, g.TypeName, g.TypeSymbol, datamodel.Kind_List}.emitNodeMethodLookupByString(w) 27 } 28 func (g ListTraits) EmitNodeMethodLookupBySegment(w io.Writer) { 29 doTemplate(` 30 func (n {{ .TypeSymbol }}) LookupBySegment(seg datamodel.PathSegment) (datamodel.Node, error) { 31 i, err := seg.Index() 32 if err != nil { 33 return nil, datamodel.ErrInvalidSegmentForList{TypeName: "{{ .PkgName }}.{{ .TypeName }}", TroubleSegment: seg, Reason: err} 34 } 35 return n.LookupByIndex(i) 36 } 37 `, w, g) 38 } 39 func (g ListTraits) EmitNodeMethodMapIterator(w io.Writer) { 40 kindTraitsGenerator{g.PkgName, g.TypeName, g.TypeSymbol, datamodel.Kind_List}.emitNodeMethodMapIterator(w) 41 } 42 func (g ListTraits) EmitNodeMethodIsAbsent(w io.Writer) { 43 kindTraitsGenerator{g.PkgName, g.TypeName, g.TypeSymbol, datamodel.Kind_List}.emitNodeMethodIsAbsent(w) 44 } 45 func (g ListTraits) EmitNodeMethodIsNull(w io.Writer) { 46 kindTraitsGenerator{g.PkgName, g.TypeName, g.TypeSymbol, datamodel.Kind_List}.emitNodeMethodIsNull(w) 47 } 48 func (g ListTraits) EmitNodeMethodAsBool(w io.Writer) { 49 kindTraitsGenerator{g.PkgName, g.TypeName, g.TypeSymbol, datamodel.Kind_List}.emitNodeMethodAsBool(w) 50 } 51 func (g ListTraits) EmitNodeMethodAsInt(w io.Writer) { 52 kindTraitsGenerator{g.PkgName, g.TypeName, g.TypeSymbol, datamodel.Kind_List}.emitNodeMethodAsInt(w) 53 } 54 func (g ListTraits) EmitNodeMethodAsFloat(w io.Writer) { 55 kindTraitsGenerator{g.PkgName, g.TypeName, g.TypeSymbol, datamodel.Kind_List}.emitNodeMethodAsFloat(w) 56 } 57 func (g ListTraits) EmitNodeMethodAsString(w io.Writer) { 58 kindTraitsGenerator{g.PkgName, g.TypeName, g.TypeSymbol, datamodel.Kind_List}.emitNodeMethodAsString(w) 59 } 60 func (g ListTraits) EmitNodeMethodAsBytes(w io.Writer) { 61 kindTraitsGenerator{g.PkgName, g.TypeName, g.TypeSymbol, datamodel.Kind_List}.emitNodeMethodAsBytes(w) 62 } 63 func (g ListTraits) EmitNodeMethodAsLink(w io.Writer) { 64 kindTraitsGenerator{g.PkgName, g.TypeName, g.TypeSymbol, datamodel.Kind_List}.emitNodeMethodAsLink(w) 65 } 66 67 type ListAssemblerTraits struct { 68 PkgName string 69 TypeName string // see doc in kindAssemblerTraitsGenerator 70 AppliedPrefix string // see doc in kindAssemblerTraitsGenerator 71 } 72 73 func (ListAssemblerTraits) Kind() datamodel.Kind { 74 return datamodel.Kind_List 75 } 76 func (g ListAssemblerTraits) EmitNodeAssemblerMethodBeginMap(w io.Writer) { 77 kindAssemblerTraitsGenerator{g.PkgName, g.TypeName, g.AppliedPrefix, datamodel.Kind_List}.emitNodeAssemblerMethodBeginMap(w) 78 } 79 func (g ListAssemblerTraits) EmitNodeAssemblerMethodAssignNull(w io.Writer) { 80 kindAssemblerTraitsGenerator{g.PkgName, g.TypeName, g.AppliedPrefix, datamodel.Kind_List}.emitNodeAssemblerMethodAssignNull(w) 81 } 82 func (g ListAssemblerTraits) EmitNodeAssemblerMethodAssignBool(w io.Writer) { 83 kindAssemblerTraitsGenerator{g.PkgName, g.TypeName, g.AppliedPrefix, datamodel.Kind_List}.emitNodeAssemblerMethodAssignBool(w) 84 } 85 func (g ListAssemblerTraits) EmitNodeAssemblerMethodAssignInt(w io.Writer) { 86 kindAssemblerTraitsGenerator{g.PkgName, g.TypeName, g.AppliedPrefix, datamodel.Kind_List}.emitNodeAssemblerMethodAssignInt(w) 87 } 88 func (g ListAssemblerTraits) EmitNodeAssemblerMethodAssignFloat(w io.Writer) { 89 kindAssemblerTraitsGenerator{g.PkgName, g.TypeName, g.AppliedPrefix, datamodel.Kind_List}.emitNodeAssemblerMethodAssignFloat(w) 90 } 91 func (g ListAssemblerTraits) EmitNodeAssemblerMethodAssignString(w io.Writer) { 92 kindAssemblerTraitsGenerator{g.PkgName, g.TypeName, g.AppliedPrefix, datamodel.Kind_List}.emitNodeAssemblerMethodAssignString(w) 93 } 94 func (g ListAssemblerTraits) EmitNodeAssemblerMethodAssignBytes(w io.Writer) { 95 kindAssemblerTraitsGenerator{g.PkgName, g.TypeName, g.AppliedPrefix, datamodel.Kind_List}.emitNodeAssemblerMethodAssignBytes(w) 96 } 97 func (g ListAssemblerTraits) EmitNodeAssemblerMethodAssignLink(w io.Writer) { 98 kindAssemblerTraitsGenerator{g.PkgName, g.TypeName, g.AppliedPrefix, datamodel.Kind_List}.emitNodeAssemblerMethodAssignLink(w) 99 } 100 func (g ListAssemblerTraits) EmitNodeAssemblerMethodPrototype(w io.Writer) { 101 kindAssemblerTraitsGenerator{g.PkgName, g.TypeName, g.AppliedPrefix, datamodel.Kind_List}.emitNodeAssemblerMethodPrototype(w) 102 }