github.com/ipld/go-ipld-prime@v0.21.0/node/basicnode/link.go (about) 1 package basicnode 2 3 import ( 4 "github.com/ipld/go-ipld-prime/datamodel" 5 "github.com/ipld/go-ipld-prime/node/mixins" 6 ) 7 8 var ( 9 _ datamodel.Node = &plainLink{} 10 _ datamodel.NodePrototype = Prototype__Link{} 11 _ datamodel.NodeBuilder = &plainLink__Builder{} 12 _ datamodel.NodeAssembler = &plainLink__Assembler{} 13 ) 14 15 func NewLink(value datamodel.Link) datamodel.Node { 16 return &plainLink{value} 17 } 18 19 // plainLink is a simple box around a Link that complies with datamodel.Node. 20 type plainLink struct { 21 x datamodel.Link 22 } 23 24 // -- Node interface methods --> 25 26 func (plainLink) Kind() datamodel.Kind { 27 return datamodel.Kind_Link 28 } 29 func (plainLink) LookupByString(string) (datamodel.Node, error) { 30 return mixins.Link{TypeName: "link"}.LookupByString("") 31 } 32 func (plainLink) LookupByNode(key datamodel.Node) (datamodel.Node, error) { 33 return mixins.Link{TypeName: "link"}.LookupByNode(nil) 34 } 35 func (plainLink) LookupByIndex(idx int64) (datamodel.Node, error) { 36 return mixins.Link{TypeName: "link"}.LookupByIndex(0) 37 } 38 func (plainLink) LookupBySegment(seg datamodel.PathSegment) (datamodel.Node, error) { 39 return mixins.Link{TypeName: "link"}.LookupBySegment(seg) 40 } 41 func (plainLink) MapIterator() datamodel.MapIterator { 42 return nil 43 } 44 func (plainLink) ListIterator() datamodel.ListIterator { 45 return nil 46 } 47 func (plainLink) Length() int64 { 48 return -1 49 } 50 func (plainLink) IsAbsent() bool { 51 return false 52 } 53 func (plainLink) IsNull() bool { 54 return false 55 } 56 func (plainLink) AsBool() (bool, error) { 57 return mixins.Link{TypeName: "link"}.AsBool() 58 } 59 func (plainLink) AsInt() (int64, error) { 60 return mixins.Link{TypeName: "link"}.AsInt() 61 } 62 func (plainLink) AsFloat() (float64, error) { 63 return mixins.Link{TypeName: "link"}.AsFloat() 64 } 65 func (plainLink) AsString() (string, error) { 66 return mixins.Link{TypeName: "link"}.AsString() 67 } 68 func (plainLink) AsBytes() ([]byte, error) { 69 return mixins.Link{TypeName: "link"}.AsBytes() 70 } 71 func (n *plainLink) AsLink() (datamodel.Link, error) { 72 return n.x, nil 73 } 74 func (plainLink) Prototype() datamodel.NodePrototype { 75 return Prototype__Link{} 76 } 77 78 // -- NodePrototype --> 79 80 type Prototype__Link struct{} 81 82 func (Prototype__Link) NewBuilder() datamodel.NodeBuilder { 83 var w plainLink 84 return &plainLink__Builder{plainLink__Assembler{w: &w}} 85 } 86 87 // -- NodeBuilder --> 88 89 type plainLink__Builder struct { 90 plainLink__Assembler 91 } 92 93 func (nb *plainLink__Builder) Build() datamodel.Node { 94 return nb.w 95 } 96 func (nb *plainLink__Builder) Reset() { 97 var w plainLink 98 *nb = plainLink__Builder{plainLink__Assembler{w: &w}} 99 } 100 101 // -- NodeAssembler --> 102 103 type plainLink__Assembler struct { 104 w *plainLink 105 } 106 107 func (plainLink__Assembler) BeginMap(sizeHint int64) (datamodel.MapAssembler, error) { 108 return mixins.LinkAssembler{TypeName: "link"}.BeginMap(0) 109 } 110 func (plainLink__Assembler) BeginList(sizeHint int64) (datamodel.ListAssembler, error) { 111 return mixins.LinkAssembler{TypeName: "link"}.BeginList(0) 112 } 113 func (plainLink__Assembler) AssignNull() error { 114 return mixins.LinkAssembler{TypeName: "link"}.AssignNull() 115 } 116 func (plainLink__Assembler) AssignBool(bool) error { 117 return mixins.LinkAssembler{TypeName: "link"}.AssignBool(false) 118 } 119 func (plainLink__Assembler) AssignInt(int64) error { 120 return mixins.LinkAssembler{TypeName: "link"}.AssignInt(0) 121 } 122 func (plainLink__Assembler) AssignFloat(float64) error { 123 return mixins.LinkAssembler{TypeName: "link"}.AssignFloat(0) 124 } 125 func (plainLink__Assembler) AssignString(string) error { 126 return mixins.LinkAssembler{TypeName: "link"}.AssignString("") 127 } 128 func (plainLink__Assembler) AssignBytes([]byte) error { 129 return mixins.LinkAssembler{TypeName: "link"}.AssignBytes(nil) 130 } 131 func (na *plainLink__Assembler) AssignLink(v datamodel.Link) error { 132 na.w.x = v 133 return nil 134 } 135 func (na *plainLink__Assembler) AssignNode(v datamodel.Node) error { 136 if v2, err := v.AsLink(); err != nil { 137 return err 138 } else { 139 na.w.x = v2 140 return nil 141 } 142 } 143 func (plainLink__Assembler) Prototype() datamodel.NodePrototype { 144 return Prototype__Link{} 145 }