1// Autogenerated by Thrift Compiler (facebook)
2// DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
3// @generated
4
5package module
6
7import (
8	"bytes"
9	"context"
10	"sync"
11	"fmt"
12	thrift "github.com/facebook/fbthrift/thrift/lib/go/thrift"
13)
14
15// (needed to ensure safety because of naive import list construction.)
16var _ = thrift.ZERO
17var _ = fmt.Printf
18var _ = sync.Mutex{}
19var _ = bytes.Equal
20var _ = context.Background
21
22var GoUnusedProtection__ int;
23
24type Animal int64
25const (
26  Animal_DOG Animal = 1
27  Animal_CAT Animal = 2
28  Animal_TARANTULA Animal = 3
29)
30
31var AnimalToName = map[Animal]string {
32  Animal_DOG: "DOG",
33  Animal_CAT: "CAT",
34  Animal_TARANTULA: "TARANTULA",
35}
36
37var AnimalToValue = map[string]Animal {
38  "DOG": Animal_DOG,
39  "CAT": Animal_CAT,
40  "TARANTULA": Animal_TARANTULA,
41}
42
43var AnimalNames = []string {
44  "DOG",
45  "CAT",
46  "TARANTULA",
47}
48
49var AnimalValues = []Animal {
50  Animal_DOG,
51  Animal_CAT,
52  Animal_TARANTULA,
53}
54
55func (p Animal) String() string {
56  if v, ok := AnimalToName[p]; ok {
57    return v
58  }
59  return "<UNSET>"
60}
61
62func AnimalFromString(s string) (Animal, error) {
63  if v, ok := AnimalToValue[s]; ok {
64    return v, nil
65  }
66  return Animal(0), fmt.Errorf("not a valid Animal string")
67}
68
69func AnimalPtr(v Animal) *Animal { return &v }
70
71type PersonID = int64
72
73func PersonIDPtr(v PersonID) *PersonID { return &v }
74
75// Attributes:
76//  - Red
77//  - Green
78//  - Blue
79//  - Alpha
80type Color struct {
81  Red float64 `thrift:"red,1" db:"red" json:"red"`
82  Green float64 `thrift:"green,2" db:"green" json:"green"`
83  Blue float64 `thrift:"blue,3" db:"blue" json:"blue"`
84  Alpha float64 `thrift:"alpha,4" db:"alpha" json:"alpha"`
85}
86
87func NewColor() *Color {
88  return &Color{}
89}
90
91
92func (p *Color) GetRed() float64 {
93  return p.Red
94}
95
96func (p *Color) GetGreen() float64 {
97  return p.Green
98}
99
100func (p *Color) GetBlue() float64 {
101  return p.Blue
102}
103
104func (p *Color) GetAlpha() float64 {
105  return p.Alpha
106}
107type ColorBuilder struct {
108  obj *Color
109}
110
111func NewColorBuilder() *ColorBuilder{
112  return &ColorBuilder{
113    obj: NewColor(),
114  }
115}
116
117func (p ColorBuilder) Emit() *Color{
118  return &Color{
119    Red: p.obj.Red,
120    Green: p.obj.Green,
121    Blue: p.obj.Blue,
122    Alpha: p.obj.Alpha,
123  }
124}
125
126func (c *ColorBuilder) Red(red float64) *ColorBuilder {
127  c.obj.Red = red
128  return c
129}
130
131func (c *ColorBuilder) Green(green float64) *ColorBuilder {
132  c.obj.Green = green
133  return c
134}
135
136func (c *ColorBuilder) Blue(blue float64) *ColorBuilder {
137  c.obj.Blue = blue
138  return c
139}
140
141func (c *ColorBuilder) Alpha(alpha float64) *ColorBuilder {
142  c.obj.Alpha = alpha
143  return c
144}
145
146func (c *Color) SetRed(red float64) *Color {
147  c.Red = red
148  return c
149}
150
151func (c *Color) SetGreen(green float64) *Color {
152  c.Green = green
153  return c
154}
155
156func (c *Color) SetBlue(blue float64) *Color {
157  c.Blue = blue
158  return c
159}
160
161func (c *Color) SetAlpha(alpha float64) *Color {
162  c.Alpha = alpha
163  return c
164}
165
166func (p *Color) Read(iprot thrift.Protocol) error {
167  if _, err := iprot.ReadStructBegin(); err != nil {
168    return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
169  }
170
171
172  for {
173    _, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
174    if err != nil {
175      return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
176    }
177    if fieldTypeId == thrift.STOP { break; }
178    switch fieldId {
179    case 1:
180      if err := p.ReadField1(iprot); err != nil {
181        return err
182      }
183    case 2:
184      if err := p.ReadField2(iprot); err != nil {
185        return err
186      }
187    case 3:
188      if err := p.ReadField3(iprot); err != nil {
189        return err
190      }
191    case 4:
192      if err := p.ReadField4(iprot); err != nil {
193        return err
194      }
195    default:
196      if err := iprot.Skip(fieldTypeId); err != nil {
197        return err
198      }
199    }
200    if err := iprot.ReadFieldEnd(); err != nil {
201      return err
202    }
203  }
204  if err := iprot.ReadStructEnd(); err != nil {
205    return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
206  }
207  return nil
208}
209
210func (p *Color)  ReadField1(iprot thrift.Protocol) error {
211  if v, err := iprot.ReadDouble(); err != nil {
212    return thrift.PrependError("error reading field 1: ", err)
213  } else {
214    p.Red = v
215  }
216  return nil
217}
218
219func (p *Color)  ReadField2(iprot thrift.Protocol) error {
220  if v, err := iprot.ReadDouble(); err != nil {
221    return thrift.PrependError("error reading field 2: ", err)
222  } else {
223    p.Green = v
224  }
225  return nil
226}
227
228func (p *Color)  ReadField3(iprot thrift.Protocol) error {
229  if v, err := iprot.ReadDouble(); err != nil {
230    return thrift.PrependError("error reading field 3: ", err)
231  } else {
232    p.Blue = v
233  }
234  return nil
235}
236
237func (p *Color)  ReadField4(iprot thrift.Protocol) error {
238  if v, err := iprot.ReadDouble(); err != nil {
239    return thrift.PrependError("error reading field 4: ", err)
240  } else {
241    p.Alpha = v
242  }
243  return nil
244}
245
246func (p *Color) Write(oprot thrift.Protocol) error {
247  if err := oprot.WriteStructBegin("Color"); err != nil {
248    return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) }
249  if err := p.writeField1(oprot); err != nil { return err }
250  if err := p.writeField2(oprot); err != nil { return err }
251  if err := p.writeField3(oprot); err != nil { return err }
252  if err := p.writeField4(oprot); err != nil { return err }
253  if err := oprot.WriteFieldStop(); err != nil {
254    return thrift.PrependError("write field stop error: ", err) }
255  if err := oprot.WriteStructEnd(); err != nil {
256    return thrift.PrependError("write struct stop error: ", err) }
257  return nil
258}
259
260func (p *Color) writeField1(oprot thrift.Protocol) (err error) {
261  if err := oprot.WriteFieldBegin("red", thrift.DOUBLE, 1); err != nil {
262    return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:red: ", p), err) }
263  if err := oprot.WriteDouble(float64(p.Red)); err != nil {
264  return thrift.PrependError(fmt.Sprintf("%T.red (1) field write error: ", p), err) }
265  if err := oprot.WriteFieldEnd(); err != nil {
266    return thrift.PrependError(fmt.Sprintf("%T write field end error 1:red: ", p), err) }
267  return err
268}
269
270func (p *Color) writeField2(oprot thrift.Protocol) (err error) {
271  if err := oprot.WriteFieldBegin("green", thrift.DOUBLE, 2); err != nil {
272    return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:green: ", p), err) }
273  if err := oprot.WriteDouble(float64(p.Green)); err != nil {
274  return thrift.PrependError(fmt.Sprintf("%T.green (2) field write error: ", p), err) }
275  if err := oprot.WriteFieldEnd(); err != nil {
276    return thrift.PrependError(fmt.Sprintf("%T write field end error 2:green: ", p), err) }
277  return err
278}
279
280func (p *Color) writeField3(oprot thrift.Protocol) (err error) {
281  if err := oprot.WriteFieldBegin("blue", thrift.DOUBLE, 3); err != nil {
282    return thrift.PrependError(fmt.Sprintf("%T write field begin error 3:blue: ", p), err) }
283  if err := oprot.WriteDouble(float64(p.Blue)); err != nil {
284  return thrift.PrependError(fmt.Sprintf("%T.blue (3) field write error: ", p), err) }
285  if err := oprot.WriteFieldEnd(); err != nil {
286    return thrift.PrependError(fmt.Sprintf("%T write field end error 3:blue: ", p), err) }
287  return err
288}
289
290func (p *Color) writeField4(oprot thrift.Protocol) (err error) {
291  if err := oprot.WriteFieldBegin("alpha", thrift.DOUBLE, 4); err != nil {
292    return thrift.PrependError(fmt.Sprintf("%T write field begin error 4:alpha: ", p), err) }
293  if err := oprot.WriteDouble(float64(p.Alpha)); err != nil {
294  return thrift.PrependError(fmt.Sprintf("%T.alpha (4) field write error: ", p), err) }
295  if err := oprot.WriteFieldEnd(); err != nil {
296    return thrift.PrependError(fmt.Sprintf("%T write field end error 4:alpha: ", p), err) }
297  return err
298}
299
300func (p *Color) String() string {
301  if p == nil {
302    return "<nil>"
303  }
304
305  redVal := fmt.Sprintf("%v", p.Red)
306  greenVal := fmt.Sprintf("%v", p.Green)
307  blueVal := fmt.Sprintf("%v", p.Blue)
308  alphaVal := fmt.Sprintf("%v", p.Alpha)
309  return fmt.Sprintf("Color({Red:%s Green:%s Blue:%s Alpha:%s})", redVal, greenVal, blueVal, alphaVal)
310}
311
312// Attributes:
313//  - Color
314//  - LicensePlate
315//  - Description
316//  - Name
317//  - HasAC
318type Vehicle struct {
319  Color *Color `thrift:"color,1" db:"color" json:"color"`
320  LicensePlate *string `thrift:"licensePlate,2,optional" db:"licensePlate" json:"licensePlate,omitempty"`
321  Description *string `thrift:"description,3,optional" db:"description" json:"description,omitempty"`
322  Name *string `thrift:"name,4,optional" db:"name" json:"name,omitempty"`
323  HasAC bool `thrift:"hasAC,5,optional" db:"hasAC" json:"hasAC,omitempty"`
324}
325
326func NewVehicle() *Vehicle {
327  return &Vehicle{
328    Color: NewColor(),
329  }
330}
331
332var Vehicle_Color_DEFAULT *Color
333func (p *Vehicle) GetColor() *Color {
334  if !p.IsSetColor() {
335    return Vehicle_Color_DEFAULT
336  }
337return p.Color
338}
339var Vehicle_LicensePlate_DEFAULT string
340func (p *Vehicle) GetLicensePlate() string {
341  if !p.IsSetLicensePlate() {
342    return Vehicle_LicensePlate_DEFAULT
343  }
344return *p.LicensePlate
345}
346var Vehicle_Description_DEFAULT string
347func (p *Vehicle) GetDescription() string {
348  if !p.IsSetDescription() {
349    return Vehicle_Description_DEFAULT
350  }
351return *p.Description
352}
353var Vehicle_Name_DEFAULT string
354func (p *Vehicle) GetName() string {
355  if !p.IsSetName() {
356    return Vehicle_Name_DEFAULT
357  }
358return *p.Name
359}
360var Vehicle_HasAC_DEFAULT bool = false
361
362func (p *Vehicle) GetHasAC() bool {
363  return p.HasAC
364}
365func (p *Vehicle) IsSetColor() bool {
366  return p != nil && p.Color != nil
367}
368
369func (p *Vehicle) IsSetLicensePlate() bool {
370  return p != nil && p.LicensePlate != nil
371}
372
373func (p *Vehicle) IsSetDescription() bool {
374  return p != nil && p.Description != nil
375}
376
377func (p *Vehicle) IsSetName() bool {
378  return p != nil && p.Name != nil
379}
380
381func (p *Vehicle) IsSetHasAC() bool {
382  return p != nil && p.HasAC != Vehicle_HasAC_DEFAULT
383}
384
385type VehicleBuilder struct {
386  obj *Vehicle
387}
388
389func NewVehicleBuilder() *VehicleBuilder{
390  return &VehicleBuilder{
391    obj: NewVehicle(),
392  }
393}
394
395func (p VehicleBuilder) Emit() *Vehicle{
396  return &Vehicle{
397    Color: p.obj.Color,
398    LicensePlate: p.obj.LicensePlate,
399    Description: p.obj.Description,
400    Name: p.obj.Name,
401    HasAC: p.obj.HasAC,
402  }
403}
404
405func (v *VehicleBuilder) Color(color *Color) *VehicleBuilder {
406  v.obj.Color = color
407  return v
408}
409
410func (v *VehicleBuilder) LicensePlate(licensePlate *string) *VehicleBuilder {
411  v.obj.LicensePlate = licensePlate
412  return v
413}
414
415func (v *VehicleBuilder) Description(description *string) *VehicleBuilder {
416  v.obj.Description = description
417  return v
418}
419
420func (v *VehicleBuilder) Name(name *string) *VehicleBuilder {
421  v.obj.Name = name
422  return v
423}
424
425func (v *VehicleBuilder) HasAC(hasAC bool) *VehicleBuilder {
426  v.obj.HasAC = hasAC
427  return v
428}
429
430func (v *Vehicle) SetColor(color *Color) *Vehicle {
431  v.Color = color
432  return v
433}
434
435func (v *Vehicle) SetLicensePlate(licensePlate *string) *Vehicle {
436  v.LicensePlate = licensePlate
437  return v
438}
439
440func (v *Vehicle) SetDescription(description *string) *Vehicle {
441  v.Description = description
442  return v
443}
444
445func (v *Vehicle) SetName(name *string) *Vehicle {
446  v.Name = name
447  return v
448}
449
450func (v *Vehicle) SetHasAC(hasAC bool) *Vehicle {
451  v.HasAC = hasAC
452  return v
453}
454
455func (p *Vehicle) Read(iprot thrift.Protocol) error {
456  if _, err := iprot.ReadStructBegin(); err != nil {
457    return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
458  }
459
460
461  for {
462    _, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
463    if err != nil {
464      return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
465    }
466    if fieldTypeId == thrift.STOP { break; }
467    switch fieldId {
468    case 1:
469      if err := p.ReadField1(iprot); err != nil {
470        return err
471      }
472    case 2:
473      if err := p.ReadField2(iprot); err != nil {
474        return err
475      }
476    case 3:
477      if err := p.ReadField3(iprot); err != nil {
478        return err
479      }
480    case 4:
481      if err := p.ReadField4(iprot); err != nil {
482        return err
483      }
484    case 5:
485      if err := p.ReadField5(iprot); err != nil {
486        return err
487      }
488    default:
489      if err := iprot.Skip(fieldTypeId); err != nil {
490        return err
491      }
492    }
493    if err := iprot.ReadFieldEnd(); err != nil {
494      return err
495    }
496  }
497  if err := iprot.ReadStructEnd(); err != nil {
498    return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
499  }
500  return nil
501}
502
503func (p *Vehicle)  ReadField1(iprot thrift.Protocol) error {
504  p.Color = NewColor()
505  if err := p.Color.Read(iprot); err != nil {
506    return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Color), err)
507  }
508  return nil
509}
510
511func (p *Vehicle)  ReadField2(iprot thrift.Protocol) error {
512  if v, err := iprot.ReadString(); err != nil {
513    return thrift.PrependError("error reading field 2: ", err)
514  } else {
515    p.LicensePlate = &v
516  }
517  return nil
518}
519
520func (p *Vehicle)  ReadField3(iprot thrift.Protocol) error {
521  if v, err := iprot.ReadString(); err != nil {
522    return thrift.PrependError("error reading field 3: ", err)
523  } else {
524    p.Description = &v
525  }
526  return nil
527}
528
529func (p *Vehicle)  ReadField4(iprot thrift.Protocol) error {
530  if v, err := iprot.ReadString(); err != nil {
531    return thrift.PrependError("error reading field 4: ", err)
532  } else {
533    p.Name = &v
534  }
535  return nil
536}
537
538func (p *Vehicle)  ReadField5(iprot thrift.Protocol) error {
539  if v, err := iprot.ReadBool(); err != nil {
540    return thrift.PrependError("error reading field 5: ", err)
541  } else {
542    p.HasAC = v
543  }
544  return nil
545}
546
547func (p *Vehicle) Write(oprot thrift.Protocol) error {
548  if err := oprot.WriteStructBegin("Vehicle"); err != nil {
549    return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) }
550  if err := p.writeField1(oprot); err != nil { return err }
551  if err := p.writeField2(oprot); err != nil { return err }
552  if err := p.writeField3(oprot); err != nil { return err }
553  if err := p.writeField4(oprot); err != nil { return err }
554  if err := p.writeField5(oprot); err != nil { return err }
555  if err := oprot.WriteFieldStop(); err != nil {
556    return thrift.PrependError("write field stop error: ", err) }
557  if err := oprot.WriteStructEnd(); err != nil {
558    return thrift.PrependError("write struct stop error: ", err) }
559  return nil
560}
561
562func (p *Vehicle) writeField1(oprot thrift.Protocol) (err error) {
563  if err := oprot.WriteFieldBegin("color", thrift.STRUCT, 1); err != nil {
564    return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:color: ", p), err) }
565  if err := p.Color.Write(oprot); err != nil {
566    return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Color), err)
567  }
568  if err := oprot.WriteFieldEnd(); err != nil {
569    return thrift.PrependError(fmt.Sprintf("%T write field end error 1:color: ", p), err) }
570  return err
571}
572
573func (p *Vehicle) writeField2(oprot thrift.Protocol) (err error) {
574  if p.IsSetLicensePlate() {
575    if err := oprot.WriteFieldBegin("licensePlate", thrift.STRING, 2); err != nil {
576      return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:licensePlate: ", p), err) }
577    if err := oprot.WriteString(string(*p.LicensePlate)); err != nil {
578    return thrift.PrependError(fmt.Sprintf("%T.licensePlate (2) field write error: ", p), err) }
579    if err := oprot.WriteFieldEnd(); err != nil {
580      return thrift.PrependError(fmt.Sprintf("%T write field end error 2:licensePlate: ", p), err) }
581  }
582  return err
583}
584
585func (p *Vehicle) writeField3(oprot thrift.Protocol) (err error) {
586  if p.IsSetDescription() {
587    if err := oprot.WriteFieldBegin("description", thrift.STRING, 3); err != nil {
588      return thrift.PrependError(fmt.Sprintf("%T write field begin error 3:description: ", p), err) }
589    if err := oprot.WriteString(string(*p.Description)); err != nil {
590    return thrift.PrependError(fmt.Sprintf("%T.description (3) field write error: ", p), err) }
591    if err := oprot.WriteFieldEnd(); err != nil {
592      return thrift.PrependError(fmt.Sprintf("%T write field end error 3:description: ", p), err) }
593  }
594  return err
595}
596
597func (p *Vehicle) writeField4(oprot thrift.Protocol) (err error) {
598  if p.IsSetName() {
599    if err := oprot.WriteFieldBegin("name", thrift.STRING, 4); err != nil {
600      return thrift.PrependError(fmt.Sprintf("%T write field begin error 4:name: ", p), err) }
601    if err := oprot.WriteString(string(*p.Name)); err != nil {
602    return thrift.PrependError(fmt.Sprintf("%T.name (4) field write error: ", p), err) }
603    if err := oprot.WriteFieldEnd(); err != nil {
604      return thrift.PrependError(fmt.Sprintf("%T write field end error 4:name: ", p), err) }
605  }
606  return err
607}
608
609func (p *Vehicle) writeField5(oprot thrift.Protocol) (err error) {
610  if p.IsSetHasAC() {
611    if err := oprot.WriteFieldBegin("hasAC", thrift.BOOL, 5); err != nil {
612      return thrift.PrependError(fmt.Sprintf("%T write field begin error 5:hasAC: ", p), err) }
613    if err := oprot.WriteBool(bool(p.HasAC)); err != nil {
614    return thrift.PrependError(fmt.Sprintf("%T.hasAC (5) field write error: ", p), err) }
615    if err := oprot.WriteFieldEnd(); err != nil {
616      return thrift.PrependError(fmt.Sprintf("%T write field end error 5:hasAC: ", p), err) }
617  }
618  return err
619}
620
621func (p *Vehicle) String() string {
622  if p == nil {
623    return "<nil>"
624  }
625
626  var colorVal string
627  if p.Color == nil {
628    colorVal = "<nil>"
629  } else {
630    colorVal = fmt.Sprintf("%v", p.Color)
631  }
632  var licensePlateVal string
633  if p.LicensePlate == nil {
634    licensePlateVal = "<nil>"
635  } else {
636    licensePlateVal = fmt.Sprintf("%v", *p.LicensePlate)
637  }
638  var descriptionVal string
639  if p.Description == nil {
640    descriptionVal = "<nil>"
641  } else {
642    descriptionVal = fmt.Sprintf("%v", *p.Description)
643  }
644  var nameVal string
645  if p.Name == nil {
646    nameVal = "<nil>"
647  } else {
648    nameVal = fmt.Sprintf("%v", *p.Name)
649  }
650  hasACVal := fmt.Sprintf("%v", p.HasAC)
651  return fmt.Sprintf("Vehicle({Color:%s LicensePlate:%s Description:%s Name:%s HasAC:%s})", colorVal, licensePlateVal, descriptionVal, nameVal, hasACVal)
652}
653
654// Attributes:
655//  - Id
656//  - Name
657//  - Age
658//  - Address
659//  - FavoriteColor
660//  - Friends
661//  - BestFriend
662//  - PetNames
663//  - AfraidOfAnimal
664//  - Vehicles
665type Person struct {
666  Id PersonID `thrift:"id,1" db:"id" json:"id"`
667  Name string `thrift:"name,2" db:"name" json:"name"`
668  Age *int16 `thrift:"age,3,optional" db:"age" json:"age,omitempty"`
669  Address *string `thrift:"address,4,optional" db:"address" json:"address,omitempty"`
670  FavoriteColor *Color `thrift:"favoriteColor,5,optional" db:"favoriteColor" json:"favoriteColor,omitempty"`
671  Friends []PersonID `thrift:"friends,6,optional" db:"friends" json:"friends,omitempty"`
672  BestFriend *PersonID `thrift:"bestFriend,7,optional" db:"bestFriend" json:"bestFriend,omitempty"`
673  PetNames map[Animal]string `thrift:"petNames,8,optional" db:"petNames" json:"petNames,omitempty"`
674  AfraidOfAnimal *Animal `thrift:"afraidOfAnimal,9,optional" db:"afraidOfAnimal" json:"afraidOfAnimal,omitempty"`
675  Vehicles []*Vehicle `thrift:"vehicles,10,optional" db:"vehicles" json:"vehicles,omitempty"`
676}
677
678func NewPerson() *Person {
679  return &Person{}
680}
681
682
683func (p *Person) GetId() PersonID {
684  return p.Id
685}
686
687func (p *Person) GetName() string {
688  return p.Name
689}
690var Person_Age_DEFAULT int16
691func (p *Person) GetAge() int16 {
692  if !p.IsSetAge() {
693    return Person_Age_DEFAULT
694  }
695return *p.Age
696}
697var Person_Address_DEFAULT string
698func (p *Person) GetAddress() string {
699  if !p.IsSetAddress() {
700    return Person_Address_DEFAULT
701  }
702return *p.Address
703}
704var Person_FavoriteColor_DEFAULT *Color
705func (p *Person) GetFavoriteColor() *Color {
706  if !p.IsSetFavoriteColor() {
707    return Person_FavoriteColor_DEFAULT
708  }
709return p.FavoriteColor
710}
711var Person_Friends_DEFAULT []PersonID
712
713func (p *Person) GetFriends() []PersonID {
714  return p.Friends
715}
716var Person_BestFriend_DEFAULT PersonID
717func (p *Person) GetBestFriend() PersonID {
718  if !p.IsSetBestFriend() {
719    return Person_BestFriend_DEFAULT
720  }
721return *p.BestFriend
722}
723var Person_PetNames_DEFAULT map[Animal]string
724
725func (p *Person) GetPetNames() map[Animal]string {
726  return p.PetNames
727}
728var Person_AfraidOfAnimal_DEFAULT Animal
729func (p *Person) GetAfraidOfAnimal() Animal {
730  if !p.IsSetAfraidOfAnimal() {
731    return Person_AfraidOfAnimal_DEFAULT
732  }
733return *p.AfraidOfAnimal
734}
735var Person_Vehicles_DEFAULT []*Vehicle
736
737func (p *Person) GetVehicles() []*Vehicle {
738  return p.Vehicles
739}
740func (p *Person) IsSetAge() bool {
741  return p != nil && p.Age != nil
742}
743
744func (p *Person) IsSetAddress() bool {
745  return p != nil && p.Address != nil
746}
747
748func (p *Person) IsSetFavoriteColor() bool {
749  return p != nil && p.FavoriteColor != nil
750}
751
752func (p *Person) IsSetFriends() bool {
753  return p != nil && p.Friends != nil
754}
755
756func (p *Person) IsSetBestFriend() bool {
757  return p != nil && p.BestFriend != nil
758}
759
760func (p *Person) IsSetPetNames() bool {
761  return p != nil && p.PetNames != nil
762}
763
764func (p *Person) IsSetAfraidOfAnimal() bool {
765  return p != nil && p.AfraidOfAnimal != nil
766}
767
768func (p *Person) IsSetVehicles() bool {
769  return p != nil && p.Vehicles != nil
770}
771
772type PersonBuilder struct {
773  obj *Person
774}
775
776func NewPersonBuilder() *PersonBuilder{
777  return &PersonBuilder{
778    obj: NewPerson(),
779  }
780}
781
782func (p PersonBuilder) Emit() *Person{
783  return &Person{
784    Id: p.obj.Id,
785    Name: p.obj.Name,
786    Age: p.obj.Age,
787    Address: p.obj.Address,
788    FavoriteColor: p.obj.FavoriteColor,
789    Friends: p.obj.Friends,
790    BestFriend: p.obj.BestFriend,
791    PetNames: p.obj.PetNames,
792    AfraidOfAnimal: p.obj.AfraidOfAnimal,
793    Vehicles: p.obj.Vehicles,
794  }
795}
796
797func (p *PersonBuilder) Id(id PersonID) *PersonBuilder {
798  p.obj.Id = id
799  return p
800}
801
802func (p *PersonBuilder) Name(name string) *PersonBuilder {
803  p.obj.Name = name
804  return p
805}
806
807func (p *PersonBuilder) Age(age *int16) *PersonBuilder {
808  p.obj.Age = age
809  return p
810}
811
812func (p *PersonBuilder) Address(address *string) *PersonBuilder {
813  p.obj.Address = address
814  return p
815}
816
817func (p *PersonBuilder) FavoriteColor(favoriteColor *Color) *PersonBuilder {
818  p.obj.FavoriteColor = favoriteColor
819  return p
820}
821
822func (p *PersonBuilder) Friends(friends []PersonID) *PersonBuilder {
823  p.obj.Friends = friends
824  return p
825}
826
827func (p *PersonBuilder) BestFriend(bestFriend *PersonID) *PersonBuilder {
828  p.obj.BestFriend = bestFriend
829  return p
830}
831
832func (p *PersonBuilder) PetNames(petNames map[Animal]string) *PersonBuilder {
833  p.obj.PetNames = petNames
834  return p
835}
836
837func (p *PersonBuilder) AfraidOfAnimal(afraidOfAnimal *Animal) *PersonBuilder {
838  p.obj.AfraidOfAnimal = afraidOfAnimal
839  return p
840}
841
842func (p *PersonBuilder) Vehicles(vehicles []*Vehicle) *PersonBuilder {
843  p.obj.Vehicles = vehicles
844  return p
845}
846
847func (p *Person) SetId(id PersonID) *Person {
848  p.Id = id
849  return p
850}
851
852func (p *Person) SetName(name string) *Person {
853  p.Name = name
854  return p
855}
856
857func (p *Person) SetAge(age *int16) *Person {
858  p.Age = age
859  return p
860}
861
862func (p *Person) SetAddress(address *string) *Person {
863  p.Address = address
864  return p
865}
866
867func (p *Person) SetFavoriteColor(favoriteColor *Color) *Person {
868  p.FavoriteColor = favoriteColor
869  return p
870}
871
872func (p *Person) SetFriends(friends []PersonID) *Person {
873  p.Friends = friends
874  return p
875}
876
877func (p *Person) SetBestFriend(bestFriend *PersonID) *Person {
878  p.BestFriend = bestFriend
879  return p
880}
881
882func (p *Person) SetPetNames(petNames map[Animal]string) *Person {
883  p.PetNames = petNames
884  return p
885}
886
887func (p *Person) SetAfraidOfAnimal(afraidOfAnimal *Animal) *Person {
888  p.AfraidOfAnimal = afraidOfAnimal
889  return p
890}
891
892func (p *Person) SetVehicles(vehicles []*Vehicle) *Person {
893  p.Vehicles = vehicles
894  return p
895}
896
897func (p *Person) Read(iprot thrift.Protocol) error {
898  if _, err := iprot.ReadStructBegin(); err != nil {
899    return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
900  }
901
902
903  for {
904    _, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
905    if err != nil {
906      return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
907    }
908    if fieldTypeId == thrift.STOP { break; }
909    switch fieldId {
910    case 1:
911      if err := p.ReadField1(iprot); err != nil {
912        return err
913      }
914    case 2:
915      if err := p.ReadField2(iprot); err != nil {
916        return err
917      }
918    case 3:
919      if err := p.ReadField3(iprot); err != nil {
920        return err
921      }
922    case 4:
923      if err := p.ReadField4(iprot); err != nil {
924        return err
925      }
926    case 5:
927      if err := p.ReadField5(iprot); err != nil {
928        return err
929      }
930    case 6:
931      if err := p.ReadField6(iprot); err != nil {
932        return err
933      }
934    case 7:
935      if err := p.ReadField7(iprot); err != nil {
936        return err
937      }
938    case 8:
939      if err := p.ReadField8(iprot); err != nil {
940        return err
941      }
942    case 9:
943      if err := p.ReadField9(iprot); err != nil {
944        return err
945      }
946    case 10:
947      if err := p.ReadField10(iprot); err != nil {
948        return err
949      }
950    default:
951      if err := iprot.Skip(fieldTypeId); err != nil {
952        return err
953      }
954    }
955    if err := iprot.ReadFieldEnd(); err != nil {
956      return err
957    }
958  }
959  if err := iprot.ReadStructEnd(); err != nil {
960    return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
961  }
962  return nil
963}
964
965func (p *Person)  ReadField1(iprot thrift.Protocol) error {
966  if v, err := iprot.ReadI64(); err != nil {
967    return thrift.PrependError("error reading field 1: ", err)
968  } else {
969    temp := PersonID(v)
970    p.Id = temp
971  }
972  return nil
973}
974
975func (p *Person)  ReadField2(iprot thrift.Protocol) error {
976  if v, err := iprot.ReadString(); err != nil {
977    return thrift.PrependError("error reading field 2: ", err)
978  } else {
979    p.Name = v
980  }
981  return nil
982}
983
984func (p *Person)  ReadField3(iprot thrift.Protocol) error {
985  if v, err := iprot.ReadI16(); err != nil {
986    return thrift.PrependError("error reading field 3: ", err)
987  } else {
988    p.Age = &v
989  }
990  return nil
991}
992
993func (p *Person)  ReadField4(iprot thrift.Protocol) error {
994  if v, err := iprot.ReadString(); err != nil {
995    return thrift.PrependError("error reading field 4: ", err)
996  } else {
997    p.Address = &v
998  }
999  return nil
1000}
1001
1002func (p *Person)  ReadField5(iprot thrift.Protocol) error {
1003  p.FavoriteColor = NewColor()
1004  if err := p.FavoriteColor.Read(iprot); err != nil {
1005    return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.FavoriteColor), err)
1006  }
1007  return nil
1008}
1009
1010func (p *Person)  ReadField6(iprot thrift.Protocol) error {
1011  _, size, err := iprot.ReadSetBegin()
1012  if err != nil {
1013    return thrift.PrependError("error reading set begin: ", err)
1014  }
1015  tSet := make([]PersonID, 0, size)
1016  p.Friends =  tSet
1017  for i := 0; i < size; i ++ {
1018    var _elem0 PersonID
1019    if v, err := iprot.ReadI64(); err != nil {
1020      return thrift.PrependError("error reading field 0: ", err)
1021    } else {
1022      temp := PersonID(v)
1023      _elem0 = temp
1024    }
1025    p.Friends = append(p.Friends, _elem0)
1026  }
1027  if err := iprot.ReadSetEnd(); err != nil {
1028    return thrift.PrependError("error reading set end: ", err)
1029  }
1030  return nil
1031}
1032
1033func (p *Person)  ReadField7(iprot thrift.Protocol) error {
1034  if v, err := iprot.ReadI64(); err != nil {
1035    return thrift.PrependError("error reading field 7: ", err)
1036  } else {
1037    temp := PersonID(v)
1038    p.BestFriend = &temp
1039  }
1040  return nil
1041}
1042
1043func (p *Person)  ReadField8(iprot thrift.Protocol) error {
1044  _, _, size, err := iprot.ReadMapBegin()
1045  if err != nil {
1046    return thrift.PrependError("error reading map begin: ", err)
1047  }
1048  tMap := make(map[Animal]string, size)
1049  p.PetNames =  tMap
1050  for i := 0; i < size; i ++ {
1051    var _key1 Animal
1052    if v, err := iprot.ReadI32(); err != nil {
1053      return thrift.PrependError("error reading field 0: ", err)
1054    } else {
1055      temp := Animal(v)
1056      _key1 = temp
1057    }
1058    var _val2 string
1059    if v, err := iprot.ReadString(); err != nil {
1060      return thrift.PrependError("error reading field 0: ", err)
1061    } else {
1062      _val2 = v
1063    }
1064    p.PetNames[_key1] = _val2
1065  }
1066  if err := iprot.ReadMapEnd(); err != nil {
1067    return thrift.PrependError("error reading map end: ", err)
1068  }
1069  return nil
1070}
1071
1072func (p *Person)  ReadField9(iprot thrift.Protocol) error {
1073  if v, err := iprot.ReadI32(); err != nil {
1074    return thrift.PrependError("error reading field 9: ", err)
1075  } else {
1076    temp := Animal(v)
1077    p.AfraidOfAnimal = &temp
1078  }
1079  return nil
1080}
1081
1082func (p *Person)  ReadField10(iprot thrift.Protocol) error {
1083  _, size, err := iprot.ReadListBegin()
1084  if err != nil {
1085    return thrift.PrependError("error reading list begin: ", err)
1086  }
1087  tSlice := make([]*Vehicle, 0, size)
1088  p.Vehicles =  tSlice
1089  for i := 0; i < size; i ++ {
1090    _elem3 := NewVehicle()
1091    if err := _elem3.Read(iprot); err != nil {
1092      return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", _elem3), err)
1093    }
1094    p.Vehicles = append(p.Vehicles, _elem3)
1095  }
1096  if err := iprot.ReadListEnd(); err != nil {
1097    return thrift.PrependError("error reading list end: ", err)
1098  }
1099  return nil
1100}
1101
1102func (p *Person) Write(oprot thrift.Protocol) error {
1103  if err := oprot.WriteStructBegin("Person"); err != nil {
1104    return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) }
1105  if err := p.writeField1(oprot); err != nil { return err }
1106  if err := p.writeField2(oprot); err != nil { return err }
1107  if err := p.writeField3(oprot); err != nil { return err }
1108  if err := p.writeField4(oprot); err != nil { return err }
1109  if err := p.writeField5(oprot); err != nil { return err }
1110  if err := p.writeField6(oprot); err != nil { return err }
1111  if err := p.writeField7(oprot); err != nil { return err }
1112  if err := p.writeField8(oprot); err != nil { return err }
1113  if err := p.writeField9(oprot); err != nil { return err }
1114  if err := p.writeField10(oprot); err != nil { return err }
1115  if err := oprot.WriteFieldStop(); err != nil {
1116    return thrift.PrependError("write field stop error: ", err) }
1117  if err := oprot.WriteStructEnd(); err != nil {
1118    return thrift.PrependError("write struct stop error: ", err) }
1119  return nil
1120}
1121
1122func (p *Person) writeField1(oprot thrift.Protocol) (err error) {
1123  if err := oprot.WriteFieldBegin("id", thrift.I64, 1); err != nil {
1124    return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:id: ", p), err) }
1125  if err := oprot.WriteI64(int64(p.Id)); err != nil {
1126  return thrift.PrependError(fmt.Sprintf("%T.id (1) field write error: ", p), err) }
1127  if err := oprot.WriteFieldEnd(); err != nil {
1128    return thrift.PrependError(fmt.Sprintf("%T write field end error 1:id: ", p), err) }
1129  return err
1130}
1131
1132func (p *Person) writeField2(oprot thrift.Protocol) (err error) {
1133  if err := oprot.WriteFieldBegin("name", thrift.STRING, 2); err != nil {
1134    return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:name: ", p), err) }
1135  if err := oprot.WriteString(string(p.Name)); err != nil {
1136  return thrift.PrependError(fmt.Sprintf("%T.name (2) field write error: ", p), err) }
1137  if err := oprot.WriteFieldEnd(); err != nil {
1138    return thrift.PrependError(fmt.Sprintf("%T write field end error 2:name: ", p), err) }
1139  return err
1140}
1141
1142func (p *Person) writeField3(oprot thrift.Protocol) (err error) {
1143  if p.IsSetAge() {
1144    if err := oprot.WriteFieldBegin("age", thrift.I16, 3); err != nil {
1145      return thrift.PrependError(fmt.Sprintf("%T write field begin error 3:age: ", p), err) }
1146    if err := oprot.WriteI16(int16(*p.Age)); err != nil {
1147    return thrift.PrependError(fmt.Sprintf("%T.age (3) field write error: ", p), err) }
1148    if err := oprot.WriteFieldEnd(); err != nil {
1149      return thrift.PrependError(fmt.Sprintf("%T write field end error 3:age: ", p), err) }
1150  }
1151  return err
1152}
1153
1154func (p *Person) writeField4(oprot thrift.Protocol) (err error) {
1155  if p.IsSetAddress() {
1156    if err := oprot.WriteFieldBegin("address", thrift.STRING, 4); err != nil {
1157      return thrift.PrependError(fmt.Sprintf("%T write field begin error 4:address: ", p), err) }
1158    if err := oprot.WriteString(string(*p.Address)); err != nil {
1159    return thrift.PrependError(fmt.Sprintf("%T.address (4) field write error: ", p), err) }
1160    if err := oprot.WriteFieldEnd(); err != nil {
1161      return thrift.PrependError(fmt.Sprintf("%T write field end error 4:address: ", p), err) }
1162  }
1163  return err
1164}
1165
1166func (p *Person) writeField5(oprot thrift.Protocol) (err error) {
1167  if p.IsSetFavoriteColor() {
1168    if err := oprot.WriteFieldBegin("favoriteColor", thrift.STRUCT, 5); err != nil {
1169      return thrift.PrependError(fmt.Sprintf("%T write field begin error 5:favoriteColor: ", p), err) }
1170    if err := p.FavoriteColor.Write(oprot); err != nil {
1171      return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.FavoriteColor), err)
1172    }
1173    if err := oprot.WriteFieldEnd(); err != nil {
1174      return thrift.PrependError(fmt.Sprintf("%T write field end error 5:favoriteColor: ", p), err) }
1175  }
1176  return err
1177}
1178
1179func (p *Person) writeField6(oprot thrift.Protocol) (err error) {
1180  if p.IsSetFriends() {
1181    if err := oprot.WriteFieldBegin("friends", thrift.SET, 6); err != nil {
1182      return thrift.PrependError(fmt.Sprintf("%T write field begin error 6:friends: ", p), err) }
1183    if err := oprot.WriteSetBegin(thrift.I64, len(p.Friends)); err != nil {
1184      return thrift.PrependError("error writing set begin: ", err)
1185    }
1186    set := make(map[PersonID]bool, len(p.Friends))
1187    for _, v := range p.Friends {
1188      if ok := set[v]; ok {
1189        return thrift.PrependError("", fmt.Errorf("%T error writing set field: slice is not unique", v))
1190      }
1191      set[v] = true
1192    }
1193    for _, v := range p.Friends {
1194      if err := oprot.WriteI64(int64(v)); err != nil {
1195      return thrift.PrependError(fmt.Sprintf("%T. (0) field write error: ", p), err) }
1196    }
1197    if err := oprot.WriteSetEnd(); err != nil {
1198      return thrift.PrependError("error writing set end: ", err)
1199    }
1200    if err := oprot.WriteFieldEnd(); err != nil {
1201      return thrift.PrependError(fmt.Sprintf("%T write field end error 6:friends: ", p), err) }
1202  }
1203  return err
1204}
1205
1206func (p *Person) writeField7(oprot thrift.Protocol) (err error) {
1207  if p.IsSetBestFriend() {
1208    if err := oprot.WriteFieldBegin("bestFriend", thrift.I64, 7); err != nil {
1209      return thrift.PrependError(fmt.Sprintf("%T write field begin error 7:bestFriend: ", p), err) }
1210    if err := oprot.WriteI64(int64(*p.BestFriend)); err != nil {
1211    return thrift.PrependError(fmt.Sprintf("%T.bestFriend (7) field write error: ", p), err) }
1212    if err := oprot.WriteFieldEnd(); err != nil {
1213      return thrift.PrependError(fmt.Sprintf("%T write field end error 7:bestFriend: ", p), err) }
1214  }
1215  return err
1216}
1217
1218func (p *Person) writeField8(oprot thrift.Protocol) (err error) {
1219  if p.IsSetPetNames() {
1220    if err := oprot.WriteFieldBegin("petNames", thrift.MAP, 8); err != nil {
1221      return thrift.PrependError(fmt.Sprintf("%T write field begin error 8:petNames: ", p), err) }
1222    if err := oprot.WriteMapBegin(thrift.I32, thrift.STRING, len(p.PetNames)); err != nil {
1223      return thrift.PrependError("error writing map begin: ", err)
1224    }
1225    for k, v := range p.PetNames {
1226      if err := oprot.WriteI32(int32(k)); err != nil {
1227      return thrift.PrependError(fmt.Sprintf("%T. (0) field write error: ", p), err) }
1228      if err := oprot.WriteString(string(v)); err != nil {
1229      return thrift.PrependError(fmt.Sprintf("%T. (0) field write error: ", p), err) }
1230    }
1231    if err := oprot.WriteMapEnd(); err != nil {
1232      return thrift.PrependError("error writing map end: ", err)
1233    }
1234    if err := oprot.WriteFieldEnd(); err != nil {
1235      return thrift.PrependError(fmt.Sprintf("%T write field end error 8:petNames: ", p), err) }
1236  }
1237  return err
1238}
1239
1240func (p *Person) writeField9(oprot thrift.Protocol) (err error) {
1241  if p.IsSetAfraidOfAnimal() {
1242    if err := oprot.WriteFieldBegin("afraidOfAnimal", thrift.I32, 9); err != nil {
1243      return thrift.PrependError(fmt.Sprintf("%T write field begin error 9:afraidOfAnimal: ", p), err) }
1244    if err := oprot.WriteI32(int32(*p.AfraidOfAnimal)); err != nil {
1245    return thrift.PrependError(fmt.Sprintf("%T.afraidOfAnimal (9) field write error: ", p), err) }
1246    if err := oprot.WriteFieldEnd(); err != nil {
1247      return thrift.PrependError(fmt.Sprintf("%T write field end error 9:afraidOfAnimal: ", p), err) }
1248  }
1249  return err
1250}
1251
1252func (p *Person) writeField10(oprot thrift.Protocol) (err error) {
1253  if p.IsSetVehicles() {
1254    if err := oprot.WriteFieldBegin("vehicles", thrift.LIST, 10); err != nil {
1255      return thrift.PrependError(fmt.Sprintf("%T write field begin error 10:vehicles: ", p), err) }
1256    if err := oprot.WriteListBegin(thrift.STRUCT, len(p.Vehicles)); err != nil {
1257      return thrift.PrependError("error writing list begin: ", err)
1258    }
1259    for _, v := range p.Vehicles {
1260      if err := v.Write(oprot); err != nil {
1261        return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", v), err)
1262      }
1263    }
1264    if err := oprot.WriteListEnd(); err != nil {
1265      return thrift.PrependError("error writing list end: ", err)
1266    }
1267    if err := oprot.WriteFieldEnd(); err != nil {
1268      return thrift.PrependError(fmt.Sprintf("%T write field end error 10:vehicles: ", p), err) }
1269  }
1270  return err
1271}
1272
1273func (p *Person) String() string {
1274  if p == nil {
1275    return "<nil>"
1276  }
1277
1278  idVal := fmt.Sprintf("%v", p.Id)
1279  nameVal := fmt.Sprintf("%v", p.Name)
1280  var ageVal string
1281  if p.Age == nil {
1282    ageVal = "<nil>"
1283  } else {
1284    ageVal = fmt.Sprintf("%v", *p.Age)
1285  }
1286  var addressVal string
1287  if p.Address == nil {
1288    addressVal = "<nil>"
1289  } else {
1290    addressVal = fmt.Sprintf("%v", *p.Address)
1291  }
1292  var favoriteColorVal string
1293  if p.FavoriteColor == nil {
1294    favoriteColorVal = "<nil>"
1295  } else {
1296    favoriteColorVal = fmt.Sprintf("%v", p.FavoriteColor)
1297  }
1298  friendsVal := fmt.Sprintf("%v", p.Friends)
1299  var bestFriendVal string
1300  if p.BestFriend == nil {
1301    bestFriendVal = "<nil>"
1302  } else {
1303    bestFriendVal = fmt.Sprintf("%v", *p.BestFriend)
1304  }
1305  petNamesVal := fmt.Sprintf("%v", p.PetNames)
1306  var afraidOfAnimalVal string
1307  if p.AfraidOfAnimal == nil {
1308    afraidOfAnimalVal = "<nil>"
1309  } else {
1310    afraidOfAnimalVal = fmt.Sprintf("%v", *p.AfraidOfAnimal)
1311  }
1312  vehiclesVal := fmt.Sprintf("%v", p.Vehicles)
1313  return fmt.Sprintf("Person({Id:%s Name:%s Age:%s Address:%s FavoriteColor:%s Friends:%s BestFriend:%s PetNames:%s AfraidOfAnimal:%s Vehicles:%s})", idVal, nameVal, ageVal, addressVal, favoriteColorVal, friendsVal, bestFriendVal, petNamesVal, afraidOfAnimalVal, vehiclesVal)
1314}
1315
1316