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