MCPcopy Create free account
hub / github.com/ZeppelinMC/Zeppelin / decodeStructCompound

Method decodeStructCompound

protocol/nbt/qnbt/struct.go:81–245  ·  view source on GitHub ↗
(s *struct_t)

Source from the content-addressed store, hash-verified

79}
80
81func (d *Decoder) decodeStructCompound(s *struct_t) error {
82 var name string
83 for {
84 tag, err := d.readByte2()
85 if err != nil {
86 return err
87 }
88
89 if tag == end_t {
90 return nil
91 }
92 if err := d.readStringNonCopy(&name); err != nil {
93 return err
94 }
95
96 field, fieldPtr, ok := s.field(name)
97
98 if ok {
99 //if err := match(name, tag, field.typ); err != nil {
100 // return err
101 //}
102
103 switch tag {
104 case byte_t:
105 if err := d.readBytePtr(fieldPtr); err != nil {
106 return err
107 }
108 case string_t:
109 if err := d.readStringPtr(fieldPtr); err != nil {
110 return err
111 }
112 case short_t:
113 if err := d.readShortPtr(fieldPtr); err != nil {
114 return err
115 }
116 case int_t, float_t:
117 if err := d.readIntPtr(fieldPtr); err != nil {
118 return err
119 }
120 case long_t, double_t:
121 if err := d.readLongPtr(fieldPtr); err != nil {
122 return err
123 }
124 case byte_array_t:
125 switch kindOf(field.typ) {
126 case array_k:
127 if err := d.readByteArray(fieldPtr); err != nil {
128 return err
129 }
130 case slice_k:
131 l, err := d.readInt()
132 if err != nil {
133 return err
134 }
135
136 ptr := mallocgc(uintptr(l), nil, true)
137 if err := d.decodeByteArray(int(l), ptr); err != nil {
138 return err

Callers 2

DecodeMethod · 0.95
readListArrayMethod · 0.95

Calls 15

readByte2Method · 0.95
readStringNonCopyMethod · 0.95
readBytePtrMethod · 0.95
readStringPtrMethod · 0.95
readShortPtrMethod · 0.95
readIntPtrMethod · 0.95
readLongPtrMethod · 0.95
readByteArrayMethod · 0.95
readIntMethod · 0.95
decodeByteArrayMethod · 0.95
readLongArrayMethod · 0.95
decodeLongArrayMethod · 0.95

Tested by

no test coverage detected