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  }