1// comment this out // + build ignore 2 3// Copyright (c) 2012-2018 Ugorji Nwoke. All rights reserved. 4// Use of this source code is governed by a MIT license found in the LICENSE file. 5 6// Code generated from gen-helper.go.tmpl - DO NOT EDIT. 7 8package codec 9 10import "encoding" 11 12// GenVersion is the current version of codecgen. 13const GenVersion = {{ .Version }} 14 15// This file is used to generate helper code for codecgen. 16// The values here i.e. genHelper(En|De)coder are not to be used directly by 17// library users. They WILL change continuously and without notice. 18 19{{/* 20// To help enforce this, we create an unexported type with exported members. 21// The only way to get the type is via the one exported type that we control (somewhat). 22// 23// When static codecs are created for types, they will use this value 24// to perform encoding or decoding of primitives or known slice or map types. 25*/ -}} 26 27// GenHelperEncoder is exported so that it can be used externally by codecgen. 28// 29// Library users: DO NOT USE IT DIRECTLY. IT WILL CHANGE CONTINOUSLY WITHOUT NOTICE. 30func GenHelperEncoder(e *Encoder) (ge genHelperEncoder, ee genHelperEncDriver) { 31 ge = genHelperEncoder{e: e} 32 ee = genHelperEncDriver{encDriver: e.e} 33 return 34} 35 36// GenHelperDecoder is exported so that it can be used externally by codecgen. 37// 38// Library users: DO NOT USE IT DIRECTLY. IT WILL CHANGE CONTINOUSLY WITHOUT NOTICE. 39func GenHelperDecoder(d *Decoder) (gd genHelperDecoder, dd genHelperDecDriver) { 40 gd = genHelperDecoder{d: d} 41 dd = genHelperDecDriver{decDriver: d.d} 42 return 43} 44 45type genHelperEncDriver struct { 46 encDriver 47} 48 49type genHelperDecDriver struct { 50 decDriver 51} 52 53// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* 54type genHelperEncoder struct { 55 M must 56 F fastpathT 57 e *Encoder 58} 59 60// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* 61type genHelperDecoder struct { 62 C checkOverflow 63 F fastpathT 64 d *Decoder 65} 66 67// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* 68func (f genHelperEncoder) EncBasicHandle() *BasicHandle { 69 return f.e.h 70} 71// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* 72func (f genHelperEncoder) EncBinary() bool { 73 return f.e.be // f.e.hh.isBinaryEncoding() 74} 75// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* 76func (f genHelperEncoder) IsJSONHandle() bool { 77 return f.e.js 78} 79// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* 80func (f genHelperEncoder) EncFallback(iv interface{}) { 81 // f.e.encodeI(iv, false, false) 82 f.e.encodeValue(rv4i(iv), nil) 83} 84// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* 85func (f genHelperEncoder) EncTextMarshal(iv encoding.TextMarshaler) { 86 bs, fnerr := iv.MarshalText() 87 f.e.marshalUtf8(bs, fnerr) 88} 89// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* 90func (f genHelperEncoder) EncJSONMarshal(iv jsonMarshaler) { 91 bs, fnerr := iv.MarshalJSON() 92 f.e.marshalAsis(bs, fnerr) 93} 94// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* 95func (f genHelperEncoder) EncBinaryMarshal(iv encoding.BinaryMarshaler) { 96 bs, fnerr := iv.MarshalBinary() 97 f.e.marshalRaw(bs, fnerr) 98} 99// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* 100func (f genHelperEncoder) EncRaw(iv Raw) { f.e.rawBytes(iv) } 101 102// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* 103func (f genHelperEncoder) I2Rtid(v interface{}) uintptr { 104 return i2rtid(v) 105} 106// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* 107func (f genHelperEncoder) Extension(rtid uintptr) (xfn *extTypeTagFn) { 108 return f.e.h.getExt(rtid, true) 109} 110// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* 111func (f genHelperEncoder) EncExtension(v interface{}, xfFn *extTypeTagFn) { 112 f.e.e.EncodeExt(v, xfFn.tag, xfFn.ext) 113} 114// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* 115func (f genHelperEncoder) WriteStr(s string) { 116 f.e.w().writestr(s) 117} 118// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* 119func (f genHelperEncoder) BytesView(v string) []byte { return bytesView(v) } 120 121// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* 122func (f genHelperEncoder) EncWriteMapStart(length int) { f.e.mapStart(length) } 123// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* 124func (f genHelperEncoder) EncWriteMapEnd() { f.e.mapEnd() } 125// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* 126func (f genHelperEncoder) EncWriteArrayStart(length int) { f.e.arrayStart(length) } 127// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* 128func (f genHelperEncoder) EncWriteArrayEnd() { f.e.arrayEnd() } 129// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* 130func (f genHelperEncoder) EncWriteArrayElem() { f.e.arrayElem() } 131// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* 132func (f genHelperEncoder) EncWriteMapElemKey() { f.e.mapElemKey() } 133// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* 134func (f genHelperEncoder) EncWriteMapElemValue() { f.e.mapElemValue() } 135 136// ---------------- DECODER FOLLOWS ----------------- 137 138// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* 139func (f genHelperDecoder) DecBasicHandle() *BasicHandle { 140 return f.d.h 141} 142// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* 143func (f genHelperDecoder) DecBinary() bool { 144 return f.d.be // f.d.hh.isBinaryEncoding() 145} 146// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* 147func (f genHelperDecoder) DecSwallow() { f.d.swallow() } 148// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* 149func (f genHelperDecoder) DecScratchBuffer() []byte { 150 return f.d.b[:] 151} 152// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* 153func (f genHelperDecoder) DecScratchArrayBuffer() *[decScratchByteArrayLen]byte { 154 return &f.d.b 155} 156// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* 157func (f genHelperDecoder) DecFallback(iv interface{}, chkPtr bool) { 158 rv := rv4i(iv) 159 if chkPtr { 160 f.d.ensureDecodeable(rv) 161 } 162 f.d.decodeValue(rv, nil) 163} 164// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* 165func (f genHelperDecoder) DecSliceHelperStart() (decSliceHelper, int) { 166 return f.d.decSliceHelperStart() 167} 168// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* 169func (f genHelperDecoder) DecStructFieldNotFound(index int, name string) { 170 f.d.structFieldNotFound(index, name) 171} 172// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* 173func (f genHelperDecoder) DecArrayCannotExpand(sliceLen, streamLen int) { 174 f.d.arrayCannotExpand(sliceLen, streamLen) 175} 176// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* 177func (f genHelperDecoder) DecTextUnmarshal(tm encoding.TextUnmarshaler) { 178 if fnerr := tm.UnmarshalText(f.d.d.DecodeStringAsBytes()); fnerr != nil { 179 panic(fnerr) 180 } 181} 182// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* 183func (f genHelperDecoder) DecJSONUnmarshal(tm jsonUnmarshaler) { 184 // bs := f.dd.DecodeStringAsBytes() 185 // grab the bytes to be read, as UnmarshalJSON needs the full JSON so as to unmarshal it itself. 186 if fnerr := tm.UnmarshalJSON(f.d.nextValueBytes()); fnerr != nil { 187 panic(fnerr) 188 } 189} 190// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* 191func (f genHelperDecoder) DecBinaryUnmarshal(bm encoding.BinaryUnmarshaler) { 192 if fnerr := bm.UnmarshalBinary(f.d.d.DecodeBytes(nil, true)); fnerr != nil { 193 panic(fnerr) 194 } 195} 196// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* 197func (f genHelperDecoder) DecRaw() []byte { return f.d.rawBytes() } 198 199// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* 200func (f genHelperDecoder) IsJSONHandle() bool { 201 return f.d.js 202} 203// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* 204func (f genHelperDecoder) I2Rtid(v interface{}) uintptr { 205 return i2rtid(v) 206} 207// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* 208func (f genHelperDecoder) Extension(rtid uintptr) (xfn *extTypeTagFn) { 209 return f.d.h.getExt(rtid, true) 210} 211// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* 212func (f genHelperDecoder) DecExtension(v interface{}, xfFn *extTypeTagFn) { 213 f.d.d.DecodeExt(v, xfFn.tag, xfFn.ext) 214} 215// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* 216func (f genHelperDecoder) DecInferLen(clen, maxlen, unit int) (rvlen int) { 217 return decInferLen(clen, maxlen, unit) 218} 219// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* 220func (f genHelperDecoder) StringView(v []byte) string { return stringView(v) } 221 222// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* 223func (f genHelperDecoder) DecReadMapStart() int { return f.d.mapStart() } 224// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* 225func (f genHelperDecoder) DecReadMapEnd() { f.d.mapEnd() } 226// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* 227func (f genHelperDecoder) DecReadArrayStart() int { return f.d.arrayStart() } 228// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* 229func (f genHelperDecoder) DecReadArrayEnd() { f.d.arrayEnd() } 230// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* 231func (f genHelperDecoder) DecReadArrayElem() { f.d.arrayElem() } 232// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* 233func (f genHelperDecoder) DecReadMapElemKey() { f.d.mapElemKey() } 234// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* 235func (f genHelperDecoder) DecReadMapElemValue() { f.d.mapElemValue() } 236 237// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* 238func (f genHelperDecoder) DecDecodeFloat32() float32 { return f.d.decodeFloat32() } 239// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* 240func (f genHelperDecoder) DecCheckBreak() bool { return f.d.checkBreak() } 241 242