@@ -176,7 +176,7 @@ type Type struct {
176
176
func (k * Type ) InitElem (attr Attribute , dataType string , init bool ) (goCode string ) {
177
177
var buffer LineBuffer
178
178
179
- // defer func() { buffer.WriteLine("decoder.SetErr(err)"); goCode = buffer.String() }()
179
+ // defer func() { buffer.WriteLine("k. decoder.SetErr(err)"); goCode = buffer.String() }()
180
180
defer func () { goCode = buffer .String () }()
181
181
182
182
// init and parse element
@@ -196,7 +196,7 @@ func (k *Type) InitElem(attr Attribute, dataType string, init bool) (goCode stri
196
196
197
197
if resetPos {
198
198
// save position
199
- buffer .WriteLine ("pos, _ := decoder.Seek(0, io.SeekCurrent)" )
199
+ buffer .WriteLine ("pos, _ := k. decoder.Seek(0, io.SeekCurrent)" )
200
200
}
201
201
202
202
// read data
@@ -205,15 +205,15 @@ func (k *Type) InitElem(attr Attribute, dataType string, init bool) (goCode stri
205
205
endian = "binary.BigEndian"
206
206
}
207
207
if attr .SizeEos != "" {
208
- buffer .WriteLine ("elem, err = ioutil.ReadAll(decoder)" )
208
+ buffer .WriteLine ("elem, err = ioutil.ReadAll(k. decoder)" )
209
209
} else if terminated {
210
210
211
211
if attr .Size == "" {
212
- buffer .WriteLine ("elem, err = bufio.NewReader(decoder).ReadBytes(" + term + ")" )
212
+ buffer .WriteLine ("elem, err = bufio.NewReader(k. decoder).ReadBytes(" + term + ")" )
213
213
buffer .WriteLine ("if err != nil && err == io.EOF { err = nil }" )
214
214
} else {
215
215
// term & size
216
- buffer .WriteLine ("_, err = decoder.Read(elem)" )
216
+ buffer .WriteLine ("_, err = k. decoder.Read(elem)" )
217
217
}
218
218
219
219
// eos
@@ -226,10 +226,10 @@ func (k *Type) InitElem(attr Attribute, dataType string, init bool) (goCode stri
226
226
buffer .WriteLine ("err = nil" )
227
227
228
228
} else {
229
- buffer .WriteLine ("err = binary.Read(decoder, " + endian + ", &elem)" )
229
+ buffer .WriteLine ("err = binary.Read(k. decoder, " + endian + ", &elem)" )
230
230
}
231
231
} else {
232
- buffer .WriteLine ("err = elem.Decode(nil , k, k.Root())" )
232
+ buffer .WriteLine ("err = elem.Decode(k.decoder , k, k.Root())" )
233
233
}
234
234
235
235
// pad
@@ -255,7 +255,7 @@ func (k *Type) InitElem(attr Attribute, dataType string, init bool) (goCode stri
255
255
}
256
256
257
257
// include
258
- // buffer.WriteLine("pos, _ := decoder.Seek(0, io.SeekCurrent)")
258
+ // buffer.WriteLine("pos, _ := k. decoder.Seek(0, io.SeekCurrent)")
259
259
// buffer.WriteLine("fmt.Println(pos, elem)")
260
260
if (terminated ) && attr .Include == "" { // && attr.Size == "" {
261
261
buffer .WriteLine ("elem = elem[:len(elem)-1]" )
@@ -269,7 +269,7 @@ func (k *Type) InitElem(attr Attribute, dataType string, init bool) (goCode stri
269
269
buffer .WriteLine ("pos -= 1" )
270
270
buffer .WriteLine ("}" )
271
271
}
272
- buffer .WriteLine ("_, err = decoder.Seek(pos, io.SeekStart)" )
272
+ buffer .WriteLine ("_, err = k. decoder.Seek(pos, io.SeekStart)" )
273
273
}
274
274
275
275
return
@@ -302,7 +302,7 @@ func (k *Type) InitAttr(attr Attribute) (goCode string) {
302
302
303
303
if attr .Pos != "" {
304
304
// save position
305
- buffer .WriteLine ("pos" + attr .Name () + ", _ := decoder.Seek(0, io.SeekCurrent) // Cannot fail" )
305
+ buffer .WriteLine ("pos" + attr .Name () + ", _ := k. decoder.Seek(0, io.SeekCurrent) // Cannot fail" )
306
306
whence := "io.SeekCurrent"
307
307
whenceMap := map [string ]string {
308
308
"seek_set" : "io.SeekStart" ,
@@ -313,12 +313,12 @@ func (k *Type) InitAttr(attr Attribute) (goCode string) {
313
313
whence = val
314
314
}
315
315
if whence == "io.SeekCurrent" {
316
- buffer .WriteLine ("decoder.Seek(0, io.SeekStart)" )
316
+ buffer .WriteLine ("k. decoder.Seek(0, io.SeekStart)" )
317
317
}
318
- buffer .WriteLine ("_, err = decoder.Seek(" + goExpr (attr .Pos , "int64" ) + ", " + whence + ")" )
318
+ buffer .WriteLine ("_, err = k. decoder.Seek(" + goExpr (attr .Pos , "int64" ) + ", " + whence + ")" )
319
319
buffer .WriteLine ("if err != nil { return }" )
320
320
// restore position
321
- defer buffer .WriteLine ("decoder.Seek(pos" + attr .Name () + ", io.SeekStart)" )
321
+ defer buffer .WriteLine ("k. decoder.Seek(pos" + attr .Name () + ", io.SeekStart)" )
322
322
}
323
323
324
324
switch {
@@ -377,8 +377,8 @@ func (k *Type) InitAttr(attr Attribute) (goCode string) {
377
377
// custom struct
378
378
// init variable
379
379
// if attr.Size != "" {
380
- // buffer.WriteLine(attr.Name() + "pos, _ := decoder.Seek(0, io.SeekCurrent) // Cannot fail")
381
- // defer buffer.WriteLine("decoder.Seek(" + attr.Name() + "pos + " + goExpr(attr.Size, "int64") + ", io.SeekStart)")
380
+ // buffer.WriteLine(attr.Name() + "pos, _ := k. decoder.Seek(0, io.SeekCurrent) // Cannot fail")
381
+ // defer buffer.WriteLine("k. decoder.Seek(" + attr.Name() + "pos + " + goExpr(attr.Size, "int64") + ", io.SeekStart)")
382
382
// }
383
383
// buffer.WriteLine("k." + attr.Name() + " = &" + attr.DataType()[1:] + "{}")
384
384
case attr .Type .TypeSwitch .SwitchOn != "" :
@@ -449,6 +449,7 @@ func (k *Type) String(typeName string, parent string, root string) string {
449
449
450
450
// print type start
451
451
buffer .WriteLine ("type " + typeName + " struct{" )
452
+ buffer .WriteLine ("decoder io.ReadSeeker" )
452
453
buffer .WriteLine ("parent interface{}" )
453
454
buffer .WriteLine ("root interface{}" )
454
455
@@ -480,11 +481,11 @@ func (k *Type) String(typeName string, parent string, root string) string {
480
481
481
482
// decode function
482
483
buffer .WriteLine ("func (k *" + typeName + ") Decode(reader io.ReadSeeker, ancestors ...interface{}) (err error) {" )
483
- buffer .WriteLine ("if decoder == nil {" )
484
+ buffer .WriteLine ("if k. decoder == nil {" )
484
485
buffer .WriteLine ("if reader == nil {" )
485
- buffer .WriteLine ("panic(\" Neither decoder nor reader are set.\" )" )
486
+ buffer .WriteLine ("panic(\" Neither k. decoder nor reader are set.\" )" )
486
487
buffer .WriteLine ("}" )
487
- buffer .WriteLine ("decoder = reader " )
488
+ buffer .WriteLine ("k. decoder = reader " )
488
489
buffer .WriteLine ("}" )
489
490
490
491
buffer .WriteLine ("if len(ancestors) == 2 {" )
0 commit comments