github.com/ipld/go-ipld-prime@v0.21.0/node/gendemo/ipldsch_satisfaction.go (about) 1 package gendemo 2 3 // Code generated by go-ipld-prime gengo. DO NOT EDIT. 4 5 import ( 6 "github.com/ipld/go-ipld-prime/datamodel" 7 "github.com/ipld/go-ipld-prime/node/mixins" 8 "github.com/ipld/go-ipld-prime/schema" 9 ) 10 11 func (n Bar) Bool() bool { 12 return n.x 13 } 14 func (_Bar__Prototype) FromBool(v bool) (Bar, error) { 15 n := _Bar{v} 16 return &n, nil 17 } 18 19 type _Bar__Maybe struct { 20 m schema.Maybe 21 v _Bar 22 } 23 type MaybeBar = *_Bar__Maybe 24 25 func (m MaybeBar) IsNull() bool { 26 return m.m == schema.Maybe_Null 27 } 28 func (m MaybeBar) IsAbsent() bool { 29 return m.m == schema.Maybe_Absent 30 } 31 func (m MaybeBar) Exists() bool { 32 return m.m == schema.Maybe_Value 33 } 34 func (m MaybeBar) AsNode() datamodel.Node { 35 switch m.m { 36 case schema.Maybe_Absent: 37 return datamodel.Absent 38 case schema.Maybe_Null: 39 return datamodel.Null 40 case schema.Maybe_Value: 41 return &m.v 42 default: 43 panic("unreachable") 44 } 45 } 46 func (m MaybeBar) Must() Bar { 47 if !m.Exists() { 48 panic("unbox of a maybe rejected") 49 } 50 return &m.v 51 } 52 53 var _ datamodel.Node = (Bar)(&_Bar{}) 54 var _ schema.TypedNode = (Bar)(&_Bar{}) 55 56 func (Bar) Kind() datamodel.Kind { 57 return datamodel.Kind_Bool 58 } 59 func (Bar) LookupByString(string) (datamodel.Node, error) { 60 return mixins.Bool{TypeName: "gendemo.Bar"}.LookupByString("") 61 } 62 func (Bar) LookupByNode(datamodel.Node) (datamodel.Node, error) { 63 return mixins.Bool{TypeName: "gendemo.Bar"}.LookupByNode(nil) 64 } 65 func (Bar) LookupByIndex(idx int64) (datamodel.Node, error) { 66 return mixins.Bool{TypeName: "gendemo.Bar"}.LookupByIndex(0) 67 } 68 func (Bar) LookupBySegment(seg datamodel.PathSegment) (datamodel.Node, error) { 69 return mixins.Bool{TypeName: "gendemo.Bar"}.LookupBySegment(seg) 70 } 71 func (Bar) MapIterator() datamodel.MapIterator { 72 return nil 73 } 74 func (Bar) ListIterator() datamodel.ListIterator { 75 return nil 76 } 77 func (Bar) Length() int64 { 78 return -1 79 } 80 func (Bar) IsAbsent() bool { 81 return false 82 } 83 func (Bar) IsNull() bool { 84 return false 85 } 86 func (n Bar) AsBool() (bool, error) { 87 return n.x, nil 88 } 89 func (Bar) AsInt() (int64, error) { 90 return mixins.Bool{TypeName: "gendemo.Bar"}.AsInt() 91 } 92 func (Bar) AsFloat() (float64, error) { 93 return mixins.Bool{TypeName: "gendemo.Bar"}.AsFloat() 94 } 95 func (Bar) AsString() (string, error) { 96 return mixins.Bool{TypeName: "gendemo.Bar"}.AsString() 97 } 98 func (Bar) AsBytes() ([]byte, error) { 99 return mixins.Bool{TypeName: "gendemo.Bar"}.AsBytes() 100 } 101 func (Bar) AsLink() (datamodel.Link, error) { 102 return mixins.Bool{TypeName: "gendemo.Bar"}.AsLink() 103 } 104 func (Bar) Prototype() datamodel.NodePrototype { 105 return _Bar__Prototype{} 106 } 107 108 type _Bar__Prototype struct{} 109 110 func (_Bar__Prototype) NewBuilder() datamodel.NodeBuilder { 111 var nb _Bar__Builder 112 nb.Reset() 113 return &nb 114 } 115 116 type _Bar__Builder struct { 117 _Bar__Assembler 118 } 119 120 func (nb *_Bar__Builder) Build() datamodel.Node { 121 if *nb.m != schema.Maybe_Value { 122 panic("invalid state: cannot call Build on an assembler that's not finished") 123 } 124 return nb.w 125 } 126 func (nb *_Bar__Builder) Reset() { 127 var w _Bar 128 var m schema.Maybe 129 *nb = _Bar__Builder{_Bar__Assembler{w: &w, m: &m}} 130 } 131 132 type _Bar__Assembler struct { 133 w *_Bar 134 m *schema.Maybe 135 } 136 137 func (na *_Bar__Assembler) reset() {} 138 func (_Bar__Assembler) BeginMap(sizeHint int64) (datamodel.MapAssembler, error) { 139 return mixins.BoolAssembler{TypeName: "gendemo.Bar"}.BeginMap(0) 140 } 141 func (_Bar__Assembler) BeginList(sizeHint int64) (datamodel.ListAssembler, error) { 142 return mixins.BoolAssembler{TypeName: "gendemo.Bar"}.BeginList(0) 143 } 144 func (na *_Bar__Assembler) AssignNull() error { 145 switch *na.m { 146 case allowNull: 147 *na.m = schema.Maybe_Null 148 return nil 149 case schema.Maybe_Absent: 150 return mixins.BoolAssembler{TypeName: "gendemo.Bar"}.AssignNull() 151 case schema.Maybe_Value, schema.Maybe_Null: 152 panic("invalid state: cannot assign into assembler that's already finished") 153 } 154 panic("unreachable") 155 } 156 func (na *_Bar__Assembler) AssignBool(v bool) error { 157 switch *na.m { 158 case schema.Maybe_Value, schema.Maybe_Null: 159 panic("invalid state: cannot assign into assembler that's already finished") 160 } 161 na.w.x = v 162 *na.m = schema.Maybe_Value 163 return nil 164 } 165 func (_Bar__Assembler) AssignInt(int64) error { 166 return mixins.BoolAssembler{TypeName: "gendemo.Bar"}.AssignInt(0) 167 } 168 func (_Bar__Assembler) AssignFloat(float64) error { 169 return mixins.BoolAssembler{TypeName: "gendemo.Bar"}.AssignFloat(0) 170 } 171 func (_Bar__Assembler) AssignString(string) error { 172 return mixins.BoolAssembler{TypeName: "gendemo.Bar"}.AssignString("") 173 } 174 func (_Bar__Assembler) AssignBytes([]byte) error { 175 return mixins.BoolAssembler{TypeName: "gendemo.Bar"}.AssignBytes(nil) 176 } 177 func (_Bar__Assembler) AssignLink(datamodel.Link) error { 178 return mixins.BoolAssembler{TypeName: "gendemo.Bar"}.AssignLink(nil) 179 } 180 func (na *_Bar__Assembler) AssignNode(v datamodel.Node) error { 181 if v.IsNull() { 182 return na.AssignNull() 183 } 184 if v2, ok := v.(*_Bar); ok { 185 switch *na.m { 186 case schema.Maybe_Value, schema.Maybe_Null: 187 panic("invalid state: cannot assign into assembler that's already finished") 188 } 189 *na.w = *v2 190 *na.m = schema.Maybe_Value 191 return nil 192 } 193 if v2, err := v.AsBool(); err != nil { 194 return err 195 } else { 196 return na.AssignBool(v2) 197 } 198 } 199 func (_Bar__Assembler) Prototype() datamodel.NodePrototype { 200 return _Bar__Prototype{} 201 } 202 func (Bar) Type() schema.Type { 203 return nil /*TODO:typelit*/ 204 } 205 func (n Bar) Representation() datamodel.Node { 206 return (*_Bar__Repr)(n) 207 } 208 209 type _Bar__Repr = _Bar 210 211 var _ datamodel.Node = &_Bar__Repr{} 212 213 type _Bar__ReprPrototype = _Bar__Prototype 214 type _Bar__ReprAssembler = _Bar__Assembler 215 216 func (n Baz) String() string { 217 return n.x 218 } 219 func (_Baz__Prototype) fromString(w *_Baz, v string) error { 220 *w = _Baz{v} 221 return nil 222 } 223 func (_Baz__Prototype) FromString(v string) (Baz, error) { 224 n := _Baz{v} 225 return &n, nil 226 } 227 228 type _Baz__Maybe struct { 229 m schema.Maybe 230 v _Baz 231 } 232 type MaybeBaz = *_Baz__Maybe 233 234 func (m MaybeBaz) IsNull() bool { 235 return m.m == schema.Maybe_Null 236 } 237 func (m MaybeBaz) IsAbsent() bool { 238 return m.m == schema.Maybe_Absent 239 } 240 func (m MaybeBaz) Exists() bool { 241 return m.m == schema.Maybe_Value 242 } 243 func (m MaybeBaz) AsNode() datamodel.Node { 244 switch m.m { 245 case schema.Maybe_Absent: 246 return datamodel.Absent 247 case schema.Maybe_Null: 248 return datamodel.Null 249 case schema.Maybe_Value: 250 return &m.v 251 default: 252 panic("unreachable") 253 } 254 } 255 func (m MaybeBaz) Must() Baz { 256 if !m.Exists() { 257 panic("unbox of a maybe rejected") 258 } 259 return &m.v 260 } 261 262 var _ datamodel.Node = (Baz)(&_Baz{}) 263 var _ schema.TypedNode = (Baz)(&_Baz{}) 264 265 func (Baz) Kind() datamodel.Kind { 266 return datamodel.Kind_String 267 } 268 func (Baz) LookupByString(string) (datamodel.Node, error) { 269 return mixins.String{TypeName: "gendemo.Baz"}.LookupByString("") 270 } 271 func (Baz) LookupByNode(datamodel.Node) (datamodel.Node, error) { 272 return mixins.String{TypeName: "gendemo.Baz"}.LookupByNode(nil) 273 } 274 func (Baz) LookupByIndex(idx int64) (datamodel.Node, error) { 275 return mixins.String{TypeName: "gendemo.Baz"}.LookupByIndex(0) 276 } 277 func (Baz) LookupBySegment(seg datamodel.PathSegment) (datamodel.Node, error) { 278 return mixins.String{TypeName: "gendemo.Baz"}.LookupBySegment(seg) 279 } 280 func (Baz) MapIterator() datamodel.MapIterator { 281 return nil 282 } 283 func (Baz) ListIterator() datamodel.ListIterator { 284 return nil 285 } 286 func (Baz) Length() int64 { 287 return -1 288 } 289 func (Baz) IsAbsent() bool { 290 return false 291 } 292 func (Baz) IsNull() bool { 293 return false 294 } 295 func (Baz) AsBool() (bool, error) { 296 return mixins.String{TypeName: "gendemo.Baz"}.AsBool() 297 } 298 func (Baz) AsInt() (int64, error) { 299 return mixins.String{TypeName: "gendemo.Baz"}.AsInt() 300 } 301 func (Baz) AsFloat() (float64, error) { 302 return mixins.String{TypeName: "gendemo.Baz"}.AsFloat() 303 } 304 func (n Baz) AsString() (string, error) { 305 return n.x, nil 306 } 307 func (Baz) AsBytes() ([]byte, error) { 308 return mixins.String{TypeName: "gendemo.Baz"}.AsBytes() 309 } 310 func (Baz) AsLink() (datamodel.Link, error) { 311 return mixins.String{TypeName: "gendemo.Baz"}.AsLink() 312 } 313 func (Baz) Prototype() datamodel.NodePrototype { 314 return _Baz__Prototype{} 315 } 316 317 type _Baz__Prototype struct{} 318 319 func (_Baz__Prototype) NewBuilder() datamodel.NodeBuilder { 320 var nb _Baz__Builder 321 nb.Reset() 322 return &nb 323 } 324 325 type _Baz__Builder struct { 326 _Baz__Assembler 327 } 328 329 func (nb *_Baz__Builder) Build() datamodel.Node { 330 if *nb.m != schema.Maybe_Value { 331 panic("invalid state: cannot call Build on an assembler that's not finished") 332 } 333 return nb.w 334 } 335 func (nb *_Baz__Builder) Reset() { 336 var w _Baz 337 var m schema.Maybe 338 *nb = _Baz__Builder{_Baz__Assembler{w: &w, m: &m}} 339 } 340 341 type _Baz__Assembler struct { 342 w *_Baz 343 m *schema.Maybe 344 } 345 346 func (na *_Baz__Assembler) reset() {} 347 func (_Baz__Assembler) BeginMap(sizeHint int64) (datamodel.MapAssembler, error) { 348 return mixins.StringAssembler{TypeName: "gendemo.Baz"}.BeginMap(0) 349 } 350 func (_Baz__Assembler) BeginList(sizeHint int64) (datamodel.ListAssembler, error) { 351 return mixins.StringAssembler{TypeName: "gendemo.Baz"}.BeginList(0) 352 } 353 func (na *_Baz__Assembler) AssignNull() error { 354 switch *na.m { 355 case allowNull: 356 *na.m = schema.Maybe_Null 357 return nil 358 case schema.Maybe_Absent: 359 return mixins.StringAssembler{TypeName: "gendemo.Baz"}.AssignNull() 360 case schema.Maybe_Value, schema.Maybe_Null: 361 panic("invalid state: cannot assign into assembler that's already finished") 362 } 363 panic("unreachable") 364 } 365 func (_Baz__Assembler) AssignBool(bool) error { 366 return mixins.StringAssembler{TypeName: "gendemo.Baz"}.AssignBool(false) 367 } 368 func (_Baz__Assembler) AssignInt(int64) error { 369 return mixins.StringAssembler{TypeName: "gendemo.Baz"}.AssignInt(0) 370 } 371 func (_Baz__Assembler) AssignFloat(float64) error { 372 return mixins.StringAssembler{TypeName: "gendemo.Baz"}.AssignFloat(0) 373 } 374 func (na *_Baz__Assembler) AssignString(v string) error { 375 switch *na.m { 376 case schema.Maybe_Value, schema.Maybe_Null: 377 panic("invalid state: cannot assign into assembler that's already finished") 378 } 379 na.w.x = v 380 *na.m = schema.Maybe_Value 381 return nil 382 } 383 func (_Baz__Assembler) AssignBytes([]byte) error { 384 return mixins.StringAssembler{TypeName: "gendemo.Baz"}.AssignBytes(nil) 385 } 386 func (_Baz__Assembler) AssignLink(datamodel.Link) error { 387 return mixins.StringAssembler{TypeName: "gendemo.Baz"}.AssignLink(nil) 388 } 389 func (na *_Baz__Assembler) AssignNode(v datamodel.Node) error { 390 if v.IsNull() { 391 return na.AssignNull() 392 } 393 if v2, ok := v.(*_Baz); ok { 394 switch *na.m { 395 case schema.Maybe_Value, schema.Maybe_Null: 396 panic("invalid state: cannot assign into assembler that's already finished") 397 } 398 *na.w = *v2 399 *na.m = schema.Maybe_Value 400 return nil 401 } 402 if v2, err := v.AsString(); err != nil { 403 return err 404 } else { 405 return na.AssignString(v2) 406 } 407 } 408 func (_Baz__Assembler) Prototype() datamodel.NodePrototype { 409 return _Baz__Prototype{} 410 } 411 func (Baz) Type() schema.Type { 412 return nil /*TODO:typelit*/ 413 } 414 func (n Baz) Representation() datamodel.Node { 415 return (*_Baz__Repr)(n) 416 } 417 418 type _Baz__Repr = _Baz 419 420 var _ datamodel.Node = &_Baz__Repr{} 421 422 type _Baz__ReprPrototype = _Baz__Prototype 423 type _Baz__ReprAssembler = _Baz__Assembler 424 425 func (n Foo) Int() int64 { 426 return n.x 427 } 428 func (_Foo__Prototype) FromInt(v int64) (Foo, error) { 429 n := _Foo{v} 430 return &n, nil 431 } 432 433 type _Foo__Maybe struct { 434 m schema.Maybe 435 v _Foo 436 } 437 type MaybeFoo = *_Foo__Maybe 438 439 func (m MaybeFoo) IsNull() bool { 440 return m.m == schema.Maybe_Null 441 } 442 func (m MaybeFoo) IsAbsent() bool { 443 return m.m == schema.Maybe_Absent 444 } 445 func (m MaybeFoo) Exists() bool { 446 return m.m == schema.Maybe_Value 447 } 448 func (m MaybeFoo) AsNode() datamodel.Node { 449 switch m.m { 450 case schema.Maybe_Absent: 451 return datamodel.Absent 452 case schema.Maybe_Null: 453 return datamodel.Null 454 case schema.Maybe_Value: 455 return &m.v 456 default: 457 panic("unreachable") 458 } 459 } 460 func (m MaybeFoo) Must() Foo { 461 if !m.Exists() { 462 panic("unbox of a maybe rejected") 463 } 464 return &m.v 465 } 466 467 var _ datamodel.Node = (Foo)(&_Foo{}) 468 var _ schema.TypedNode = (Foo)(&_Foo{}) 469 470 func (Foo) Kind() datamodel.Kind { 471 return datamodel.Kind_Int 472 } 473 func (Foo) LookupByString(string) (datamodel.Node, error) { 474 return mixins.Int{TypeName: "gendemo.Foo"}.LookupByString("") 475 } 476 func (Foo) LookupByNode(datamodel.Node) (datamodel.Node, error) { 477 return mixins.Int{TypeName: "gendemo.Foo"}.LookupByNode(nil) 478 } 479 func (Foo) LookupByIndex(idx int64) (datamodel.Node, error) { 480 return mixins.Int{TypeName: "gendemo.Foo"}.LookupByIndex(0) 481 } 482 func (Foo) LookupBySegment(seg datamodel.PathSegment) (datamodel.Node, error) { 483 return mixins.Int{TypeName: "gendemo.Foo"}.LookupBySegment(seg) 484 } 485 func (Foo) MapIterator() datamodel.MapIterator { 486 return nil 487 } 488 func (Foo) ListIterator() datamodel.ListIterator { 489 return nil 490 } 491 func (Foo) Length() int64 { 492 return -1 493 } 494 func (Foo) IsAbsent() bool { 495 return false 496 } 497 func (Foo) IsNull() bool { 498 return false 499 } 500 func (Foo) AsBool() (bool, error) { 501 return mixins.Int{TypeName: "gendemo.Foo"}.AsBool() 502 } 503 func (n Foo) AsInt() (int64, error) { 504 return n.x, nil 505 } 506 func (Foo) AsFloat() (float64, error) { 507 return mixins.Int{TypeName: "gendemo.Foo"}.AsFloat() 508 } 509 func (Foo) AsString() (string, error) { 510 return mixins.Int{TypeName: "gendemo.Foo"}.AsString() 511 } 512 func (Foo) AsBytes() ([]byte, error) { 513 return mixins.Int{TypeName: "gendemo.Foo"}.AsBytes() 514 } 515 func (Foo) AsLink() (datamodel.Link, error) { 516 return mixins.Int{TypeName: "gendemo.Foo"}.AsLink() 517 } 518 func (Foo) Prototype() datamodel.NodePrototype { 519 return _Foo__Prototype{} 520 } 521 522 type _Foo__Prototype struct{} 523 524 func (_Foo__Prototype) NewBuilder() datamodel.NodeBuilder { 525 var nb _Foo__Builder 526 nb.Reset() 527 return &nb 528 } 529 530 type _Foo__Builder struct { 531 _Foo__Assembler 532 } 533 534 func (nb *_Foo__Builder) Build() datamodel.Node { 535 if *nb.m != schema.Maybe_Value { 536 panic("invalid state: cannot call Build on an assembler that's not finished") 537 } 538 return nb.w 539 } 540 func (nb *_Foo__Builder) Reset() { 541 var w _Foo 542 var m schema.Maybe 543 *nb = _Foo__Builder{_Foo__Assembler{w: &w, m: &m}} 544 } 545 546 type _Foo__Assembler struct { 547 w *_Foo 548 m *schema.Maybe 549 } 550 551 func (na *_Foo__Assembler) reset() {} 552 func (_Foo__Assembler) BeginMap(sizeHint int64) (datamodel.MapAssembler, error) { 553 return mixins.IntAssembler{TypeName: "gendemo.Foo"}.BeginMap(0) 554 } 555 func (_Foo__Assembler) BeginList(sizeHint int64) (datamodel.ListAssembler, error) { 556 return mixins.IntAssembler{TypeName: "gendemo.Foo"}.BeginList(0) 557 } 558 func (na *_Foo__Assembler) AssignNull() error { 559 switch *na.m { 560 case allowNull: 561 *na.m = schema.Maybe_Null 562 return nil 563 case schema.Maybe_Absent: 564 return mixins.IntAssembler{TypeName: "gendemo.Foo"}.AssignNull() 565 case schema.Maybe_Value, schema.Maybe_Null: 566 panic("invalid state: cannot assign into assembler that's already finished") 567 } 568 panic("unreachable") 569 } 570 func (_Foo__Assembler) AssignBool(bool) error { 571 return mixins.IntAssembler{TypeName: "gendemo.Foo"}.AssignBool(false) 572 } 573 func (na *_Foo__Assembler) AssignInt(v int64) error { 574 switch *na.m { 575 case schema.Maybe_Value, schema.Maybe_Null: 576 panic("invalid state: cannot assign into assembler that's already finished") 577 } 578 na.w.x = v 579 *na.m = schema.Maybe_Value 580 return nil 581 } 582 func (_Foo__Assembler) AssignFloat(float64) error { 583 return mixins.IntAssembler{TypeName: "gendemo.Foo"}.AssignFloat(0) 584 } 585 func (_Foo__Assembler) AssignString(string) error { 586 return mixins.IntAssembler{TypeName: "gendemo.Foo"}.AssignString("") 587 } 588 func (_Foo__Assembler) AssignBytes([]byte) error { 589 return mixins.IntAssembler{TypeName: "gendemo.Foo"}.AssignBytes(nil) 590 } 591 func (_Foo__Assembler) AssignLink(datamodel.Link) error { 592 return mixins.IntAssembler{TypeName: "gendemo.Foo"}.AssignLink(nil) 593 } 594 func (na *_Foo__Assembler) AssignNode(v datamodel.Node) error { 595 if v.IsNull() { 596 return na.AssignNull() 597 } 598 if v2, ok := v.(*_Foo); ok { 599 switch *na.m { 600 case schema.Maybe_Value, schema.Maybe_Null: 601 panic("invalid state: cannot assign into assembler that's already finished") 602 } 603 *na.w = *v2 604 *na.m = schema.Maybe_Value 605 return nil 606 } 607 if v2, err := v.AsInt(); err != nil { 608 return err 609 } else { 610 return na.AssignInt(v2) 611 } 612 } 613 func (_Foo__Assembler) Prototype() datamodel.NodePrototype { 614 return _Foo__Prototype{} 615 } 616 func (Foo) Type() schema.Type { 617 return nil /*TODO:typelit*/ 618 } 619 func (n Foo) Representation() datamodel.Node { 620 return (*_Foo__Repr)(n) 621 } 622 623 type _Foo__Repr = _Foo 624 625 var _ datamodel.Node = &_Foo__Repr{} 626 627 type _Foo__ReprPrototype = _Foo__Prototype 628 type _Foo__ReprAssembler = _Foo__Assembler 629 630 func (n Int) Int() int64 { 631 return n.x 632 } 633 func (_Int__Prototype) FromInt(v int64) (Int, error) { 634 n := _Int{v} 635 return &n, nil 636 } 637 638 type _Int__Maybe struct { 639 m schema.Maybe 640 v _Int 641 } 642 type MaybeInt = *_Int__Maybe 643 644 func (m MaybeInt) IsNull() bool { 645 return m.m == schema.Maybe_Null 646 } 647 func (m MaybeInt) IsAbsent() bool { 648 return m.m == schema.Maybe_Absent 649 } 650 func (m MaybeInt) Exists() bool { 651 return m.m == schema.Maybe_Value 652 } 653 func (m MaybeInt) AsNode() datamodel.Node { 654 switch m.m { 655 case schema.Maybe_Absent: 656 return datamodel.Absent 657 case schema.Maybe_Null: 658 return datamodel.Null 659 case schema.Maybe_Value: 660 return &m.v 661 default: 662 panic("unreachable") 663 } 664 } 665 func (m MaybeInt) Must() Int { 666 if !m.Exists() { 667 panic("unbox of a maybe rejected") 668 } 669 return &m.v 670 } 671 672 var _ datamodel.Node = (Int)(&_Int{}) 673 var _ schema.TypedNode = (Int)(&_Int{}) 674 675 func (Int) Kind() datamodel.Kind { 676 return datamodel.Kind_Int 677 } 678 func (Int) LookupByString(string) (datamodel.Node, error) { 679 return mixins.Int{TypeName: "gendemo.Int"}.LookupByString("") 680 } 681 func (Int) LookupByNode(datamodel.Node) (datamodel.Node, error) { 682 return mixins.Int{TypeName: "gendemo.Int"}.LookupByNode(nil) 683 } 684 func (Int) LookupByIndex(idx int64) (datamodel.Node, error) { 685 return mixins.Int{TypeName: "gendemo.Int"}.LookupByIndex(0) 686 } 687 func (Int) LookupBySegment(seg datamodel.PathSegment) (datamodel.Node, error) { 688 return mixins.Int{TypeName: "gendemo.Int"}.LookupBySegment(seg) 689 } 690 func (Int) MapIterator() datamodel.MapIterator { 691 return nil 692 } 693 func (Int) ListIterator() datamodel.ListIterator { 694 return nil 695 } 696 func (Int) Length() int64 { 697 return -1 698 } 699 func (Int) IsAbsent() bool { 700 return false 701 } 702 func (Int) IsNull() bool { 703 return false 704 } 705 func (Int) AsBool() (bool, error) { 706 return mixins.Int{TypeName: "gendemo.Int"}.AsBool() 707 } 708 func (n Int) AsInt() (int64, error) { 709 return n.x, nil 710 } 711 func (Int) AsFloat() (float64, error) { 712 return mixins.Int{TypeName: "gendemo.Int"}.AsFloat() 713 } 714 func (Int) AsString() (string, error) { 715 return mixins.Int{TypeName: "gendemo.Int"}.AsString() 716 } 717 func (Int) AsBytes() ([]byte, error) { 718 return mixins.Int{TypeName: "gendemo.Int"}.AsBytes() 719 } 720 func (Int) AsLink() (datamodel.Link, error) { 721 return mixins.Int{TypeName: "gendemo.Int"}.AsLink() 722 } 723 func (Int) Prototype() datamodel.NodePrototype { 724 return _Int__Prototype{} 725 } 726 727 type _Int__Prototype struct{} 728 729 func (_Int__Prototype) NewBuilder() datamodel.NodeBuilder { 730 var nb _Int__Builder 731 nb.Reset() 732 return &nb 733 } 734 735 type _Int__Builder struct { 736 _Int__Assembler 737 } 738 739 func (nb *_Int__Builder) Build() datamodel.Node { 740 if *nb.m != schema.Maybe_Value { 741 panic("invalid state: cannot call Build on an assembler that's not finished") 742 } 743 return nb.w 744 } 745 func (nb *_Int__Builder) Reset() { 746 var w _Int 747 var m schema.Maybe 748 *nb = _Int__Builder{_Int__Assembler{w: &w, m: &m}} 749 } 750 751 type _Int__Assembler struct { 752 w *_Int 753 m *schema.Maybe 754 } 755 756 func (na *_Int__Assembler) reset() {} 757 func (_Int__Assembler) BeginMap(sizeHint int64) (datamodel.MapAssembler, error) { 758 return mixins.IntAssembler{TypeName: "gendemo.Int"}.BeginMap(0) 759 } 760 func (_Int__Assembler) BeginList(sizeHint int64) (datamodel.ListAssembler, error) { 761 return mixins.IntAssembler{TypeName: "gendemo.Int"}.BeginList(0) 762 } 763 func (na *_Int__Assembler) AssignNull() error { 764 switch *na.m { 765 case allowNull: 766 *na.m = schema.Maybe_Null 767 return nil 768 case schema.Maybe_Absent: 769 return mixins.IntAssembler{TypeName: "gendemo.Int"}.AssignNull() 770 case schema.Maybe_Value, schema.Maybe_Null: 771 panic("invalid state: cannot assign into assembler that's already finished") 772 } 773 panic("unreachable") 774 } 775 func (_Int__Assembler) AssignBool(bool) error { 776 return mixins.IntAssembler{TypeName: "gendemo.Int"}.AssignBool(false) 777 } 778 func (na *_Int__Assembler) AssignInt(v int64) error { 779 switch *na.m { 780 case schema.Maybe_Value, schema.Maybe_Null: 781 panic("invalid state: cannot assign into assembler that's already finished") 782 } 783 na.w.x = v 784 *na.m = schema.Maybe_Value 785 return nil 786 } 787 func (_Int__Assembler) AssignFloat(float64) error { 788 return mixins.IntAssembler{TypeName: "gendemo.Int"}.AssignFloat(0) 789 } 790 func (_Int__Assembler) AssignString(string) error { 791 return mixins.IntAssembler{TypeName: "gendemo.Int"}.AssignString("") 792 } 793 func (_Int__Assembler) AssignBytes([]byte) error { 794 return mixins.IntAssembler{TypeName: "gendemo.Int"}.AssignBytes(nil) 795 } 796 func (_Int__Assembler) AssignLink(datamodel.Link) error { 797 return mixins.IntAssembler{TypeName: "gendemo.Int"}.AssignLink(nil) 798 } 799 func (na *_Int__Assembler) AssignNode(v datamodel.Node) error { 800 if v.IsNull() { 801 return na.AssignNull() 802 } 803 if v2, ok := v.(*_Int); ok { 804 switch *na.m { 805 case schema.Maybe_Value, schema.Maybe_Null: 806 panic("invalid state: cannot assign into assembler that's already finished") 807 } 808 *na.w = *v2 809 *na.m = schema.Maybe_Value 810 return nil 811 } 812 if v2, err := v.AsInt(); err != nil { 813 return err 814 } else { 815 return na.AssignInt(v2) 816 } 817 } 818 func (_Int__Assembler) Prototype() datamodel.NodePrototype { 819 return _Int__Prototype{} 820 } 821 func (Int) Type() schema.Type { 822 return nil /*TODO:typelit*/ 823 } 824 func (n Int) Representation() datamodel.Node { 825 return (*_Int__Repr)(n) 826 } 827 828 type _Int__Repr = _Int 829 830 var _ datamodel.Node = &_Int__Repr{} 831 832 type _Int__ReprPrototype = _Int__Prototype 833 type _Int__ReprAssembler = _Int__Assembler 834 835 func (n *_Map__String__Msg3) Lookup(k String) Msg3 { 836 v, exists := n.m[*k] 837 if !exists { 838 return nil 839 } 840 return v 841 } 842 func (n *_Map__String__Msg3) LookupMaybe(k String) MaybeMsg3 { 843 v, exists := n.m[*k] 844 if !exists { 845 return &_Map__String__Msg3__valueAbsent 846 } 847 return &_Msg3__Maybe{ 848 m: schema.Maybe_Value, 849 v: v, 850 } 851 } 852 853 var _Map__String__Msg3__valueAbsent = _Msg3__Maybe{m: schema.Maybe_Absent} 854 855 func (n Map__String__Msg3) Iterator() *Map__String__Msg3__Itr { 856 return &Map__String__Msg3__Itr{n, 0} 857 } 858 859 type Map__String__Msg3__Itr struct { 860 n Map__String__Msg3 861 idx int 862 } 863 864 func (itr *Map__String__Msg3__Itr) Next() (k String, v Msg3) { 865 if itr.idx >= len(itr.n.t) { 866 return nil, nil 867 } 868 x := &itr.n.t[itr.idx] 869 k = &x.k 870 v = &x.v 871 itr.idx++ 872 return 873 } 874 func (itr *Map__String__Msg3__Itr) Done() bool { 875 return itr.idx >= len(itr.n.t) 876 } 877 878 type _Map__String__Msg3__Maybe struct { 879 m schema.Maybe 880 v _Map__String__Msg3 881 } 882 type MaybeMap__String__Msg3 = *_Map__String__Msg3__Maybe 883 884 func (m MaybeMap__String__Msg3) IsNull() bool { 885 return m.m == schema.Maybe_Null 886 } 887 func (m MaybeMap__String__Msg3) IsAbsent() bool { 888 return m.m == schema.Maybe_Absent 889 } 890 func (m MaybeMap__String__Msg3) Exists() bool { 891 return m.m == schema.Maybe_Value 892 } 893 func (m MaybeMap__String__Msg3) AsNode() datamodel.Node { 894 switch m.m { 895 case schema.Maybe_Absent: 896 return datamodel.Absent 897 case schema.Maybe_Null: 898 return datamodel.Null 899 case schema.Maybe_Value: 900 return &m.v 901 default: 902 panic("unreachable") 903 } 904 } 905 func (m MaybeMap__String__Msg3) Must() Map__String__Msg3 { 906 if !m.Exists() { 907 panic("unbox of a maybe rejected") 908 } 909 return &m.v 910 } 911 912 var _ datamodel.Node = (Map__String__Msg3)(&_Map__String__Msg3{}) 913 var _ schema.TypedNode = (Map__String__Msg3)(&_Map__String__Msg3{}) 914 915 func (Map__String__Msg3) Kind() datamodel.Kind { 916 return datamodel.Kind_Map 917 } 918 func (n Map__String__Msg3) LookupByString(k string) (datamodel.Node, error) { 919 var k2 _String 920 if err := (_String__ReprPrototype{}).fromString(&k2, k); err != nil { 921 return nil, err // TODO wrap in some kind of ErrInvalidKey 922 } 923 v, exists := n.m[k2] 924 if !exists { 925 return nil, datamodel.ErrNotExists{Segment: datamodel.PathSegmentOfString(k)} 926 } 927 return v, nil 928 } 929 func (n Map__String__Msg3) LookupByNode(k datamodel.Node) (datamodel.Node, error) { 930 k2, ok := k.(String) 931 if !ok { 932 panic("todo invalid key type error") 933 // 'schema.ErrInvalidKey{TypeName:"gendemo.Map__String__Msg3", Key:&_String{k}}' doesn't quite cut it: need room to explain the type, and it's not guaranteed k can be turned into a string at all 934 } 935 v, exists := n.m[*k2] 936 if !exists { 937 return nil, datamodel.ErrNotExists{Segment: datamodel.PathSegmentOfString(k2.String())} 938 } 939 return v, nil 940 } 941 func (Map__String__Msg3) LookupByIndex(idx int64) (datamodel.Node, error) { 942 return mixins.Map{TypeName: "gendemo.Map__String__Msg3"}.LookupByIndex(0) 943 } 944 func (n Map__String__Msg3) LookupBySegment(seg datamodel.PathSegment) (datamodel.Node, error) { 945 return n.LookupByString(seg.String()) 946 } 947 func (n Map__String__Msg3) MapIterator() datamodel.MapIterator { 948 return &_Map__String__Msg3__MapItr{n, 0} 949 } 950 951 type _Map__String__Msg3__MapItr struct { 952 n Map__String__Msg3 953 idx int 954 } 955 956 func (itr *_Map__String__Msg3__MapItr) Next() (k datamodel.Node, v datamodel.Node, _ error) { 957 if itr.idx >= len(itr.n.t) { 958 return nil, nil, datamodel.ErrIteratorOverread{} 959 } 960 x := &itr.n.t[itr.idx] 961 k = &x.k 962 v = &x.v 963 itr.idx++ 964 return 965 } 966 func (itr *_Map__String__Msg3__MapItr) Done() bool { 967 return itr.idx >= len(itr.n.t) 968 } 969 970 func (Map__String__Msg3) ListIterator() datamodel.ListIterator { 971 return nil 972 } 973 func (n Map__String__Msg3) Length() int64 { 974 return int64(len(n.t)) 975 } 976 func (Map__String__Msg3) IsAbsent() bool { 977 return false 978 } 979 func (Map__String__Msg3) IsNull() bool { 980 return false 981 } 982 func (Map__String__Msg3) AsBool() (bool, error) { 983 return mixins.Map{TypeName: "gendemo.Map__String__Msg3"}.AsBool() 984 } 985 func (Map__String__Msg3) AsInt() (int64, error) { 986 return mixins.Map{TypeName: "gendemo.Map__String__Msg3"}.AsInt() 987 } 988 func (Map__String__Msg3) AsFloat() (float64, error) { 989 return mixins.Map{TypeName: "gendemo.Map__String__Msg3"}.AsFloat() 990 } 991 func (Map__String__Msg3) AsString() (string, error) { 992 return mixins.Map{TypeName: "gendemo.Map__String__Msg3"}.AsString() 993 } 994 func (Map__String__Msg3) AsBytes() ([]byte, error) { 995 return mixins.Map{TypeName: "gendemo.Map__String__Msg3"}.AsBytes() 996 } 997 func (Map__String__Msg3) AsLink() (datamodel.Link, error) { 998 return mixins.Map{TypeName: "gendemo.Map__String__Msg3"}.AsLink() 999 } 1000 func (Map__String__Msg3) Prototype() datamodel.NodePrototype { 1001 return _Map__String__Msg3__Prototype{} 1002 } 1003 1004 type _Map__String__Msg3__Prototype struct{} 1005 1006 func (_Map__String__Msg3__Prototype) NewBuilder() datamodel.NodeBuilder { 1007 var nb _Map__String__Msg3__Builder 1008 nb.Reset() 1009 return &nb 1010 } 1011 1012 type _Map__String__Msg3__Builder struct { 1013 _Map__String__Msg3__Assembler 1014 } 1015 1016 func (nb *_Map__String__Msg3__Builder) Build() datamodel.Node { 1017 if *nb.m != schema.Maybe_Value { 1018 panic("invalid state: cannot call Build on an assembler that's not finished") 1019 } 1020 return nb.w 1021 } 1022 func (nb *_Map__String__Msg3__Builder) Reset() { 1023 var w _Map__String__Msg3 1024 var m schema.Maybe 1025 *nb = _Map__String__Msg3__Builder{_Map__String__Msg3__Assembler{w: &w, m: &m}} 1026 } 1027 1028 type _Map__String__Msg3__Assembler struct { 1029 w *_Map__String__Msg3 1030 m *schema.Maybe 1031 state maState 1032 1033 cm schema.Maybe 1034 ka _String__Assembler 1035 va _Msg3__Assembler 1036 } 1037 1038 func (na *_Map__String__Msg3__Assembler) reset() { 1039 na.state = maState_initial 1040 na.ka.reset() 1041 na.va.reset() 1042 } 1043 func (na *_Map__String__Msg3__Assembler) BeginMap(sizeHint int64) (datamodel.MapAssembler, error) { 1044 switch *na.m { 1045 case schema.Maybe_Value, schema.Maybe_Null: 1046 panic("invalid state: cannot assign into assembler that's already finished") 1047 case midvalue: 1048 panic("invalid state: it makes no sense to 'begin' twice on the same assembler!") 1049 } 1050 *na.m = midvalue 1051 if sizeHint < 0 { 1052 sizeHint = 0 1053 } 1054 na.w.m = make(map[_String]*_Msg3, sizeHint) 1055 na.w.t = make([]_Map__String__Msg3__entry, 0, sizeHint) 1056 return na, nil 1057 } 1058 func (_Map__String__Msg3__Assembler) BeginList(sizeHint int64) (datamodel.ListAssembler, error) { 1059 return mixins.MapAssembler{TypeName: "gendemo.Map__String__Msg3"}.BeginList(0) 1060 } 1061 func (na *_Map__String__Msg3__Assembler) AssignNull() error { 1062 switch *na.m { 1063 case allowNull: 1064 *na.m = schema.Maybe_Null 1065 return nil 1066 case schema.Maybe_Absent: 1067 return mixins.MapAssembler{TypeName: "gendemo.Map__String__Msg3"}.AssignNull() 1068 case schema.Maybe_Value, schema.Maybe_Null: 1069 panic("invalid state: cannot assign into assembler that's already finished") 1070 case midvalue: 1071 panic("invalid state: cannot assign null into an assembler that's already begun working on recursive structures!") 1072 } 1073 panic("unreachable") 1074 } 1075 func (_Map__String__Msg3__Assembler) AssignBool(bool) error { 1076 return mixins.MapAssembler{TypeName: "gendemo.Map__String__Msg3"}.AssignBool(false) 1077 } 1078 func (_Map__String__Msg3__Assembler) AssignInt(int64) error { 1079 return mixins.MapAssembler{TypeName: "gendemo.Map__String__Msg3"}.AssignInt(0) 1080 } 1081 func (_Map__String__Msg3__Assembler) AssignFloat(float64) error { 1082 return mixins.MapAssembler{TypeName: "gendemo.Map__String__Msg3"}.AssignFloat(0) 1083 } 1084 func (_Map__String__Msg3__Assembler) AssignString(string) error { 1085 return mixins.MapAssembler{TypeName: "gendemo.Map__String__Msg3"}.AssignString("") 1086 } 1087 func (_Map__String__Msg3__Assembler) AssignBytes([]byte) error { 1088 return mixins.MapAssembler{TypeName: "gendemo.Map__String__Msg3"}.AssignBytes(nil) 1089 } 1090 func (_Map__String__Msg3__Assembler) AssignLink(datamodel.Link) error { 1091 return mixins.MapAssembler{TypeName: "gendemo.Map__String__Msg3"}.AssignLink(nil) 1092 } 1093 func (na *_Map__String__Msg3__Assembler) AssignNode(v datamodel.Node) error { 1094 if v.IsNull() { 1095 return na.AssignNull() 1096 } 1097 if v2, ok := v.(*_Map__String__Msg3); ok { 1098 switch *na.m { 1099 case schema.Maybe_Value, schema.Maybe_Null: 1100 panic("invalid state: cannot assign into assembler that's already finished") 1101 case midvalue: 1102 panic("invalid state: cannot assign null into an assembler that's already begun working on recursive structures!") 1103 } 1104 *na.w = *v2 1105 *na.m = schema.Maybe_Value 1106 return nil 1107 } 1108 if v.Kind() != datamodel.Kind_Map { 1109 return datamodel.ErrWrongKind{TypeName: "gendemo.Map__String__Msg3", MethodName: "AssignNode", AppropriateKind: datamodel.KindSet_JustMap, ActualKind: v.Kind()} 1110 } 1111 itr := v.MapIterator() 1112 for !itr.Done() { 1113 k, v, err := itr.Next() 1114 if err != nil { 1115 return err 1116 } 1117 if err := na.AssembleKey().AssignNode(k); err != nil { 1118 return err 1119 } 1120 if err := na.AssembleValue().AssignNode(v); err != nil { 1121 return err 1122 } 1123 } 1124 return na.Finish() 1125 } 1126 func (_Map__String__Msg3__Assembler) Prototype() datamodel.NodePrototype { 1127 return _Map__String__Msg3__Prototype{} 1128 } 1129 func (ma *_Map__String__Msg3__Assembler) keyFinishTidy() bool { 1130 switch ma.cm { 1131 case schema.Maybe_Value: 1132 ma.ka.w = nil 1133 tz := &ma.w.t[len(ma.w.t)-1] 1134 ma.cm = schema.Maybe_Absent 1135 ma.state = maState_expectValue 1136 ma.w.m[tz.k] = &tz.v 1137 ma.va.w = &tz.v 1138 ma.va.m = &ma.cm 1139 ma.ka.reset() 1140 return true 1141 default: 1142 return false 1143 } 1144 } 1145 func (ma *_Map__String__Msg3__Assembler) valueFinishTidy() bool { 1146 switch ma.cm { 1147 case schema.Maybe_Value: 1148 ma.va.w = nil 1149 ma.cm = schema.Maybe_Absent 1150 ma.state = maState_initial 1151 ma.va.reset() 1152 return true 1153 default: 1154 return false 1155 } 1156 } 1157 func (ma *_Map__String__Msg3__Assembler) AssembleEntry(k string) (datamodel.NodeAssembler, error) { 1158 switch ma.state { 1159 case maState_initial: 1160 // carry on 1161 case maState_midKey: 1162 panic("invalid state: AssembleEntry cannot be called when in the middle of assembling another key") 1163 case maState_expectValue: 1164 panic("invalid state: AssembleEntry cannot be called when expecting start of value assembly") 1165 case maState_midValue: 1166 if !ma.valueFinishTidy() { 1167 panic("invalid state: AssembleEntry cannot be called when in the middle of assembling a value") 1168 } // if tidy success: carry on 1169 case maState_finished: 1170 panic("invalid state: AssembleEntry cannot be called on an assembler that's already finished") 1171 } 1172 1173 var k2 _String 1174 if err := (_String__ReprPrototype{}).fromString(&k2, k); err != nil { 1175 return nil, err // TODO wrap in some kind of ErrInvalidKey 1176 } 1177 if _, exists := ma.w.m[k2]; exists { 1178 return nil, datamodel.ErrRepeatedMapKey{Key: &k2} 1179 } 1180 ma.w.t = append(ma.w.t, _Map__String__Msg3__entry{k: k2}) 1181 tz := &ma.w.t[len(ma.w.t)-1] 1182 ma.state = maState_midValue 1183 1184 ma.w.m[k2] = &tz.v 1185 ma.va.w = &tz.v 1186 ma.va.m = &ma.cm 1187 return &ma.va, nil 1188 } 1189 func (ma *_Map__String__Msg3__Assembler) AssembleKey() datamodel.NodeAssembler { 1190 switch ma.state { 1191 case maState_initial: 1192 // carry on 1193 case maState_midKey: 1194 panic("invalid state: AssembleKey cannot be called when in the middle of assembling another key") 1195 case maState_expectValue: 1196 panic("invalid state: AssembleKey cannot be called when expecting start of value assembly") 1197 case maState_midValue: 1198 if !ma.valueFinishTidy() { 1199 panic("invalid state: AssembleKey cannot be called when in the middle of assembling a value") 1200 } // if tidy success: carry on 1201 case maState_finished: 1202 panic("invalid state: AssembleKey cannot be called on an assembler that's already finished") 1203 } 1204 ma.w.t = append(ma.w.t, _Map__String__Msg3__entry{}) 1205 ma.state = maState_midKey 1206 ma.ka.m = &ma.cm 1207 ma.ka.w = &ma.w.t[len(ma.w.t)-1].k 1208 return &ma.ka 1209 } 1210 func (ma *_Map__String__Msg3__Assembler) AssembleValue() datamodel.NodeAssembler { 1211 switch ma.state { 1212 case maState_initial: 1213 panic("invalid state: AssembleValue cannot be called when no key is primed") 1214 case maState_midKey: 1215 if !ma.keyFinishTidy() { 1216 panic("invalid state: AssembleValue cannot be called when in the middle of assembling a key") 1217 } // if tidy success: carry on 1218 case maState_expectValue: 1219 // carry on 1220 case maState_midValue: 1221 panic("invalid state: AssembleValue cannot be called when in the middle of assembling another value") 1222 case maState_finished: 1223 panic("invalid state: AssembleValue cannot be called on an assembler that's already finished") 1224 } 1225 ma.state = maState_midValue 1226 return &ma.va 1227 } 1228 func (ma *_Map__String__Msg3__Assembler) Finish() error { 1229 switch ma.state { 1230 case maState_initial: 1231 // carry on 1232 case maState_midKey: 1233 panic("invalid state: Finish cannot be called when in the middle of assembling a key") 1234 case maState_expectValue: 1235 panic("invalid state: Finish cannot be called when expecting start of value assembly") 1236 case maState_midValue: 1237 if !ma.valueFinishTidy() { 1238 panic("invalid state: Finish cannot be called when in the middle of assembling a value") 1239 } // if tidy success: carry on 1240 case maState_finished: 1241 panic("invalid state: Finish cannot be called on an assembler that's already finished") 1242 } 1243 ma.state = maState_finished 1244 *ma.m = schema.Maybe_Value 1245 return nil 1246 } 1247 func (ma *_Map__String__Msg3__Assembler) KeyPrototype() datamodel.NodePrototype { 1248 return _String__Prototype{} 1249 } 1250 func (ma *_Map__String__Msg3__Assembler) ValuePrototype(_ string) datamodel.NodePrototype { 1251 return _Msg3__Prototype{} 1252 } 1253 func (Map__String__Msg3) Type() schema.Type { 1254 return nil /*TODO:typelit*/ 1255 } 1256 func (n Map__String__Msg3) Representation() datamodel.Node { 1257 return (*_Map__String__Msg3__Repr)(n) 1258 } 1259 1260 type _Map__String__Msg3__Repr _Map__String__Msg3 1261 1262 var _ datamodel.Node = &_Map__String__Msg3__Repr{} 1263 1264 func (_Map__String__Msg3__Repr) Kind() datamodel.Kind { 1265 return datamodel.Kind_Map 1266 } 1267 func (nr *_Map__String__Msg3__Repr) LookupByString(k string) (datamodel.Node, error) { 1268 v, err := (Map__String__Msg3)(nr).LookupByString(k) 1269 if err != nil || v == datamodel.Null { 1270 return v, err 1271 } 1272 return v.(Msg3).Representation(), nil 1273 } 1274 func (nr *_Map__String__Msg3__Repr) LookupByNode(k datamodel.Node) (datamodel.Node, error) { 1275 v, err := (Map__String__Msg3)(nr).LookupByNode(k) 1276 if err != nil || v == datamodel.Null { 1277 return v, err 1278 } 1279 return v.(Msg3).Representation(), nil 1280 } 1281 func (_Map__String__Msg3__Repr) LookupByIndex(idx int64) (datamodel.Node, error) { 1282 return mixins.Map{TypeName: "gendemo.Map__String__Msg3.Repr"}.LookupByIndex(0) 1283 } 1284 func (n _Map__String__Msg3__Repr) LookupBySegment(seg datamodel.PathSegment) (datamodel.Node, error) { 1285 return n.LookupByString(seg.String()) 1286 } 1287 func (nr *_Map__String__Msg3__Repr) MapIterator() datamodel.MapIterator { 1288 return &_Map__String__Msg3__ReprMapItr{(Map__String__Msg3)(nr), 0} 1289 } 1290 1291 type _Map__String__Msg3__ReprMapItr _Map__String__Msg3__MapItr 1292 1293 func (itr *_Map__String__Msg3__ReprMapItr) Next() (k datamodel.Node, v datamodel.Node, err error) { 1294 k, v, err = (*_Map__String__Msg3__MapItr)(itr).Next() 1295 if err != nil || v == datamodel.Null { 1296 return 1297 } 1298 return k, v.(Msg3).Representation(), nil 1299 } 1300 func (itr *_Map__String__Msg3__ReprMapItr) Done() bool { 1301 return (*_Map__String__Msg3__MapItr)(itr).Done() 1302 } 1303 1304 func (_Map__String__Msg3__Repr) ListIterator() datamodel.ListIterator { 1305 return nil 1306 } 1307 func (rn *_Map__String__Msg3__Repr) Length() int64 { 1308 return int64(len(rn.t)) 1309 } 1310 func (_Map__String__Msg3__Repr) IsAbsent() bool { 1311 return false 1312 } 1313 func (_Map__String__Msg3__Repr) IsNull() bool { 1314 return false 1315 } 1316 func (_Map__String__Msg3__Repr) AsBool() (bool, error) { 1317 return mixins.Map{TypeName: "gendemo.Map__String__Msg3.Repr"}.AsBool() 1318 } 1319 func (_Map__String__Msg3__Repr) AsInt() (int64, error) { 1320 return mixins.Map{TypeName: "gendemo.Map__String__Msg3.Repr"}.AsInt() 1321 } 1322 func (_Map__String__Msg3__Repr) AsFloat() (float64, error) { 1323 return mixins.Map{TypeName: "gendemo.Map__String__Msg3.Repr"}.AsFloat() 1324 } 1325 func (_Map__String__Msg3__Repr) AsString() (string, error) { 1326 return mixins.Map{TypeName: "gendemo.Map__String__Msg3.Repr"}.AsString() 1327 } 1328 func (_Map__String__Msg3__Repr) AsBytes() ([]byte, error) { 1329 return mixins.Map{TypeName: "gendemo.Map__String__Msg3.Repr"}.AsBytes() 1330 } 1331 func (_Map__String__Msg3__Repr) AsLink() (datamodel.Link, error) { 1332 return mixins.Map{TypeName: "gendemo.Map__String__Msg3.Repr"}.AsLink() 1333 } 1334 func (_Map__String__Msg3__Repr) Prototype() datamodel.NodePrototype { 1335 return _Map__String__Msg3__ReprPrototype{} 1336 } 1337 1338 type _Map__String__Msg3__ReprPrototype struct{} 1339 1340 func (_Map__String__Msg3__ReprPrototype) NewBuilder() datamodel.NodeBuilder { 1341 var nb _Map__String__Msg3__ReprBuilder 1342 nb.Reset() 1343 return &nb 1344 } 1345 1346 type _Map__String__Msg3__ReprBuilder struct { 1347 _Map__String__Msg3__ReprAssembler 1348 } 1349 1350 func (nb *_Map__String__Msg3__ReprBuilder) Build() datamodel.Node { 1351 if *nb.m != schema.Maybe_Value { 1352 panic("invalid state: cannot call Build on an assembler that's not finished") 1353 } 1354 return nb.w 1355 } 1356 func (nb *_Map__String__Msg3__ReprBuilder) Reset() { 1357 var w _Map__String__Msg3 1358 var m schema.Maybe 1359 *nb = _Map__String__Msg3__ReprBuilder{_Map__String__Msg3__ReprAssembler{w: &w, m: &m}} 1360 } 1361 1362 type _Map__String__Msg3__ReprAssembler struct { 1363 w *_Map__String__Msg3 1364 m *schema.Maybe 1365 state maState 1366 1367 cm schema.Maybe 1368 ka _String__ReprAssembler 1369 va _Msg3__ReprAssembler 1370 } 1371 1372 func (na *_Map__String__Msg3__ReprAssembler) reset() { 1373 na.state = maState_initial 1374 na.ka.reset() 1375 na.va.reset() 1376 } 1377 func (na *_Map__String__Msg3__ReprAssembler) BeginMap(sizeHint int64) (datamodel.MapAssembler, error) { 1378 switch *na.m { 1379 case schema.Maybe_Value, schema.Maybe_Null: 1380 panic("invalid state: cannot assign into assembler that's already finished") 1381 case midvalue: 1382 panic("invalid state: it makes no sense to 'begin' twice on the same assembler!") 1383 } 1384 *na.m = midvalue 1385 if sizeHint < 0 { 1386 sizeHint = 0 1387 } 1388 na.w.m = make(map[_String]*_Msg3, sizeHint) 1389 na.w.t = make([]_Map__String__Msg3__entry, 0, sizeHint) 1390 return na, nil 1391 } 1392 func (_Map__String__Msg3__ReprAssembler) BeginList(sizeHint int64) (datamodel.ListAssembler, error) { 1393 return mixins.MapAssembler{TypeName: "gendemo.Map__String__Msg3.Repr"}.BeginList(0) 1394 } 1395 func (na *_Map__String__Msg3__ReprAssembler) AssignNull() error { 1396 switch *na.m { 1397 case allowNull: 1398 *na.m = schema.Maybe_Null 1399 return nil 1400 case schema.Maybe_Absent: 1401 return mixins.MapAssembler{TypeName: "gendemo.Map__String__Msg3.Repr.Repr"}.AssignNull() 1402 case schema.Maybe_Value, schema.Maybe_Null: 1403 panic("invalid state: cannot assign into assembler that's already finished") 1404 case midvalue: 1405 panic("invalid state: cannot assign null into an assembler that's already begun working on recursive structures!") 1406 } 1407 panic("unreachable") 1408 } 1409 func (_Map__String__Msg3__ReprAssembler) AssignBool(bool) error { 1410 return mixins.MapAssembler{TypeName: "gendemo.Map__String__Msg3.Repr"}.AssignBool(false) 1411 } 1412 func (_Map__String__Msg3__ReprAssembler) AssignInt(int64) error { 1413 return mixins.MapAssembler{TypeName: "gendemo.Map__String__Msg3.Repr"}.AssignInt(0) 1414 } 1415 func (_Map__String__Msg3__ReprAssembler) AssignFloat(float64) error { 1416 return mixins.MapAssembler{TypeName: "gendemo.Map__String__Msg3.Repr"}.AssignFloat(0) 1417 } 1418 func (_Map__String__Msg3__ReprAssembler) AssignString(string) error { 1419 return mixins.MapAssembler{TypeName: "gendemo.Map__String__Msg3.Repr"}.AssignString("") 1420 } 1421 func (_Map__String__Msg3__ReprAssembler) AssignBytes([]byte) error { 1422 return mixins.MapAssembler{TypeName: "gendemo.Map__String__Msg3.Repr"}.AssignBytes(nil) 1423 } 1424 func (_Map__String__Msg3__ReprAssembler) AssignLink(datamodel.Link) error { 1425 return mixins.MapAssembler{TypeName: "gendemo.Map__String__Msg3.Repr"}.AssignLink(nil) 1426 } 1427 func (na *_Map__String__Msg3__ReprAssembler) AssignNode(v datamodel.Node) error { 1428 if v.IsNull() { 1429 return na.AssignNull() 1430 } 1431 if v2, ok := v.(*_Map__String__Msg3); ok { 1432 switch *na.m { 1433 case schema.Maybe_Value, schema.Maybe_Null: 1434 panic("invalid state: cannot assign into assembler that's already finished") 1435 case midvalue: 1436 panic("invalid state: cannot assign null into an assembler that's already begun working on recursive structures!") 1437 } 1438 *na.w = *v2 1439 *na.m = schema.Maybe_Value 1440 return nil 1441 } 1442 if v.Kind() != datamodel.Kind_Map { 1443 return datamodel.ErrWrongKind{TypeName: "gendemo.Map__String__Msg3.Repr", MethodName: "AssignNode", AppropriateKind: datamodel.KindSet_JustMap, ActualKind: v.Kind()} 1444 } 1445 itr := v.MapIterator() 1446 for !itr.Done() { 1447 k, v, err := itr.Next() 1448 if err != nil { 1449 return err 1450 } 1451 if err := na.AssembleKey().AssignNode(k); err != nil { 1452 return err 1453 } 1454 if err := na.AssembleValue().AssignNode(v); err != nil { 1455 return err 1456 } 1457 } 1458 return na.Finish() 1459 } 1460 func (_Map__String__Msg3__ReprAssembler) Prototype() datamodel.NodePrototype { 1461 return _Map__String__Msg3__ReprPrototype{} 1462 } 1463 func (ma *_Map__String__Msg3__ReprAssembler) keyFinishTidy() bool { 1464 switch ma.cm { 1465 case schema.Maybe_Value: 1466 ma.ka.w = nil 1467 tz := &ma.w.t[len(ma.w.t)-1] 1468 ma.cm = schema.Maybe_Absent 1469 ma.state = maState_expectValue 1470 ma.w.m[tz.k] = &tz.v 1471 ma.va.w = &tz.v 1472 ma.va.m = &ma.cm 1473 ma.ka.reset() 1474 return true 1475 default: 1476 return false 1477 } 1478 } 1479 func (ma *_Map__String__Msg3__ReprAssembler) valueFinishTidy() bool { 1480 switch ma.cm { 1481 case schema.Maybe_Value: 1482 ma.va.w = nil 1483 ma.cm = schema.Maybe_Absent 1484 ma.state = maState_initial 1485 ma.va.reset() 1486 return true 1487 default: 1488 return false 1489 } 1490 } 1491 func (ma *_Map__String__Msg3__ReprAssembler) AssembleEntry(k string) (datamodel.NodeAssembler, error) { 1492 switch ma.state { 1493 case maState_initial: 1494 // carry on 1495 case maState_midKey: 1496 panic("invalid state: AssembleEntry cannot be called when in the middle of assembling another key") 1497 case maState_expectValue: 1498 panic("invalid state: AssembleEntry cannot be called when expecting start of value assembly") 1499 case maState_midValue: 1500 if !ma.valueFinishTidy() { 1501 panic("invalid state: AssembleEntry cannot be called when in the middle of assembling a value") 1502 } // if tidy success: carry on 1503 case maState_finished: 1504 panic("invalid state: AssembleEntry cannot be called on an assembler that's already finished") 1505 } 1506 1507 var k2 _String 1508 if err := (_String__ReprPrototype{}).fromString(&k2, k); err != nil { 1509 return nil, err // TODO wrap in some kind of ErrInvalidKey 1510 } 1511 if _, exists := ma.w.m[k2]; exists { 1512 return nil, datamodel.ErrRepeatedMapKey{Key: &k2} 1513 } 1514 ma.w.t = append(ma.w.t, _Map__String__Msg3__entry{k: k2}) 1515 tz := &ma.w.t[len(ma.w.t)-1] 1516 ma.state = maState_midValue 1517 1518 ma.w.m[k2] = &tz.v 1519 ma.va.w = &tz.v 1520 ma.va.m = &ma.cm 1521 return &ma.va, nil 1522 } 1523 func (ma *_Map__String__Msg3__ReprAssembler) AssembleKey() datamodel.NodeAssembler { 1524 switch ma.state { 1525 case maState_initial: 1526 // carry on 1527 case maState_midKey: 1528 panic("invalid state: AssembleKey cannot be called when in the middle of assembling another key") 1529 case maState_expectValue: 1530 panic("invalid state: AssembleKey cannot be called when expecting start of value assembly") 1531 case maState_midValue: 1532 if !ma.valueFinishTidy() { 1533 panic("invalid state: AssembleKey cannot be called when in the middle of assembling a value") 1534 } // if tidy success: carry on 1535 case maState_finished: 1536 panic("invalid state: AssembleKey cannot be called on an assembler that's already finished") 1537 } 1538 ma.w.t = append(ma.w.t, _Map__String__Msg3__entry{}) 1539 ma.state = maState_midKey 1540 ma.ka.m = &ma.cm 1541 ma.ka.w = &ma.w.t[len(ma.w.t)-1].k 1542 return &ma.ka 1543 } 1544 func (ma *_Map__String__Msg3__ReprAssembler) AssembleValue() datamodel.NodeAssembler { 1545 switch ma.state { 1546 case maState_initial: 1547 panic("invalid state: AssembleValue cannot be called when no key is primed") 1548 case maState_midKey: 1549 if !ma.keyFinishTidy() { 1550 panic("invalid state: AssembleValue cannot be called when in the middle of assembling a key") 1551 } // if tidy success: carry on 1552 case maState_expectValue: 1553 // carry on 1554 case maState_midValue: 1555 panic("invalid state: AssembleValue cannot be called when in the middle of assembling another value") 1556 case maState_finished: 1557 panic("invalid state: AssembleValue cannot be called on an assembler that's already finished") 1558 } 1559 ma.state = maState_midValue 1560 return &ma.va 1561 } 1562 func (ma *_Map__String__Msg3__ReprAssembler) Finish() error { 1563 switch ma.state { 1564 case maState_initial: 1565 // carry on 1566 case maState_midKey: 1567 panic("invalid state: Finish cannot be called when in the middle of assembling a key") 1568 case maState_expectValue: 1569 panic("invalid state: Finish cannot be called when expecting start of value assembly") 1570 case maState_midValue: 1571 if !ma.valueFinishTidy() { 1572 panic("invalid state: Finish cannot be called when in the middle of assembling a value") 1573 } // if tidy success: carry on 1574 case maState_finished: 1575 panic("invalid state: Finish cannot be called on an assembler that's already finished") 1576 } 1577 ma.state = maState_finished 1578 *ma.m = schema.Maybe_Value 1579 return nil 1580 } 1581 func (ma *_Map__String__Msg3__ReprAssembler) KeyPrototype() datamodel.NodePrototype { 1582 return _String__ReprPrototype{} 1583 } 1584 func (ma *_Map__String__Msg3__ReprAssembler) ValuePrototype(_ string) datamodel.NodePrototype { 1585 return _Msg3__ReprPrototype{} 1586 } 1587 1588 func (n _Msg3) FieldWhee() Int { 1589 return &n.whee 1590 } 1591 func (n _Msg3) FieldWoot() Int { 1592 return &n.woot 1593 } 1594 func (n _Msg3) FieldWaga() Int { 1595 return &n.waga 1596 } 1597 1598 type _Msg3__Maybe struct { 1599 m schema.Maybe 1600 v Msg3 1601 } 1602 type MaybeMsg3 = *_Msg3__Maybe 1603 1604 func (m MaybeMsg3) IsNull() bool { 1605 return m.m == schema.Maybe_Null 1606 } 1607 func (m MaybeMsg3) IsAbsent() bool { 1608 return m.m == schema.Maybe_Absent 1609 } 1610 func (m MaybeMsg3) Exists() bool { 1611 return m.m == schema.Maybe_Value 1612 } 1613 func (m MaybeMsg3) AsNode() datamodel.Node { 1614 switch m.m { 1615 case schema.Maybe_Absent: 1616 return datamodel.Absent 1617 case schema.Maybe_Null: 1618 return datamodel.Null 1619 case schema.Maybe_Value: 1620 return m.v 1621 default: 1622 panic("unreachable") 1623 } 1624 } 1625 func (m MaybeMsg3) Must() Msg3 { 1626 if !m.Exists() { 1627 panic("unbox of a maybe rejected") 1628 } 1629 return m.v 1630 } 1631 1632 var ( 1633 fieldName__Msg3_Whee = _String{"whee"} 1634 fieldName__Msg3_Woot = _String{"woot"} 1635 fieldName__Msg3_Waga = _String{"waga"} 1636 ) 1637 var _ datamodel.Node = (Msg3)(&_Msg3{}) 1638 var _ schema.TypedNode = (Msg3)(&_Msg3{}) 1639 1640 func (Msg3) Kind() datamodel.Kind { 1641 return datamodel.Kind_Map 1642 } 1643 func (n Msg3) LookupByString(key string) (datamodel.Node, error) { 1644 switch key { 1645 case "whee": 1646 return &n.whee, nil 1647 case "woot": 1648 return &n.woot, nil 1649 case "waga": 1650 return &n.waga, nil 1651 default: 1652 return nil, schema.ErrNoSuchField{Type: nil /*TODO*/, Field: datamodel.PathSegmentOfString(key)} 1653 } 1654 } 1655 func (n Msg3) LookupByNode(key datamodel.Node) (datamodel.Node, error) { 1656 ks, err := key.AsString() 1657 if err != nil { 1658 return nil, err 1659 } 1660 return n.LookupByString(ks) 1661 } 1662 func (Msg3) LookupByIndex(idx int64) (datamodel.Node, error) { 1663 return mixins.Map{TypeName: "gendemo.Msg3"}.LookupByIndex(0) 1664 } 1665 func (n Msg3) LookupBySegment(seg datamodel.PathSegment) (datamodel.Node, error) { 1666 return n.LookupByString(seg.String()) 1667 } 1668 func (n Msg3) MapIterator() datamodel.MapIterator { 1669 return &_Msg3__MapItr{n, 0} 1670 } 1671 1672 type _Msg3__MapItr struct { 1673 n Msg3 1674 idx int 1675 } 1676 1677 func (itr *_Msg3__MapItr) Next() (k datamodel.Node, v datamodel.Node, _ error) { 1678 if itr.idx >= 3 { 1679 return nil, nil, datamodel.ErrIteratorOverread{} 1680 } 1681 switch itr.idx { 1682 case 0: 1683 k = &fieldName__Msg3_Whee 1684 v = &itr.n.whee 1685 case 1: 1686 k = &fieldName__Msg3_Woot 1687 v = &itr.n.woot 1688 case 2: 1689 k = &fieldName__Msg3_Waga 1690 v = &itr.n.waga 1691 default: 1692 panic("unreachable") 1693 } 1694 itr.idx++ 1695 return 1696 } 1697 func (itr *_Msg3__MapItr) Done() bool { 1698 return itr.idx >= 3 1699 } 1700 1701 func (Msg3) ListIterator() datamodel.ListIterator { 1702 return nil 1703 } 1704 func (Msg3) Length() int64 { 1705 return 3 1706 } 1707 func (Msg3) IsAbsent() bool { 1708 return false 1709 } 1710 func (Msg3) IsNull() bool { 1711 return false 1712 } 1713 func (Msg3) AsBool() (bool, error) { 1714 return mixins.Map{TypeName: "gendemo.Msg3"}.AsBool() 1715 } 1716 func (Msg3) AsInt() (int64, error) { 1717 return mixins.Map{TypeName: "gendemo.Msg3"}.AsInt() 1718 } 1719 func (Msg3) AsFloat() (float64, error) { 1720 return mixins.Map{TypeName: "gendemo.Msg3"}.AsFloat() 1721 } 1722 func (Msg3) AsString() (string, error) { 1723 return mixins.Map{TypeName: "gendemo.Msg3"}.AsString() 1724 } 1725 func (Msg3) AsBytes() ([]byte, error) { 1726 return mixins.Map{TypeName: "gendemo.Msg3"}.AsBytes() 1727 } 1728 func (Msg3) AsLink() (datamodel.Link, error) { 1729 return mixins.Map{TypeName: "gendemo.Msg3"}.AsLink() 1730 } 1731 func (Msg3) Prototype() datamodel.NodePrototype { 1732 return _Msg3__Prototype{} 1733 } 1734 1735 type _Msg3__Prototype struct{} 1736 1737 func (_Msg3__Prototype) NewBuilder() datamodel.NodeBuilder { 1738 var nb _Msg3__Builder 1739 nb.Reset() 1740 return &nb 1741 } 1742 1743 type _Msg3__Builder struct { 1744 _Msg3__Assembler 1745 } 1746 1747 func (nb *_Msg3__Builder) Build() datamodel.Node { 1748 if *nb.m != schema.Maybe_Value { 1749 panic("invalid state: cannot call Build on an assembler that's not finished") 1750 } 1751 return nb.w 1752 } 1753 func (nb *_Msg3__Builder) Reset() { 1754 var w _Msg3 1755 var m schema.Maybe 1756 *nb = _Msg3__Builder{_Msg3__Assembler{w: &w, m: &m}} 1757 } 1758 1759 type _Msg3__Assembler struct { 1760 w *_Msg3 1761 m *schema.Maybe 1762 state maState 1763 s int 1764 f int 1765 1766 cm schema.Maybe 1767 ca_whee _Int__Assembler 1768 ca_woot _Int__Assembler 1769 ca_waga _Int__Assembler 1770 } 1771 1772 func (na *_Msg3__Assembler) reset() { 1773 na.state = maState_initial 1774 na.s = 0 1775 na.ca_whee.reset() 1776 na.ca_woot.reset() 1777 na.ca_waga.reset() 1778 } 1779 1780 var ( 1781 fieldBit__Msg3_Whee = 1 << 0 1782 fieldBit__Msg3_Woot = 1 << 1 1783 fieldBit__Msg3_Waga = 1 << 2 1784 fieldBits__Msg3_sufficient = 0 + 1<<0 + 1<<1 + 1<<2 1785 ) 1786 1787 func (na *_Msg3__Assembler) BeginMap(int64) (datamodel.MapAssembler, error) { 1788 switch *na.m { 1789 case schema.Maybe_Value, schema.Maybe_Null: 1790 panic("invalid state: cannot assign into assembler that's already finished") 1791 case midvalue: 1792 panic("invalid state: it makes no sense to 'begin' twice on the same assembler!") 1793 } 1794 *na.m = midvalue 1795 if na.w == nil { 1796 na.w = &_Msg3{} 1797 } 1798 return na, nil 1799 } 1800 func (_Msg3__Assembler) BeginList(sizeHint int64) (datamodel.ListAssembler, error) { 1801 return mixins.MapAssembler{TypeName: "gendemo.Msg3"}.BeginList(0) 1802 } 1803 func (na *_Msg3__Assembler) AssignNull() error { 1804 switch *na.m { 1805 case allowNull: 1806 *na.m = schema.Maybe_Null 1807 return nil 1808 case schema.Maybe_Absent: 1809 return mixins.MapAssembler{TypeName: "gendemo.Msg3"}.AssignNull() 1810 case schema.Maybe_Value, schema.Maybe_Null: 1811 panic("invalid state: cannot assign into assembler that's already finished") 1812 case midvalue: 1813 panic("invalid state: cannot assign null into an assembler that's already begun working on recursive structures!") 1814 } 1815 panic("unreachable") 1816 } 1817 func (_Msg3__Assembler) AssignBool(bool) error { 1818 return mixins.MapAssembler{TypeName: "gendemo.Msg3"}.AssignBool(false) 1819 } 1820 func (_Msg3__Assembler) AssignInt(int64) error { 1821 return mixins.MapAssembler{TypeName: "gendemo.Msg3"}.AssignInt(0) 1822 } 1823 func (_Msg3__Assembler) AssignFloat(float64) error { 1824 return mixins.MapAssembler{TypeName: "gendemo.Msg3"}.AssignFloat(0) 1825 } 1826 func (_Msg3__Assembler) AssignString(string) error { 1827 return mixins.MapAssembler{TypeName: "gendemo.Msg3"}.AssignString("") 1828 } 1829 func (_Msg3__Assembler) AssignBytes([]byte) error { 1830 return mixins.MapAssembler{TypeName: "gendemo.Msg3"}.AssignBytes(nil) 1831 } 1832 func (_Msg3__Assembler) AssignLink(datamodel.Link) error { 1833 return mixins.MapAssembler{TypeName: "gendemo.Msg3"}.AssignLink(nil) 1834 } 1835 func (na *_Msg3__Assembler) AssignNode(v datamodel.Node) error { 1836 if v.IsNull() { 1837 return na.AssignNull() 1838 } 1839 if v2, ok := v.(*_Msg3); ok { 1840 switch *na.m { 1841 case schema.Maybe_Value, schema.Maybe_Null: 1842 panic("invalid state: cannot assign into assembler that's already finished") 1843 case midvalue: 1844 panic("invalid state: cannot assign null into an assembler that's already begun working on recursive structures!") 1845 } 1846 if na.w == nil { 1847 na.w = v2 1848 *na.m = schema.Maybe_Value 1849 return nil 1850 } 1851 *na.w = *v2 1852 *na.m = schema.Maybe_Value 1853 return nil 1854 } 1855 if v.Kind() != datamodel.Kind_Map { 1856 return datamodel.ErrWrongKind{TypeName: "gendemo.Msg3", MethodName: "AssignNode", AppropriateKind: datamodel.KindSet_JustMap, ActualKind: v.Kind()} 1857 } 1858 itr := v.MapIterator() 1859 for !itr.Done() { 1860 k, v, err := itr.Next() 1861 if err != nil { 1862 return err 1863 } 1864 if err := na.AssembleKey().AssignNode(k); err != nil { 1865 return err 1866 } 1867 if err := na.AssembleValue().AssignNode(v); err != nil { 1868 return err 1869 } 1870 } 1871 return na.Finish() 1872 } 1873 func (_Msg3__Assembler) Prototype() datamodel.NodePrototype { 1874 return _Msg3__Prototype{} 1875 } 1876 func (ma *_Msg3__Assembler) valueFinishTidy() bool { 1877 switch ma.f { 1878 case 0: 1879 switch ma.cm { 1880 case schema.Maybe_Value: 1881 ma.ca_whee.w = nil 1882 ma.cm = schema.Maybe_Absent 1883 ma.state = maState_initial 1884 return true 1885 default: 1886 return false 1887 } 1888 case 1: 1889 switch ma.cm { 1890 case schema.Maybe_Value: 1891 ma.ca_woot.w = nil 1892 ma.cm = schema.Maybe_Absent 1893 ma.state = maState_initial 1894 return true 1895 default: 1896 return false 1897 } 1898 case 2: 1899 switch ma.cm { 1900 case schema.Maybe_Value: 1901 ma.ca_waga.w = nil 1902 ma.cm = schema.Maybe_Absent 1903 ma.state = maState_initial 1904 return true 1905 default: 1906 return false 1907 } 1908 default: 1909 panic("unreachable") 1910 } 1911 } 1912 func (ma *_Msg3__Assembler) AssembleEntry(k string) (datamodel.NodeAssembler, error) { 1913 switch ma.state { 1914 case maState_initial: 1915 // carry on 1916 case maState_midKey: 1917 panic("invalid state: AssembleEntry cannot be called when in the middle of assembling another key") 1918 case maState_expectValue: 1919 panic("invalid state: AssembleEntry cannot be called when expecting start of value assembly") 1920 case maState_midValue: 1921 if !ma.valueFinishTidy() { 1922 panic("invalid state: AssembleEntry cannot be called when in the middle of assembling a value") 1923 } // if tidy success: carry on 1924 case maState_finished: 1925 panic("invalid state: AssembleEntry cannot be called on an assembler that's already finished") 1926 } 1927 switch k { 1928 case "whee": 1929 if ma.s&fieldBit__Msg3_Whee != 0 { 1930 return nil, datamodel.ErrRepeatedMapKey{Key: &fieldName__Msg3_Whee} 1931 } 1932 ma.s += fieldBit__Msg3_Whee 1933 ma.state = maState_midValue 1934 ma.f = 0 1935 ma.ca_whee.w = &ma.w.whee 1936 ma.ca_whee.m = &ma.cm 1937 return &ma.ca_whee, nil 1938 case "woot": 1939 if ma.s&fieldBit__Msg3_Woot != 0 { 1940 return nil, datamodel.ErrRepeatedMapKey{Key: &fieldName__Msg3_Woot} 1941 } 1942 ma.s += fieldBit__Msg3_Woot 1943 ma.state = maState_midValue 1944 ma.f = 1 1945 ma.ca_woot.w = &ma.w.woot 1946 ma.ca_woot.m = &ma.cm 1947 return &ma.ca_woot, nil 1948 case "waga": 1949 if ma.s&fieldBit__Msg3_Waga != 0 { 1950 return nil, datamodel.ErrRepeatedMapKey{Key: &fieldName__Msg3_Waga} 1951 } 1952 ma.s += fieldBit__Msg3_Waga 1953 ma.state = maState_midValue 1954 ma.f = 2 1955 ma.ca_waga.w = &ma.w.waga 1956 ma.ca_waga.m = &ma.cm 1957 return &ma.ca_waga, nil 1958 } 1959 return nil, schema.ErrInvalidKey{TypeName: "gendemo.Msg3", Key: &_String{k}} 1960 } 1961 func (ma *_Msg3__Assembler) AssembleKey() datamodel.NodeAssembler { 1962 switch ma.state { 1963 case maState_initial: 1964 // carry on 1965 case maState_midKey: 1966 panic("invalid state: AssembleKey cannot be called when in the middle of assembling another key") 1967 case maState_expectValue: 1968 panic("invalid state: AssembleKey cannot be called when expecting start of value assembly") 1969 case maState_midValue: 1970 if !ma.valueFinishTidy() { 1971 panic("invalid state: AssembleKey cannot be called when in the middle of assembling a value") 1972 } // if tidy success: carry on 1973 case maState_finished: 1974 panic("invalid state: AssembleKey cannot be called on an assembler that's already finished") 1975 } 1976 ma.state = maState_midKey 1977 return (*_Msg3__KeyAssembler)(ma) 1978 } 1979 func (ma *_Msg3__Assembler) AssembleValue() datamodel.NodeAssembler { 1980 switch ma.state { 1981 case maState_initial: 1982 panic("invalid state: AssembleValue cannot be called when no key is primed") 1983 case maState_midKey: 1984 panic("invalid state: AssembleValue cannot be called when in the middle of assembling a key") 1985 case maState_expectValue: 1986 // carry on 1987 case maState_midValue: 1988 panic("invalid state: AssembleValue cannot be called when in the middle of assembling another value") 1989 case maState_finished: 1990 panic("invalid state: AssembleValue cannot be called on an assembler that's already finished") 1991 } 1992 ma.state = maState_midValue 1993 switch ma.f { 1994 case 0: 1995 ma.ca_whee.w = &ma.w.whee 1996 ma.ca_whee.m = &ma.cm 1997 return &ma.ca_whee 1998 case 1: 1999 ma.ca_woot.w = &ma.w.woot 2000 ma.ca_woot.m = &ma.cm 2001 return &ma.ca_woot 2002 case 2: 2003 ma.ca_waga.w = &ma.w.waga 2004 ma.ca_waga.m = &ma.cm 2005 return &ma.ca_waga 2006 default: 2007 panic("unreachable") 2008 } 2009 } 2010 func (ma *_Msg3__Assembler) Finish() error { 2011 switch ma.state { 2012 case maState_initial: 2013 // carry on 2014 case maState_midKey: 2015 panic("invalid state: Finish cannot be called when in the middle of assembling a key") 2016 case maState_expectValue: 2017 panic("invalid state: Finish cannot be called when expecting start of value assembly") 2018 case maState_midValue: 2019 if !ma.valueFinishTidy() { 2020 panic("invalid state: Finish cannot be called when in the middle of assembling a value") 2021 } // if tidy success: carry on 2022 case maState_finished: 2023 panic("invalid state: Finish cannot be called on an assembler that's already finished") 2024 } 2025 if ma.s&fieldBits__Msg3_sufficient != fieldBits__Msg3_sufficient { 2026 err := schema.ErrMissingRequiredField{Missing: make([]string, 0)} 2027 if ma.s&fieldBit__Msg3_Whee == 0 { 2028 err.Missing = append(err.Missing, "whee") 2029 } 2030 if ma.s&fieldBit__Msg3_Woot == 0 { 2031 err.Missing = append(err.Missing, "woot") 2032 } 2033 if ma.s&fieldBit__Msg3_Waga == 0 { 2034 err.Missing = append(err.Missing, "waga") 2035 } 2036 return err 2037 } 2038 ma.state = maState_finished 2039 *ma.m = schema.Maybe_Value 2040 return nil 2041 } 2042 func (ma *_Msg3__Assembler) KeyPrototype() datamodel.NodePrototype { 2043 return _String__Prototype{} 2044 } 2045 func (ma *_Msg3__Assembler) ValuePrototype(k string) datamodel.NodePrototype { 2046 panic("todo structbuilder mapassembler valueprototype") 2047 } 2048 2049 type _Msg3__KeyAssembler _Msg3__Assembler 2050 2051 func (_Msg3__KeyAssembler) BeginMap(sizeHint int64) (datamodel.MapAssembler, error) { 2052 return mixins.StringAssembler{TypeName: "gendemo.Msg3.KeyAssembler"}.BeginMap(0) 2053 } 2054 func (_Msg3__KeyAssembler) BeginList(sizeHint int64) (datamodel.ListAssembler, error) { 2055 return mixins.StringAssembler{TypeName: "gendemo.Msg3.KeyAssembler"}.BeginList(0) 2056 } 2057 func (na *_Msg3__KeyAssembler) AssignNull() error { 2058 return mixins.StringAssembler{TypeName: "gendemo.Msg3.KeyAssembler"}.AssignNull() 2059 } 2060 func (_Msg3__KeyAssembler) AssignBool(bool) error { 2061 return mixins.StringAssembler{TypeName: "gendemo.Msg3.KeyAssembler"}.AssignBool(false) 2062 } 2063 func (_Msg3__KeyAssembler) AssignInt(int64) error { 2064 return mixins.StringAssembler{TypeName: "gendemo.Msg3.KeyAssembler"}.AssignInt(0) 2065 } 2066 func (_Msg3__KeyAssembler) AssignFloat(float64) error { 2067 return mixins.StringAssembler{TypeName: "gendemo.Msg3.KeyAssembler"}.AssignFloat(0) 2068 } 2069 func (ka *_Msg3__KeyAssembler) AssignString(k string) error { 2070 if ka.state != maState_midKey { 2071 panic("misuse: KeyAssembler held beyond its valid lifetime") 2072 } 2073 switch k { 2074 case "whee": 2075 if ka.s&fieldBit__Msg3_Whee != 0 { 2076 return datamodel.ErrRepeatedMapKey{Key: &fieldName__Msg3_Whee} 2077 } 2078 ka.s += fieldBit__Msg3_Whee 2079 ka.state = maState_expectValue 2080 ka.f = 0 2081 return nil 2082 case "woot": 2083 if ka.s&fieldBit__Msg3_Woot != 0 { 2084 return datamodel.ErrRepeatedMapKey{Key: &fieldName__Msg3_Woot} 2085 } 2086 ka.s += fieldBit__Msg3_Woot 2087 ka.state = maState_expectValue 2088 ka.f = 1 2089 return nil 2090 case "waga": 2091 if ka.s&fieldBit__Msg3_Waga != 0 { 2092 return datamodel.ErrRepeatedMapKey{Key: &fieldName__Msg3_Waga} 2093 } 2094 ka.s += fieldBit__Msg3_Waga 2095 ka.state = maState_expectValue 2096 ka.f = 2 2097 return nil 2098 default: 2099 return schema.ErrInvalidKey{TypeName: "gendemo.Msg3", Key: &_String{k}} 2100 } 2101 } 2102 func (_Msg3__KeyAssembler) AssignBytes([]byte) error { 2103 return mixins.StringAssembler{TypeName: "gendemo.Msg3.KeyAssembler"}.AssignBytes(nil) 2104 } 2105 func (_Msg3__KeyAssembler) AssignLink(datamodel.Link) error { 2106 return mixins.StringAssembler{TypeName: "gendemo.Msg3.KeyAssembler"}.AssignLink(nil) 2107 } 2108 func (ka *_Msg3__KeyAssembler) AssignNode(v datamodel.Node) error { 2109 if v2, err := v.AsString(); err != nil { 2110 return err 2111 } else { 2112 return ka.AssignString(v2) 2113 } 2114 } 2115 func (_Msg3__KeyAssembler) Prototype() datamodel.NodePrototype { 2116 return _String__Prototype{} 2117 } 2118 func (Msg3) Type() schema.Type { 2119 return nil /*TODO:typelit*/ 2120 } 2121 func (n Msg3) Representation() datamodel.Node { 2122 return (*_Msg3__Repr)(n) 2123 } 2124 2125 type _Msg3__Repr _Msg3 2126 2127 var ( 2128 fieldName__Msg3_Whee_serial = _String{"whee"} 2129 fieldName__Msg3_Woot_serial = _String{"woot"} 2130 fieldName__Msg3_Waga_serial = _String{"waga"} 2131 ) 2132 var _ datamodel.Node = &_Msg3__Repr{} 2133 2134 func (_Msg3__Repr) Kind() datamodel.Kind { 2135 return datamodel.Kind_Map 2136 } 2137 func (n *_Msg3__Repr) LookupByString(key string) (datamodel.Node, error) { 2138 switch key { 2139 case "whee": 2140 return n.whee.Representation(), nil 2141 case "woot": 2142 return n.woot.Representation(), nil 2143 case "waga": 2144 return n.waga.Representation(), nil 2145 default: 2146 return nil, schema.ErrNoSuchField{Type: nil /*TODO*/, Field: datamodel.PathSegmentOfString(key)} 2147 } 2148 } 2149 func (n *_Msg3__Repr) LookupByNode(key datamodel.Node) (datamodel.Node, error) { 2150 ks, err := key.AsString() 2151 if err != nil { 2152 return nil, err 2153 } 2154 return n.LookupByString(ks) 2155 } 2156 func (_Msg3__Repr) LookupByIndex(idx int64) (datamodel.Node, error) { 2157 return mixins.Map{TypeName: "gendemo.Msg3.Repr"}.LookupByIndex(0) 2158 } 2159 func (n _Msg3__Repr) LookupBySegment(seg datamodel.PathSegment) (datamodel.Node, error) { 2160 return n.LookupByString(seg.String()) 2161 } 2162 func (n *_Msg3__Repr) MapIterator() datamodel.MapIterator { 2163 return &_Msg3__ReprMapItr{n, 0} 2164 } 2165 2166 type _Msg3__ReprMapItr struct { 2167 n *_Msg3__Repr 2168 idx int 2169 } 2170 2171 func (itr *_Msg3__ReprMapItr) Next() (k datamodel.Node, v datamodel.Node, _ error) { 2172 if itr.idx >= 3 { 2173 return nil, nil, datamodel.ErrIteratorOverread{} 2174 } 2175 switch itr.idx { 2176 case 0: 2177 k = &fieldName__Msg3_Whee_serial 2178 v = itr.n.whee.Representation() 2179 case 1: 2180 k = &fieldName__Msg3_Woot_serial 2181 v = itr.n.woot.Representation() 2182 case 2: 2183 k = &fieldName__Msg3_Waga_serial 2184 v = itr.n.waga.Representation() 2185 default: 2186 panic("unreachable") 2187 } 2188 itr.idx++ 2189 return 2190 } 2191 func (itr *_Msg3__ReprMapItr) Done() bool { 2192 return itr.idx >= 3 2193 } 2194 func (_Msg3__Repr) ListIterator() datamodel.ListIterator { 2195 return nil 2196 } 2197 func (rn *_Msg3__Repr) Length() int64 { 2198 l := 3 2199 return int64(l) 2200 } 2201 func (_Msg3__Repr) IsAbsent() bool { 2202 return false 2203 } 2204 func (_Msg3__Repr) IsNull() bool { 2205 return false 2206 } 2207 func (_Msg3__Repr) AsBool() (bool, error) { 2208 return mixins.Map{TypeName: "gendemo.Msg3.Repr"}.AsBool() 2209 } 2210 func (_Msg3__Repr) AsInt() (int64, error) { 2211 return mixins.Map{TypeName: "gendemo.Msg3.Repr"}.AsInt() 2212 } 2213 func (_Msg3__Repr) AsFloat() (float64, error) { 2214 return mixins.Map{TypeName: "gendemo.Msg3.Repr"}.AsFloat() 2215 } 2216 func (_Msg3__Repr) AsString() (string, error) { 2217 return mixins.Map{TypeName: "gendemo.Msg3.Repr"}.AsString() 2218 } 2219 func (_Msg3__Repr) AsBytes() ([]byte, error) { 2220 return mixins.Map{TypeName: "gendemo.Msg3.Repr"}.AsBytes() 2221 } 2222 func (_Msg3__Repr) AsLink() (datamodel.Link, error) { 2223 return mixins.Map{TypeName: "gendemo.Msg3.Repr"}.AsLink() 2224 } 2225 func (_Msg3__Repr) Prototype() datamodel.NodePrototype { 2226 return _Msg3__ReprPrototype{} 2227 } 2228 2229 type _Msg3__ReprPrototype struct{} 2230 2231 func (_Msg3__ReprPrototype) NewBuilder() datamodel.NodeBuilder { 2232 var nb _Msg3__ReprBuilder 2233 nb.Reset() 2234 return &nb 2235 } 2236 2237 type _Msg3__ReprBuilder struct { 2238 _Msg3__ReprAssembler 2239 } 2240 2241 func (nb *_Msg3__ReprBuilder) Build() datamodel.Node { 2242 if *nb.m != schema.Maybe_Value { 2243 panic("invalid state: cannot call Build on an assembler that's not finished") 2244 } 2245 return nb.w 2246 } 2247 func (nb *_Msg3__ReprBuilder) Reset() { 2248 var w _Msg3 2249 var m schema.Maybe 2250 *nb = _Msg3__ReprBuilder{_Msg3__ReprAssembler{w: &w, m: &m}} 2251 } 2252 2253 type _Msg3__ReprAssembler struct { 2254 w *_Msg3 2255 m *schema.Maybe 2256 state maState 2257 s int 2258 f int 2259 2260 cm schema.Maybe 2261 ca_whee _Int__ReprAssembler 2262 ca_woot _Int__ReprAssembler 2263 ca_waga _Int__ReprAssembler 2264 } 2265 2266 func (na *_Msg3__ReprAssembler) reset() { 2267 na.state = maState_initial 2268 na.s = 0 2269 na.ca_whee.reset() 2270 na.ca_woot.reset() 2271 na.ca_waga.reset() 2272 } 2273 func (na *_Msg3__ReprAssembler) BeginMap(int64) (datamodel.MapAssembler, error) { 2274 switch *na.m { 2275 case schema.Maybe_Value, schema.Maybe_Null: 2276 panic("invalid state: cannot assign into assembler that's already finished") 2277 case midvalue: 2278 panic("invalid state: it makes no sense to 'begin' twice on the same assembler!") 2279 } 2280 *na.m = midvalue 2281 if na.w == nil { 2282 na.w = &_Msg3{} 2283 } 2284 return na, nil 2285 } 2286 func (_Msg3__ReprAssembler) BeginList(sizeHint int64) (datamodel.ListAssembler, error) { 2287 return mixins.MapAssembler{TypeName: "gendemo.Msg3.Repr"}.BeginList(0) 2288 } 2289 func (na *_Msg3__ReprAssembler) AssignNull() error { 2290 switch *na.m { 2291 case allowNull: 2292 *na.m = schema.Maybe_Null 2293 return nil 2294 case schema.Maybe_Absent: 2295 return mixins.MapAssembler{TypeName: "gendemo.Msg3.Repr.Repr"}.AssignNull() 2296 case schema.Maybe_Value, schema.Maybe_Null: 2297 panic("invalid state: cannot assign into assembler that's already finished") 2298 case midvalue: 2299 panic("invalid state: cannot assign null into an assembler that's already begun working on recursive structures!") 2300 } 2301 panic("unreachable") 2302 } 2303 func (_Msg3__ReprAssembler) AssignBool(bool) error { 2304 return mixins.MapAssembler{TypeName: "gendemo.Msg3.Repr"}.AssignBool(false) 2305 } 2306 func (_Msg3__ReprAssembler) AssignInt(int64) error { 2307 return mixins.MapAssembler{TypeName: "gendemo.Msg3.Repr"}.AssignInt(0) 2308 } 2309 func (_Msg3__ReprAssembler) AssignFloat(float64) error { 2310 return mixins.MapAssembler{TypeName: "gendemo.Msg3.Repr"}.AssignFloat(0) 2311 } 2312 func (_Msg3__ReprAssembler) AssignString(string) error { 2313 return mixins.MapAssembler{TypeName: "gendemo.Msg3.Repr"}.AssignString("") 2314 } 2315 func (_Msg3__ReprAssembler) AssignBytes([]byte) error { 2316 return mixins.MapAssembler{TypeName: "gendemo.Msg3.Repr"}.AssignBytes(nil) 2317 } 2318 func (_Msg3__ReprAssembler) AssignLink(datamodel.Link) error { 2319 return mixins.MapAssembler{TypeName: "gendemo.Msg3.Repr"}.AssignLink(nil) 2320 } 2321 func (na *_Msg3__ReprAssembler) AssignNode(v datamodel.Node) error { 2322 if v.IsNull() { 2323 return na.AssignNull() 2324 } 2325 if v2, ok := v.(*_Msg3); ok { 2326 switch *na.m { 2327 case schema.Maybe_Value, schema.Maybe_Null: 2328 panic("invalid state: cannot assign into assembler that's already finished") 2329 case midvalue: 2330 panic("invalid state: cannot assign null into an assembler that's already begun working on recursive structures!") 2331 } 2332 if na.w == nil { 2333 na.w = v2 2334 *na.m = schema.Maybe_Value 2335 return nil 2336 } 2337 *na.w = *v2 2338 *na.m = schema.Maybe_Value 2339 return nil 2340 } 2341 if v.Kind() != datamodel.Kind_Map { 2342 return datamodel.ErrWrongKind{TypeName: "gendemo.Msg3.Repr", MethodName: "AssignNode", AppropriateKind: datamodel.KindSet_JustMap, ActualKind: v.Kind()} 2343 } 2344 itr := v.MapIterator() 2345 for !itr.Done() { 2346 k, v, err := itr.Next() 2347 if err != nil { 2348 return err 2349 } 2350 if err := na.AssembleKey().AssignNode(k); err != nil { 2351 return err 2352 } 2353 if err := na.AssembleValue().AssignNode(v); err != nil { 2354 return err 2355 } 2356 } 2357 return na.Finish() 2358 } 2359 func (_Msg3__ReprAssembler) Prototype() datamodel.NodePrototype { 2360 return _Msg3__ReprPrototype{} 2361 } 2362 func (ma *_Msg3__ReprAssembler) valueFinishTidy() bool { 2363 switch ma.f { 2364 case 0: 2365 switch ma.cm { 2366 case schema.Maybe_Value: 2367 ma.cm = schema.Maybe_Absent 2368 ma.state = maState_initial 2369 return true 2370 default: 2371 return false 2372 } 2373 case 1: 2374 switch ma.cm { 2375 case schema.Maybe_Value: 2376 ma.cm = schema.Maybe_Absent 2377 ma.state = maState_initial 2378 return true 2379 default: 2380 return false 2381 } 2382 case 2: 2383 switch ma.cm { 2384 case schema.Maybe_Value: 2385 ma.cm = schema.Maybe_Absent 2386 ma.state = maState_initial 2387 return true 2388 default: 2389 return false 2390 } 2391 default: 2392 panic("unreachable") 2393 } 2394 } 2395 func (ma *_Msg3__ReprAssembler) AssembleEntry(k string) (datamodel.NodeAssembler, error) { 2396 switch ma.state { 2397 case maState_initial: 2398 // carry on 2399 case maState_midKey: 2400 panic("invalid state: AssembleEntry cannot be called when in the middle of assembling another key") 2401 case maState_expectValue: 2402 panic("invalid state: AssembleEntry cannot be called when expecting start of value assembly") 2403 case maState_midValue: 2404 if !ma.valueFinishTidy() { 2405 panic("invalid state: AssembleEntry cannot be called when in the middle of assembling a value") 2406 } // if tidy success: carry on 2407 case maState_finished: 2408 panic("invalid state: AssembleEntry cannot be called on an assembler that's already finished") 2409 } 2410 switch k { 2411 case "whee": 2412 if ma.s&fieldBit__Msg3_Whee != 0 { 2413 return nil, datamodel.ErrRepeatedMapKey{Key: &fieldName__Msg3_Whee_serial} 2414 } 2415 ma.s += fieldBit__Msg3_Whee 2416 ma.state = maState_midValue 2417 ma.f = 0 2418 ma.ca_whee.w = &ma.w.whee 2419 ma.ca_whee.m = &ma.cm 2420 return &ma.ca_whee, nil 2421 case "woot": 2422 if ma.s&fieldBit__Msg3_Woot != 0 { 2423 return nil, datamodel.ErrRepeatedMapKey{Key: &fieldName__Msg3_Woot_serial} 2424 } 2425 ma.s += fieldBit__Msg3_Woot 2426 ma.state = maState_midValue 2427 ma.f = 1 2428 ma.ca_woot.w = &ma.w.woot 2429 ma.ca_woot.m = &ma.cm 2430 return &ma.ca_woot, nil 2431 case "waga": 2432 if ma.s&fieldBit__Msg3_Waga != 0 { 2433 return nil, datamodel.ErrRepeatedMapKey{Key: &fieldName__Msg3_Waga_serial} 2434 } 2435 ma.s += fieldBit__Msg3_Waga 2436 ma.state = maState_midValue 2437 ma.f = 2 2438 ma.ca_waga.w = &ma.w.waga 2439 ma.ca_waga.m = &ma.cm 2440 return &ma.ca_waga, nil 2441 default: 2442 } 2443 return nil, schema.ErrInvalidKey{TypeName: "gendemo.Msg3.Repr", Key: &_String{k}} 2444 } 2445 func (ma *_Msg3__ReprAssembler) AssembleKey() datamodel.NodeAssembler { 2446 switch ma.state { 2447 case maState_initial: 2448 // carry on 2449 case maState_midKey: 2450 panic("invalid state: AssembleKey cannot be called when in the middle of assembling another key") 2451 case maState_expectValue: 2452 panic("invalid state: AssembleKey cannot be called when expecting start of value assembly") 2453 case maState_midValue: 2454 if !ma.valueFinishTidy() { 2455 panic("invalid state: AssembleKey cannot be called when in the middle of assembling a value") 2456 } // if tidy success: carry on 2457 case maState_finished: 2458 panic("invalid state: AssembleKey cannot be called on an assembler that's already finished") 2459 } 2460 ma.state = maState_midKey 2461 return (*_Msg3__ReprKeyAssembler)(ma) 2462 } 2463 func (ma *_Msg3__ReprAssembler) AssembleValue() datamodel.NodeAssembler { 2464 switch ma.state { 2465 case maState_initial: 2466 panic("invalid state: AssembleValue cannot be called when no key is primed") 2467 case maState_midKey: 2468 panic("invalid state: AssembleValue cannot be called when in the middle of assembling a key") 2469 case maState_expectValue: 2470 // carry on 2471 case maState_midValue: 2472 panic("invalid state: AssembleValue cannot be called when in the middle of assembling another value") 2473 case maState_finished: 2474 panic("invalid state: AssembleValue cannot be called on an assembler that's already finished") 2475 } 2476 ma.state = maState_midValue 2477 switch ma.f { 2478 case 0: 2479 ma.ca_whee.w = &ma.w.whee 2480 ma.ca_whee.m = &ma.cm 2481 return &ma.ca_whee 2482 case 1: 2483 ma.ca_woot.w = &ma.w.woot 2484 ma.ca_woot.m = &ma.cm 2485 return &ma.ca_woot 2486 case 2: 2487 ma.ca_waga.w = &ma.w.waga 2488 ma.ca_waga.m = &ma.cm 2489 return &ma.ca_waga 2490 default: 2491 panic("unreachable") 2492 } 2493 } 2494 func (ma *_Msg3__ReprAssembler) Finish() error { 2495 switch ma.state { 2496 case maState_initial: 2497 // carry on 2498 case maState_midKey: 2499 panic("invalid state: Finish cannot be called when in the middle of assembling a key") 2500 case maState_expectValue: 2501 panic("invalid state: Finish cannot be called when expecting start of value assembly") 2502 case maState_midValue: 2503 if !ma.valueFinishTidy() { 2504 panic("invalid state: Finish cannot be called when in the middle of assembling a value") 2505 } // if tidy success: carry on 2506 case maState_finished: 2507 panic("invalid state: Finish cannot be called on an assembler that's already finished") 2508 } 2509 if ma.s&fieldBits__Msg3_sufficient != fieldBits__Msg3_sufficient { 2510 err := schema.ErrMissingRequiredField{Missing: make([]string, 0)} 2511 if ma.s&fieldBit__Msg3_Whee == 0 { 2512 err.Missing = append(err.Missing, "whee") 2513 } 2514 if ma.s&fieldBit__Msg3_Woot == 0 { 2515 err.Missing = append(err.Missing, "woot") 2516 } 2517 if ma.s&fieldBit__Msg3_Waga == 0 { 2518 err.Missing = append(err.Missing, "waga") 2519 } 2520 return err 2521 } 2522 ma.state = maState_finished 2523 *ma.m = schema.Maybe_Value 2524 return nil 2525 } 2526 func (ma *_Msg3__ReprAssembler) KeyPrototype() datamodel.NodePrototype { 2527 return _String__Prototype{} 2528 } 2529 func (ma *_Msg3__ReprAssembler) ValuePrototype(k string) datamodel.NodePrototype { 2530 panic("todo structbuilder mapassembler repr valueprototype") 2531 } 2532 2533 type _Msg3__ReprKeyAssembler _Msg3__ReprAssembler 2534 2535 func (_Msg3__ReprKeyAssembler) BeginMap(sizeHint int64) (datamodel.MapAssembler, error) { 2536 return mixins.StringAssembler{TypeName: "gendemo.Msg3.Repr.KeyAssembler"}.BeginMap(0) 2537 } 2538 func (_Msg3__ReprKeyAssembler) BeginList(sizeHint int64) (datamodel.ListAssembler, error) { 2539 return mixins.StringAssembler{TypeName: "gendemo.Msg3.Repr.KeyAssembler"}.BeginList(0) 2540 } 2541 func (na *_Msg3__ReprKeyAssembler) AssignNull() error { 2542 return mixins.StringAssembler{TypeName: "gendemo.Msg3.Repr.KeyAssembler"}.AssignNull() 2543 } 2544 func (_Msg3__ReprKeyAssembler) AssignBool(bool) error { 2545 return mixins.StringAssembler{TypeName: "gendemo.Msg3.Repr.KeyAssembler"}.AssignBool(false) 2546 } 2547 func (_Msg3__ReprKeyAssembler) AssignInt(int64) error { 2548 return mixins.StringAssembler{TypeName: "gendemo.Msg3.Repr.KeyAssembler"}.AssignInt(0) 2549 } 2550 func (_Msg3__ReprKeyAssembler) AssignFloat(float64) error { 2551 return mixins.StringAssembler{TypeName: "gendemo.Msg3.Repr.KeyAssembler"}.AssignFloat(0) 2552 } 2553 func (ka *_Msg3__ReprKeyAssembler) AssignString(k string) error { 2554 if ka.state != maState_midKey { 2555 panic("misuse: KeyAssembler held beyond its valid lifetime") 2556 } 2557 switch k { 2558 case "whee": 2559 if ka.s&fieldBit__Msg3_Whee != 0 { 2560 return datamodel.ErrRepeatedMapKey{Key: &fieldName__Msg3_Whee_serial} 2561 } 2562 ka.s += fieldBit__Msg3_Whee 2563 ka.state = maState_expectValue 2564 ka.f = 0 2565 return nil 2566 case "woot": 2567 if ka.s&fieldBit__Msg3_Woot != 0 { 2568 return datamodel.ErrRepeatedMapKey{Key: &fieldName__Msg3_Woot_serial} 2569 } 2570 ka.s += fieldBit__Msg3_Woot 2571 ka.state = maState_expectValue 2572 ka.f = 1 2573 return nil 2574 case "waga": 2575 if ka.s&fieldBit__Msg3_Waga != 0 { 2576 return datamodel.ErrRepeatedMapKey{Key: &fieldName__Msg3_Waga_serial} 2577 } 2578 ka.s += fieldBit__Msg3_Waga 2579 ka.state = maState_expectValue 2580 ka.f = 2 2581 return nil 2582 } 2583 return schema.ErrInvalidKey{TypeName: "gendemo.Msg3.Repr", Key: &_String{k}} 2584 } 2585 func (_Msg3__ReprKeyAssembler) AssignBytes([]byte) error { 2586 return mixins.StringAssembler{TypeName: "gendemo.Msg3.Repr.KeyAssembler"}.AssignBytes(nil) 2587 } 2588 func (_Msg3__ReprKeyAssembler) AssignLink(datamodel.Link) error { 2589 return mixins.StringAssembler{TypeName: "gendemo.Msg3.Repr.KeyAssembler"}.AssignLink(nil) 2590 } 2591 func (ka *_Msg3__ReprKeyAssembler) AssignNode(v datamodel.Node) error { 2592 if v2, err := v.AsString(); err != nil { 2593 return err 2594 } else { 2595 return ka.AssignString(v2) 2596 } 2597 } 2598 func (_Msg3__ReprKeyAssembler) Prototype() datamodel.NodePrototype { 2599 return _String__Prototype{} 2600 } 2601 2602 func (n String) String() string { 2603 return n.x 2604 } 2605 func (_String__Prototype) fromString(w *_String, v string) error { 2606 *w = _String{v} 2607 return nil 2608 } 2609 func (_String__Prototype) FromString(v string) (String, error) { 2610 n := _String{v} 2611 return &n, nil 2612 } 2613 2614 type _String__Maybe struct { 2615 m schema.Maybe 2616 v _String 2617 } 2618 type MaybeString = *_String__Maybe 2619 2620 func (m MaybeString) IsNull() bool { 2621 return m.m == schema.Maybe_Null 2622 } 2623 func (m MaybeString) IsAbsent() bool { 2624 return m.m == schema.Maybe_Absent 2625 } 2626 func (m MaybeString) Exists() bool { 2627 return m.m == schema.Maybe_Value 2628 } 2629 func (m MaybeString) AsNode() datamodel.Node { 2630 switch m.m { 2631 case schema.Maybe_Absent: 2632 return datamodel.Absent 2633 case schema.Maybe_Null: 2634 return datamodel.Null 2635 case schema.Maybe_Value: 2636 return &m.v 2637 default: 2638 panic("unreachable") 2639 } 2640 } 2641 func (m MaybeString) Must() String { 2642 if !m.Exists() { 2643 panic("unbox of a maybe rejected") 2644 } 2645 return &m.v 2646 } 2647 2648 var _ datamodel.Node = (String)(&_String{}) 2649 var _ schema.TypedNode = (String)(&_String{}) 2650 2651 func (String) Kind() datamodel.Kind { 2652 return datamodel.Kind_String 2653 } 2654 func (String) LookupByString(string) (datamodel.Node, error) { 2655 return mixins.String{TypeName: "gendemo.String"}.LookupByString("") 2656 } 2657 func (String) LookupByNode(datamodel.Node) (datamodel.Node, error) { 2658 return mixins.String{TypeName: "gendemo.String"}.LookupByNode(nil) 2659 } 2660 func (String) LookupByIndex(idx int64) (datamodel.Node, error) { 2661 return mixins.String{TypeName: "gendemo.String"}.LookupByIndex(0) 2662 } 2663 func (String) LookupBySegment(seg datamodel.PathSegment) (datamodel.Node, error) { 2664 return mixins.String{TypeName: "gendemo.String"}.LookupBySegment(seg) 2665 } 2666 func (String) MapIterator() datamodel.MapIterator { 2667 return nil 2668 } 2669 func (String) ListIterator() datamodel.ListIterator { 2670 return nil 2671 } 2672 func (String) Length() int64 { 2673 return -1 2674 } 2675 func (String) IsAbsent() bool { 2676 return false 2677 } 2678 func (String) IsNull() bool { 2679 return false 2680 } 2681 func (String) AsBool() (bool, error) { 2682 return mixins.String{TypeName: "gendemo.String"}.AsBool() 2683 } 2684 func (String) AsInt() (int64, error) { 2685 return mixins.String{TypeName: "gendemo.String"}.AsInt() 2686 } 2687 func (String) AsFloat() (float64, error) { 2688 return mixins.String{TypeName: "gendemo.String"}.AsFloat() 2689 } 2690 func (n String) AsString() (string, error) { 2691 return n.x, nil 2692 } 2693 func (String) AsBytes() ([]byte, error) { 2694 return mixins.String{TypeName: "gendemo.String"}.AsBytes() 2695 } 2696 func (String) AsLink() (datamodel.Link, error) { 2697 return mixins.String{TypeName: "gendemo.String"}.AsLink() 2698 } 2699 func (String) Prototype() datamodel.NodePrototype { 2700 return _String__Prototype{} 2701 } 2702 2703 type _String__Prototype struct{} 2704 2705 func (_String__Prototype) NewBuilder() datamodel.NodeBuilder { 2706 var nb _String__Builder 2707 nb.Reset() 2708 return &nb 2709 } 2710 2711 type _String__Builder struct { 2712 _String__Assembler 2713 } 2714 2715 func (nb *_String__Builder) Build() datamodel.Node { 2716 if *nb.m != schema.Maybe_Value { 2717 panic("invalid state: cannot call Build on an assembler that's not finished") 2718 } 2719 return nb.w 2720 } 2721 func (nb *_String__Builder) Reset() { 2722 var w _String 2723 var m schema.Maybe 2724 *nb = _String__Builder{_String__Assembler{w: &w, m: &m}} 2725 } 2726 2727 type _String__Assembler struct { 2728 w *_String 2729 m *schema.Maybe 2730 } 2731 2732 func (na *_String__Assembler) reset() {} 2733 func (_String__Assembler) BeginMap(sizeHint int64) (datamodel.MapAssembler, error) { 2734 return mixins.StringAssembler{TypeName: "gendemo.String"}.BeginMap(0) 2735 } 2736 func (_String__Assembler) BeginList(sizeHint int64) (datamodel.ListAssembler, error) { 2737 return mixins.StringAssembler{TypeName: "gendemo.String"}.BeginList(0) 2738 } 2739 func (na *_String__Assembler) AssignNull() error { 2740 switch *na.m { 2741 case allowNull: 2742 *na.m = schema.Maybe_Null 2743 return nil 2744 case schema.Maybe_Absent: 2745 return mixins.StringAssembler{TypeName: "gendemo.String"}.AssignNull() 2746 case schema.Maybe_Value, schema.Maybe_Null: 2747 panic("invalid state: cannot assign into assembler that's already finished") 2748 } 2749 panic("unreachable") 2750 } 2751 func (_String__Assembler) AssignBool(bool) error { 2752 return mixins.StringAssembler{TypeName: "gendemo.String"}.AssignBool(false) 2753 } 2754 func (_String__Assembler) AssignInt(int64) error { 2755 return mixins.StringAssembler{TypeName: "gendemo.String"}.AssignInt(0) 2756 } 2757 func (_String__Assembler) AssignFloat(float64) error { 2758 return mixins.StringAssembler{TypeName: "gendemo.String"}.AssignFloat(0) 2759 } 2760 func (na *_String__Assembler) AssignString(v string) error { 2761 switch *na.m { 2762 case schema.Maybe_Value, schema.Maybe_Null: 2763 panic("invalid state: cannot assign into assembler that's already finished") 2764 } 2765 na.w.x = v 2766 *na.m = schema.Maybe_Value 2767 return nil 2768 } 2769 func (_String__Assembler) AssignBytes([]byte) error { 2770 return mixins.StringAssembler{TypeName: "gendemo.String"}.AssignBytes(nil) 2771 } 2772 func (_String__Assembler) AssignLink(datamodel.Link) error { 2773 return mixins.StringAssembler{TypeName: "gendemo.String"}.AssignLink(nil) 2774 } 2775 func (na *_String__Assembler) AssignNode(v datamodel.Node) error { 2776 if v.IsNull() { 2777 return na.AssignNull() 2778 } 2779 if v2, ok := v.(*_String); ok { 2780 switch *na.m { 2781 case schema.Maybe_Value, schema.Maybe_Null: 2782 panic("invalid state: cannot assign into assembler that's already finished") 2783 } 2784 *na.w = *v2 2785 *na.m = schema.Maybe_Value 2786 return nil 2787 } 2788 if v2, err := v.AsString(); err != nil { 2789 return err 2790 } else { 2791 return na.AssignString(v2) 2792 } 2793 } 2794 func (_String__Assembler) Prototype() datamodel.NodePrototype { 2795 return _String__Prototype{} 2796 } 2797 func (String) Type() schema.Type { 2798 return nil /*TODO:typelit*/ 2799 } 2800 func (n String) Representation() datamodel.Node { 2801 return (*_String__Repr)(n) 2802 } 2803 2804 type _String__Repr = _String 2805 2806 var _ datamodel.Node = &_String__Repr{} 2807 2808 type _String__ReprPrototype = _String__Prototype 2809 type _String__ReprAssembler = _String__Assembler 2810 2811 func (n _UnionKinded) AsInterface() _UnionKinded__iface { 2812 switch n.tag { 2813 case 1: 2814 return &n.x1 2815 case 2: 2816 return &n.x2 2817 case 3: 2818 return &n.x3 2819 default: 2820 panic("invalid union state; how did you create this object?") 2821 } 2822 } 2823 2824 type _UnionKinded__Maybe struct { 2825 m schema.Maybe 2826 v UnionKinded 2827 } 2828 type MaybeUnionKinded = *_UnionKinded__Maybe 2829 2830 func (m MaybeUnionKinded) IsNull() bool { 2831 return m.m == schema.Maybe_Null 2832 } 2833 func (m MaybeUnionKinded) IsAbsent() bool { 2834 return m.m == schema.Maybe_Absent 2835 } 2836 func (m MaybeUnionKinded) Exists() bool { 2837 return m.m == schema.Maybe_Value 2838 } 2839 func (m MaybeUnionKinded) AsNode() datamodel.Node { 2840 switch m.m { 2841 case schema.Maybe_Absent: 2842 return datamodel.Absent 2843 case schema.Maybe_Null: 2844 return datamodel.Null 2845 case schema.Maybe_Value: 2846 return m.v 2847 default: 2848 panic("unreachable") 2849 } 2850 } 2851 func (m MaybeUnionKinded) Must() UnionKinded { 2852 if !m.Exists() { 2853 panic("unbox of a maybe rejected") 2854 } 2855 return m.v 2856 } 2857 2858 var ( 2859 memberName__UnionKinded_Foo = _String{"Foo"} 2860 memberName__UnionKinded_Bar = _String{"Bar"} 2861 memberName__UnionKinded_Baz = _String{"Baz"} 2862 ) 2863 var _ datamodel.Node = (UnionKinded)(&_UnionKinded{}) 2864 var _ schema.TypedNode = (UnionKinded)(&_UnionKinded{}) 2865 2866 func (UnionKinded) Kind() datamodel.Kind { 2867 return datamodel.Kind_Map 2868 } 2869 func (n UnionKinded) LookupByString(key string) (datamodel.Node, error) { 2870 switch key { 2871 case "Foo": 2872 if n.tag != 1 { 2873 return nil, datamodel.ErrNotExists{Segment: datamodel.PathSegmentOfString(key)} 2874 } 2875 return &n.x1, nil 2876 case "Bar": 2877 if n.tag != 2 { 2878 return nil, datamodel.ErrNotExists{Segment: datamodel.PathSegmentOfString(key)} 2879 } 2880 return &n.x2, nil 2881 case "Baz": 2882 if n.tag != 3 { 2883 return nil, datamodel.ErrNotExists{Segment: datamodel.PathSegmentOfString(key)} 2884 } 2885 return &n.x3, nil 2886 default: 2887 return nil, schema.ErrNoSuchField{Type: nil /*TODO*/, Field: datamodel.PathSegmentOfString(key)} 2888 } 2889 } 2890 func (n UnionKinded) LookupByNode(key datamodel.Node) (datamodel.Node, error) { 2891 ks, err := key.AsString() 2892 if err != nil { 2893 return nil, err 2894 } 2895 return n.LookupByString(ks) 2896 } 2897 func (UnionKinded) LookupByIndex(idx int64) (datamodel.Node, error) { 2898 return mixins.Map{TypeName: "gendemo.UnionKinded"}.LookupByIndex(0) 2899 } 2900 func (n UnionKinded) LookupBySegment(seg datamodel.PathSegment) (datamodel.Node, error) { 2901 return n.LookupByString(seg.String()) 2902 } 2903 func (n UnionKinded) MapIterator() datamodel.MapIterator { 2904 return &_UnionKinded__MapItr{n, false} 2905 } 2906 2907 type _UnionKinded__MapItr struct { 2908 n UnionKinded 2909 done bool 2910 } 2911 2912 func (itr *_UnionKinded__MapItr) Next() (k datamodel.Node, v datamodel.Node, _ error) { 2913 if itr.done { 2914 return nil, nil, datamodel.ErrIteratorOverread{} 2915 } 2916 switch itr.n.tag { 2917 case 1: 2918 k, v = &memberName__UnionKinded_Foo, &itr.n.x1 2919 case 2: 2920 k, v = &memberName__UnionKinded_Bar, &itr.n.x2 2921 case 3: 2922 k, v = &memberName__UnionKinded_Baz, &itr.n.x3 2923 default: 2924 panic("unreachable") 2925 } 2926 itr.done = true 2927 return 2928 } 2929 func (itr *_UnionKinded__MapItr) Done() bool { 2930 return itr.done 2931 } 2932 2933 func (UnionKinded) ListIterator() datamodel.ListIterator { 2934 return nil 2935 } 2936 func (UnionKinded) Length() int64 { 2937 return 1 2938 } 2939 func (UnionKinded) IsAbsent() bool { 2940 return false 2941 } 2942 func (UnionKinded) IsNull() bool { 2943 return false 2944 } 2945 func (UnionKinded) AsBool() (bool, error) { 2946 return mixins.Map{TypeName: "gendemo.UnionKinded"}.AsBool() 2947 } 2948 func (UnionKinded) AsInt() (int64, error) { 2949 return mixins.Map{TypeName: "gendemo.UnionKinded"}.AsInt() 2950 } 2951 func (UnionKinded) AsFloat() (float64, error) { 2952 return mixins.Map{TypeName: "gendemo.UnionKinded"}.AsFloat() 2953 } 2954 func (UnionKinded) AsString() (string, error) { 2955 return mixins.Map{TypeName: "gendemo.UnionKinded"}.AsString() 2956 } 2957 func (UnionKinded) AsBytes() ([]byte, error) { 2958 return mixins.Map{TypeName: "gendemo.UnionKinded"}.AsBytes() 2959 } 2960 func (UnionKinded) AsLink() (datamodel.Link, error) { 2961 return mixins.Map{TypeName: "gendemo.UnionKinded"}.AsLink() 2962 } 2963 func (UnionKinded) Prototype() datamodel.NodePrototype { 2964 return _UnionKinded__Prototype{} 2965 } 2966 2967 type _UnionKinded__Prototype struct{} 2968 2969 func (_UnionKinded__Prototype) NewBuilder() datamodel.NodeBuilder { 2970 var nb _UnionKinded__Builder 2971 nb.Reset() 2972 return &nb 2973 } 2974 2975 type _UnionKinded__Builder struct { 2976 _UnionKinded__Assembler 2977 } 2978 2979 func (nb *_UnionKinded__Builder) Build() datamodel.Node { 2980 if *nb.m != schema.Maybe_Value { 2981 panic("invalid state: cannot call Build on an assembler that's not finished") 2982 } 2983 return nb.w 2984 } 2985 func (nb *_UnionKinded__Builder) Reset() { 2986 var w _UnionKinded 2987 var m schema.Maybe 2988 *nb = _UnionKinded__Builder{_UnionKinded__Assembler{w: &w, m: &m}} 2989 } 2990 2991 type _UnionKinded__Assembler struct { 2992 w *_UnionKinded 2993 m *schema.Maybe 2994 state maState 2995 2996 cm schema.Maybe 2997 ca1 _Foo__Assembler 2998 2999 ca2 _Bar__Assembler 3000 3001 ca3 _Baz__Assembler 3002 ca uint 3003 } 3004 3005 func (na *_UnionKinded__Assembler) reset() { 3006 na.state = maState_initial 3007 switch na.ca { 3008 case 0: 3009 return 3010 case 1: 3011 na.ca1.reset() 3012 3013 case 2: 3014 na.ca2.reset() 3015 3016 case 3: 3017 na.ca3.reset() 3018 default: 3019 panic("unreachable") 3020 } 3021 na.ca = 0 3022 na.cm = schema.Maybe_Absent 3023 } 3024 func (na *_UnionKinded__Assembler) BeginMap(int64) (datamodel.MapAssembler, error) { 3025 switch *na.m { 3026 case schema.Maybe_Value, schema.Maybe_Null: 3027 panic("invalid state: cannot assign into assembler that's already finished") 3028 case midvalue: 3029 panic("invalid state: it makes no sense to 'begin' twice on the same assembler!") 3030 } 3031 *na.m = midvalue 3032 if na.w == nil { 3033 na.w = &_UnionKinded{} 3034 } 3035 return na, nil 3036 } 3037 func (_UnionKinded__Assembler) BeginList(sizeHint int64) (datamodel.ListAssembler, error) { 3038 return mixins.MapAssembler{TypeName: "gendemo.UnionKinded"}.BeginList(0) 3039 } 3040 func (na *_UnionKinded__Assembler) AssignNull() error { 3041 switch *na.m { 3042 case allowNull: 3043 *na.m = schema.Maybe_Null 3044 return nil 3045 case schema.Maybe_Absent: 3046 return mixins.MapAssembler{TypeName: "gendemo.UnionKinded"}.AssignNull() 3047 case schema.Maybe_Value, schema.Maybe_Null: 3048 panic("invalid state: cannot assign into assembler that's already finished") 3049 case midvalue: 3050 panic("invalid state: cannot assign null into an assembler that's already begun working on recursive structures!") 3051 } 3052 panic("unreachable") 3053 } 3054 func (_UnionKinded__Assembler) AssignBool(bool) error { 3055 return mixins.MapAssembler{TypeName: "gendemo.UnionKinded"}.AssignBool(false) 3056 } 3057 func (_UnionKinded__Assembler) AssignInt(int64) error { 3058 return mixins.MapAssembler{TypeName: "gendemo.UnionKinded"}.AssignInt(0) 3059 } 3060 func (_UnionKinded__Assembler) AssignFloat(float64) error { 3061 return mixins.MapAssembler{TypeName: "gendemo.UnionKinded"}.AssignFloat(0) 3062 } 3063 func (_UnionKinded__Assembler) AssignString(string) error { 3064 return mixins.MapAssembler{TypeName: "gendemo.UnionKinded"}.AssignString("") 3065 } 3066 func (_UnionKinded__Assembler) AssignBytes([]byte) error { 3067 return mixins.MapAssembler{TypeName: "gendemo.UnionKinded"}.AssignBytes(nil) 3068 } 3069 func (_UnionKinded__Assembler) AssignLink(datamodel.Link) error { 3070 return mixins.MapAssembler{TypeName: "gendemo.UnionKinded"}.AssignLink(nil) 3071 } 3072 func (na *_UnionKinded__Assembler) AssignNode(v datamodel.Node) error { 3073 if v.IsNull() { 3074 return na.AssignNull() 3075 } 3076 if v2, ok := v.(*_UnionKinded); ok { 3077 switch *na.m { 3078 case schema.Maybe_Value, schema.Maybe_Null: 3079 panic("invalid state: cannot assign into assembler that's already finished") 3080 case midvalue: 3081 panic("invalid state: cannot assign null into an assembler that's already begun working on recursive structures!") 3082 } 3083 if na.w == nil { 3084 na.w = v2 3085 *na.m = schema.Maybe_Value 3086 return nil 3087 } 3088 *na.w = *v2 3089 *na.m = schema.Maybe_Value 3090 return nil 3091 } 3092 if v.Kind() != datamodel.Kind_Map { 3093 return datamodel.ErrWrongKind{TypeName: "gendemo.UnionKinded", MethodName: "AssignNode", AppropriateKind: datamodel.KindSet_JustMap, ActualKind: v.Kind()} 3094 } 3095 itr := v.MapIterator() 3096 for !itr.Done() { 3097 k, v, err := itr.Next() 3098 if err != nil { 3099 return err 3100 } 3101 if err := na.AssembleKey().AssignNode(k); err != nil { 3102 return err 3103 } 3104 if err := na.AssembleValue().AssignNode(v); err != nil { 3105 return err 3106 } 3107 } 3108 return na.Finish() 3109 } 3110 func (_UnionKinded__Assembler) Prototype() datamodel.NodePrototype { 3111 return _UnionKinded__Prototype{} 3112 } 3113 func (ma *_UnionKinded__Assembler) valueFinishTidy() bool { 3114 switch ma.cm { 3115 case schema.Maybe_Value: 3116 ma.state = maState_initial 3117 return true 3118 default: 3119 return false 3120 } 3121 } 3122 func (ma *_UnionKinded__Assembler) AssembleEntry(k string) (datamodel.NodeAssembler, error) { 3123 switch ma.state { 3124 case maState_initial: 3125 // carry on 3126 case maState_midKey: 3127 panic("invalid state: AssembleEntry cannot be called when in the middle of assembling another key") 3128 case maState_expectValue: 3129 panic("invalid state: AssembleEntry cannot be called when expecting start of value assembly") 3130 case maState_midValue: 3131 if !ma.valueFinishTidy() { 3132 panic("invalid state: AssembleEntry cannot be called when in the middle of assembling a value") 3133 } // if tidy success: carry on for the moment, but we'll still be erroring shortly. 3134 case maState_finished: 3135 panic("invalid state: AssembleEntry cannot be called on an assembler that's already finished") 3136 } 3137 if ma.ca != 0 { 3138 return nil, schema.ErrNotUnionStructure{TypeName: "gendemo.UnionKinded", Detail: "cannot add another entry -- a union can only contain one thing!"} 3139 } 3140 switch k { 3141 case "Foo": 3142 ma.state = maState_midValue 3143 ma.ca = 1 3144 ma.w.tag = 1 3145 ma.ca1.w = &ma.w.x1 3146 ma.ca1.m = &ma.cm 3147 return &ma.ca1, nil 3148 case "Bar": 3149 ma.state = maState_midValue 3150 ma.ca = 2 3151 ma.w.tag = 2 3152 ma.ca2.w = &ma.w.x2 3153 ma.ca2.m = &ma.cm 3154 return &ma.ca2, nil 3155 case "Baz": 3156 ma.state = maState_midValue 3157 ma.ca = 3 3158 ma.w.tag = 3 3159 ma.ca3.w = &ma.w.x3 3160 ma.ca3.m = &ma.cm 3161 return &ma.ca3, nil 3162 } 3163 return nil, schema.ErrInvalidKey{TypeName: "gendemo.UnionKinded", Key: &_String{k}} 3164 } 3165 func (ma *_UnionKinded__Assembler) AssembleKey() datamodel.NodeAssembler { 3166 switch ma.state { 3167 case maState_initial: 3168 // carry on 3169 case maState_midKey: 3170 panic("invalid state: AssembleKey cannot be called when in the middle of assembling another key") 3171 case maState_expectValue: 3172 panic("invalid state: AssembleKey cannot be called when expecting start of value assembly") 3173 case maState_midValue: 3174 if !ma.valueFinishTidy() { 3175 panic("invalid state: AssembleKey cannot be called when in the middle of assembling a value") 3176 } // if tidy success: carry on for the moment, but we'll still be erroring shortly... or rather, the keyassembler will be. 3177 case maState_finished: 3178 panic("invalid state: AssembleKey cannot be called on an assembler that's already finished") 3179 } 3180 ma.state = maState_midKey 3181 return (*_UnionKinded__KeyAssembler)(ma) 3182 } 3183 func (ma *_UnionKinded__Assembler) AssembleValue() datamodel.NodeAssembler { 3184 switch ma.state { 3185 case maState_initial: 3186 panic("invalid state: AssembleValue cannot be called when no key is primed") 3187 case maState_midKey: 3188 panic("invalid state: AssembleValue cannot be called when in the middle of assembling a key") 3189 case maState_expectValue: 3190 // carry on 3191 case maState_midValue: 3192 panic("invalid state: AssembleValue cannot be called when in the middle of assembling another value") 3193 case maState_finished: 3194 panic("invalid state: AssembleValue cannot be called on an assembler that's already finished") 3195 } 3196 ma.state = maState_midValue 3197 switch ma.ca { 3198 case 1: 3199 ma.ca1.w = &ma.w.x1 3200 ma.ca1.m = &ma.cm 3201 return &ma.ca1 3202 case 2: 3203 ma.ca2.w = &ma.w.x2 3204 ma.ca2.m = &ma.cm 3205 return &ma.ca2 3206 case 3: 3207 ma.ca3.w = &ma.w.x3 3208 ma.ca3.m = &ma.cm 3209 return &ma.ca3 3210 default: 3211 panic("unreachable") 3212 } 3213 } 3214 func (ma *_UnionKinded__Assembler) Finish() error { 3215 switch ma.state { 3216 case maState_initial: 3217 // carry on 3218 case maState_midKey: 3219 panic("invalid state: Finish cannot be called when in the middle of assembling a key") 3220 case maState_expectValue: 3221 panic("invalid state: Finish cannot be called when expecting start of value assembly") 3222 case maState_midValue: 3223 if !ma.valueFinishTidy() { 3224 panic("invalid state: Finish cannot be called when in the middle of assembling a value") 3225 } // if tidy success: carry on 3226 case maState_finished: 3227 panic("invalid state: Finish cannot be called on an assembler that's already finished") 3228 } 3229 if ma.ca == 0 { 3230 return schema.ErrNotUnionStructure{TypeName: "gendemo.UnionKinded", Detail: "a union must have exactly one entry (not none)!"} 3231 } 3232 ma.state = maState_finished 3233 *ma.m = schema.Maybe_Value 3234 return nil 3235 } 3236 func (ma *_UnionKinded__Assembler) KeyPrototype() datamodel.NodePrototype { 3237 return _String__Prototype{} 3238 } 3239 func (ma *_UnionKinded__Assembler) ValuePrototype(k string) datamodel.NodePrototype { 3240 switch k { 3241 case "Foo": 3242 return _Foo__Prototype{} 3243 case "Bar": 3244 return _Bar__Prototype{} 3245 case "Baz": 3246 return _Baz__Prototype{} 3247 default: 3248 return nil 3249 } 3250 } 3251 3252 type _UnionKinded__KeyAssembler _UnionKinded__Assembler 3253 3254 func (_UnionKinded__KeyAssembler) BeginMap(sizeHint int64) (datamodel.MapAssembler, error) { 3255 return mixins.StringAssembler{TypeName: "gendemo.UnionKinded.KeyAssembler"}.BeginMap(0) 3256 } 3257 func (_UnionKinded__KeyAssembler) BeginList(sizeHint int64) (datamodel.ListAssembler, error) { 3258 return mixins.StringAssembler{TypeName: "gendemo.UnionKinded.KeyAssembler"}.BeginList(0) 3259 } 3260 func (na *_UnionKinded__KeyAssembler) AssignNull() error { 3261 return mixins.StringAssembler{TypeName: "gendemo.UnionKinded.KeyAssembler"}.AssignNull() 3262 } 3263 func (_UnionKinded__KeyAssembler) AssignBool(bool) error { 3264 return mixins.StringAssembler{TypeName: "gendemo.UnionKinded.KeyAssembler"}.AssignBool(false) 3265 } 3266 func (_UnionKinded__KeyAssembler) AssignInt(int64) error { 3267 return mixins.StringAssembler{TypeName: "gendemo.UnionKinded.KeyAssembler"}.AssignInt(0) 3268 } 3269 func (_UnionKinded__KeyAssembler) AssignFloat(float64) error { 3270 return mixins.StringAssembler{TypeName: "gendemo.UnionKinded.KeyAssembler"}.AssignFloat(0) 3271 } 3272 func (ka *_UnionKinded__KeyAssembler) AssignString(k string) error { 3273 if ka.state != maState_midKey { 3274 panic("misuse: KeyAssembler held beyond its valid lifetime") 3275 } 3276 if ka.ca != 0 { 3277 return schema.ErrNotUnionStructure{TypeName: "gendemo.UnionKinded", Detail: "cannot add another entry -- a union can only contain one thing!"} 3278 } 3279 switch k { 3280 case "Foo": 3281 ka.ca = 1 3282 ka.w.tag = 1 3283 ka.state = maState_expectValue 3284 return nil 3285 case "Bar": 3286 ka.ca = 2 3287 ka.w.tag = 2 3288 ka.state = maState_expectValue 3289 return nil 3290 case "Baz": 3291 ka.ca = 3 3292 ka.w.tag = 3 3293 ka.state = maState_expectValue 3294 return nil 3295 } 3296 return schema.ErrInvalidKey{TypeName: "gendemo.UnionKinded", Key: &_String{k}} // TODO: error quality: ErrInvalidUnionDiscriminant ? 3297 } 3298 func (_UnionKinded__KeyAssembler) AssignBytes([]byte) error { 3299 return mixins.StringAssembler{TypeName: "gendemo.UnionKinded.KeyAssembler"}.AssignBytes(nil) 3300 } 3301 func (_UnionKinded__KeyAssembler) AssignLink(datamodel.Link) error { 3302 return mixins.StringAssembler{TypeName: "gendemo.UnionKinded.KeyAssembler"}.AssignLink(nil) 3303 } 3304 func (ka *_UnionKinded__KeyAssembler) AssignNode(v datamodel.Node) error { 3305 if v2, err := v.AsString(); err != nil { 3306 return err 3307 } else { 3308 return ka.AssignString(v2) 3309 } 3310 } 3311 func (_UnionKinded__KeyAssembler) Prototype() datamodel.NodePrototype { 3312 return _String__Prototype{} 3313 } 3314 func (UnionKinded) Type() schema.Type { 3315 return nil /*TODO:typelit*/ 3316 } 3317 func (n UnionKinded) Representation() datamodel.Node { 3318 return (*_UnionKinded__Repr)(n) 3319 } 3320 3321 type _UnionKinded__Repr _UnionKinded 3322 3323 var _ datamodel.Node = &_UnionKinded__Repr{} 3324 3325 func (n *_UnionKinded__Repr) Kind() datamodel.Kind { 3326 switch n.tag { 3327 case 1: 3328 return datamodel.Kind_Int 3329 case 2: 3330 return datamodel.Kind_Bool 3331 case 3: 3332 return datamodel.Kind_String 3333 default: 3334 panic("unreachable") 3335 } 3336 } 3337 func (n *_UnionKinded__Repr) LookupByString(key string) (datamodel.Node, error) { 3338 return nil, datamodel.ErrWrongKind{TypeName: "gendemo.UnionKinded.Repr", MethodName: "LookupByString", AppropriateKind: datamodel.KindSet_JustMap, ActualKind: n.Kind()} 3339 } 3340 func (n *_UnionKinded__Repr) LookupByNode(key datamodel.Node) (datamodel.Node, error) { 3341 return nil, datamodel.ErrWrongKind{TypeName: "gendemo.UnionKinded.Repr", MethodName: "LookupByNode", AppropriateKind: datamodel.KindSet_Recursive, ActualKind: n.Kind()} 3342 } 3343 func (n *_UnionKinded__Repr) LookupByIndex(idx int64) (datamodel.Node, error) { 3344 return nil, datamodel.ErrWrongKind{TypeName: "gendemo.UnionKinded.Repr", MethodName: "LookupByIndex", AppropriateKind: datamodel.KindSet_JustList, ActualKind: n.Kind()} 3345 } 3346 func (n *_UnionKinded__Repr) LookupBySegment(seg datamodel.PathSegment) (datamodel.Node, error) { 3347 return nil, datamodel.ErrWrongKind{TypeName: "gendemo.UnionKinded.Repr", MethodName: "LookupBySegment", AppropriateKind: datamodel.KindSet_Recursive, ActualKind: n.Kind()} 3348 } 3349 func (n *_UnionKinded__Repr) MapIterator() datamodel.MapIterator { 3350 return nil 3351 } 3352 func (n *_UnionKinded__Repr) ListIterator() datamodel.ListIterator { 3353 return nil 3354 } 3355 func (n *_UnionKinded__Repr) Length() int64 { 3356 return -1 3357 } 3358 func (n *_UnionKinded__Repr) IsAbsent() bool { 3359 return false 3360 } 3361 func (n *_UnionKinded__Repr) IsNull() bool { 3362 return false 3363 } 3364 func (n *_UnionKinded__Repr) AsBool() (bool, error) { 3365 switch n.tag { 3366 case 2: 3367 return n.x2.Representation().AsBool() 3368 default: 3369 return false, datamodel.ErrWrongKind{TypeName: "gendemo.UnionKinded.Repr", MethodName: "AsBool", AppropriateKind: datamodel.KindSet_JustBool, ActualKind: n.Kind()} 3370 } 3371 } 3372 func (n *_UnionKinded__Repr) AsInt() (int64, error) { 3373 switch n.tag { 3374 case 1: 3375 return n.x1.Representation().AsInt() 3376 default: 3377 return 0, datamodel.ErrWrongKind{TypeName: "gendemo.UnionKinded.Repr", MethodName: "AsInt", AppropriateKind: datamodel.KindSet_JustInt, ActualKind: n.Kind()} 3378 } 3379 } 3380 func (n *_UnionKinded__Repr) AsFloat() (float64, error) { 3381 return 0, datamodel.ErrWrongKind{TypeName: "gendemo.UnionKinded.Repr", MethodName: "AsFloat", AppropriateKind: datamodel.KindSet_JustFloat, ActualKind: n.Kind()} 3382 } 3383 func (n *_UnionKinded__Repr) AsString() (string, error) { 3384 switch n.tag { 3385 case 3: 3386 return n.x3.Representation().AsString() 3387 default: 3388 return "", datamodel.ErrWrongKind{TypeName: "gendemo.UnionKinded.Repr", MethodName: "AsString", AppropriateKind: datamodel.KindSet_JustString, ActualKind: n.Kind()} 3389 } 3390 } 3391 func (n *_UnionKinded__Repr) AsBytes() ([]byte, error) { 3392 return nil, datamodel.ErrWrongKind{TypeName: "gendemo.UnionKinded.Repr", MethodName: "AsBytes", AppropriateKind: datamodel.KindSet_JustBytes, ActualKind: n.Kind()} 3393 } 3394 func (n *_UnionKinded__Repr) AsLink() (datamodel.Link, error) { 3395 return nil, datamodel.ErrWrongKind{TypeName: "gendemo.UnionKinded.Repr", MethodName: "AsLink", AppropriateKind: datamodel.KindSet_JustLink, ActualKind: n.Kind()} 3396 } 3397 func (_UnionKinded__Repr) Prototype() datamodel.NodePrototype { 3398 return _UnionKinded__ReprPrototype{} 3399 } 3400 3401 type _UnionKinded__ReprPrototype struct{} 3402 3403 func (_UnionKinded__ReprPrototype) NewBuilder() datamodel.NodeBuilder { 3404 var nb _UnionKinded__ReprBuilder 3405 nb.Reset() 3406 return &nb 3407 } 3408 3409 type _UnionKinded__ReprBuilder struct { 3410 _UnionKinded__ReprAssembler 3411 } 3412 3413 func (nb *_UnionKinded__ReprBuilder) Build() datamodel.Node { 3414 if *nb.m != schema.Maybe_Value { 3415 panic("invalid state: cannot call Build on an assembler that's not finished") 3416 } 3417 return nb.w 3418 } 3419 func (nb *_UnionKinded__ReprBuilder) Reset() { 3420 var w _UnionKinded 3421 var m schema.Maybe 3422 *nb = _UnionKinded__ReprBuilder{_UnionKinded__ReprAssembler{w: &w, m: &m}} 3423 } 3424 3425 type _UnionKinded__ReprAssembler struct { 3426 w *_UnionKinded 3427 m *schema.Maybe 3428 ca1 _Foo__ReprAssembler 3429 ca2 _Bar__ReprAssembler 3430 ca3 _Baz__ReprAssembler 3431 ca uint 3432 } 3433 3434 func (na *_UnionKinded__ReprAssembler) reset() { 3435 switch na.ca { 3436 case 0: 3437 return 3438 case 1: 3439 na.ca1.reset() 3440 case 2: 3441 na.ca2.reset() 3442 case 3: 3443 na.ca3.reset() 3444 default: 3445 panic("unreachable") 3446 } 3447 na.ca = 0 3448 } 3449 func (na *_UnionKinded__ReprAssembler) BeginMap(sizeHint int64) (datamodel.MapAssembler, error) { 3450 switch *na.m { 3451 case schema.Maybe_Value, schema.Maybe_Null: 3452 panic("invalid state: cannot assign into assembler that's already finished") 3453 case midvalue: 3454 panic("invalid state: cannot assign into assembler that's already working on a larger structure!") 3455 } 3456 return nil, schema.ErrNotUnionStructure{TypeName: "gendemo.UnionKinded.Repr", Detail: "BeginMap called but is not valid for any of the kinds that are valid members of this union"} 3457 } 3458 func (na *_UnionKinded__ReprAssembler) BeginList(sizeHint int64) (datamodel.ListAssembler, error) { 3459 switch *na.m { 3460 case schema.Maybe_Value, schema.Maybe_Null: 3461 panic("invalid state: cannot assign into assembler that's already finished") 3462 case midvalue: 3463 panic("invalid state: cannot assign into assembler that's already working on a larger structure!") 3464 } 3465 return nil, schema.ErrNotUnionStructure{TypeName: "gendemo.UnionKinded.Repr", Detail: "BeginList called but is not valid for any of the kinds that are valid members of this union"} 3466 } 3467 func (na *_UnionKinded__ReprAssembler) AssignNull() error { 3468 switch *na.m { 3469 case schema.Maybe_Value, schema.Maybe_Null: 3470 panic("invalid state: cannot assign into assembler that's already finished") 3471 case midvalue: 3472 panic("invalid state: cannot assign into assembler that's already working on a larger structure!") 3473 } 3474 return schema.ErrNotUnionStructure{TypeName: "gendemo.UnionKinded.Repr", Detail: "AssignNull called but is not valid for any of the kinds that are valid members of this union"} 3475 } 3476 func (na *_UnionKinded__ReprAssembler) AssignBool(v bool) error { 3477 switch *na.m { 3478 case schema.Maybe_Value, schema.Maybe_Null: 3479 panic("invalid state: cannot assign into assembler that's already finished") 3480 case midvalue: 3481 panic("invalid state: cannot assign into assembler that's already working on a larger structure!") 3482 } 3483 if na.w == nil { 3484 na.w = &_UnionKinded{} 3485 } 3486 na.ca = 2 3487 na.w.tag = 2 3488 na.ca2.w = &na.w.x2 3489 na.ca2.m = na.m 3490 return na.ca2.AssignBool(v) 3491 } 3492 func (na *_UnionKinded__ReprAssembler) AssignInt(v int64) error { 3493 switch *na.m { 3494 case schema.Maybe_Value, schema.Maybe_Null: 3495 panic("invalid state: cannot assign into assembler that's already finished") 3496 case midvalue: 3497 panic("invalid state: cannot assign into assembler that's already working on a larger structure!") 3498 } 3499 if na.w == nil { 3500 na.w = &_UnionKinded{} 3501 } 3502 na.ca = 1 3503 na.w.tag = 1 3504 na.ca1.w = &na.w.x1 3505 na.ca1.m = na.m 3506 return na.ca1.AssignInt(v) 3507 } 3508 func (na *_UnionKinded__ReprAssembler) AssignFloat(v float64) error { 3509 switch *na.m { 3510 case schema.Maybe_Value, schema.Maybe_Null: 3511 panic("invalid state: cannot assign into assembler that's already finished") 3512 case midvalue: 3513 panic("invalid state: cannot assign into assembler that's already working on a larger structure!") 3514 } 3515 return schema.ErrNotUnionStructure{TypeName: "gendemo.UnionKinded.Repr", Detail: "AssignFloat called but is not valid for any of the kinds that are valid members of this union"} 3516 } 3517 func (na *_UnionKinded__ReprAssembler) AssignString(v string) error { 3518 switch *na.m { 3519 case schema.Maybe_Value, schema.Maybe_Null: 3520 panic("invalid state: cannot assign into assembler that's already finished") 3521 case midvalue: 3522 panic("invalid state: cannot assign into assembler that's already working on a larger structure!") 3523 } 3524 if na.w == nil { 3525 na.w = &_UnionKinded{} 3526 } 3527 na.ca = 3 3528 na.w.tag = 3 3529 na.ca3.w = &na.w.x3 3530 na.ca3.m = na.m 3531 return na.ca3.AssignString(v) 3532 } 3533 func (na *_UnionKinded__ReprAssembler) AssignBytes(v []byte) error { 3534 switch *na.m { 3535 case schema.Maybe_Value, schema.Maybe_Null: 3536 panic("invalid state: cannot assign into assembler that's already finished") 3537 case midvalue: 3538 panic("invalid state: cannot assign into assembler that's already working on a larger structure!") 3539 } 3540 return schema.ErrNotUnionStructure{TypeName: "gendemo.UnionKinded.Repr", Detail: "AssignBytes called but is not valid for any of the kinds that are valid members of this union"} 3541 } 3542 func (na *_UnionKinded__ReprAssembler) AssignLink(v datamodel.Link) error { 3543 switch *na.m { 3544 case schema.Maybe_Value, schema.Maybe_Null: 3545 panic("invalid state: cannot assign into assembler that's already finished") 3546 case midvalue: 3547 panic("invalid state: cannot assign into assembler that's already working on a larger structure!") 3548 } 3549 return schema.ErrNotUnionStructure{TypeName: "gendemo.UnionKinded.Repr", Detail: "AssignLink called but is not valid for any of the kinds that are valid members of this union"} 3550 } 3551 func (na *_UnionKinded__ReprAssembler) AssignNode(v datamodel.Node) error { 3552 if v.IsNull() { 3553 return na.AssignNull() 3554 } 3555 if v2, ok := v.(*_UnionKinded); ok { 3556 switch *na.m { 3557 case schema.Maybe_Value, schema.Maybe_Null: 3558 panic("invalid state: cannot assign into assembler that's already finished") 3559 case midvalue: 3560 panic("invalid state: cannot assign null into an assembler that's already begun working on recursive structures!") 3561 } 3562 if na.w == nil { 3563 na.w = v2 3564 *na.m = schema.Maybe_Value 3565 return nil 3566 } 3567 *na.w = *v2 3568 *na.m = schema.Maybe_Value 3569 return nil 3570 } 3571 switch v.Kind() { 3572 case datamodel.Kind_Bool: 3573 v2, _ := v.AsBool() 3574 return na.AssignBool(v2) 3575 case datamodel.Kind_Int: 3576 v2, _ := v.AsInt() 3577 return na.AssignInt(v2) 3578 case datamodel.Kind_Float: 3579 v2, _ := v.AsFloat() 3580 return na.AssignFloat(v2) 3581 case datamodel.Kind_String: 3582 v2, _ := v.AsString() 3583 return na.AssignString(v2) 3584 case datamodel.Kind_Bytes: 3585 v2, _ := v.AsBytes() 3586 return na.AssignBytes(v2) 3587 case datamodel.Kind_Map: 3588 na, err := na.BeginMap(v.Length()) 3589 if err != nil { 3590 return err 3591 } 3592 itr := v.MapIterator() 3593 for !itr.Done() { 3594 k, v, err := itr.Next() 3595 if err != nil { 3596 return err 3597 } 3598 if err := na.AssembleKey().AssignNode(k); err != nil { 3599 return err 3600 } 3601 if err := na.AssembleValue().AssignNode(v); err != nil { 3602 return err 3603 } 3604 } 3605 return na.Finish() 3606 case datamodel.Kind_List: 3607 na, err := na.BeginList(v.Length()) 3608 if err != nil { 3609 return err 3610 } 3611 itr := v.ListIterator() 3612 for !itr.Done() { 3613 _, v, err := itr.Next() 3614 if err != nil { 3615 return err 3616 } 3617 if err := na.AssembleValue().AssignNode(v); err != nil { 3618 return err 3619 } 3620 } 3621 return na.Finish() 3622 case datamodel.Kind_Link: 3623 v2, _ := v.AsLink() 3624 return na.AssignLink(v2) 3625 default: 3626 panic("unreachable") 3627 } 3628 } 3629 func (na *_UnionKinded__ReprAssembler) Prototype() datamodel.NodePrototype { 3630 return _UnionKinded__ReprPrototype{} 3631 }