fast-path.go 51 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287
  1. // Copyright (c) 2012, 2013 Ugorji Nwoke. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license found in the LICENSE file.
  3. // ************************************************************
  4. // DO NOT EDIT.
  5. // THIS FILE IS GENERATED BY RUNNING: go run gen-fast-path.go
  6. // ************************************************************
  7. package codec
  8. // Fast path functions try to create a fast path encode or decode implementation
  9. // for common maps and slices.
  10. //
  11. // We define the functions and register then in this single file
  12. // so as not to pollute the encode.go and decode.go, and create a dependency in there.
  13. // This file can be omitted without causing a build failure.
  14. //
  15. // The advantage of fast paths is:
  16. // - Many calls bypass reflection altogether
  17. //
  18. // Currently support
  19. // - slice of all builtin types,
  20. // - map of all builtin types to string or interface value
  21. // - symetrical maps of all builtin types (e.g. str-str, uint8-uint8)
  22. // This should provide adequate "typical" implementations.
  23. import (
  24. "reflect"
  25. )
  26. func init() {
  27. if !fastpathEnabled {
  28. return // basically disable the fast path checks (since accessing empty map is basically free)
  29. }
  30. fdx := func(i interface{}, fd func(*decFnInfo, reflect.Value)) {
  31. fastpathsDec[reflect.ValueOf(reflect.TypeOf(i)).Pointer()] = fd
  32. }
  33. fex := func(i interface{}, fe func(*encFnInfo, reflect.Value)) {
  34. fastpathsEnc[reflect.ValueOf(reflect.TypeOf(i)).Pointer()] = fe
  35. }
  36. fex([]interface{}(nil), (*encFnInfo).fastEncSliceIntf)
  37. fex([]string(nil), (*encFnInfo).fastEncSliceString)
  38. fex([]float32(nil), (*encFnInfo).fastEncSliceFloat32)
  39. fex([]float64(nil), (*encFnInfo).fastEncSliceFloat64)
  40. fex([]uint(nil), (*encFnInfo).fastEncSliceUint)
  41. fex([]uint16(nil), (*encFnInfo).fastEncSliceUint16)
  42. fex([]uint32(nil), (*encFnInfo).fastEncSliceUint32)
  43. fex([]uint64(nil), (*encFnInfo).fastEncSliceUint64)
  44. fex([]int(nil), (*encFnInfo).fastEncSliceInt)
  45. fex([]int8(nil), (*encFnInfo).fastEncSliceInt8)
  46. fex([]int16(nil), (*encFnInfo).fastEncSliceInt16)
  47. fex([]int32(nil), (*encFnInfo).fastEncSliceInt32)
  48. fex([]int64(nil), (*encFnInfo).fastEncSliceInt64)
  49. fex([]bool(nil), (*encFnInfo).fastEncSliceBool)
  50. fex(map[interface{}]interface{}(nil), (*encFnInfo).fastEncMapIntfIntf)
  51. fex(map[interface{}]string(nil), (*encFnInfo).fastEncMapIntfString)
  52. fex(map[string]interface{}(nil), (*encFnInfo).fastEncMapStringIntf)
  53. fex(map[string]string(nil), (*encFnInfo).fastEncMapStringString)
  54. fex(map[float32]interface{}(nil), (*encFnInfo).fastEncMapFloat32Intf)
  55. fex(map[float32]string(nil), (*encFnInfo).fastEncMapFloat32String)
  56. fex(map[float32]float32(nil), (*encFnInfo).fastEncMapFloat32Float32)
  57. fex(map[float64]interface{}(nil), (*encFnInfo).fastEncMapFloat64Intf)
  58. fex(map[float64]string(nil), (*encFnInfo).fastEncMapFloat64String)
  59. fex(map[float64]float64(nil), (*encFnInfo).fastEncMapFloat64Float64)
  60. fex(map[uint]interface{}(nil), (*encFnInfo).fastEncMapUintIntf)
  61. fex(map[uint]string(nil), (*encFnInfo).fastEncMapUintString)
  62. fex(map[uint]uint(nil), (*encFnInfo).fastEncMapUintUint)
  63. fex(map[uint8]interface{}(nil), (*encFnInfo).fastEncMapUint8Intf)
  64. fex(map[uint8]string(nil), (*encFnInfo).fastEncMapUint8String)
  65. fex(map[uint8]uint8(nil), (*encFnInfo).fastEncMapUint8Uint8)
  66. fex(map[uint16]interface{}(nil), (*encFnInfo).fastEncMapUint16Intf)
  67. fex(map[uint16]string(nil), (*encFnInfo).fastEncMapUint16String)
  68. fex(map[uint16]uint16(nil), (*encFnInfo).fastEncMapUint16Uint16)
  69. fex(map[uint32]interface{}(nil), (*encFnInfo).fastEncMapUint32Intf)
  70. fex(map[uint32]string(nil), (*encFnInfo).fastEncMapUint32String)
  71. fex(map[uint32]uint32(nil), (*encFnInfo).fastEncMapUint32Uint32)
  72. fex(map[uint64]interface{}(nil), (*encFnInfo).fastEncMapUint64Intf)
  73. fex(map[uint64]string(nil), (*encFnInfo).fastEncMapUint64String)
  74. fex(map[uint64]uint64(nil), (*encFnInfo).fastEncMapUint64Uint64)
  75. fex(map[int]interface{}(nil), (*encFnInfo).fastEncMapIntIntf)
  76. fex(map[int]string(nil), (*encFnInfo).fastEncMapIntString)
  77. fex(map[int]int(nil), (*encFnInfo).fastEncMapIntInt)
  78. fex(map[int8]interface{}(nil), (*encFnInfo).fastEncMapInt8Intf)
  79. fex(map[int8]string(nil), (*encFnInfo).fastEncMapInt8String)
  80. fex(map[int8]int8(nil), (*encFnInfo).fastEncMapInt8Int8)
  81. fex(map[int16]interface{}(nil), (*encFnInfo).fastEncMapInt16Intf)
  82. fex(map[int16]string(nil), (*encFnInfo).fastEncMapInt16String)
  83. fex(map[int16]int16(nil), (*encFnInfo).fastEncMapInt16Int16)
  84. fex(map[int32]interface{}(nil), (*encFnInfo).fastEncMapInt32Intf)
  85. fex(map[int32]string(nil), (*encFnInfo).fastEncMapInt32String)
  86. fex(map[int32]int32(nil), (*encFnInfo).fastEncMapInt32Int32)
  87. fex(map[int64]interface{}(nil), (*encFnInfo).fastEncMapInt64Intf)
  88. fex(map[int64]string(nil), (*encFnInfo).fastEncMapInt64String)
  89. fex(map[int64]int64(nil), (*encFnInfo).fastEncMapInt64Int64)
  90. fex(map[bool]interface{}(nil), (*encFnInfo).fastEncMapBoolIntf)
  91. fex(map[bool]string(nil), (*encFnInfo).fastEncMapBoolString)
  92. fex(map[bool]bool(nil), (*encFnInfo).fastEncMapBoolBool)
  93. fdx([]interface{}(nil), (*decFnInfo).fastDecSliceIntf)
  94. fdx([]string(nil), (*decFnInfo).fastDecSliceString)
  95. fdx([]float32(nil), (*decFnInfo).fastDecSliceFloat32)
  96. fdx([]float64(nil), (*decFnInfo).fastDecSliceFloat64)
  97. fdx([]uint(nil), (*decFnInfo).fastDecSliceUint)
  98. fdx([]uint16(nil), (*decFnInfo).fastDecSliceUint16)
  99. fdx([]uint32(nil), (*decFnInfo).fastDecSliceUint32)
  100. fdx([]uint64(nil), (*decFnInfo).fastDecSliceUint64)
  101. fdx([]int(nil), (*decFnInfo).fastDecSliceInt)
  102. fdx([]int8(nil), (*decFnInfo).fastDecSliceInt8)
  103. fdx([]int16(nil), (*decFnInfo).fastDecSliceInt16)
  104. fdx([]int32(nil), (*decFnInfo).fastDecSliceInt32)
  105. fdx([]int64(nil), (*decFnInfo).fastDecSliceInt64)
  106. fdx([]bool(nil), (*decFnInfo).fastDecSliceBool)
  107. fdx(map[interface{}]interface{}(nil), (*decFnInfo).fastDecMapIntfIntf)
  108. fdx(map[interface{}]string(nil), (*decFnInfo).fastDecMapIntfString)
  109. fdx(map[string]interface{}(nil), (*decFnInfo).fastDecMapStringIntf)
  110. fdx(map[string]string(nil), (*decFnInfo).fastDecMapStringString)
  111. fdx(map[float32]interface{}(nil), (*decFnInfo).fastDecMapFloat32Intf)
  112. fdx(map[float32]string(nil), (*decFnInfo).fastDecMapFloat32String)
  113. fdx(map[float32]float32(nil), (*decFnInfo).fastDecMapFloat32Float32)
  114. fdx(map[float64]interface{}(nil), (*decFnInfo).fastDecMapFloat64Intf)
  115. fdx(map[float64]string(nil), (*decFnInfo).fastDecMapFloat64String)
  116. fdx(map[float64]float64(nil), (*decFnInfo).fastDecMapFloat64Float64)
  117. fdx(map[uint]interface{}(nil), (*decFnInfo).fastDecMapUintIntf)
  118. fdx(map[uint]string(nil), (*decFnInfo).fastDecMapUintString)
  119. fdx(map[uint]uint(nil), (*decFnInfo).fastDecMapUintUint)
  120. fdx(map[uint8]interface{}(nil), (*decFnInfo).fastDecMapUint8Intf)
  121. fdx(map[uint8]string(nil), (*decFnInfo).fastDecMapUint8String)
  122. fdx(map[uint8]uint8(nil), (*decFnInfo).fastDecMapUint8Uint8)
  123. fdx(map[uint16]interface{}(nil), (*decFnInfo).fastDecMapUint16Intf)
  124. fdx(map[uint16]string(nil), (*decFnInfo).fastDecMapUint16String)
  125. fdx(map[uint16]uint16(nil), (*decFnInfo).fastDecMapUint16Uint16)
  126. fdx(map[uint32]interface{}(nil), (*decFnInfo).fastDecMapUint32Intf)
  127. fdx(map[uint32]string(nil), (*decFnInfo).fastDecMapUint32String)
  128. fdx(map[uint32]uint32(nil), (*decFnInfo).fastDecMapUint32Uint32)
  129. fdx(map[uint64]interface{}(nil), (*decFnInfo).fastDecMapUint64Intf)
  130. fdx(map[uint64]string(nil), (*decFnInfo).fastDecMapUint64String)
  131. fdx(map[uint64]uint64(nil), (*decFnInfo).fastDecMapUint64Uint64)
  132. fdx(map[int]interface{}(nil), (*decFnInfo).fastDecMapIntIntf)
  133. fdx(map[int]string(nil), (*decFnInfo).fastDecMapIntString)
  134. fdx(map[int]int(nil), (*decFnInfo).fastDecMapIntInt)
  135. fdx(map[int8]interface{}(nil), (*decFnInfo).fastDecMapInt8Intf)
  136. fdx(map[int8]string(nil), (*decFnInfo).fastDecMapInt8String)
  137. fdx(map[int8]int8(nil), (*decFnInfo).fastDecMapInt8Int8)
  138. fdx(map[int16]interface{}(nil), (*decFnInfo).fastDecMapInt16Intf)
  139. fdx(map[int16]string(nil), (*decFnInfo).fastDecMapInt16String)
  140. fdx(map[int16]int16(nil), (*decFnInfo).fastDecMapInt16Int16)
  141. fdx(map[int32]interface{}(nil), (*decFnInfo).fastDecMapInt32Intf)
  142. fdx(map[int32]string(nil), (*decFnInfo).fastDecMapInt32String)
  143. fdx(map[int32]int32(nil), (*decFnInfo).fastDecMapInt32Int32)
  144. fdx(map[int64]interface{}(nil), (*decFnInfo).fastDecMapInt64Intf)
  145. fdx(map[int64]string(nil), (*decFnInfo).fastDecMapInt64String)
  146. fdx(map[int64]int64(nil), (*decFnInfo).fastDecMapInt64Int64)
  147. fdx(map[bool]interface{}(nil), (*decFnInfo).fastDecMapBoolIntf)
  148. fdx(map[bool]string(nil), (*decFnInfo).fastDecMapBoolString)
  149. fdx(map[bool]bool(nil), (*decFnInfo).fastDecMapBoolBool)
  150. }
  151. // -- encode
  152. func (f *encFnInfo) fastEncSliceIntf(rv reflect.Value) {
  153. v := rv.Interface().([]interface{})
  154. f.ee.encodeArrayPreamble(len(v))
  155. for _, v2 := range v {
  156. f.e.encode(v2)
  157. }
  158. }
  159. func (f *encFnInfo) fastEncSliceString(rv reflect.Value) {
  160. v := rv.Interface().([]string)
  161. f.ee.encodeArrayPreamble(len(v))
  162. for _, v2 := range v {
  163. f.ee.encodeString(c_UTF8, v2)
  164. }
  165. }
  166. func (f *encFnInfo) fastEncSliceFloat32(rv reflect.Value) {
  167. v := rv.Interface().([]float32)
  168. f.ee.encodeArrayPreamble(len(v))
  169. for _, v2 := range v {
  170. f.ee.encodeFloat32(v2)
  171. }
  172. }
  173. func (f *encFnInfo) fastEncSliceFloat64(rv reflect.Value) {
  174. v := rv.Interface().([]float64)
  175. f.ee.encodeArrayPreamble(len(v))
  176. for _, v2 := range v {
  177. f.ee.encodeFloat64(v2)
  178. }
  179. }
  180. func (f *encFnInfo) fastEncSliceUint(rv reflect.Value) {
  181. v := rv.Interface().([]uint)
  182. f.ee.encodeArrayPreamble(len(v))
  183. for _, v2 := range v {
  184. f.ee.encodeUint(uint64(v2))
  185. }
  186. }
  187. func (f *encFnInfo) fastEncSliceUint16(rv reflect.Value) {
  188. v := rv.Interface().([]uint16)
  189. f.ee.encodeArrayPreamble(len(v))
  190. for _, v2 := range v {
  191. f.ee.encodeUint(uint64(v2))
  192. }
  193. }
  194. func (f *encFnInfo) fastEncSliceUint32(rv reflect.Value) {
  195. v := rv.Interface().([]uint32)
  196. f.ee.encodeArrayPreamble(len(v))
  197. for _, v2 := range v {
  198. f.e.encode(v2)
  199. }
  200. }
  201. func (f *encFnInfo) fastEncSliceUint64(rv reflect.Value) {
  202. v := rv.Interface().([]uint64)
  203. f.ee.encodeArrayPreamble(len(v))
  204. for _, v2 := range v {
  205. f.ee.encodeUint(uint64(v2))
  206. }
  207. }
  208. func (f *encFnInfo) fastEncSliceInt(rv reflect.Value) {
  209. v := rv.Interface().([]int)
  210. f.ee.encodeArrayPreamble(len(v))
  211. for _, v2 := range v {
  212. f.ee.encodeInt(int64(v2))
  213. }
  214. }
  215. func (f *encFnInfo) fastEncSliceInt8(rv reflect.Value) {
  216. v := rv.Interface().([]int8)
  217. f.ee.encodeArrayPreamble(len(v))
  218. for _, v2 := range v {
  219. f.ee.encodeInt(int64(v2))
  220. }
  221. }
  222. func (f *encFnInfo) fastEncSliceInt16(rv reflect.Value) {
  223. v := rv.Interface().([]int16)
  224. f.ee.encodeArrayPreamble(len(v))
  225. for _, v2 := range v {
  226. f.ee.encodeInt(int64(v2))
  227. }
  228. }
  229. func (f *encFnInfo) fastEncSliceInt32(rv reflect.Value) {
  230. v := rv.Interface().([]int32)
  231. f.ee.encodeArrayPreamble(len(v))
  232. for _, v2 := range v {
  233. f.e.encode(v2)
  234. }
  235. }
  236. func (f *encFnInfo) fastEncSliceInt64(rv reflect.Value) {
  237. v := rv.Interface().([]int64)
  238. f.ee.encodeArrayPreamble(len(v))
  239. for _, v2 := range v {
  240. f.ee.encodeInt(int64(v2))
  241. }
  242. }
  243. func (f *encFnInfo) fastEncSliceBool(rv reflect.Value) {
  244. v := rv.Interface().([]bool)
  245. f.ee.encodeArrayPreamble(len(v))
  246. for _, v2 := range v {
  247. f.ee.encodeBool(v2)
  248. }
  249. }
  250. func (f *encFnInfo) fastEncMapIntfIntf(rv reflect.Value) {
  251. v := rv.Interface().(map[interface{}]interface{})
  252. f.ee.encodeMapPreamble(len(v))
  253. for k2, v2 := range v {
  254. f.e.encode(k2)
  255. f.e.encode(v2)
  256. }
  257. }
  258. func (f *encFnInfo) fastEncMapIntfString(rv reflect.Value) {
  259. v := rv.Interface().(map[interface{}]string)
  260. f.ee.encodeMapPreamble(len(v))
  261. for k2, v2 := range v {
  262. f.e.encode(k2)
  263. f.ee.encodeString(c_UTF8, v2)
  264. }
  265. }
  266. func (f *encFnInfo) fastEncMapStringIntf(rv reflect.Value) {
  267. v := rv.Interface().(map[string]interface{})
  268. f.ee.encodeMapPreamble(len(v))
  269. asSymbols := f.e.h.AsSymbols&AsSymbolMapStringKeysFlag != 0
  270. for k2, v2 := range v {
  271. if asSymbols {
  272. f.ee.encodeSymbol(k2)
  273. } else {
  274. f.ee.encodeString(c_UTF8, k2)
  275. }
  276. f.e.encode(v2)
  277. }
  278. }
  279. func (f *encFnInfo) fastEncMapStringString(rv reflect.Value) {
  280. v := rv.Interface().(map[string]string)
  281. f.ee.encodeMapPreamble(len(v))
  282. asSymbols := f.e.h.AsSymbols&AsSymbolMapStringKeysFlag != 0
  283. for k2, v2 := range v {
  284. if asSymbols {
  285. f.ee.encodeSymbol(k2)
  286. } else {
  287. f.ee.encodeString(c_UTF8, k2)
  288. }
  289. f.ee.encodeString(c_UTF8, v2)
  290. }
  291. }
  292. func (f *encFnInfo) fastEncMapFloat32Intf(rv reflect.Value) {
  293. v := rv.Interface().(map[float32]interface{})
  294. f.ee.encodeMapPreamble(len(v))
  295. for k2, v2 := range v {
  296. f.ee.encodeFloat32(k2)
  297. f.e.encode(v2)
  298. }
  299. }
  300. func (f *encFnInfo) fastEncMapFloat32String(rv reflect.Value) {
  301. v := rv.Interface().(map[float32]string)
  302. f.ee.encodeMapPreamble(len(v))
  303. for k2, v2 := range v {
  304. f.ee.encodeFloat32(k2)
  305. f.ee.encodeString(c_UTF8, v2)
  306. }
  307. }
  308. func (f *encFnInfo) fastEncMapFloat32Float32(rv reflect.Value) {
  309. v := rv.Interface().(map[float32]float32)
  310. f.ee.encodeMapPreamble(len(v))
  311. for k2, v2 := range v {
  312. f.ee.encodeFloat32(k2)
  313. f.ee.encodeFloat32(v2)
  314. }
  315. }
  316. func (f *encFnInfo) fastEncMapFloat64Intf(rv reflect.Value) {
  317. v := rv.Interface().(map[float64]interface{})
  318. f.ee.encodeMapPreamble(len(v))
  319. for k2, v2 := range v {
  320. f.ee.encodeFloat64(k2)
  321. f.e.encode(v2)
  322. }
  323. }
  324. func (f *encFnInfo) fastEncMapFloat64String(rv reflect.Value) {
  325. v := rv.Interface().(map[float64]string)
  326. f.ee.encodeMapPreamble(len(v))
  327. for k2, v2 := range v {
  328. f.ee.encodeFloat64(k2)
  329. f.ee.encodeString(c_UTF8, v2)
  330. }
  331. }
  332. func (f *encFnInfo) fastEncMapFloat64Float64(rv reflect.Value) {
  333. v := rv.Interface().(map[float64]float64)
  334. f.ee.encodeMapPreamble(len(v))
  335. for k2, v2 := range v {
  336. f.ee.encodeFloat64(k2)
  337. f.ee.encodeFloat64(v2)
  338. }
  339. }
  340. func (f *encFnInfo) fastEncMapUintIntf(rv reflect.Value) {
  341. v := rv.Interface().(map[uint]interface{})
  342. f.ee.encodeMapPreamble(len(v))
  343. for k2, v2 := range v {
  344. f.ee.encodeUint(uint64(k2))
  345. f.e.encode(v2)
  346. }
  347. }
  348. func (f *encFnInfo) fastEncMapUintString(rv reflect.Value) {
  349. v := rv.Interface().(map[uint]string)
  350. f.ee.encodeMapPreamble(len(v))
  351. for k2, v2 := range v {
  352. f.ee.encodeUint(uint64(k2))
  353. f.ee.encodeString(c_UTF8, v2)
  354. }
  355. }
  356. func (f *encFnInfo) fastEncMapUintUint(rv reflect.Value) {
  357. v := rv.Interface().(map[uint]uint)
  358. f.ee.encodeMapPreamble(len(v))
  359. for k2, v2 := range v {
  360. f.ee.encodeUint(uint64(k2))
  361. f.ee.encodeUint(uint64(v2))
  362. }
  363. }
  364. func (f *encFnInfo) fastEncMapUint8Intf(rv reflect.Value) {
  365. v := rv.Interface().(map[uint8]interface{})
  366. f.ee.encodeMapPreamble(len(v))
  367. for k2, v2 := range v {
  368. f.ee.encodeUint(uint64(k2))
  369. f.e.encode(v2)
  370. }
  371. }
  372. func (f *encFnInfo) fastEncMapUint8String(rv reflect.Value) {
  373. v := rv.Interface().(map[uint8]string)
  374. f.ee.encodeMapPreamble(len(v))
  375. for k2, v2 := range v {
  376. f.ee.encodeUint(uint64(k2))
  377. f.ee.encodeString(c_UTF8, v2)
  378. }
  379. }
  380. func (f *encFnInfo) fastEncMapUint8Uint8(rv reflect.Value) {
  381. v := rv.Interface().(map[uint8]uint8)
  382. f.ee.encodeMapPreamble(len(v))
  383. for k2, v2 := range v {
  384. f.ee.encodeUint(uint64(k2))
  385. f.ee.encodeUint(uint64(v2))
  386. }
  387. }
  388. func (f *encFnInfo) fastEncMapUint16Intf(rv reflect.Value) {
  389. v := rv.Interface().(map[uint16]interface{})
  390. f.ee.encodeMapPreamble(len(v))
  391. for k2, v2 := range v {
  392. f.ee.encodeUint(uint64(k2))
  393. f.e.encode(v2)
  394. }
  395. }
  396. func (f *encFnInfo) fastEncMapUint16String(rv reflect.Value) {
  397. v := rv.Interface().(map[uint16]string)
  398. f.ee.encodeMapPreamble(len(v))
  399. for k2, v2 := range v {
  400. f.ee.encodeUint(uint64(k2))
  401. f.ee.encodeString(c_UTF8, v2)
  402. }
  403. }
  404. func (f *encFnInfo) fastEncMapUint16Uint16(rv reflect.Value) {
  405. v := rv.Interface().(map[uint16]uint16)
  406. f.ee.encodeMapPreamble(len(v))
  407. for k2, v2 := range v {
  408. f.ee.encodeUint(uint64(k2))
  409. f.ee.encodeUint(uint64(v2))
  410. }
  411. }
  412. func (f *encFnInfo) fastEncMapUint32Intf(rv reflect.Value) {
  413. v := rv.Interface().(map[uint32]interface{})
  414. f.ee.encodeMapPreamble(len(v))
  415. for k2, v2 := range v {
  416. f.e.encode(k2)
  417. f.e.encode(v2)
  418. }
  419. }
  420. func (f *encFnInfo) fastEncMapUint32String(rv reflect.Value) {
  421. v := rv.Interface().(map[uint32]string)
  422. f.ee.encodeMapPreamble(len(v))
  423. for k2, v2 := range v {
  424. f.e.encode(k2)
  425. f.ee.encodeString(c_UTF8, v2)
  426. }
  427. }
  428. func (f *encFnInfo) fastEncMapUint32Uint32(rv reflect.Value) {
  429. v := rv.Interface().(map[uint32]uint32)
  430. f.ee.encodeMapPreamble(len(v))
  431. for k2, v2 := range v {
  432. f.e.encode(k2)
  433. f.e.encode(v2)
  434. }
  435. }
  436. func (f *encFnInfo) fastEncMapUint64Intf(rv reflect.Value) {
  437. v := rv.Interface().(map[uint64]interface{})
  438. f.ee.encodeMapPreamble(len(v))
  439. for k2, v2 := range v {
  440. f.ee.encodeUint(uint64(k2))
  441. f.e.encode(v2)
  442. }
  443. }
  444. func (f *encFnInfo) fastEncMapUint64String(rv reflect.Value) {
  445. v := rv.Interface().(map[uint64]string)
  446. f.ee.encodeMapPreamble(len(v))
  447. for k2, v2 := range v {
  448. f.ee.encodeUint(uint64(k2))
  449. f.ee.encodeString(c_UTF8, v2)
  450. }
  451. }
  452. func (f *encFnInfo) fastEncMapUint64Uint64(rv reflect.Value) {
  453. v := rv.Interface().(map[uint64]uint64)
  454. f.ee.encodeMapPreamble(len(v))
  455. for k2, v2 := range v {
  456. f.ee.encodeUint(uint64(k2))
  457. f.ee.encodeUint(uint64(v2))
  458. }
  459. }
  460. func (f *encFnInfo) fastEncMapIntIntf(rv reflect.Value) {
  461. v := rv.Interface().(map[int]interface{})
  462. f.ee.encodeMapPreamble(len(v))
  463. for k2, v2 := range v {
  464. f.ee.encodeInt(int64(k2))
  465. f.e.encode(v2)
  466. }
  467. }
  468. func (f *encFnInfo) fastEncMapIntString(rv reflect.Value) {
  469. v := rv.Interface().(map[int]string)
  470. f.ee.encodeMapPreamble(len(v))
  471. for k2, v2 := range v {
  472. f.ee.encodeInt(int64(k2))
  473. f.ee.encodeString(c_UTF8, v2)
  474. }
  475. }
  476. func (f *encFnInfo) fastEncMapIntInt(rv reflect.Value) {
  477. v := rv.Interface().(map[int]int)
  478. f.ee.encodeMapPreamble(len(v))
  479. for k2, v2 := range v {
  480. f.ee.encodeInt(int64(k2))
  481. f.ee.encodeInt(int64(v2))
  482. }
  483. }
  484. func (f *encFnInfo) fastEncMapInt8Intf(rv reflect.Value) {
  485. v := rv.Interface().(map[int8]interface{})
  486. f.ee.encodeMapPreamble(len(v))
  487. for k2, v2 := range v {
  488. f.ee.encodeInt(int64(k2))
  489. f.e.encode(v2)
  490. }
  491. }
  492. func (f *encFnInfo) fastEncMapInt8String(rv reflect.Value) {
  493. v := rv.Interface().(map[int8]string)
  494. f.ee.encodeMapPreamble(len(v))
  495. for k2, v2 := range v {
  496. f.ee.encodeInt(int64(k2))
  497. f.ee.encodeString(c_UTF8, v2)
  498. }
  499. }
  500. func (f *encFnInfo) fastEncMapInt8Int8(rv reflect.Value) {
  501. v := rv.Interface().(map[int8]int8)
  502. f.ee.encodeMapPreamble(len(v))
  503. for k2, v2 := range v {
  504. f.ee.encodeInt(int64(k2))
  505. f.ee.encodeInt(int64(v2))
  506. }
  507. }
  508. func (f *encFnInfo) fastEncMapInt16Intf(rv reflect.Value) {
  509. v := rv.Interface().(map[int16]interface{})
  510. f.ee.encodeMapPreamble(len(v))
  511. for k2, v2 := range v {
  512. f.ee.encodeInt(int64(k2))
  513. f.e.encode(v2)
  514. }
  515. }
  516. func (f *encFnInfo) fastEncMapInt16String(rv reflect.Value) {
  517. v := rv.Interface().(map[int16]string)
  518. f.ee.encodeMapPreamble(len(v))
  519. for k2, v2 := range v {
  520. f.ee.encodeInt(int64(k2))
  521. f.ee.encodeString(c_UTF8, v2)
  522. }
  523. }
  524. func (f *encFnInfo) fastEncMapInt16Int16(rv reflect.Value) {
  525. v := rv.Interface().(map[int16]int16)
  526. f.ee.encodeMapPreamble(len(v))
  527. for k2, v2 := range v {
  528. f.ee.encodeInt(int64(k2))
  529. f.ee.encodeInt(int64(v2))
  530. }
  531. }
  532. func (f *encFnInfo) fastEncMapInt32Intf(rv reflect.Value) {
  533. v := rv.Interface().(map[int32]interface{})
  534. f.ee.encodeMapPreamble(len(v))
  535. for k2, v2 := range v {
  536. f.e.encode(k2)
  537. f.e.encode(v2)
  538. }
  539. }
  540. func (f *encFnInfo) fastEncMapInt32String(rv reflect.Value) {
  541. v := rv.Interface().(map[int32]string)
  542. f.ee.encodeMapPreamble(len(v))
  543. for k2, v2 := range v {
  544. f.e.encode(k2)
  545. f.ee.encodeString(c_UTF8, v2)
  546. }
  547. }
  548. func (f *encFnInfo) fastEncMapInt32Int32(rv reflect.Value) {
  549. v := rv.Interface().(map[int32]int32)
  550. f.ee.encodeMapPreamble(len(v))
  551. for k2, v2 := range v {
  552. f.e.encode(k2)
  553. f.e.encode(v2)
  554. }
  555. }
  556. func (f *encFnInfo) fastEncMapInt64Intf(rv reflect.Value) {
  557. v := rv.Interface().(map[int64]interface{})
  558. f.ee.encodeMapPreamble(len(v))
  559. for k2, v2 := range v {
  560. f.ee.encodeInt(int64(k2))
  561. f.e.encode(v2)
  562. }
  563. }
  564. func (f *encFnInfo) fastEncMapInt64String(rv reflect.Value) {
  565. v := rv.Interface().(map[int64]string)
  566. f.ee.encodeMapPreamble(len(v))
  567. for k2, v2 := range v {
  568. f.ee.encodeInt(int64(k2))
  569. f.ee.encodeString(c_UTF8, v2)
  570. }
  571. }
  572. func (f *encFnInfo) fastEncMapInt64Int64(rv reflect.Value) {
  573. v := rv.Interface().(map[int64]int64)
  574. f.ee.encodeMapPreamble(len(v))
  575. for k2, v2 := range v {
  576. f.ee.encodeInt(int64(k2))
  577. f.ee.encodeInt(int64(v2))
  578. }
  579. }
  580. func (f *encFnInfo) fastEncMapBoolIntf(rv reflect.Value) {
  581. v := rv.Interface().(map[bool]interface{})
  582. f.ee.encodeMapPreamble(len(v))
  583. for k2, v2 := range v {
  584. f.ee.encodeBool(k2)
  585. f.e.encode(v2)
  586. }
  587. }
  588. func (f *encFnInfo) fastEncMapBoolString(rv reflect.Value) {
  589. v := rv.Interface().(map[bool]string)
  590. f.ee.encodeMapPreamble(len(v))
  591. for k2, v2 := range v {
  592. f.ee.encodeBool(k2)
  593. f.ee.encodeString(c_UTF8, v2)
  594. }
  595. }
  596. func (f *encFnInfo) fastEncMapBoolBool(rv reflect.Value) {
  597. v := rv.Interface().(map[bool]bool)
  598. f.ee.encodeMapPreamble(len(v))
  599. for k2, v2 := range v {
  600. f.ee.encodeBool(k2)
  601. f.ee.encodeBool(v2)
  602. }
  603. }
  604. // -- decode
  605. func (f *decFnInfo) fastDecSliceIntf(rv reflect.Value) {
  606. v := rv.Addr().Interface().(*[]interface{})
  607. var s []interface{}
  608. vtype := f.dd.currentEncodedType()
  609. if vtype == valueTypeNil {
  610. *v = s
  611. return
  612. }
  613. _, containerLenS := decContLens(f.dd, vtype)
  614. s = *v
  615. if s == nil {
  616. s = make([]interface{}, containerLenS, containerLenS)
  617. } else if containerLenS > cap(s) {
  618. if f.array {
  619. decErr(msgDecCannotExpandArr, cap(s), containerLenS)
  620. }
  621. s = make([]interface{}, containerLenS, containerLenS)
  622. copy(s, *v)
  623. } else if containerLenS > len(s) {
  624. s = s[:containerLenS]
  625. }
  626. for j := 0; j < containerLenS; j++ {
  627. f.d.decode(&s[j])
  628. }
  629. *v = s
  630. }
  631. func (f *decFnInfo) fastDecSliceString(rv reflect.Value) {
  632. v := rv.Addr().Interface().(*[]string)
  633. var s []string
  634. vtype := f.dd.currentEncodedType()
  635. if vtype == valueTypeNil {
  636. *v = s
  637. return
  638. }
  639. _, containerLenS := decContLens(f.dd, vtype)
  640. s = *v
  641. if s == nil {
  642. s = make([]string, containerLenS, containerLenS)
  643. } else if containerLenS > cap(s) {
  644. if f.array {
  645. decErr(msgDecCannotExpandArr, cap(s), containerLenS)
  646. }
  647. s = make([]string, containerLenS, containerLenS)
  648. copy(s, *v)
  649. } else if containerLenS > len(s) {
  650. s = s[:containerLenS]
  651. }
  652. for j := 0; j < containerLenS; j++ {
  653. f.dd.initReadNext()
  654. s[j] = f.dd.decodeString()
  655. }
  656. *v = s
  657. }
  658. func (f *decFnInfo) fastDecSliceFloat32(rv reflect.Value) {
  659. v := rv.Addr().Interface().(*[]float32)
  660. var s []float32
  661. vtype := f.dd.currentEncodedType()
  662. if vtype == valueTypeNil {
  663. *v = s
  664. return
  665. }
  666. _, containerLenS := decContLens(f.dd, vtype)
  667. s = *v
  668. if s == nil {
  669. s = make([]float32, containerLenS, containerLenS)
  670. } else if containerLenS > cap(s) {
  671. if f.array {
  672. decErr(msgDecCannotExpandArr, cap(s), containerLenS)
  673. }
  674. s = make([]float32, containerLenS, containerLenS)
  675. copy(s, *v)
  676. } else if containerLenS > len(s) {
  677. s = s[:containerLenS]
  678. }
  679. for j := 0; j < containerLenS; j++ {
  680. f.dd.initReadNext()
  681. s[j] = float32(f.dd.decodeFloat(true))
  682. }
  683. *v = s
  684. }
  685. func (f *decFnInfo) fastDecSliceFloat64(rv reflect.Value) {
  686. v := rv.Addr().Interface().(*[]float64)
  687. var s []float64
  688. vtype := f.dd.currentEncodedType()
  689. if vtype == valueTypeNil {
  690. *v = s
  691. return
  692. }
  693. _, containerLenS := decContLens(f.dd, vtype)
  694. s = *v
  695. if s == nil {
  696. s = make([]float64, containerLenS, containerLenS)
  697. } else if containerLenS > cap(s) {
  698. if f.array {
  699. decErr(msgDecCannotExpandArr, cap(s), containerLenS)
  700. }
  701. s = make([]float64, containerLenS, containerLenS)
  702. copy(s, *v)
  703. } else if containerLenS > len(s) {
  704. s = s[:containerLenS]
  705. }
  706. for j := 0; j < containerLenS; j++ {
  707. f.dd.initReadNext()
  708. s[j] = f.dd.decodeFloat(false)
  709. }
  710. *v = s
  711. }
  712. func (f *decFnInfo) fastDecSliceUint(rv reflect.Value) {
  713. v := rv.Addr().Interface().(*[]uint)
  714. var s []uint
  715. vtype := f.dd.currentEncodedType()
  716. if vtype == valueTypeNil {
  717. *v = s
  718. return
  719. }
  720. _, containerLenS := decContLens(f.dd, vtype)
  721. s = *v
  722. if s == nil {
  723. s = make([]uint, containerLenS, containerLenS)
  724. } else if containerLenS > cap(s) {
  725. if f.array {
  726. decErr(msgDecCannotExpandArr, cap(s), containerLenS)
  727. }
  728. s = make([]uint, containerLenS, containerLenS)
  729. copy(s, *v)
  730. } else if containerLenS > len(s) {
  731. s = s[:containerLenS]
  732. }
  733. for j := 0; j < containerLenS; j++ {
  734. f.dd.initReadNext()
  735. s[j] = uint(f.dd.decodeUint(uintBitsize))
  736. }
  737. *v = s
  738. }
  739. func (f *decFnInfo) fastDecSliceUint16(rv reflect.Value) {
  740. v := rv.Addr().Interface().(*[]uint16)
  741. var s []uint16
  742. vtype := f.dd.currentEncodedType()
  743. if vtype == valueTypeNil {
  744. *v = s
  745. return
  746. }
  747. _, containerLenS := decContLens(f.dd, vtype)
  748. s = *v
  749. if s == nil {
  750. s = make([]uint16, containerLenS, containerLenS)
  751. } else if containerLenS > cap(s) {
  752. if f.array {
  753. decErr(msgDecCannotExpandArr, cap(s), containerLenS)
  754. }
  755. s = make([]uint16, containerLenS, containerLenS)
  756. copy(s, *v)
  757. } else if containerLenS > len(s) {
  758. s = s[:containerLenS]
  759. }
  760. for j := 0; j < containerLenS; j++ {
  761. f.dd.initReadNext()
  762. s[j] = uint16(f.dd.decodeUint(16))
  763. }
  764. *v = s
  765. }
  766. func (f *decFnInfo) fastDecSliceUint32(rv reflect.Value) {
  767. v := rv.Addr().Interface().(*[]uint32)
  768. var s []uint32
  769. vtype := f.dd.currentEncodedType()
  770. if vtype == valueTypeNil {
  771. *v = s
  772. return
  773. }
  774. _, containerLenS := decContLens(f.dd, vtype)
  775. s = *v
  776. if s == nil {
  777. s = make([]uint32, containerLenS, containerLenS)
  778. } else if containerLenS > cap(s) {
  779. if f.array {
  780. decErr(msgDecCannotExpandArr, cap(s), containerLenS)
  781. }
  782. s = make([]uint32, containerLenS, containerLenS)
  783. copy(s, *v)
  784. } else if containerLenS > len(s) {
  785. s = s[:containerLenS]
  786. }
  787. for j := 0; j < containerLenS; j++ {
  788. f.dd.initReadNext()
  789. s[j] = uint32(f.dd.decodeUint(32))
  790. }
  791. *v = s
  792. }
  793. func (f *decFnInfo) fastDecSliceUint64(rv reflect.Value) {
  794. v := rv.Addr().Interface().(*[]uint64)
  795. var s []uint64
  796. vtype := f.dd.currentEncodedType()
  797. if vtype == valueTypeNil {
  798. *v = s
  799. return
  800. }
  801. _, containerLenS := decContLens(f.dd, vtype)
  802. s = *v
  803. if s == nil {
  804. s = make([]uint64, containerLenS, containerLenS)
  805. } else if containerLenS > cap(s) {
  806. if f.array {
  807. decErr(msgDecCannotExpandArr, cap(s), containerLenS)
  808. }
  809. s = make([]uint64, containerLenS, containerLenS)
  810. copy(s, *v)
  811. } else if containerLenS > len(s) {
  812. s = s[:containerLenS]
  813. }
  814. for j := 0; j < containerLenS; j++ {
  815. f.dd.initReadNext()
  816. s[j] = f.dd.decodeUint(64)
  817. }
  818. *v = s
  819. }
  820. func (f *decFnInfo) fastDecSliceInt(rv reflect.Value) {
  821. v := rv.Addr().Interface().(*[]int)
  822. var s []int
  823. vtype := f.dd.currentEncodedType()
  824. if vtype == valueTypeNil {
  825. *v = s
  826. return
  827. }
  828. _, containerLenS := decContLens(f.dd, vtype)
  829. s = *v
  830. if s == nil {
  831. s = make([]int, containerLenS, containerLenS)
  832. } else if containerLenS > cap(s) {
  833. if f.array {
  834. decErr(msgDecCannotExpandArr, cap(s), containerLenS)
  835. }
  836. s = make([]int, containerLenS, containerLenS)
  837. copy(s, *v)
  838. } else if containerLenS > len(s) {
  839. s = s[:containerLenS]
  840. }
  841. for j := 0; j < containerLenS; j++ {
  842. f.dd.initReadNext()
  843. s[j] = int(f.dd.decodeInt(intBitsize))
  844. }
  845. *v = s
  846. }
  847. func (f *decFnInfo) fastDecSliceInt8(rv reflect.Value) {
  848. v := rv.Addr().Interface().(*[]int8)
  849. var s []int8
  850. vtype := f.dd.currentEncodedType()
  851. if vtype == valueTypeNil {
  852. *v = s
  853. return
  854. }
  855. _, containerLenS := decContLens(f.dd, vtype)
  856. s = *v
  857. if s == nil {
  858. s = make([]int8, containerLenS, containerLenS)
  859. } else if containerLenS > cap(s) {
  860. if f.array {
  861. decErr(msgDecCannotExpandArr, cap(s), containerLenS)
  862. }
  863. s = make([]int8, containerLenS, containerLenS)
  864. copy(s, *v)
  865. } else if containerLenS > len(s) {
  866. s = s[:containerLenS]
  867. }
  868. for j := 0; j < containerLenS; j++ {
  869. f.dd.initReadNext()
  870. s[j] = int8(f.dd.decodeInt(8))
  871. }
  872. *v = s
  873. }
  874. func (f *decFnInfo) fastDecSliceInt16(rv reflect.Value) {
  875. v := rv.Addr().Interface().(*[]int16)
  876. var s []int16
  877. vtype := f.dd.currentEncodedType()
  878. if vtype == valueTypeNil {
  879. *v = s
  880. return
  881. }
  882. _, containerLenS := decContLens(f.dd, vtype)
  883. s = *v
  884. if s == nil {
  885. s = make([]int16, containerLenS, containerLenS)
  886. } else if containerLenS > cap(s) {
  887. if f.array {
  888. decErr(msgDecCannotExpandArr, cap(s), containerLenS)
  889. }
  890. s = make([]int16, containerLenS, containerLenS)
  891. copy(s, *v)
  892. } else if containerLenS > len(s) {
  893. s = s[:containerLenS]
  894. }
  895. for j := 0; j < containerLenS; j++ {
  896. f.dd.initReadNext()
  897. s[j] = int16(f.dd.decodeInt(16))
  898. }
  899. *v = s
  900. }
  901. func (f *decFnInfo) fastDecSliceInt32(rv reflect.Value) {
  902. v := rv.Addr().Interface().(*[]int32)
  903. var s []int32
  904. vtype := f.dd.currentEncodedType()
  905. if vtype == valueTypeNil {
  906. *v = s
  907. return
  908. }
  909. _, containerLenS := decContLens(f.dd, vtype)
  910. s = *v
  911. if s == nil {
  912. s = make([]int32, containerLenS, containerLenS)
  913. } else if containerLenS > cap(s) {
  914. if f.array {
  915. decErr(msgDecCannotExpandArr, cap(s), containerLenS)
  916. }
  917. s = make([]int32, containerLenS, containerLenS)
  918. copy(s, *v)
  919. } else if containerLenS > len(s) {
  920. s = s[:containerLenS]
  921. }
  922. for j := 0; j < containerLenS; j++ {
  923. f.dd.initReadNext()
  924. s[j] = int32(f.dd.decodeInt(32))
  925. }
  926. *v = s
  927. }
  928. func (f *decFnInfo) fastDecSliceInt64(rv reflect.Value) {
  929. v := rv.Addr().Interface().(*[]int64)
  930. var s []int64
  931. vtype := f.dd.currentEncodedType()
  932. if vtype == valueTypeNil {
  933. *v = s
  934. return
  935. }
  936. _, containerLenS := decContLens(f.dd, vtype)
  937. s = *v
  938. if s == nil {
  939. s = make([]int64, containerLenS, containerLenS)
  940. } else if containerLenS > cap(s) {
  941. if f.array {
  942. decErr(msgDecCannotExpandArr, cap(s), containerLenS)
  943. }
  944. s = make([]int64, containerLenS, containerLenS)
  945. copy(s, *v)
  946. } else if containerLenS > len(s) {
  947. s = s[:containerLenS]
  948. }
  949. for j := 0; j < containerLenS; j++ {
  950. f.dd.initReadNext()
  951. s[j] = f.dd.decodeInt(64)
  952. }
  953. *v = s
  954. }
  955. func (f *decFnInfo) fastDecSliceBool(rv reflect.Value) {
  956. v := rv.Addr().Interface().(*[]bool)
  957. var s []bool
  958. vtype := f.dd.currentEncodedType()
  959. if vtype == valueTypeNil {
  960. *v = s
  961. return
  962. }
  963. _, containerLenS := decContLens(f.dd, vtype)
  964. s = *v
  965. if s == nil {
  966. s = make([]bool, containerLenS, containerLenS)
  967. } else if containerLenS > cap(s) {
  968. if f.array {
  969. decErr(msgDecCannotExpandArr, cap(s), containerLenS)
  970. }
  971. s = make([]bool, containerLenS, containerLenS)
  972. copy(s, *v)
  973. } else if containerLenS > len(s) {
  974. s = s[:containerLenS]
  975. }
  976. for j := 0; j < containerLenS; j++ {
  977. f.dd.initReadNext()
  978. s[j] = f.dd.decodeBool()
  979. }
  980. *v = s
  981. }
  982. func (f *decFnInfo) fastDecMapIntfIntf(rv reflect.Value) {
  983. v := rv.Addr().Interface().(*map[interface{}]interface{})
  984. var m map[interface{}]interface{}
  985. vtype := f.dd.currentEncodedType()
  986. if vtype == valueTypeNil {
  987. *v = m
  988. return
  989. }
  990. containerLen := f.dd.readMapLen()
  991. m = *v
  992. if m == nil {
  993. m = make(map[interface{}]interface{}, containerLen)
  994. *v = m
  995. }
  996. for j := 0; j < containerLen; j++ {
  997. var mk interface{}
  998. f.d.decode(&mk)
  999. // special case if a byte array.
  1000. if bv, bok := mk.([]byte); bok {
  1001. mk = string(bv)
  1002. }
  1003. mv := m[mk]
  1004. f.d.decode(&mv)
  1005. m[mk] = mv
  1006. }
  1007. }
  1008. func (f *decFnInfo) fastDecMapIntfString(rv reflect.Value) {
  1009. v := rv.Addr().Interface().(*map[interface{}]string)
  1010. var m map[interface{}]string
  1011. vtype := f.dd.currentEncodedType()
  1012. if vtype == valueTypeNil {
  1013. *v = m
  1014. return
  1015. }
  1016. containerLen := f.dd.readMapLen()
  1017. m = *v
  1018. if m == nil {
  1019. m = make(map[interface{}]string, containerLen)
  1020. *v = m
  1021. }
  1022. for j := 0; j < containerLen; j++ {
  1023. var mk interface{}
  1024. f.d.decode(&mk)
  1025. // special case if a byte array.
  1026. if bv, bok := mk.([]byte); bok {
  1027. mk = string(bv)
  1028. }
  1029. mv := m[mk]
  1030. f.dd.initReadNext()
  1031. mv = f.dd.decodeString()
  1032. m[mk] = mv
  1033. }
  1034. }
  1035. func (f *decFnInfo) fastDecMapStringIntf(rv reflect.Value) {
  1036. v := rv.Addr().Interface().(*map[string]interface{})
  1037. var m map[string]interface{}
  1038. vtype := f.dd.currentEncodedType()
  1039. if vtype == valueTypeNil {
  1040. *v = m
  1041. return
  1042. }
  1043. containerLen := f.dd.readMapLen()
  1044. m = *v
  1045. if m == nil {
  1046. m = make(map[string]interface{}, containerLen)
  1047. *v = m
  1048. }
  1049. for j := 0; j < containerLen; j++ {
  1050. f.dd.initReadNext()
  1051. mk := f.dd.decodeString()
  1052. mv := m[mk]
  1053. f.d.decode(&mv)
  1054. m[mk] = mv
  1055. }
  1056. }
  1057. func (f *decFnInfo) fastDecMapStringString(rv reflect.Value) {
  1058. v := rv.Addr().Interface().(*map[string]string)
  1059. var m map[string]string
  1060. vtype := f.dd.currentEncodedType()
  1061. if vtype == valueTypeNil {
  1062. *v = m
  1063. return
  1064. }
  1065. containerLen := f.dd.readMapLen()
  1066. m = *v
  1067. if m == nil {
  1068. m = make(map[string]string, containerLen)
  1069. *v = m
  1070. }
  1071. for j := 0; j < containerLen; j++ {
  1072. f.dd.initReadNext()
  1073. mk := f.dd.decodeString()
  1074. mv := m[mk]
  1075. f.dd.initReadNext()
  1076. mv = f.dd.decodeString()
  1077. m[mk] = mv
  1078. }
  1079. }
  1080. func (f *decFnInfo) fastDecMapFloat32Intf(rv reflect.Value) {
  1081. v := rv.Addr().Interface().(*map[float32]interface{})
  1082. var m map[float32]interface{}
  1083. vtype := f.dd.currentEncodedType()
  1084. if vtype == valueTypeNil {
  1085. *v = m
  1086. return
  1087. }
  1088. containerLen := f.dd.readMapLen()
  1089. m = *v
  1090. if m == nil {
  1091. m = make(map[float32]interface{}, containerLen)
  1092. *v = m
  1093. }
  1094. for j := 0; j < containerLen; j++ {
  1095. f.dd.initReadNext()
  1096. mk := float32(f.dd.decodeFloat(true))
  1097. mv := m[mk]
  1098. f.d.decode(&mv)
  1099. m[mk] = mv
  1100. }
  1101. }
  1102. func (f *decFnInfo) fastDecMapFloat32String(rv reflect.Value) {
  1103. v := rv.Addr().Interface().(*map[float32]string)
  1104. var m map[float32]string
  1105. vtype := f.dd.currentEncodedType()
  1106. if vtype == valueTypeNil {
  1107. *v = m
  1108. return
  1109. }
  1110. containerLen := f.dd.readMapLen()
  1111. m = *v
  1112. if m == nil {
  1113. m = make(map[float32]string, containerLen)
  1114. *v = m
  1115. }
  1116. for j := 0; j < containerLen; j++ {
  1117. f.dd.initReadNext()
  1118. mk := float32(f.dd.decodeFloat(true))
  1119. mv := m[mk]
  1120. f.dd.initReadNext()
  1121. mv = f.dd.decodeString()
  1122. m[mk] = mv
  1123. }
  1124. }
  1125. func (f *decFnInfo) fastDecMapFloat32Float32(rv reflect.Value) {
  1126. v := rv.Addr().Interface().(*map[float32]float32)
  1127. var m map[float32]float32
  1128. vtype := f.dd.currentEncodedType()
  1129. if vtype == valueTypeNil {
  1130. *v = m
  1131. return
  1132. }
  1133. containerLen := f.dd.readMapLen()
  1134. m = *v
  1135. if m == nil {
  1136. m = make(map[float32]float32, containerLen)
  1137. *v = m
  1138. }
  1139. for j := 0; j < containerLen; j++ {
  1140. f.dd.initReadNext()
  1141. mk := float32(f.dd.decodeFloat(true))
  1142. mv := m[mk]
  1143. f.dd.initReadNext()
  1144. mv = float32(f.dd.decodeFloat(true))
  1145. m[mk] = mv
  1146. }
  1147. }
  1148. func (f *decFnInfo) fastDecMapFloat64Intf(rv reflect.Value) {
  1149. v := rv.Addr().Interface().(*map[float64]interface{})
  1150. var m map[float64]interface{}
  1151. vtype := f.dd.currentEncodedType()
  1152. if vtype == valueTypeNil {
  1153. *v = m
  1154. return
  1155. }
  1156. containerLen := f.dd.readMapLen()
  1157. m = *v
  1158. if m == nil {
  1159. m = make(map[float64]interface{}, containerLen)
  1160. *v = m
  1161. }
  1162. for j := 0; j < containerLen; j++ {
  1163. f.dd.initReadNext()
  1164. mk := f.dd.decodeFloat(false)
  1165. mv := m[mk]
  1166. f.d.decode(&mv)
  1167. m[mk] = mv
  1168. }
  1169. }
  1170. func (f *decFnInfo) fastDecMapFloat64String(rv reflect.Value) {
  1171. v := rv.Addr().Interface().(*map[float64]string)
  1172. var m map[float64]string
  1173. vtype := f.dd.currentEncodedType()
  1174. if vtype == valueTypeNil {
  1175. *v = m
  1176. return
  1177. }
  1178. containerLen := f.dd.readMapLen()
  1179. m = *v
  1180. if m == nil {
  1181. m = make(map[float64]string, containerLen)
  1182. *v = m
  1183. }
  1184. for j := 0; j < containerLen; j++ {
  1185. f.dd.initReadNext()
  1186. mk := f.dd.decodeFloat(false)
  1187. mv := m[mk]
  1188. f.dd.initReadNext()
  1189. mv = f.dd.decodeString()
  1190. m[mk] = mv
  1191. }
  1192. }
  1193. func (f *decFnInfo) fastDecMapFloat64Float64(rv reflect.Value) {
  1194. v := rv.Addr().Interface().(*map[float64]float64)
  1195. var m map[float64]float64
  1196. vtype := f.dd.currentEncodedType()
  1197. if vtype == valueTypeNil {
  1198. *v = m
  1199. return
  1200. }
  1201. containerLen := f.dd.readMapLen()
  1202. m = *v
  1203. if m == nil {
  1204. m = make(map[float64]float64, containerLen)
  1205. *v = m
  1206. }
  1207. for j := 0; j < containerLen; j++ {
  1208. f.dd.initReadNext()
  1209. mk := f.dd.decodeFloat(false)
  1210. mv := m[mk]
  1211. f.dd.initReadNext()
  1212. mv = f.dd.decodeFloat(false)
  1213. m[mk] = mv
  1214. }
  1215. }
  1216. func (f *decFnInfo) fastDecMapUintIntf(rv reflect.Value) {
  1217. v := rv.Addr().Interface().(*map[uint]interface{})
  1218. var m map[uint]interface{}
  1219. vtype := f.dd.currentEncodedType()
  1220. if vtype == valueTypeNil {
  1221. *v = m
  1222. return
  1223. }
  1224. containerLen := f.dd.readMapLen()
  1225. m = *v
  1226. if m == nil {
  1227. m = make(map[uint]interface{}, containerLen)
  1228. *v = m
  1229. }
  1230. for j := 0; j < containerLen; j++ {
  1231. f.dd.initReadNext()
  1232. mk := uint(f.dd.decodeUint(uintBitsize))
  1233. mv := m[mk]
  1234. f.d.decode(&mv)
  1235. m[mk] = mv
  1236. }
  1237. }
  1238. func (f *decFnInfo) fastDecMapUintString(rv reflect.Value) {
  1239. v := rv.Addr().Interface().(*map[uint]string)
  1240. var m map[uint]string
  1241. vtype := f.dd.currentEncodedType()
  1242. if vtype == valueTypeNil {
  1243. *v = m
  1244. return
  1245. }
  1246. containerLen := f.dd.readMapLen()
  1247. m = *v
  1248. if m == nil {
  1249. m = make(map[uint]string, containerLen)
  1250. *v = m
  1251. }
  1252. for j := 0; j < containerLen; j++ {
  1253. f.dd.initReadNext()
  1254. mk := uint(f.dd.decodeUint(uintBitsize))
  1255. mv := m[mk]
  1256. f.dd.initReadNext()
  1257. mv = f.dd.decodeString()
  1258. m[mk] = mv
  1259. }
  1260. }
  1261. func (f *decFnInfo) fastDecMapUintUint(rv reflect.Value) {
  1262. v := rv.Addr().Interface().(*map[uint]uint)
  1263. var m map[uint]uint
  1264. vtype := f.dd.currentEncodedType()
  1265. if vtype == valueTypeNil {
  1266. *v = m
  1267. return
  1268. }
  1269. containerLen := f.dd.readMapLen()
  1270. m = *v
  1271. if m == nil {
  1272. m = make(map[uint]uint, containerLen)
  1273. *v = m
  1274. }
  1275. for j := 0; j < containerLen; j++ {
  1276. f.dd.initReadNext()
  1277. mk := uint(f.dd.decodeUint(uintBitsize))
  1278. mv := m[mk]
  1279. f.dd.initReadNext()
  1280. mv = uint(f.dd.decodeUint(uintBitsize))
  1281. m[mk] = mv
  1282. }
  1283. }
  1284. func (f *decFnInfo) fastDecMapUint8Intf(rv reflect.Value) {
  1285. v := rv.Addr().Interface().(*map[uint8]interface{})
  1286. var m map[uint8]interface{}
  1287. vtype := f.dd.currentEncodedType()
  1288. if vtype == valueTypeNil {
  1289. *v = m
  1290. return
  1291. }
  1292. containerLen := f.dd.readMapLen()
  1293. m = *v
  1294. if m == nil {
  1295. m = make(map[uint8]interface{}, containerLen)
  1296. *v = m
  1297. }
  1298. for j := 0; j < containerLen; j++ {
  1299. f.dd.initReadNext()
  1300. mk := uint8(f.dd.decodeUint(8))
  1301. mv := m[mk]
  1302. f.d.decode(&mv)
  1303. m[mk] = mv
  1304. }
  1305. }
  1306. func (f *decFnInfo) fastDecMapUint8String(rv reflect.Value) {
  1307. v := rv.Addr().Interface().(*map[uint8]string)
  1308. var m map[uint8]string
  1309. vtype := f.dd.currentEncodedType()
  1310. if vtype == valueTypeNil {
  1311. *v = m
  1312. return
  1313. }
  1314. containerLen := f.dd.readMapLen()
  1315. m = *v
  1316. if m == nil {
  1317. m = make(map[uint8]string, containerLen)
  1318. *v = m
  1319. }
  1320. for j := 0; j < containerLen; j++ {
  1321. f.dd.initReadNext()
  1322. mk := uint8(f.dd.decodeUint(8))
  1323. mv := m[mk]
  1324. f.dd.initReadNext()
  1325. mv = f.dd.decodeString()
  1326. m[mk] = mv
  1327. }
  1328. }
  1329. func (f *decFnInfo) fastDecMapUint8Uint8(rv reflect.Value) {
  1330. v := rv.Addr().Interface().(*map[uint8]uint8)
  1331. var m map[uint8]uint8
  1332. vtype := f.dd.currentEncodedType()
  1333. if vtype == valueTypeNil {
  1334. *v = m
  1335. return
  1336. }
  1337. containerLen := f.dd.readMapLen()
  1338. m = *v
  1339. if m == nil {
  1340. m = make(map[uint8]uint8, containerLen)
  1341. *v = m
  1342. }
  1343. for j := 0; j < containerLen; j++ {
  1344. f.dd.initReadNext()
  1345. mk := uint8(f.dd.decodeUint(8))
  1346. mv := m[mk]
  1347. f.dd.initReadNext()
  1348. mv = uint8(f.dd.decodeUint(8))
  1349. m[mk] = mv
  1350. }
  1351. }
  1352. func (f *decFnInfo) fastDecMapUint16Intf(rv reflect.Value) {
  1353. v := rv.Addr().Interface().(*map[uint16]interface{})
  1354. var m map[uint16]interface{}
  1355. vtype := f.dd.currentEncodedType()
  1356. if vtype == valueTypeNil {
  1357. *v = m
  1358. return
  1359. }
  1360. containerLen := f.dd.readMapLen()
  1361. m = *v
  1362. if m == nil {
  1363. m = make(map[uint16]interface{}, containerLen)
  1364. *v = m
  1365. }
  1366. for j := 0; j < containerLen; j++ {
  1367. f.dd.initReadNext()
  1368. mk := uint16(f.dd.decodeUint(16))
  1369. mv := m[mk]
  1370. f.d.decode(&mv)
  1371. m[mk] = mv
  1372. }
  1373. }
  1374. func (f *decFnInfo) fastDecMapUint16String(rv reflect.Value) {
  1375. v := rv.Addr().Interface().(*map[uint16]string)
  1376. var m map[uint16]string
  1377. vtype := f.dd.currentEncodedType()
  1378. if vtype == valueTypeNil {
  1379. *v = m
  1380. return
  1381. }
  1382. containerLen := f.dd.readMapLen()
  1383. m = *v
  1384. if m == nil {
  1385. m = make(map[uint16]string, containerLen)
  1386. *v = m
  1387. }
  1388. for j := 0; j < containerLen; j++ {
  1389. f.dd.initReadNext()
  1390. mk := uint16(f.dd.decodeUint(16))
  1391. mv := m[mk]
  1392. f.dd.initReadNext()
  1393. mv = f.dd.decodeString()
  1394. m[mk] = mv
  1395. }
  1396. }
  1397. func (f *decFnInfo) fastDecMapUint16Uint16(rv reflect.Value) {
  1398. v := rv.Addr().Interface().(*map[uint16]uint16)
  1399. var m map[uint16]uint16
  1400. vtype := f.dd.currentEncodedType()
  1401. if vtype == valueTypeNil {
  1402. *v = m
  1403. return
  1404. }
  1405. containerLen := f.dd.readMapLen()
  1406. m = *v
  1407. if m == nil {
  1408. m = make(map[uint16]uint16, containerLen)
  1409. *v = m
  1410. }
  1411. for j := 0; j < containerLen; j++ {
  1412. f.dd.initReadNext()
  1413. mk := uint16(f.dd.decodeUint(16))
  1414. mv := m[mk]
  1415. f.dd.initReadNext()
  1416. mv = uint16(f.dd.decodeUint(16))
  1417. m[mk] = mv
  1418. }
  1419. }
  1420. func (f *decFnInfo) fastDecMapUint32Intf(rv reflect.Value) {
  1421. v := rv.Addr().Interface().(*map[uint32]interface{})
  1422. var m map[uint32]interface{}
  1423. vtype := f.dd.currentEncodedType()
  1424. if vtype == valueTypeNil {
  1425. *v = m
  1426. return
  1427. }
  1428. containerLen := f.dd.readMapLen()
  1429. m = *v
  1430. if m == nil {
  1431. m = make(map[uint32]interface{}, containerLen)
  1432. *v = m
  1433. }
  1434. for j := 0; j < containerLen; j++ {
  1435. f.dd.initReadNext()
  1436. mk := uint32(f.dd.decodeUint(32))
  1437. mv := m[mk]
  1438. f.d.decode(&mv)
  1439. m[mk] = mv
  1440. }
  1441. }
  1442. func (f *decFnInfo) fastDecMapUint32String(rv reflect.Value) {
  1443. v := rv.Addr().Interface().(*map[uint32]string)
  1444. var m map[uint32]string
  1445. vtype := f.dd.currentEncodedType()
  1446. if vtype == valueTypeNil {
  1447. *v = m
  1448. return
  1449. }
  1450. containerLen := f.dd.readMapLen()
  1451. m = *v
  1452. if m == nil {
  1453. m = make(map[uint32]string, containerLen)
  1454. *v = m
  1455. }
  1456. for j := 0; j < containerLen; j++ {
  1457. f.dd.initReadNext()
  1458. mk := uint32(f.dd.decodeUint(32))
  1459. mv := m[mk]
  1460. f.dd.initReadNext()
  1461. mv = f.dd.decodeString()
  1462. m[mk] = mv
  1463. }
  1464. }
  1465. func (f *decFnInfo) fastDecMapUint32Uint32(rv reflect.Value) {
  1466. v := rv.Addr().Interface().(*map[uint32]uint32)
  1467. var m map[uint32]uint32
  1468. vtype := f.dd.currentEncodedType()
  1469. if vtype == valueTypeNil {
  1470. *v = m
  1471. return
  1472. }
  1473. containerLen := f.dd.readMapLen()
  1474. m = *v
  1475. if m == nil {
  1476. m = make(map[uint32]uint32, containerLen)
  1477. *v = m
  1478. }
  1479. for j := 0; j < containerLen; j++ {
  1480. f.dd.initReadNext()
  1481. mk := uint32(f.dd.decodeUint(32))
  1482. mv := m[mk]
  1483. f.dd.initReadNext()
  1484. mv = uint32(f.dd.decodeUint(32))
  1485. m[mk] = mv
  1486. }
  1487. }
  1488. func (f *decFnInfo) fastDecMapUint64Intf(rv reflect.Value) {
  1489. v := rv.Addr().Interface().(*map[uint64]interface{})
  1490. var m map[uint64]interface{}
  1491. vtype := f.dd.currentEncodedType()
  1492. if vtype == valueTypeNil {
  1493. *v = m
  1494. return
  1495. }
  1496. containerLen := f.dd.readMapLen()
  1497. m = *v
  1498. if m == nil {
  1499. m = make(map[uint64]interface{}, containerLen)
  1500. *v = m
  1501. }
  1502. for j := 0; j < containerLen; j++ {
  1503. f.dd.initReadNext()
  1504. mk := f.dd.decodeUint(64)
  1505. mv := m[mk]
  1506. f.d.decode(&mv)
  1507. m[mk] = mv
  1508. }
  1509. }
  1510. func (f *decFnInfo) fastDecMapUint64String(rv reflect.Value) {
  1511. v := rv.Addr().Interface().(*map[uint64]string)
  1512. var m map[uint64]string
  1513. vtype := f.dd.currentEncodedType()
  1514. if vtype == valueTypeNil {
  1515. *v = m
  1516. return
  1517. }
  1518. containerLen := f.dd.readMapLen()
  1519. m = *v
  1520. if m == nil {
  1521. m = make(map[uint64]string, containerLen)
  1522. *v = m
  1523. }
  1524. for j := 0; j < containerLen; j++ {
  1525. f.dd.initReadNext()
  1526. mk := f.dd.decodeUint(64)
  1527. mv := m[mk]
  1528. f.dd.initReadNext()
  1529. mv = f.dd.decodeString()
  1530. m[mk] = mv
  1531. }
  1532. }
  1533. func (f *decFnInfo) fastDecMapUint64Uint64(rv reflect.Value) {
  1534. v := rv.Addr().Interface().(*map[uint64]uint64)
  1535. var m map[uint64]uint64
  1536. vtype := f.dd.currentEncodedType()
  1537. if vtype == valueTypeNil {
  1538. *v = m
  1539. return
  1540. }
  1541. containerLen := f.dd.readMapLen()
  1542. m = *v
  1543. if m == nil {
  1544. m = make(map[uint64]uint64, containerLen)
  1545. *v = m
  1546. }
  1547. for j := 0; j < containerLen; j++ {
  1548. f.dd.initReadNext()
  1549. mk := f.dd.decodeUint(64)
  1550. mv := m[mk]
  1551. f.dd.initReadNext()
  1552. mv = f.dd.decodeUint(64)
  1553. m[mk] = mv
  1554. }
  1555. }
  1556. func (f *decFnInfo) fastDecMapIntIntf(rv reflect.Value) {
  1557. v := rv.Addr().Interface().(*map[int]interface{})
  1558. var m map[int]interface{}
  1559. vtype := f.dd.currentEncodedType()
  1560. if vtype == valueTypeNil {
  1561. *v = m
  1562. return
  1563. }
  1564. containerLen := f.dd.readMapLen()
  1565. m = *v
  1566. if m == nil {
  1567. m = make(map[int]interface{}, containerLen)
  1568. *v = m
  1569. }
  1570. for j := 0; j < containerLen; j++ {
  1571. f.dd.initReadNext()
  1572. mk := int(f.dd.decodeInt(intBitsize))
  1573. mv := m[mk]
  1574. f.d.decode(&mv)
  1575. m[mk] = mv
  1576. }
  1577. }
  1578. func (f *decFnInfo) fastDecMapIntString(rv reflect.Value) {
  1579. v := rv.Addr().Interface().(*map[int]string)
  1580. var m map[int]string
  1581. vtype := f.dd.currentEncodedType()
  1582. if vtype == valueTypeNil {
  1583. *v = m
  1584. return
  1585. }
  1586. containerLen := f.dd.readMapLen()
  1587. m = *v
  1588. if m == nil {
  1589. m = make(map[int]string, containerLen)
  1590. *v = m
  1591. }
  1592. for j := 0; j < containerLen; j++ {
  1593. f.dd.initReadNext()
  1594. mk := int(f.dd.decodeInt(intBitsize))
  1595. mv := m[mk]
  1596. f.dd.initReadNext()
  1597. mv = f.dd.decodeString()
  1598. m[mk] = mv
  1599. }
  1600. }
  1601. func (f *decFnInfo) fastDecMapIntInt(rv reflect.Value) {
  1602. v := rv.Addr().Interface().(*map[int]int)
  1603. var m map[int]int
  1604. vtype := f.dd.currentEncodedType()
  1605. if vtype == valueTypeNil {
  1606. *v = m
  1607. return
  1608. }
  1609. containerLen := f.dd.readMapLen()
  1610. m = *v
  1611. if m == nil {
  1612. m = make(map[int]int, containerLen)
  1613. *v = m
  1614. }
  1615. for j := 0; j < containerLen; j++ {
  1616. f.dd.initReadNext()
  1617. mk := int(f.dd.decodeInt(intBitsize))
  1618. mv := m[mk]
  1619. f.dd.initReadNext()
  1620. mv = int(f.dd.decodeInt(intBitsize))
  1621. m[mk] = mv
  1622. }
  1623. }
  1624. func (f *decFnInfo) fastDecMapInt8Intf(rv reflect.Value) {
  1625. v := rv.Addr().Interface().(*map[int8]interface{})
  1626. var m map[int8]interface{}
  1627. vtype := f.dd.currentEncodedType()
  1628. if vtype == valueTypeNil {
  1629. *v = m
  1630. return
  1631. }
  1632. containerLen := f.dd.readMapLen()
  1633. m = *v
  1634. if m == nil {
  1635. m = make(map[int8]interface{}, containerLen)
  1636. *v = m
  1637. }
  1638. for j := 0; j < containerLen; j++ {
  1639. f.dd.initReadNext()
  1640. mk := int8(f.dd.decodeInt(8))
  1641. mv := m[mk]
  1642. f.d.decode(&mv)
  1643. m[mk] = mv
  1644. }
  1645. }
  1646. func (f *decFnInfo) fastDecMapInt8String(rv reflect.Value) {
  1647. v := rv.Addr().Interface().(*map[int8]string)
  1648. var m map[int8]string
  1649. vtype := f.dd.currentEncodedType()
  1650. if vtype == valueTypeNil {
  1651. *v = m
  1652. return
  1653. }
  1654. containerLen := f.dd.readMapLen()
  1655. m = *v
  1656. if m == nil {
  1657. m = make(map[int8]string, containerLen)
  1658. *v = m
  1659. }
  1660. for j := 0; j < containerLen; j++ {
  1661. f.dd.initReadNext()
  1662. mk := int8(f.dd.decodeInt(8))
  1663. mv := m[mk]
  1664. f.dd.initReadNext()
  1665. mv = f.dd.decodeString()
  1666. m[mk] = mv
  1667. }
  1668. }
  1669. func (f *decFnInfo) fastDecMapInt8Int8(rv reflect.Value) {
  1670. v := rv.Addr().Interface().(*map[int8]int8)
  1671. var m map[int8]int8
  1672. vtype := f.dd.currentEncodedType()
  1673. if vtype == valueTypeNil {
  1674. *v = m
  1675. return
  1676. }
  1677. containerLen := f.dd.readMapLen()
  1678. m = *v
  1679. if m == nil {
  1680. m = make(map[int8]int8, containerLen)
  1681. *v = m
  1682. }
  1683. for j := 0; j < containerLen; j++ {
  1684. f.dd.initReadNext()
  1685. mk := int8(f.dd.decodeInt(8))
  1686. mv := m[mk]
  1687. f.dd.initReadNext()
  1688. mv = int8(f.dd.decodeInt(8))
  1689. m[mk] = mv
  1690. }
  1691. }
  1692. func (f *decFnInfo) fastDecMapInt16Intf(rv reflect.Value) {
  1693. v := rv.Addr().Interface().(*map[int16]interface{})
  1694. var m map[int16]interface{}
  1695. vtype := f.dd.currentEncodedType()
  1696. if vtype == valueTypeNil {
  1697. *v = m
  1698. return
  1699. }
  1700. containerLen := f.dd.readMapLen()
  1701. m = *v
  1702. if m == nil {
  1703. m = make(map[int16]interface{}, containerLen)
  1704. *v = m
  1705. }
  1706. for j := 0; j < containerLen; j++ {
  1707. f.dd.initReadNext()
  1708. mk := int16(f.dd.decodeInt(16))
  1709. mv := m[mk]
  1710. f.d.decode(&mv)
  1711. m[mk] = mv
  1712. }
  1713. }
  1714. func (f *decFnInfo) fastDecMapInt16String(rv reflect.Value) {
  1715. v := rv.Addr().Interface().(*map[int16]string)
  1716. var m map[int16]string
  1717. vtype := f.dd.currentEncodedType()
  1718. if vtype == valueTypeNil {
  1719. *v = m
  1720. return
  1721. }
  1722. containerLen := f.dd.readMapLen()
  1723. m = *v
  1724. if m == nil {
  1725. m = make(map[int16]string, containerLen)
  1726. *v = m
  1727. }
  1728. for j := 0; j < containerLen; j++ {
  1729. f.dd.initReadNext()
  1730. mk := int16(f.dd.decodeInt(16))
  1731. mv := m[mk]
  1732. f.dd.initReadNext()
  1733. mv = f.dd.decodeString()
  1734. m[mk] = mv
  1735. }
  1736. }
  1737. func (f *decFnInfo) fastDecMapInt16Int16(rv reflect.Value) {
  1738. v := rv.Addr().Interface().(*map[int16]int16)
  1739. var m map[int16]int16
  1740. vtype := f.dd.currentEncodedType()
  1741. if vtype == valueTypeNil {
  1742. *v = m
  1743. return
  1744. }
  1745. containerLen := f.dd.readMapLen()
  1746. m = *v
  1747. if m == nil {
  1748. m = make(map[int16]int16, containerLen)
  1749. *v = m
  1750. }
  1751. for j := 0; j < containerLen; j++ {
  1752. f.dd.initReadNext()
  1753. mk := int16(f.dd.decodeInt(16))
  1754. mv := m[mk]
  1755. f.dd.initReadNext()
  1756. mv = int16(f.dd.decodeInt(16))
  1757. m[mk] = mv
  1758. }
  1759. }
  1760. func (f *decFnInfo) fastDecMapInt32Intf(rv reflect.Value) {
  1761. v := rv.Addr().Interface().(*map[int32]interface{})
  1762. var m map[int32]interface{}
  1763. vtype := f.dd.currentEncodedType()
  1764. if vtype == valueTypeNil {
  1765. *v = m
  1766. return
  1767. }
  1768. containerLen := f.dd.readMapLen()
  1769. m = *v
  1770. if m == nil {
  1771. m = make(map[int32]interface{}, containerLen)
  1772. *v = m
  1773. }
  1774. for j := 0; j < containerLen; j++ {
  1775. f.dd.initReadNext()
  1776. mk := int32(f.dd.decodeInt(32))
  1777. mv := m[mk]
  1778. f.d.decode(&mv)
  1779. m[mk] = mv
  1780. }
  1781. }
  1782. func (f *decFnInfo) fastDecMapInt32String(rv reflect.Value) {
  1783. v := rv.Addr().Interface().(*map[int32]string)
  1784. var m map[int32]string
  1785. vtype := f.dd.currentEncodedType()
  1786. if vtype == valueTypeNil {
  1787. *v = m
  1788. return
  1789. }
  1790. containerLen := f.dd.readMapLen()
  1791. m = *v
  1792. if m == nil {
  1793. m = make(map[int32]string, containerLen)
  1794. *v = m
  1795. }
  1796. for j := 0; j < containerLen; j++ {
  1797. f.dd.initReadNext()
  1798. mk := int32(f.dd.decodeInt(32))
  1799. mv := m[mk]
  1800. f.dd.initReadNext()
  1801. mv = f.dd.decodeString()
  1802. m[mk] = mv
  1803. }
  1804. }
  1805. func (f *decFnInfo) fastDecMapInt32Int32(rv reflect.Value) {
  1806. v := rv.Addr().Interface().(*map[int32]int32)
  1807. var m map[int32]int32
  1808. vtype := f.dd.currentEncodedType()
  1809. if vtype == valueTypeNil {
  1810. *v = m
  1811. return
  1812. }
  1813. containerLen := f.dd.readMapLen()
  1814. m = *v
  1815. if m == nil {
  1816. m = make(map[int32]int32, containerLen)
  1817. *v = m
  1818. }
  1819. for j := 0; j < containerLen; j++ {
  1820. f.dd.initReadNext()
  1821. mk := int32(f.dd.decodeInt(32))
  1822. mv := m[mk]
  1823. f.dd.initReadNext()
  1824. mv = int32(f.dd.decodeInt(32))
  1825. m[mk] = mv
  1826. }
  1827. }
  1828. func (f *decFnInfo) fastDecMapInt64Intf(rv reflect.Value) {
  1829. v := rv.Addr().Interface().(*map[int64]interface{})
  1830. var m map[int64]interface{}
  1831. vtype := f.dd.currentEncodedType()
  1832. if vtype == valueTypeNil {
  1833. *v = m
  1834. return
  1835. }
  1836. containerLen := f.dd.readMapLen()
  1837. m = *v
  1838. if m == nil {
  1839. m = make(map[int64]interface{}, containerLen)
  1840. *v = m
  1841. }
  1842. for j := 0; j < containerLen; j++ {
  1843. f.dd.initReadNext()
  1844. mk := f.dd.decodeInt(64)
  1845. mv := m[mk]
  1846. f.d.decode(&mv)
  1847. m[mk] = mv
  1848. }
  1849. }
  1850. func (f *decFnInfo) fastDecMapInt64String(rv reflect.Value) {
  1851. v := rv.Addr().Interface().(*map[int64]string)
  1852. var m map[int64]string
  1853. vtype := f.dd.currentEncodedType()
  1854. if vtype == valueTypeNil {
  1855. *v = m
  1856. return
  1857. }
  1858. containerLen := f.dd.readMapLen()
  1859. m = *v
  1860. if m == nil {
  1861. m = make(map[int64]string, containerLen)
  1862. *v = m
  1863. }
  1864. for j := 0; j < containerLen; j++ {
  1865. f.dd.initReadNext()
  1866. mk := f.dd.decodeInt(64)
  1867. mv := m[mk]
  1868. f.dd.initReadNext()
  1869. mv = f.dd.decodeString()
  1870. m[mk] = mv
  1871. }
  1872. }
  1873. func (f *decFnInfo) fastDecMapInt64Int64(rv reflect.Value) {
  1874. v := rv.Addr().Interface().(*map[int64]int64)
  1875. var m map[int64]int64
  1876. vtype := f.dd.currentEncodedType()
  1877. if vtype == valueTypeNil {
  1878. *v = m
  1879. return
  1880. }
  1881. containerLen := f.dd.readMapLen()
  1882. m = *v
  1883. if m == nil {
  1884. m = make(map[int64]int64, containerLen)
  1885. *v = m
  1886. }
  1887. for j := 0; j < containerLen; j++ {
  1888. f.dd.initReadNext()
  1889. mk := f.dd.decodeInt(64)
  1890. mv := m[mk]
  1891. f.dd.initReadNext()
  1892. mv = f.dd.decodeInt(64)
  1893. m[mk] = mv
  1894. }
  1895. }
  1896. func (f *decFnInfo) fastDecMapBoolIntf(rv reflect.Value) {
  1897. v := rv.Addr().Interface().(*map[bool]interface{})
  1898. var m map[bool]interface{}
  1899. vtype := f.dd.currentEncodedType()
  1900. if vtype == valueTypeNil {
  1901. *v = m
  1902. return
  1903. }
  1904. containerLen := f.dd.readMapLen()
  1905. m = *v
  1906. if m == nil {
  1907. m = make(map[bool]interface{}, containerLen)
  1908. *v = m
  1909. }
  1910. for j := 0; j < containerLen; j++ {
  1911. f.dd.initReadNext()
  1912. mk := f.dd.decodeBool()
  1913. mv := m[mk]
  1914. f.d.decode(&mv)
  1915. m[mk] = mv
  1916. }
  1917. }
  1918. func (f *decFnInfo) fastDecMapBoolString(rv reflect.Value) {
  1919. v := rv.Addr().Interface().(*map[bool]string)
  1920. var m map[bool]string
  1921. vtype := f.dd.currentEncodedType()
  1922. if vtype == valueTypeNil {
  1923. *v = m
  1924. return
  1925. }
  1926. containerLen := f.dd.readMapLen()
  1927. m = *v
  1928. if m == nil {
  1929. m = make(map[bool]string, containerLen)
  1930. *v = m
  1931. }
  1932. for j := 0; j < containerLen; j++ {
  1933. f.dd.initReadNext()
  1934. mk := f.dd.decodeBool()
  1935. mv := m[mk]
  1936. f.dd.initReadNext()
  1937. mv = f.dd.decodeString()
  1938. m[mk] = mv
  1939. }
  1940. }
  1941. func (f *decFnInfo) fastDecMapBoolBool(rv reflect.Value) {
  1942. v := rv.Addr().Interface().(*map[bool]bool)
  1943. var m map[bool]bool
  1944. vtype := f.dd.currentEncodedType()
  1945. if vtype == valueTypeNil {
  1946. *v = m
  1947. return
  1948. }
  1949. containerLen := f.dd.readMapLen()
  1950. m = *v
  1951. if m == nil {
  1952. m = make(map[bool]bool, containerLen)
  1953. *v = m
  1954. }
  1955. for j := 0; j < containerLen; j++ {
  1956. f.dd.initReadNext()
  1957. mk := f.dd.decodeBool()
  1958. mv := m[mk]
  1959. f.dd.initReadNext()
  1960. mv = f.dd.decodeBool()
  1961. m[mk] = mv
  1962. }
  1963. }