// Code generated by kaitai-struct-compiler from a .ksy source file. DO NOT EDIT. import "github.com/kaitai-io/kaitai_struct_go_runtime/kaitai" /** * MessagePack (msgpack) is a system to serialize arbitrary structured * data into a compact binary stream. * @see Source */ type Msgpack struct { B1 uint8 IntExtra int Float32Value float32 Float64Value float64 StrLen8 uint8 StrLen16 uint16 StrLen32 uint32 StrValue string NumArrayElements16 uint16 NumArrayElements32 uint32 ArrayElements []*Msgpack NumMapElements16 uint16 NumMapElements32 uint32 MapElements []*Msgpack_MapTuple _io *kaitai.Stream _root *Msgpack _parent interface{} _f_isArray32 bool isArray32 bool _f_intValue bool intValue int _f_strLen bool strLen int _f_isFixArray bool isFixArray bool _f_isMap bool isMap bool _f_isArray bool isArray bool _f_isFloat bool isFloat bool _f_isStr8 bool isStr8 bool _f_isFixMap bool isFixMap bool _f_isInt bool isInt bool _f_isBool bool isBool bool _f_isStr16 bool isStr16 bool _f_isFloat64 bool isFloat64 bool _f_isMap16 bool isMap16 bool _f_isNegInt5 bool isNegInt5 bool _f_posInt7Value bool posInt7Value uint8 _f_isNil bool isNil bool _f_floatValue bool floatValue float64 _f_numArrayElements bool numArrayElements int _f_negInt5Value bool negInt5Value int _f_boolValue bool boolValue bool _f_isPosInt7 bool isPosInt7 bool _f_isArray16 bool isArray16 bool _f_isStr bool isStr bool _f_isFixStr bool isFixStr bool _f_isStr32 bool isStr32 bool _f_numMapElements bool numMapElements int _f_isFloat32 bool isFloat32 bool _f_isMap32 bool isMap32 bool } func NewMsgpack() *Msgpack { return &Msgpack{ } } func (this *Msgpack) Read(io *kaitai.Stream, parent interface{}, root *Msgpack) (err error) { this._io = io this._parent = parent this._root = root tmp1, err := this._io.ReadU1() if err != nil { return err } this.B1 = tmp1 switch (this.B1) { case 211: tmp2, err := this._io.ReadS8be() if err != nil { return err } this.IntExtra = tmp2 case 209: tmp3, err := this._io.ReadS2be() if err != nil { return err } this.IntExtra = tmp3 case 210: tmp4, err := this._io.ReadS4be() if err != nil { return err } this.IntExtra = tmp4 case 208: tmp5, err := this._io.ReadS1() if err != nil { return err } this.IntExtra = tmp5 case 205: tmp6, err := this._io.ReadU2be() if err != nil { return err } this.IntExtra = tmp6 case 207: tmp7, err := this._io.ReadU8be() if err != nil { return err } this.IntExtra = tmp7 case 204: tmp8, err := this._io.ReadU1() if err != nil { return err } this.IntExtra = tmp8 case 206: tmp9, err := this._io.ReadU4be() if err != nil { return err } this.IntExtra = tmp9 } tmp10, err := this.IsFloat32() if err != nil { return err } if (tmp10) { tmp11, err := this._io.ReadF4be() if err != nil { return err } this.Float32Value = float32(tmp11) } tmp12, err := this.IsFloat64() if err != nil { return err } if (tmp12) { tmp13, err := this._io.ReadF8be() if err != nil { return err } this.Float64Value = float64(tmp13) } tmp14, err := this.IsStr8() if err != nil { return err } if (tmp14) { tmp15, err := this._io.ReadU1() if err != nil { return err } this.StrLen8 = tmp15 } tmp16, err := this.IsStr16() if err != nil { return err } if (tmp16) { tmp17, err := this._io.ReadU2be() if err != nil { return err } this.StrLen16 = uint16(tmp17) } tmp18, err := this.IsStr32() if err != nil { return err } if (tmp18) { tmp19, err := this._io.ReadU4be() if err != nil { return err } this.StrLen32 = uint32(tmp19) } tmp20, err := this.IsStr() if err != nil { return err } if (tmp20) { tmp21, err := this.StrLen() if err != nil { return err } tmp22, err := this._io.ReadBytes(int(tmp21)) if err != nil { return err } tmp22 = tmp22 this.StrValue = string(tmp22) } tmp23, err := this.IsArray16() if err != nil { return err } if (tmp23) { tmp24, err := this._io.ReadU2be() if err != nil { return err } this.NumArrayElements16 = uint16(tmp24) } tmp25, err := this.IsArray32() if err != nil { return err } if (tmp25) { tmp26, err := this._io.ReadU4be() if err != nil { return err } this.NumArrayElements32 = uint32(tmp26) } tmp27, err := this.IsArray() if err != nil { return err } if (tmp27) { tmp28, err := this.NumArrayElements() if err != nil { return err } for i := 0; i < int(tmp28); i++ { _ = i tmp29 := NewMsgpack() err = tmp29.Read(this._io, this, nil) if err != nil { return err } this.ArrayElements = append(this.ArrayElements, tmp29) } } tmp30, err := this.IsMap16() if err != nil { return err } if (tmp30) { tmp31, err := this._io.ReadU2be() if err != nil { return err } this.NumMapElements16 = uint16(tmp31) } tmp32, err := this.IsMap32() if err != nil { return err } if (tmp32) { tmp33, err := this._io.ReadU4be() if err != nil { return err } this.NumMapElements32 = uint32(tmp33) } tmp34, err := this.IsMap() if err != nil { return err } if (tmp34) { tmp35, err := this.NumMapElements() if err != nil { return err } for i := 0; i < int(tmp35); i++ { _ = i tmp36 := NewMsgpack_MapTuple() err = tmp36.Read(this._io, this, this._root) if err != nil { return err } this.MapElements = append(this.MapElements, tmp36) } } return err } /** * @see Source */ func (this *Msgpack) IsArray32() (v bool, err error) { if (this._f_isArray32) { return this.isArray32, nil } this.isArray32 = bool(this.B1 == 221) this._f_isArray32 = true return this.isArray32, nil } func (this *Msgpack) IntValue() (v int, err error) { if (this._f_intValue) { return this.intValue, nil } tmp37, err := this.IsInt() if err != nil { return 0, err } if (tmp37) { var tmp38 uint8; tmp39, err := this.IsPosInt7() if err != nil { return 0, err } if (tmp39) { tmp40, err := this.PosInt7Value() if err != nil { return 0, err } tmp38 = tmp40 } else { var tmp41 int; tmp42, err := this.IsNegInt5() if err != nil { return 0, err } if (tmp42) { tmp43, err := this.NegInt5Value() if err != nil { return 0, err } tmp41 = tmp43 } else { tmp41 = 4919 } tmp38 = tmp41 } this.intValue = int(tmp38) } this._f_intValue = true return this.intValue, nil } func (this *Msgpack) StrLen() (v int, err error) { if (this._f_strLen) { return this.strLen, nil } tmp44, err := this.IsStr() if err != nil { return 0, err } if (tmp44) { var tmp45 int; tmp46, err := this.IsFixStr() if err != nil { return 0, err } if (tmp46) { tmp45 = (this.B1 & 31) } else { var tmp47 uint8; tmp48, err := this.IsStr8() if err != nil { return 0, err } if (tmp48) { tmp47 = this.StrLen8 } else { var tmp49 uint16; tmp50, err := this.IsStr16() if err != nil { return 0, err } if (tmp50) { tmp49 = this.StrLen16 } else { tmp49 = this.StrLen32 } tmp47 = tmp49 } tmp45 = tmp47 } this.strLen = int(tmp45) } this._f_strLen = true return this.strLen, nil } /** * @see Source */ func (this *Msgpack) IsFixArray() (v bool, err error) { if (this._f_isFixArray) { return this.isFixArray, nil } this.isFixArray = bool((this.B1 & 240) == 144) this._f_isFixArray = true return this.isFixArray, nil } /** * @see Source */ func (this *Msgpack) IsMap() (v bool, err error) { if (this._f_isMap) { return this.isMap, nil } tmp51, err := this.IsFixMap() if err != nil { return false, err } tmp52, err := this.IsMap16() if err != nil { return false, err } tmp53, err := this.IsMap32() if err != nil { return false, err } this.isMap = bool( ((tmp51) || (tmp52) || (tmp53)) ) this._f_isMap = true return this.isMap, nil } /** * @see Source */ func (this *Msgpack) IsArray() (v bool, err error) { if (this._f_isArray) { return this.isArray, nil } tmp54, err := this.IsFixArray() if err != nil { return false, err } tmp55, err := this.IsArray16() if err != nil { return false, err } tmp56, err := this.IsArray32() if err != nil { return false, err } this.isArray = bool( ((tmp54) || (tmp55) || (tmp56)) ) this._f_isArray = true return this.isArray, nil } func (this *Msgpack) IsFloat() (v bool, err error) { if (this._f_isFloat) { return this.isFloat, nil } tmp57, err := this.IsFloat32() if err != nil { return false, err } tmp58, err := this.IsFloat64() if err != nil { return false, err } this.isFloat = bool( ((tmp57) || (tmp58)) ) this._f_isFloat = true return this.isFloat, nil } /** * @see Source */ func (this *Msgpack) IsStr8() (v bool, err error) { if (this._f_isStr8) { return this.isStr8, nil } this.isStr8 = bool(this.B1 == 217) this._f_isStr8 = true return this.isStr8, nil } /** * @see Source */ func (this *Msgpack) IsFixMap() (v bool, err error) { if (this._f_isFixMap) { return this.isFixMap, nil } this.isFixMap = bool((this.B1 & 240) == 128) this._f_isFixMap = true return this.isFixMap, nil } func (this *Msgpack) IsInt() (v bool, err error) { if (this._f_isInt) { return this.isInt, nil } tmp59, err := this.IsPosInt7() if err != nil { return false, err } tmp60, err := this.IsNegInt5() if err != nil { return false, err } this.isInt = bool( ((tmp59) || (tmp60)) ) this._f_isInt = true return this.isInt, nil } func (this *Msgpack) IsBool() (v bool, err error) { if (this._f_isBool) { return this.isBool, nil } this.isBool = bool( ((this.B1 == 194) || (this.B1 == 195)) ) this._f_isBool = true return this.isBool, nil } /** * @see Source */ func (this *Msgpack) IsStr16() (v bool, err error) { if (this._f_isStr16) { return this.isStr16, nil } this.isStr16 = bool(this.B1 == 218) this._f_isStr16 = true return this.isStr16, nil } /** * @see Source */ func (this *Msgpack) IsFloat64() (v bool, err error) { if (this._f_isFloat64) { return this.isFloat64, nil } this.isFloat64 = bool(this.B1 == 203) this._f_isFloat64 = true return this.isFloat64, nil } /** * @see Source */ func (this *Msgpack) IsMap16() (v bool, err error) { if (this._f_isMap16) { return this.isMap16, nil } this.isMap16 = bool(this.B1 == 222) this._f_isMap16 = true return this.isMap16, nil } func (this *Msgpack) IsNegInt5() (v bool, err error) { if (this._f_isNegInt5) { return this.isNegInt5, nil } this.isNegInt5 = bool((this.B1 & 224) == 224) this._f_isNegInt5 = true return this.isNegInt5, nil } func (this *Msgpack) PosInt7Value() (v uint8, err error) { if (this._f_posInt7Value) { return this.posInt7Value, nil } tmp61, err := this.IsPosInt7() if err != nil { return 0, err } if (tmp61) { this.posInt7Value = uint8(this.B1) } this._f_posInt7Value = true return this.posInt7Value, nil } /** * @see Source */ func (this *Msgpack) IsNil() (v bool, err error) { if (this._f_isNil) { return this.isNil, nil } this.isNil = bool(this.B1 == 192) this._f_isNil = true return this.isNil, nil } func (this *Msgpack) FloatValue() (v float64, err error) { if (this._f_floatValue) { return this.floatValue, nil } tmp62, err := this.IsFloat() if err != nil { return 0, err } if (tmp62) { var tmp63 float32; tmp64, err := this.IsFloat32() if err != nil { return 0, err } if (tmp64) { tmp63 = this.Float32Value } else { tmp63 = this.Float64Value } this.floatValue = float64(tmp63) } this._f_floatValue = true return this.floatValue, nil } /** * @see Source */ func (this *Msgpack) NumArrayElements() (v int, err error) { if (this._f_numArrayElements) { return this.numArrayElements, nil } tmp65, err := this.IsArray() if err != nil { return 0, err } if (tmp65) { var tmp66 int; tmp67, err := this.IsFixArray() if err != nil { return 0, err } if (tmp67) { tmp66 = (this.B1 & 15) } else { var tmp68 uint16; tmp69, err := this.IsArray16() if err != nil { return 0, err } if (tmp69) { tmp68 = this.NumArrayElements16 } else { tmp68 = this.NumArrayElements32 } tmp66 = tmp68 } this.numArrayElements = int(tmp66) } this._f_numArrayElements = true return this.numArrayElements, nil } func (this *Msgpack) NegInt5Value() (v int, err error) { if (this._f_negInt5Value) { return this.negInt5Value, nil } tmp70, err := this.IsNegInt5() if err != nil { return 0, err } if (tmp70) { this.negInt5Value = int(-((this.B1 & 31))) } this._f_negInt5Value = true return this.negInt5Value, nil } /** * @see Source */ func (this *Msgpack) BoolValue() (v bool, err error) { if (this._f_boolValue) { return this.boolValue, nil } tmp71, err := this.IsBool() if err != nil { return false, err } if (tmp71) { this.boolValue = bool(this.B1 == 195) } this._f_boolValue = true return this.boolValue, nil } func (this *Msgpack) IsPosInt7() (v bool, err error) { if (this._f_isPosInt7) { return this.isPosInt7, nil } this.isPosInt7 = bool((this.B1 & 128) == 0) this._f_isPosInt7 = true return this.isPosInt7, nil } /** * @see Source */ func (this *Msgpack) IsArray16() (v bool, err error) { if (this._f_isArray16) { return this.isArray16, nil } this.isArray16 = bool(this.B1 == 220) this._f_isArray16 = true return this.isArray16, nil } func (this *Msgpack) IsStr() (v bool, err error) { if (this._f_isStr) { return this.isStr, nil } tmp72, err := this.IsFixStr() if err != nil { return false, err } tmp73, err := this.IsStr8() if err != nil { return false, err } tmp74, err := this.IsStr16() if err != nil { return false, err } tmp75, err := this.IsStr32() if err != nil { return false, err } this.isStr = bool( ((tmp72) || (tmp73) || (tmp74) || (tmp75)) ) this._f_isStr = true return this.isStr, nil } /** * @see Source */ func (this *Msgpack) IsFixStr() (v bool, err error) { if (this._f_isFixStr) { return this.isFixStr, nil } this.isFixStr = bool((this.B1 & 224) == 160) this._f_isFixStr = true return this.isFixStr, nil } /** * @see Source */ func (this *Msgpack) IsStr32() (v bool, err error) { if (this._f_isStr32) { return this.isStr32, nil } this.isStr32 = bool(this.B1 == 219) this._f_isStr32 = true return this.isStr32, nil } /** * @see Source */ func (this *Msgpack) NumMapElements() (v int, err error) { if (this._f_numMapElements) { return this.numMapElements, nil } tmp76, err := this.IsMap() if err != nil { return 0, err } if (tmp76) { var tmp77 int; tmp78, err := this.IsFixMap() if err != nil { return 0, err } if (tmp78) { tmp77 = (this.B1 & 15) } else { var tmp79 uint16; tmp80, err := this.IsMap16() if err != nil { return 0, err } if (tmp80) { tmp79 = this.NumMapElements16 } else { tmp79 = this.NumMapElements32 } tmp77 = tmp79 } this.numMapElements = int(tmp77) } this._f_numMapElements = true return this.numMapElements, nil } /** * @see Source */ func (this *Msgpack) IsFloat32() (v bool, err error) { if (this._f_isFloat32) { return this.isFloat32, nil } this.isFloat32 = bool(this.B1 == 202) this._f_isFloat32 = true return this.isFloat32, nil } /** * @see Source */ func (this *Msgpack) IsMap32() (v bool, err error) { if (this._f_isMap32) { return this.isMap32, nil } this.isMap32 = bool(this.B1 == 223) this._f_isMap32 = true return this.isMap32, nil } /** * First byte is msgpack message is either a piece of data by * itself or determines types of further, more complex data * structures. */ type Msgpack_MapTuple struct { Key *Msgpack Value *Msgpack _io *kaitai.Stream _root *Msgpack _parent *Msgpack } func NewMsgpack_MapTuple() *Msgpack_MapTuple { return &Msgpack_MapTuple{ } } func (this *Msgpack_MapTuple) Read(io *kaitai.Stream, parent *Msgpack, root *Msgpack) (err error) { this._io = io this._parent = parent this._root = root tmp81 := NewMsgpack() err = tmp81.Read(this._io, this, nil) if err != nil { return err } this.Key = tmp81 tmp82 := NewMsgpack() err = tmp82.Read(this._io, this, nil) if err != nil { return err } this.Value = tmp82 return err }