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  }