From 5c3efd11afe3c48f58d5827d36173c883eae954d Mon Sep 17 00:00:00 2001 From: Masaaki Goshima Date: Wed, 16 Sep 2020 01:23:36 +0900 Subject: [PATCH 1/5] Add opcode for sorted map --- cmd/generator/main.go | 7 + encode_optype.go | 1620 ++++++++++++++++++++++------------------- 2 files changed, 866 insertions(+), 761 deletions(-) diff --git a/cmd/generator/main.go b/cmd/generator/main.go index c6a3c9e..f824328 100644 --- a/cmd/generator/main.go +++ b/cmd/generator/main.go @@ -237,6 +237,13 @@ func (t opType) fieldToStringTagField() opType { {"RootMapKey", "RootMapKeyIndent", "MapKey"}, {"MapValue", "MapValueIndent", "MapValue"}, {"MapEnd", "MapEndIndent", "Op"}, + {"SortedMapHead", "SortedMapHeadIndent", "MapHead"}, + {"SortedMapHeadLoad", "SortedMapHeadLoadIndent", "MapHead"}, + {"SortedRootMapHead", "SortedRootMapHeadIndent", "MapHead"}, + {"SortedMapKey", "SortedMapKeyIndent", "MapKey"}, + {"SortedRootMapKey", "SortedRootMapKeyIndent", "MapKey"}, + {"SortedMapValue", "SortedMapValueIndent", "MapValue"}, + {"SortedMapEnd", "SortedMapEndIndent", "Op"}, {"StructFieldHead", "StructFieldHeadIndent", "StructField"}, {"StructFieldHeadOmitEmpty", "StructFieldHeadOmitEmptyIndent", "StructField"}, {"StructFieldHeadStringTag", "StructFieldHeadStringTagIndent", "StructField"}, diff --git a/encode_optype.go b/encode_optype.go index dccc3d5..d04b843 100644 --- a/encode_optype.go +++ b/encode_optype.go @@ -38,767 +38,781 @@ const ( opRootMapKey opType = 16 opMapValue opType = 17 opMapEnd opType = 18 - opStructFieldHead opType = 19 - opStructFieldHeadOmitEmpty opType = 20 - opStructFieldHeadStringTag opType = 21 - opStructFieldAnonymousHead opType = 22 - opStructFieldAnonymousHeadOmitEmpty opType = 23 - opStructFieldPtrAnonymousHeadOmitEmpty opType = 24 - opStructFieldAnonymousHeadStringTag opType = 25 - opStructFieldPtrAnonymousHeadStringTag opType = 26 - opStructFieldPtrHead opType = 27 - opStructFieldPtrHeadOmitEmpty opType = 28 - opStructFieldPtrHeadStringTag opType = 29 - opStructFieldPtrAnonymousHead opType = 30 - opStructField opType = 31 - opStructFieldOmitEmpty opType = 32 - opStructFieldStringTag opType = 33 - opStructFieldRecursive opType = 34 - opStructFieldRecursiveEnd opType = 35 - opStructEnd opType = 36 - opStructAnonymousEnd opType = 37 - opInt opType = 38 - opInt8 opType = 39 - opInt16 opType = 40 - opInt32 opType = 41 - opInt64 opType = 42 - opUint opType = 43 - opUint8 opType = 44 - opUint16 opType = 45 - opUint32 opType = 46 - opUint64 opType = 47 - opFloat32 opType = 48 - opFloat64 opType = 49 - opBool opType = 50 - opString opType = 51 - opBytes opType = 52 - opArray opType = 53 - opMap opType = 54 - opMapLoad opType = 55 - opSlice opType = 56 - opStruct opType = 57 - opMarshalJSON opType = 58 - opMarshalText opType = 59 - opStructFieldHeadInt opType = 60 - opStructFieldHeadInt8 opType = 61 - opStructFieldHeadInt16 opType = 62 - opStructFieldHeadInt32 opType = 63 - opStructFieldHeadInt64 opType = 64 - opStructFieldHeadUint opType = 65 - opStructFieldHeadUint8 opType = 66 - opStructFieldHeadUint16 opType = 67 - opStructFieldHeadUint32 opType = 68 - opStructFieldHeadUint64 opType = 69 - opStructFieldHeadFloat32 opType = 70 - opStructFieldHeadFloat64 opType = 71 - opStructFieldHeadBool opType = 72 - opStructFieldHeadString opType = 73 - opStructFieldHeadBytes opType = 74 - opStructFieldHeadArray opType = 75 - opStructFieldHeadMap opType = 76 - opStructFieldHeadMapLoad opType = 77 - opStructFieldHeadSlice opType = 78 - opStructFieldHeadStruct opType = 79 - opStructFieldHeadMarshalJSON opType = 80 - opStructFieldHeadMarshalText opType = 81 - opStructFieldHeadOmitEmptyInt opType = 82 - opStructFieldHeadOmitEmptyInt8 opType = 83 - opStructFieldHeadOmitEmptyInt16 opType = 84 - opStructFieldHeadOmitEmptyInt32 opType = 85 - opStructFieldHeadOmitEmptyInt64 opType = 86 - opStructFieldHeadOmitEmptyUint opType = 87 - opStructFieldHeadOmitEmptyUint8 opType = 88 - opStructFieldHeadOmitEmptyUint16 opType = 89 - opStructFieldHeadOmitEmptyUint32 opType = 90 - opStructFieldHeadOmitEmptyUint64 opType = 91 - opStructFieldHeadOmitEmptyFloat32 opType = 92 - opStructFieldHeadOmitEmptyFloat64 opType = 93 - opStructFieldHeadOmitEmptyBool opType = 94 - opStructFieldHeadOmitEmptyString opType = 95 - opStructFieldHeadOmitEmptyBytes opType = 96 - opStructFieldHeadOmitEmptyArray opType = 97 - opStructFieldHeadOmitEmptyMap opType = 98 - opStructFieldHeadOmitEmptyMapLoad opType = 99 - opStructFieldHeadOmitEmptySlice opType = 100 - opStructFieldHeadOmitEmptyStruct opType = 101 - opStructFieldHeadOmitEmptyMarshalJSON opType = 102 - opStructFieldHeadOmitEmptyMarshalText opType = 103 - opStructFieldHeadStringTagInt opType = 104 - opStructFieldHeadStringTagInt8 opType = 105 - opStructFieldHeadStringTagInt16 opType = 106 - opStructFieldHeadStringTagInt32 opType = 107 - opStructFieldHeadStringTagInt64 opType = 108 - opStructFieldHeadStringTagUint opType = 109 - opStructFieldHeadStringTagUint8 opType = 110 - opStructFieldHeadStringTagUint16 opType = 111 - opStructFieldHeadStringTagUint32 opType = 112 - opStructFieldHeadStringTagUint64 opType = 113 - opStructFieldHeadStringTagFloat32 opType = 114 - opStructFieldHeadStringTagFloat64 opType = 115 - opStructFieldHeadStringTagBool opType = 116 - opStructFieldHeadStringTagString opType = 117 - opStructFieldHeadStringTagBytes opType = 118 - opStructFieldHeadStringTagArray opType = 119 - opStructFieldHeadStringTagMap opType = 120 - opStructFieldHeadStringTagMapLoad opType = 121 - opStructFieldHeadStringTagSlice opType = 122 - opStructFieldHeadStringTagStruct opType = 123 - opStructFieldHeadStringTagMarshalJSON opType = 124 - opStructFieldHeadStringTagMarshalText opType = 125 - opStructFieldAnonymousHeadInt opType = 126 - opStructFieldAnonymousHeadInt8 opType = 127 - opStructFieldAnonymousHeadInt16 opType = 128 - opStructFieldAnonymousHeadInt32 opType = 129 - opStructFieldAnonymousHeadInt64 opType = 130 - opStructFieldAnonymousHeadUint opType = 131 - opStructFieldAnonymousHeadUint8 opType = 132 - opStructFieldAnonymousHeadUint16 opType = 133 - opStructFieldAnonymousHeadUint32 opType = 134 - opStructFieldAnonymousHeadUint64 opType = 135 - opStructFieldAnonymousHeadFloat32 opType = 136 - opStructFieldAnonymousHeadFloat64 opType = 137 - opStructFieldAnonymousHeadBool opType = 138 - opStructFieldAnonymousHeadString opType = 139 - opStructFieldAnonymousHeadBytes opType = 140 - opStructFieldAnonymousHeadArray opType = 141 - opStructFieldAnonymousHeadMap opType = 142 - opStructFieldAnonymousHeadMapLoad opType = 143 - opStructFieldAnonymousHeadSlice opType = 144 - opStructFieldAnonymousHeadStruct opType = 145 - opStructFieldAnonymousHeadMarshalJSON opType = 146 - opStructFieldAnonymousHeadMarshalText opType = 147 - opStructFieldAnonymousHeadOmitEmptyInt opType = 148 - opStructFieldAnonymousHeadOmitEmptyInt8 opType = 149 - opStructFieldAnonymousHeadOmitEmptyInt16 opType = 150 - opStructFieldAnonymousHeadOmitEmptyInt32 opType = 151 - opStructFieldAnonymousHeadOmitEmptyInt64 opType = 152 - opStructFieldAnonymousHeadOmitEmptyUint opType = 153 - opStructFieldAnonymousHeadOmitEmptyUint8 opType = 154 - opStructFieldAnonymousHeadOmitEmptyUint16 opType = 155 - opStructFieldAnonymousHeadOmitEmptyUint32 opType = 156 - opStructFieldAnonymousHeadOmitEmptyUint64 opType = 157 - opStructFieldAnonymousHeadOmitEmptyFloat32 opType = 158 - opStructFieldAnonymousHeadOmitEmptyFloat64 opType = 159 - opStructFieldAnonymousHeadOmitEmptyBool opType = 160 - opStructFieldAnonymousHeadOmitEmptyString opType = 161 - opStructFieldAnonymousHeadOmitEmptyBytes opType = 162 - opStructFieldAnonymousHeadOmitEmptyArray opType = 163 - opStructFieldAnonymousHeadOmitEmptyMap opType = 164 - opStructFieldAnonymousHeadOmitEmptyMapLoad opType = 165 - opStructFieldAnonymousHeadOmitEmptySlice opType = 166 - opStructFieldAnonymousHeadOmitEmptyStruct opType = 167 - opStructFieldAnonymousHeadOmitEmptyMarshalJSON opType = 168 - opStructFieldAnonymousHeadOmitEmptyMarshalText opType = 169 - opStructFieldAnonymousHeadStringTagInt opType = 170 - opStructFieldAnonymousHeadStringTagInt8 opType = 171 - opStructFieldAnonymousHeadStringTagInt16 opType = 172 - opStructFieldAnonymousHeadStringTagInt32 opType = 173 - opStructFieldAnonymousHeadStringTagInt64 opType = 174 - opStructFieldAnonymousHeadStringTagUint opType = 175 - opStructFieldAnonymousHeadStringTagUint8 opType = 176 - opStructFieldAnonymousHeadStringTagUint16 opType = 177 - opStructFieldAnonymousHeadStringTagUint32 opType = 178 - opStructFieldAnonymousHeadStringTagUint64 opType = 179 - opStructFieldAnonymousHeadStringTagFloat32 opType = 180 - opStructFieldAnonymousHeadStringTagFloat64 opType = 181 - opStructFieldAnonymousHeadStringTagBool opType = 182 - opStructFieldAnonymousHeadStringTagString opType = 183 - opStructFieldAnonymousHeadStringTagBytes opType = 184 - opStructFieldAnonymousHeadStringTagArray opType = 185 - opStructFieldAnonymousHeadStringTagMap opType = 186 - opStructFieldAnonymousHeadStringTagMapLoad opType = 187 - opStructFieldAnonymousHeadStringTagSlice opType = 188 - opStructFieldAnonymousHeadStringTagStruct opType = 189 - opStructFieldAnonymousHeadStringTagMarshalJSON opType = 190 - opStructFieldAnonymousHeadStringTagMarshalText opType = 191 - opStructFieldPtrHeadInt opType = 192 - opStructFieldPtrHeadInt8 opType = 193 - opStructFieldPtrHeadInt16 opType = 194 - opStructFieldPtrHeadInt32 opType = 195 - opStructFieldPtrHeadInt64 opType = 196 - opStructFieldPtrHeadUint opType = 197 - opStructFieldPtrHeadUint8 opType = 198 - opStructFieldPtrHeadUint16 opType = 199 - opStructFieldPtrHeadUint32 opType = 200 - opStructFieldPtrHeadUint64 opType = 201 - opStructFieldPtrHeadFloat32 opType = 202 - opStructFieldPtrHeadFloat64 opType = 203 - opStructFieldPtrHeadBool opType = 204 - opStructFieldPtrHeadString opType = 205 - opStructFieldPtrHeadBytes opType = 206 - opStructFieldPtrHeadArray opType = 207 - opStructFieldPtrHeadMap opType = 208 - opStructFieldPtrHeadMapLoad opType = 209 - opStructFieldPtrHeadSlice opType = 210 - opStructFieldPtrHeadStruct opType = 211 - opStructFieldPtrHeadMarshalJSON opType = 212 - opStructFieldPtrHeadMarshalText opType = 213 - opStructFieldPtrHeadOmitEmptyInt opType = 214 - opStructFieldPtrHeadOmitEmptyInt8 opType = 215 - opStructFieldPtrHeadOmitEmptyInt16 opType = 216 - opStructFieldPtrHeadOmitEmptyInt32 opType = 217 - opStructFieldPtrHeadOmitEmptyInt64 opType = 218 - opStructFieldPtrHeadOmitEmptyUint opType = 219 - opStructFieldPtrHeadOmitEmptyUint8 opType = 220 - opStructFieldPtrHeadOmitEmptyUint16 opType = 221 - opStructFieldPtrHeadOmitEmptyUint32 opType = 222 - opStructFieldPtrHeadOmitEmptyUint64 opType = 223 - opStructFieldPtrHeadOmitEmptyFloat32 opType = 224 - opStructFieldPtrHeadOmitEmptyFloat64 opType = 225 - opStructFieldPtrHeadOmitEmptyBool opType = 226 - opStructFieldPtrHeadOmitEmptyString opType = 227 - opStructFieldPtrHeadOmitEmptyBytes opType = 228 - opStructFieldPtrHeadOmitEmptyArray opType = 229 - opStructFieldPtrHeadOmitEmptyMap opType = 230 - opStructFieldPtrHeadOmitEmptyMapLoad opType = 231 - opStructFieldPtrHeadOmitEmptySlice opType = 232 - opStructFieldPtrHeadOmitEmptyStruct opType = 233 - opStructFieldPtrHeadOmitEmptyMarshalJSON opType = 234 - opStructFieldPtrHeadOmitEmptyMarshalText opType = 235 - opStructFieldPtrHeadStringTagInt opType = 236 - opStructFieldPtrHeadStringTagInt8 opType = 237 - opStructFieldPtrHeadStringTagInt16 opType = 238 - opStructFieldPtrHeadStringTagInt32 opType = 239 - opStructFieldPtrHeadStringTagInt64 opType = 240 - opStructFieldPtrHeadStringTagUint opType = 241 - opStructFieldPtrHeadStringTagUint8 opType = 242 - opStructFieldPtrHeadStringTagUint16 opType = 243 - opStructFieldPtrHeadStringTagUint32 opType = 244 - opStructFieldPtrHeadStringTagUint64 opType = 245 - opStructFieldPtrHeadStringTagFloat32 opType = 246 - opStructFieldPtrHeadStringTagFloat64 opType = 247 - opStructFieldPtrHeadStringTagBool opType = 248 - opStructFieldPtrHeadStringTagString opType = 249 - opStructFieldPtrHeadStringTagBytes opType = 250 - opStructFieldPtrHeadStringTagArray opType = 251 - opStructFieldPtrHeadStringTagMap opType = 252 - opStructFieldPtrHeadStringTagMapLoad opType = 253 - opStructFieldPtrHeadStringTagSlice opType = 254 - opStructFieldPtrHeadStringTagStruct opType = 255 - opStructFieldPtrHeadStringTagMarshalJSON opType = 256 - opStructFieldPtrHeadStringTagMarshalText opType = 257 - opStructFieldPtrAnonymousHeadInt opType = 258 - opStructFieldPtrAnonymousHeadInt8 opType = 259 - opStructFieldPtrAnonymousHeadInt16 opType = 260 - opStructFieldPtrAnonymousHeadInt32 opType = 261 - opStructFieldPtrAnonymousHeadInt64 opType = 262 - opStructFieldPtrAnonymousHeadUint opType = 263 - opStructFieldPtrAnonymousHeadUint8 opType = 264 - opStructFieldPtrAnonymousHeadUint16 opType = 265 - opStructFieldPtrAnonymousHeadUint32 opType = 266 - opStructFieldPtrAnonymousHeadUint64 opType = 267 - opStructFieldPtrAnonymousHeadFloat32 opType = 268 - opStructFieldPtrAnonymousHeadFloat64 opType = 269 - opStructFieldPtrAnonymousHeadBool opType = 270 - opStructFieldPtrAnonymousHeadString opType = 271 - opStructFieldPtrAnonymousHeadBytes opType = 272 - opStructFieldPtrAnonymousHeadArray opType = 273 - opStructFieldPtrAnonymousHeadMap opType = 274 - opStructFieldPtrAnonymousHeadMapLoad opType = 275 - opStructFieldPtrAnonymousHeadSlice opType = 276 - opStructFieldPtrAnonymousHeadStruct opType = 277 - opStructFieldPtrAnonymousHeadMarshalJSON opType = 278 - opStructFieldPtrAnonymousHeadMarshalText opType = 279 - opStructFieldPtrAnonymousHeadOmitEmptyInt opType = 280 - opStructFieldPtrAnonymousHeadOmitEmptyInt8 opType = 281 - opStructFieldPtrAnonymousHeadOmitEmptyInt16 opType = 282 - opStructFieldPtrAnonymousHeadOmitEmptyInt32 opType = 283 - opStructFieldPtrAnonymousHeadOmitEmptyInt64 opType = 284 - opStructFieldPtrAnonymousHeadOmitEmptyUint opType = 285 - opStructFieldPtrAnonymousHeadOmitEmptyUint8 opType = 286 - opStructFieldPtrAnonymousHeadOmitEmptyUint16 opType = 287 - opStructFieldPtrAnonymousHeadOmitEmptyUint32 opType = 288 - opStructFieldPtrAnonymousHeadOmitEmptyUint64 opType = 289 - opStructFieldPtrAnonymousHeadOmitEmptyFloat32 opType = 290 - opStructFieldPtrAnonymousHeadOmitEmptyFloat64 opType = 291 - opStructFieldPtrAnonymousHeadOmitEmptyBool opType = 292 - opStructFieldPtrAnonymousHeadOmitEmptyString opType = 293 - opStructFieldPtrAnonymousHeadOmitEmptyBytes opType = 294 - opStructFieldPtrAnonymousHeadOmitEmptyArray opType = 295 - opStructFieldPtrAnonymousHeadOmitEmptyMap opType = 296 - opStructFieldPtrAnonymousHeadOmitEmptyMapLoad opType = 297 - opStructFieldPtrAnonymousHeadOmitEmptySlice opType = 298 - opStructFieldPtrAnonymousHeadOmitEmptyStruct opType = 299 - opStructFieldPtrAnonymousHeadOmitEmptyMarshalJSON opType = 300 - opStructFieldPtrAnonymousHeadOmitEmptyMarshalText opType = 301 - opStructFieldPtrAnonymousHeadStringTagInt opType = 302 - opStructFieldPtrAnonymousHeadStringTagInt8 opType = 303 - opStructFieldPtrAnonymousHeadStringTagInt16 opType = 304 - opStructFieldPtrAnonymousHeadStringTagInt32 opType = 305 - opStructFieldPtrAnonymousHeadStringTagInt64 opType = 306 - opStructFieldPtrAnonymousHeadStringTagUint opType = 307 - opStructFieldPtrAnonymousHeadStringTagUint8 opType = 308 - opStructFieldPtrAnonymousHeadStringTagUint16 opType = 309 - opStructFieldPtrAnonymousHeadStringTagUint32 opType = 310 - opStructFieldPtrAnonymousHeadStringTagUint64 opType = 311 - opStructFieldPtrAnonymousHeadStringTagFloat32 opType = 312 - opStructFieldPtrAnonymousHeadStringTagFloat64 opType = 313 - opStructFieldPtrAnonymousHeadStringTagBool opType = 314 - opStructFieldPtrAnonymousHeadStringTagString opType = 315 - opStructFieldPtrAnonymousHeadStringTagBytes opType = 316 - opStructFieldPtrAnonymousHeadStringTagArray opType = 317 - opStructFieldPtrAnonymousHeadStringTagMap opType = 318 - opStructFieldPtrAnonymousHeadStringTagMapLoad opType = 319 - opStructFieldPtrAnonymousHeadStringTagSlice opType = 320 - opStructFieldPtrAnonymousHeadStringTagStruct opType = 321 - opStructFieldPtrAnonymousHeadStringTagMarshalJSON opType = 322 - opStructFieldPtrAnonymousHeadStringTagMarshalText opType = 323 - opStructFieldInt opType = 324 - opStructFieldInt8 opType = 325 - opStructFieldInt16 opType = 326 - opStructFieldInt32 opType = 327 - opStructFieldInt64 opType = 328 - opStructFieldUint opType = 329 - opStructFieldUint8 opType = 330 - opStructFieldUint16 opType = 331 - opStructFieldUint32 opType = 332 - opStructFieldUint64 opType = 333 - opStructFieldFloat32 opType = 334 - opStructFieldFloat64 opType = 335 - opStructFieldBool opType = 336 - opStructFieldString opType = 337 - opStructFieldBytes opType = 338 - opStructFieldArray opType = 339 - opStructFieldMap opType = 340 - opStructFieldMapLoad opType = 341 - opStructFieldSlice opType = 342 - opStructFieldStruct opType = 343 - opStructFieldMarshalJSON opType = 344 - opStructFieldMarshalText opType = 345 - opStructFieldOmitEmptyInt opType = 346 - opStructFieldOmitEmptyInt8 opType = 347 - opStructFieldOmitEmptyInt16 opType = 348 - opStructFieldOmitEmptyInt32 opType = 349 - opStructFieldOmitEmptyInt64 opType = 350 - opStructFieldOmitEmptyUint opType = 351 - opStructFieldOmitEmptyUint8 opType = 352 - opStructFieldOmitEmptyUint16 opType = 353 - opStructFieldOmitEmptyUint32 opType = 354 - opStructFieldOmitEmptyUint64 opType = 355 - opStructFieldOmitEmptyFloat32 opType = 356 - opStructFieldOmitEmptyFloat64 opType = 357 - opStructFieldOmitEmptyBool opType = 358 - opStructFieldOmitEmptyString opType = 359 - opStructFieldOmitEmptyBytes opType = 360 - opStructFieldOmitEmptyArray opType = 361 - opStructFieldOmitEmptyMap opType = 362 - opStructFieldOmitEmptyMapLoad opType = 363 - opStructFieldOmitEmptySlice opType = 364 - opStructFieldOmitEmptyStruct opType = 365 - opStructFieldOmitEmptyMarshalJSON opType = 366 - opStructFieldOmitEmptyMarshalText opType = 367 - opStructFieldStringTagInt opType = 368 - opStructFieldStringTagInt8 opType = 369 - opStructFieldStringTagInt16 opType = 370 - opStructFieldStringTagInt32 opType = 371 - opStructFieldStringTagInt64 opType = 372 - opStructFieldStringTagUint opType = 373 - opStructFieldStringTagUint8 opType = 374 - opStructFieldStringTagUint16 opType = 375 - opStructFieldStringTagUint32 opType = 376 - opStructFieldStringTagUint64 opType = 377 - opStructFieldStringTagFloat32 opType = 378 - opStructFieldStringTagFloat64 opType = 379 - opStructFieldStringTagBool opType = 380 - opStructFieldStringTagString opType = 381 - opStructFieldStringTagBytes opType = 382 - opStructFieldStringTagArray opType = 383 - opStructFieldStringTagMap opType = 384 - opStructFieldStringTagMapLoad opType = 385 - opStructFieldStringTagSlice opType = 386 - opStructFieldStringTagStruct opType = 387 - opStructFieldStringTagMarshalJSON opType = 388 - opStructFieldStringTagMarshalText opType = 389 - opEndIndent opType = 390 - opInterfaceIndent opType = 391 - opInterfaceEndIndent opType = 392 - opPtrIndent opType = 393 - opSliceHeadIndent opType = 394 - opRootSliceHeadIndent opType = 395 - opSliceElemIndent opType = 396 - opRootSliceElemIndent opType = 397 - opSliceEndIndent opType = 398 - opArrayHeadIndent opType = 399 - opArrayElemIndent opType = 400 - opArrayEndIndent opType = 401 - opMapHeadIndent opType = 402 - opMapHeadLoadIndent opType = 403 - opRootMapHeadIndent opType = 404 - opMapKeyIndent opType = 405 - opRootMapKeyIndent opType = 406 - opMapValueIndent opType = 407 - opMapEndIndent opType = 408 - opStructFieldHeadIndent opType = 409 - opStructFieldHeadOmitEmptyIndent opType = 410 - opStructFieldHeadStringTagIndent opType = 411 - opStructFieldAnonymousHeadIndent opType = 412 - opStructFieldAnonymousHeadOmitEmptyIndent opType = 413 - opStructFieldPtrAnonymousHeadOmitEmptyIndent opType = 414 - opStructFieldAnonymousHeadStringTagIndent opType = 415 - opStructFieldPtrAnonymousHeadStringTagIndent opType = 416 - opStructFieldPtrHeadIndent opType = 417 - opStructFieldPtrHeadOmitEmptyIndent opType = 418 - opStructFieldPtrHeadStringTagIndent opType = 419 - opStructFieldPtrAnonymousHeadIndent opType = 420 - opStructFieldIndent opType = 421 - opStructFieldOmitEmptyIndent opType = 422 - opStructFieldStringTagIndent opType = 423 - opStructFieldRecursiveIndent opType = 424 - opStructFieldRecursiveEndIndent opType = 425 - opStructEndIndent opType = 426 - opStructAnonymousEndIndent opType = 427 - opIntIndent opType = 428 - opInt8Indent opType = 429 - opInt16Indent opType = 430 - opInt32Indent opType = 431 - opInt64Indent opType = 432 - opUintIndent opType = 433 - opUint8Indent opType = 434 - opUint16Indent opType = 435 - opUint32Indent opType = 436 - opUint64Indent opType = 437 - opFloat32Indent opType = 438 - opFloat64Indent opType = 439 - opBoolIndent opType = 440 - opStringIndent opType = 441 - opBytesIndent opType = 442 - opArrayIndent opType = 443 - opMapIndent opType = 444 - opMapLoadIndent opType = 445 - opSliceIndent opType = 446 - opStructIndent opType = 447 - opMarshalJSONIndent opType = 448 - opMarshalTextIndent opType = 449 - opStructFieldHeadIntIndent opType = 450 - opStructFieldHeadInt8Indent opType = 451 - opStructFieldHeadInt16Indent opType = 452 - opStructFieldHeadInt32Indent opType = 453 - opStructFieldHeadInt64Indent opType = 454 - opStructFieldHeadUintIndent opType = 455 - opStructFieldHeadUint8Indent opType = 456 - opStructFieldHeadUint16Indent opType = 457 - opStructFieldHeadUint32Indent opType = 458 - opStructFieldHeadUint64Indent opType = 459 - opStructFieldHeadFloat32Indent opType = 460 - opStructFieldHeadFloat64Indent opType = 461 - opStructFieldHeadBoolIndent opType = 462 - opStructFieldHeadStringIndent opType = 463 - opStructFieldHeadBytesIndent opType = 464 - opStructFieldHeadArrayIndent opType = 465 - opStructFieldHeadMapIndent opType = 466 - opStructFieldHeadMapLoadIndent opType = 467 - opStructFieldHeadSliceIndent opType = 468 - opStructFieldHeadStructIndent opType = 469 - opStructFieldHeadMarshalJSONIndent opType = 470 - opStructFieldHeadMarshalTextIndent opType = 471 - opStructFieldHeadOmitEmptyIntIndent opType = 472 - opStructFieldHeadOmitEmptyInt8Indent opType = 473 - opStructFieldHeadOmitEmptyInt16Indent opType = 474 - opStructFieldHeadOmitEmptyInt32Indent opType = 475 - opStructFieldHeadOmitEmptyInt64Indent opType = 476 - opStructFieldHeadOmitEmptyUintIndent opType = 477 - opStructFieldHeadOmitEmptyUint8Indent opType = 478 - opStructFieldHeadOmitEmptyUint16Indent opType = 479 - opStructFieldHeadOmitEmptyUint32Indent opType = 480 - opStructFieldHeadOmitEmptyUint64Indent opType = 481 - opStructFieldHeadOmitEmptyFloat32Indent opType = 482 - opStructFieldHeadOmitEmptyFloat64Indent opType = 483 - opStructFieldHeadOmitEmptyBoolIndent opType = 484 - opStructFieldHeadOmitEmptyStringIndent opType = 485 - opStructFieldHeadOmitEmptyBytesIndent opType = 486 - opStructFieldHeadOmitEmptyArrayIndent opType = 487 - opStructFieldHeadOmitEmptyMapIndent opType = 488 - opStructFieldHeadOmitEmptyMapLoadIndent opType = 489 - opStructFieldHeadOmitEmptySliceIndent opType = 490 - opStructFieldHeadOmitEmptyStructIndent opType = 491 - opStructFieldHeadOmitEmptyMarshalJSONIndent opType = 492 - opStructFieldHeadOmitEmptyMarshalTextIndent opType = 493 - opStructFieldHeadStringTagIntIndent opType = 494 - opStructFieldHeadStringTagInt8Indent opType = 495 - opStructFieldHeadStringTagInt16Indent opType = 496 - opStructFieldHeadStringTagInt32Indent opType = 497 - opStructFieldHeadStringTagInt64Indent opType = 498 - opStructFieldHeadStringTagUintIndent opType = 499 - opStructFieldHeadStringTagUint8Indent opType = 500 - opStructFieldHeadStringTagUint16Indent opType = 501 - opStructFieldHeadStringTagUint32Indent opType = 502 - opStructFieldHeadStringTagUint64Indent opType = 503 - opStructFieldHeadStringTagFloat32Indent opType = 504 - opStructFieldHeadStringTagFloat64Indent opType = 505 - opStructFieldHeadStringTagBoolIndent opType = 506 - opStructFieldHeadStringTagStringIndent opType = 507 - opStructFieldHeadStringTagBytesIndent opType = 508 - opStructFieldHeadStringTagArrayIndent opType = 509 - opStructFieldHeadStringTagMapIndent opType = 510 - opStructFieldHeadStringTagMapLoadIndent opType = 511 - opStructFieldHeadStringTagSliceIndent opType = 512 - opStructFieldHeadStringTagStructIndent opType = 513 - opStructFieldHeadStringTagMarshalJSONIndent opType = 514 - opStructFieldHeadStringTagMarshalTextIndent opType = 515 - opStructFieldAnonymousHeadIntIndent opType = 516 - opStructFieldAnonymousHeadInt8Indent opType = 517 - opStructFieldAnonymousHeadInt16Indent opType = 518 - opStructFieldAnonymousHeadInt32Indent opType = 519 - opStructFieldAnonymousHeadInt64Indent opType = 520 - opStructFieldAnonymousHeadUintIndent opType = 521 - opStructFieldAnonymousHeadUint8Indent opType = 522 - opStructFieldAnonymousHeadUint16Indent opType = 523 - opStructFieldAnonymousHeadUint32Indent opType = 524 - opStructFieldAnonymousHeadUint64Indent opType = 525 - opStructFieldAnonymousHeadFloat32Indent opType = 526 - opStructFieldAnonymousHeadFloat64Indent opType = 527 - opStructFieldAnonymousHeadBoolIndent opType = 528 - opStructFieldAnonymousHeadStringIndent opType = 529 - opStructFieldAnonymousHeadBytesIndent opType = 530 - opStructFieldAnonymousHeadArrayIndent opType = 531 - opStructFieldAnonymousHeadMapIndent opType = 532 - opStructFieldAnonymousHeadMapLoadIndent opType = 533 - opStructFieldAnonymousHeadSliceIndent opType = 534 - opStructFieldAnonymousHeadStructIndent opType = 535 - opStructFieldAnonymousHeadMarshalJSONIndent opType = 536 - opStructFieldAnonymousHeadMarshalTextIndent opType = 537 - opStructFieldAnonymousHeadOmitEmptyIntIndent opType = 538 - opStructFieldAnonymousHeadOmitEmptyInt8Indent opType = 539 - opStructFieldAnonymousHeadOmitEmptyInt16Indent opType = 540 - opStructFieldAnonymousHeadOmitEmptyInt32Indent opType = 541 - opStructFieldAnonymousHeadOmitEmptyInt64Indent opType = 542 - opStructFieldAnonymousHeadOmitEmptyUintIndent opType = 543 - opStructFieldAnonymousHeadOmitEmptyUint8Indent opType = 544 - opStructFieldAnonymousHeadOmitEmptyUint16Indent opType = 545 - opStructFieldAnonymousHeadOmitEmptyUint32Indent opType = 546 - opStructFieldAnonymousHeadOmitEmptyUint64Indent opType = 547 - opStructFieldAnonymousHeadOmitEmptyFloat32Indent opType = 548 - opStructFieldAnonymousHeadOmitEmptyFloat64Indent opType = 549 - opStructFieldAnonymousHeadOmitEmptyBoolIndent opType = 550 - opStructFieldAnonymousHeadOmitEmptyStringIndent opType = 551 - opStructFieldAnonymousHeadOmitEmptyBytesIndent opType = 552 - opStructFieldAnonymousHeadOmitEmptyArrayIndent opType = 553 - opStructFieldAnonymousHeadOmitEmptyMapIndent opType = 554 - opStructFieldAnonymousHeadOmitEmptyMapLoadIndent opType = 555 - opStructFieldAnonymousHeadOmitEmptySliceIndent opType = 556 - opStructFieldAnonymousHeadOmitEmptyStructIndent opType = 557 - opStructFieldAnonymousHeadOmitEmptyMarshalJSONIndent opType = 558 - opStructFieldAnonymousHeadOmitEmptyMarshalTextIndent opType = 559 - opStructFieldAnonymousHeadStringTagIntIndent opType = 560 - opStructFieldAnonymousHeadStringTagInt8Indent opType = 561 - opStructFieldAnonymousHeadStringTagInt16Indent opType = 562 - opStructFieldAnonymousHeadStringTagInt32Indent opType = 563 - opStructFieldAnonymousHeadStringTagInt64Indent opType = 564 - opStructFieldAnonymousHeadStringTagUintIndent opType = 565 - opStructFieldAnonymousHeadStringTagUint8Indent opType = 566 - opStructFieldAnonymousHeadStringTagUint16Indent opType = 567 - opStructFieldAnonymousHeadStringTagUint32Indent opType = 568 - opStructFieldAnonymousHeadStringTagUint64Indent opType = 569 - opStructFieldAnonymousHeadStringTagFloat32Indent opType = 570 - opStructFieldAnonymousHeadStringTagFloat64Indent opType = 571 - opStructFieldAnonymousHeadStringTagBoolIndent opType = 572 - opStructFieldAnonymousHeadStringTagStringIndent opType = 573 - opStructFieldAnonymousHeadStringTagBytesIndent opType = 574 - opStructFieldAnonymousHeadStringTagArrayIndent opType = 575 - opStructFieldAnonymousHeadStringTagMapIndent opType = 576 - opStructFieldAnonymousHeadStringTagMapLoadIndent opType = 577 - opStructFieldAnonymousHeadStringTagSliceIndent opType = 578 - opStructFieldAnonymousHeadStringTagStructIndent opType = 579 - opStructFieldAnonymousHeadStringTagMarshalJSONIndent opType = 580 - opStructFieldAnonymousHeadStringTagMarshalTextIndent opType = 581 - opStructFieldPtrHeadIntIndent opType = 582 - opStructFieldPtrHeadInt8Indent opType = 583 - opStructFieldPtrHeadInt16Indent opType = 584 - opStructFieldPtrHeadInt32Indent opType = 585 - opStructFieldPtrHeadInt64Indent opType = 586 - opStructFieldPtrHeadUintIndent opType = 587 - opStructFieldPtrHeadUint8Indent opType = 588 - opStructFieldPtrHeadUint16Indent opType = 589 - opStructFieldPtrHeadUint32Indent opType = 590 - opStructFieldPtrHeadUint64Indent opType = 591 - opStructFieldPtrHeadFloat32Indent opType = 592 - opStructFieldPtrHeadFloat64Indent opType = 593 - opStructFieldPtrHeadBoolIndent opType = 594 - opStructFieldPtrHeadStringIndent opType = 595 - opStructFieldPtrHeadBytesIndent opType = 596 - opStructFieldPtrHeadArrayIndent opType = 597 - opStructFieldPtrHeadMapIndent opType = 598 - opStructFieldPtrHeadMapLoadIndent opType = 599 - opStructFieldPtrHeadSliceIndent opType = 600 - opStructFieldPtrHeadStructIndent opType = 601 - opStructFieldPtrHeadMarshalJSONIndent opType = 602 - opStructFieldPtrHeadMarshalTextIndent opType = 603 - opStructFieldPtrHeadOmitEmptyIntIndent opType = 604 - opStructFieldPtrHeadOmitEmptyInt8Indent opType = 605 - opStructFieldPtrHeadOmitEmptyInt16Indent opType = 606 - opStructFieldPtrHeadOmitEmptyInt32Indent opType = 607 - opStructFieldPtrHeadOmitEmptyInt64Indent opType = 608 - opStructFieldPtrHeadOmitEmptyUintIndent opType = 609 - opStructFieldPtrHeadOmitEmptyUint8Indent opType = 610 - opStructFieldPtrHeadOmitEmptyUint16Indent opType = 611 - opStructFieldPtrHeadOmitEmptyUint32Indent opType = 612 - opStructFieldPtrHeadOmitEmptyUint64Indent opType = 613 - opStructFieldPtrHeadOmitEmptyFloat32Indent opType = 614 - opStructFieldPtrHeadOmitEmptyFloat64Indent opType = 615 - opStructFieldPtrHeadOmitEmptyBoolIndent opType = 616 - opStructFieldPtrHeadOmitEmptyStringIndent opType = 617 - opStructFieldPtrHeadOmitEmptyBytesIndent opType = 618 - opStructFieldPtrHeadOmitEmptyArrayIndent opType = 619 - opStructFieldPtrHeadOmitEmptyMapIndent opType = 620 - opStructFieldPtrHeadOmitEmptyMapLoadIndent opType = 621 - opStructFieldPtrHeadOmitEmptySliceIndent opType = 622 - opStructFieldPtrHeadOmitEmptyStructIndent opType = 623 - opStructFieldPtrHeadOmitEmptyMarshalJSONIndent opType = 624 - opStructFieldPtrHeadOmitEmptyMarshalTextIndent opType = 625 - opStructFieldPtrHeadStringTagIntIndent opType = 626 - opStructFieldPtrHeadStringTagInt8Indent opType = 627 - opStructFieldPtrHeadStringTagInt16Indent opType = 628 - opStructFieldPtrHeadStringTagInt32Indent opType = 629 - opStructFieldPtrHeadStringTagInt64Indent opType = 630 - opStructFieldPtrHeadStringTagUintIndent opType = 631 - opStructFieldPtrHeadStringTagUint8Indent opType = 632 - opStructFieldPtrHeadStringTagUint16Indent opType = 633 - opStructFieldPtrHeadStringTagUint32Indent opType = 634 - opStructFieldPtrHeadStringTagUint64Indent opType = 635 - opStructFieldPtrHeadStringTagFloat32Indent opType = 636 - opStructFieldPtrHeadStringTagFloat64Indent opType = 637 - opStructFieldPtrHeadStringTagBoolIndent opType = 638 - opStructFieldPtrHeadStringTagStringIndent opType = 639 - opStructFieldPtrHeadStringTagBytesIndent opType = 640 - opStructFieldPtrHeadStringTagArrayIndent opType = 641 - opStructFieldPtrHeadStringTagMapIndent opType = 642 - opStructFieldPtrHeadStringTagMapLoadIndent opType = 643 - opStructFieldPtrHeadStringTagSliceIndent opType = 644 - opStructFieldPtrHeadStringTagStructIndent opType = 645 - opStructFieldPtrHeadStringTagMarshalJSONIndent opType = 646 - opStructFieldPtrHeadStringTagMarshalTextIndent opType = 647 - opStructFieldPtrAnonymousHeadIntIndent opType = 648 - opStructFieldPtrAnonymousHeadInt8Indent opType = 649 - opStructFieldPtrAnonymousHeadInt16Indent opType = 650 - opStructFieldPtrAnonymousHeadInt32Indent opType = 651 - opStructFieldPtrAnonymousHeadInt64Indent opType = 652 - opStructFieldPtrAnonymousHeadUintIndent opType = 653 - opStructFieldPtrAnonymousHeadUint8Indent opType = 654 - opStructFieldPtrAnonymousHeadUint16Indent opType = 655 - opStructFieldPtrAnonymousHeadUint32Indent opType = 656 - opStructFieldPtrAnonymousHeadUint64Indent opType = 657 - opStructFieldPtrAnonymousHeadFloat32Indent opType = 658 - opStructFieldPtrAnonymousHeadFloat64Indent opType = 659 - opStructFieldPtrAnonymousHeadBoolIndent opType = 660 - opStructFieldPtrAnonymousHeadStringIndent opType = 661 - opStructFieldPtrAnonymousHeadBytesIndent opType = 662 - opStructFieldPtrAnonymousHeadArrayIndent opType = 663 - opStructFieldPtrAnonymousHeadMapIndent opType = 664 - opStructFieldPtrAnonymousHeadMapLoadIndent opType = 665 - opStructFieldPtrAnonymousHeadSliceIndent opType = 666 - opStructFieldPtrAnonymousHeadStructIndent opType = 667 - opStructFieldPtrAnonymousHeadMarshalJSONIndent opType = 668 - opStructFieldPtrAnonymousHeadMarshalTextIndent opType = 669 - opStructFieldPtrAnonymousHeadOmitEmptyIntIndent opType = 670 - opStructFieldPtrAnonymousHeadOmitEmptyInt8Indent opType = 671 - opStructFieldPtrAnonymousHeadOmitEmptyInt16Indent opType = 672 - opStructFieldPtrAnonymousHeadOmitEmptyInt32Indent opType = 673 - opStructFieldPtrAnonymousHeadOmitEmptyInt64Indent opType = 674 - opStructFieldPtrAnonymousHeadOmitEmptyUintIndent opType = 675 - opStructFieldPtrAnonymousHeadOmitEmptyUint8Indent opType = 676 - opStructFieldPtrAnonymousHeadOmitEmptyUint16Indent opType = 677 - opStructFieldPtrAnonymousHeadOmitEmptyUint32Indent opType = 678 - opStructFieldPtrAnonymousHeadOmitEmptyUint64Indent opType = 679 - opStructFieldPtrAnonymousHeadOmitEmptyFloat32Indent opType = 680 - opStructFieldPtrAnonymousHeadOmitEmptyFloat64Indent opType = 681 - opStructFieldPtrAnonymousHeadOmitEmptyBoolIndent opType = 682 - opStructFieldPtrAnonymousHeadOmitEmptyStringIndent opType = 683 - opStructFieldPtrAnonymousHeadOmitEmptyBytesIndent opType = 684 - opStructFieldPtrAnonymousHeadOmitEmptyArrayIndent opType = 685 - opStructFieldPtrAnonymousHeadOmitEmptyMapIndent opType = 686 - opStructFieldPtrAnonymousHeadOmitEmptyMapLoadIndent opType = 687 - opStructFieldPtrAnonymousHeadOmitEmptySliceIndent opType = 688 - opStructFieldPtrAnonymousHeadOmitEmptyStructIndent opType = 689 - opStructFieldPtrAnonymousHeadOmitEmptyMarshalJSONIndent opType = 690 - opStructFieldPtrAnonymousHeadOmitEmptyMarshalTextIndent opType = 691 - opStructFieldPtrAnonymousHeadStringTagIntIndent opType = 692 - opStructFieldPtrAnonymousHeadStringTagInt8Indent opType = 693 - opStructFieldPtrAnonymousHeadStringTagInt16Indent opType = 694 - opStructFieldPtrAnonymousHeadStringTagInt32Indent opType = 695 - opStructFieldPtrAnonymousHeadStringTagInt64Indent opType = 696 - opStructFieldPtrAnonymousHeadStringTagUintIndent opType = 697 - opStructFieldPtrAnonymousHeadStringTagUint8Indent opType = 698 - opStructFieldPtrAnonymousHeadStringTagUint16Indent opType = 699 - opStructFieldPtrAnonymousHeadStringTagUint32Indent opType = 700 - opStructFieldPtrAnonymousHeadStringTagUint64Indent opType = 701 - opStructFieldPtrAnonymousHeadStringTagFloat32Indent opType = 702 - opStructFieldPtrAnonymousHeadStringTagFloat64Indent opType = 703 - opStructFieldPtrAnonymousHeadStringTagBoolIndent opType = 704 - opStructFieldPtrAnonymousHeadStringTagStringIndent opType = 705 - opStructFieldPtrAnonymousHeadStringTagBytesIndent opType = 706 - opStructFieldPtrAnonymousHeadStringTagArrayIndent opType = 707 - opStructFieldPtrAnonymousHeadStringTagMapIndent opType = 708 - opStructFieldPtrAnonymousHeadStringTagMapLoadIndent opType = 709 - opStructFieldPtrAnonymousHeadStringTagSliceIndent opType = 710 - opStructFieldPtrAnonymousHeadStringTagStructIndent opType = 711 - opStructFieldPtrAnonymousHeadStringTagMarshalJSONIndent opType = 712 - opStructFieldPtrAnonymousHeadStringTagMarshalTextIndent opType = 713 - opStructFieldIntIndent opType = 714 - opStructFieldInt8Indent opType = 715 - opStructFieldInt16Indent opType = 716 - opStructFieldInt32Indent opType = 717 - opStructFieldInt64Indent opType = 718 - opStructFieldUintIndent opType = 719 - opStructFieldUint8Indent opType = 720 - opStructFieldUint16Indent opType = 721 - opStructFieldUint32Indent opType = 722 - opStructFieldUint64Indent opType = 723 - opStructFieldFloat32Indent opType = 724 - opStructFieldFloat64Indent opType = 725 - opStructFieldBoolIndent opType = 726 - opStructFieldStringIndent opType = 727 - opStructFieldBytesIndent opType = 728 - opStructFieldArrayIndent opType = 729 - opStructFieldMapIndent opType = 730 - opStructFieldMapLoadIndent opType = 731 - opStructFieldSliceIndent opType = 732 - opStructFieldStructIndent opType = 733 - opStructFieldMarshalJSONIndent opType = 734 - opStructFieldMarshalTextIndent opType = 735 - opStructFieldOmitEmptyIntIndent opType = 736 - opStructFieldOmitEmptyInt8Indent opType = 737 - opStructFieldOmitEmptyInt16Indent opType = 738 - opStructFieldOmitEmptyInt32Indent opType = 739 - opStructFieldOmitEmptyInt64Indent opType = 740 - opStructFieldOmitEmptyUintIndent opType = 741 - opStructFieldOmitEmptyUint8Indent opType = 742 - opStructFieldOmitEmptyUint16Indent opType = 743 - opStructFieldOmitEmptyUint32Indent opType = 744 - opStructFieldOmitEmptyUint64Indent opType = 745 - opStructFieldOmitEmptyFloat32Indent opType = 746 - opStructFieldOmitEmptyFloat64Indent opType = 747 - opStructFieldOmitEmptyBoolIndent opType = 748 - opStructFieldOmitEmptyStringIndent opType = 749 - opStructFieldOmitEmptyBytesIndent opType = 750 - opStructFieldOmitEmptyArrayIndent opType = 751 - opStructFieldOmitEmptyMapIndent opType = 752 - opStructFieldOmitEmptyMapLoadIndent opType = 753 - opStructFieldOmitEmptySliceIndent opType = 754 - opStructFieldOmitEmptyStructIndent opType = 755 - opStructFieldOmitEmptyMarshalJSONIndent opType = 756 - opStructFieldOmitEmptyMarshalTextIndent opType = 757 - opStructFieldStringTagIntIndent opType = 758 - opStructFieldStringTagInt8Indent opType = 759 - opStructFieldStringTagInt16Indent opType = 760 - opStructFieldStringTagInt32Indent opType = 761 - opStructFieldStringTagInt64Indent opType = 762 - opStructFieldStringTagUintIndent opType = 763 - opStructFieldStringTagUint8Indent opType = 764 - opStructFieldStringTagUint16Indent opType = 765 - opStructFieldStringTagUint32Indent opType = 766 - opStructFieldStringTagUint64Indent opType = 767 - opStructFieldStringTagFloat32Indent opType = 768 - opStructFieldStringTagFloat64Indent opType = 769 - opStructFieldStringTagBoolIndent opType = 770 - opStructFieldStringTagStringIndent opType = 771 - opStructFieldStringTagBytesIndent opType = 772 - opStructFieldStringTagArrayIndent opType = 773 - opStructFieldStringTagMapIndent opType = 774 - opStructFieldStringTagMapLoadIndent opType = 775 - opStructFieldStringTagSliceIndent opType = 776 - opStructFieldStringTagStructIndent opType = 777 - opStructFieldStringTagMarshalJSONIndent opType = 778 - opStructFieldStringTagMarshalTextIndent opType = 779 + opSortedMapHead opType = 19 + opSortedMapHeadLoad opType = 20 + opSortedRootMapHead opType = 21 + opSortedMapKey opType = 22 + opSortedRootMapKey opType = 23 + opSortedMapValue opType = 24 + opSortedMapEnd opType = 25 + opStructFieldHead opType = 26 + opStructFieldHeadOmitEmpty opType = 27 + opStructFieldHeadStringTag opType = 28 + opStructFieldAnonymousHead opType = 29 + opStructFieldAnonymousHeadOmitEmpty opType = 30 + opStructFieldPtrAnonymousHeadOmitEmpty opType = 31 + opStructFieldAnonymousHeadStringTag opType = 32 + opStructFieldPtrAnonymousHeadStringTag opType = 33 + opStructFieldPtrHead opType = 34 + opStructFieldPtrHeadOmitEmpty opType = 35 + opStructFieldPtrHeadStringTag opType = 36 + opStructFieldPtrAnonymousHead opType = 37 + opStructField opType = 38 + opStructFieldOmitEmpty opType = 39 + opStructFieldStringTag opType = 40 + opStructFieldRecursive opType = 41 + opStructFieldRecursiveEnd opType = 42 + opStructEnd opType = 43 + opStructAnonymousEnd opType = 44 + opInt opType = 45 + opInt8 opType = 46 + opInt16 opType = 47 + opInt32 opType = 48 + opInt64 opType = 49 + opUint opType = 50 + opUint8 opType = 51 + opUint16 opType = 52 + opUint32 opType = 53 + opUint64 opType = 54 + opFloat32 opType = 55 + opFloat64 opType = 56 + opBool opType = 57 + opString opType = 58 + opBytes opType = 59 + opArray opType = 60 + opMap opType = 61 + opMapLoad opType = 62 + opSlice opType = 63 + opStruct opType = 64 + opMarshalJSON opType = 65 + opMarshalText opType = 66 + opStructFieldHeadInt opType = 67 + opStructFieldHeadInt8 opType = 68 + opStructFieldHeadInt16 opType = 69 + opStructFieldHeadInt32 opType = 70 + opStructFieldHeadInt64 opType = 71 + opStructFieldHeadUint opType = 72 + opStructFieldHeadUint8 opType = 73 + opStructFieldHeadUint16 opType = 74 + opStructFieldHeadUint32 opType = 75 + opStructFieldHeadUint64 opType = 76 + opStructFieldHeadFloat32 opType = 77 + opStructFieldHeadFloat64 opType = 78 + opStructFieldHeadBool opType = 79 + opStructFieldHeadString opType = 80 + opStructFieldHeadBytes opType = 81 + opStructFieldHeadArray opType = 82 + opStructFieldHeadMap opType = 83 + opStructFieldHeadMapLoad opType = 84 + opStructFieldHeadSlice opType = 85 + opStructFieldHeadStruct opType = 86 + opStructFieldHeadMarshalJSON opType = 87 + opStructFieldHeadMarshalText opType = 88 + opStructFieldHeadOmitEmptyInt opType = 89 + opStructFieldHeadOmitEmptyInt8 opType = 90 + opStructFieldHeadOmitEmptyInt16 opType = 91 + opStructFieldHeadOmitEmptyInt32 opType = 92 + opStructFieldHeadOmitEmptyInt64 opType = 93 + opStructFieldHeadOmitEmptyUint opType = 94 + opStructFieldHeadOmitEmptyUint8 opType = 95 + opStructFieldHeadOmitEmptyUint16 opType = 96 + opStructFieldHeadOmitEmptyUint32 opType = 97 + opStructFieldHeadOmitEmptyUint64 opType = 98 + opStructFieldHeadOmitEmptyFloat32 opType = 99 + opStructFieldHeadOmitEmptyFloat64 opType = 100 + opStructFieldHeadOmitEmptyBool opType = 101 + opStructFieldHeadOmitEmptyString opType = 102 + opStructFieldHeadOmitEmptyBytes opType = 103 + opStructFieldHeadOmitEmptyArray opType = 104 + opStructFieldHeadOmitEmptyMap opType = 105 + opStructFieldHeadOmitEmptyMapLoad opType = 106 + opStructFieldHeadOmitEmptySlice opType = 107 + opStructFieldHeadOmitEmptyStruct opType = 108 + opStructFieldHeadOmitEmptyMarshalJSON opType = 109 + opStructFieldHeadOmitEmptyMarshalText opType = 110 + opStructFieldHeadStringTagInt opType = 111 + opStructFieldHeadStringTagInt8 opType = 112 + opStructFieldHeadStringTagInt16 opType = 113 + opStructFieldHeadStringTagInt32 opType = 114 + opStructFieldHeadStringTagInt64 opType = 115 + opStructFieldHeadStringTagUint opType = 116 + opStructFieldHeadStringTagUint8 opType = 117 + opStructFieldHeadStringTagUint16 opType = 118 + opStructFieldHeadStringTagUint32 opType = 119 + opStructFieldHeadStringTagUint64 opType = 120 + opStructFieldHeadStringTagFloat32 opType = 121 + opStructFieldHeadStringTagFloat64 opType = 122 + opStructFieldHeadStringTagBool opType = 123 + opStructFieldHeadStringTagString opType = 124 + opStructFieldHeadStringTagBytes opType = 125 + opStructFieldHeadStringTagArray opType = 126 + opStructFieldHeadStringTagMap opType = 127 + opStructFieldHeadStringTagMapLoad opType = 128 + opStructFieldHeadStringTagSlice opType = 129 + opStructFieldHeadStringTagStruct opType = 130 + opStructFieldHeadStringTagMarshalJSON opType = 131 + opStructFieldHeadStringTagMarshalText opType = 132 + opStructFieldAnonymousHeadInt opType = 133 + opStructFieldAnonymousHeadInt8 opType = 134 + opStructFieldAnonymousHeadInt16 opType = 135 + opStructFieldAnonymousHeadInt32 opType = 136 + opStructFieldAnonymousHeadInt64 opType = 137 + opStructFieldAnonymousHeadUint opType = 138 + opStructFieldAnonymousHeadUint8 opType = 139 + opStructFieldAnonymousHeadUint16 opType = 140 + opStructFieldAnonymousHeadUint32 opType = 141 + opStructFieldAnonymousHeadUint64 opType = 142 + opStructFieldAnonymousHeadFloat32 opType = 143 + opStructFieldAnonymousHeadFloat64 opType = 144 + opStructFieldAnonymousHeadBool opType = 145 + opStructFieldAnonymousHeadString opType = 146 + opStructFieldAnonymousHeadBytes opType = 147 + opStructFieldAnonymousHeadArray opType = 148 + opStructFieldAnonymousHeadMap opType = 149 + opStructFieldAnonymousHeadMapLoad opType = 150 + opStructFieldAnonymousHeadSlice opType = 151 + opStructFieldAnonymousHeadStruct opType = 152 + opStructFieldAnonymousHeadMarshalJSON opType = 153 + opStructFieldAnonymousHeadMarshalText opType = 154 + opStructFieldAnonymousHeadOmitEmptyInt opType = 155 + opStructFieldAnonymousHeadOmitEmptyInt8 opType = 156 + opStructFieldAnonymousHeadOmitEmptyInt16 opType = 157 + opStructFieldAnonymousHeadOmitEmptyInt32 opType = 158 + opStructFieldAnonymousHeadOmitEmptyInt64 opType = 159 + opStructFieldAnonymousHeadOmitEmptyUint opType = 160 + opStructFieldAnonymousHeadOmitEmptyUint8 opType = 161 + opStructFieldAnonymousHeadOmitEmptyUint16 opType = 162 + opStructFieldAnonymousHeadOmitEmptyUint32 opType = 163 + opStructFieldAnonymousHeadOmitEmptyUint64 opType = 164 + opStructFieldAnonymousHeadOmitEmptyFloat32 opType = 165 + opStructFieldAnonymousHeadOmitEmptyFloat64 opType = 166 + opStructFieldAnonymousHeadOmitEmptyBool opType = 167 + opStructFieldAnonymousHeadOmitEmptyString opType = 168 + opStructFieldAnonymousHeadOmitEmptyBytes opType = 169 + opStructFieldAnonymousHeadOmitEmptyArray opType = 170 + opStructFieldAnonymousHeadOmitEmptyMap opType = 171 + opStructFieldAnonymousHeadOmitEmptyMapLoad opType = 172 + opStructFieldAnonymousHeadOmitEmptySlice opType = 173 + opStructFieldAnonymousHeadOmitEmptyStruct opType = 174 + opStructFieldAnonymousHeadOmitEmptyMarshalJSON opType = 175 + opStructFieldAnonymousHeadOmitEmptyMarshalText opType = 176 + opStructFieldAnonymousHeadStringTagInt opType = 177 + opStructFieldAnonymousHeadStringTagInt8 opType = 178 + opStructFieldAnonymousHeadStringTagInt16 opType = 179 + opStructFieldAnonymousHeadStringTagInt32 opType = 180 + opStructFieldAnonymousHeadStringTagInt64 opType = 181 + opStructFieldAnonymousHeadStringTagUint opType = 182 + opStructFieldAnonymousHeadStringTagUint8 opType = 183 + opStructFieldAnonymousHeadStringTagUint16 opType = 184 + opStructFieldAnonymousHeadStringTagUint32 opType = 185 + opStructFieldAnonymousHeadStringTagUint64 opType = 186 + opStructFieldAnonymousHeadStringTagFloat32 opType = 187 + opStructFieldAnonymousHeadStringTagFloat64 opType = 188 + opStructFieldAnonymousHeadStringTagBool opType = 189 + opStructFieldAnonymousHeadStringTagString opType = 190 + opStructFieldAnonymousHeadStringTagBytes opType = 191 + opStructFieldAnonymousHeadStringTagArray opType = 192 + opStructFieldAnonymousHeadStringTagMap opType = 193 + opStructFieldAnonymousHeadStringTagMapLoad opType = 194 + opStructFieldAnonymousHeadStringTagSlice opType = 195 + opStructFieldAnonymousHeadStringTagStruct opType = 196 + opStructFieldAnonymousHeadStringTagMarshalJSON opType = 197 + opStructFieldAnonymousHeadStringTagMarshalText opType = 198 + opStructFieldPtrHeadInt opType = 199 + opStructFieldPtrHeadInt8 opType = 200 + opStructFieldPtrHeadInt16 opType = 201 + opStructFieldPtrHeadInt32 opType = 202 + opStructFieldPtrHeadInt64 opType = 203 + opStructFieldPtrHeadUint opType = 204 + opStructFieldPtrHeadUint8 opType = 205 + opStructFieldPtrHeadUint16 opType = 206 + opStructFieldPtrHeadUint32 opType = 207 + opStructFieldPtrHeadUint64 opType = 208 + opStructFieldPtrHeadFloat32 opType = 209 + opStructFieldPtrHeadFloat64 opType = 210 + opStructFieldPtrHeadBool opType = 211 + opStructFieldPtrHeadString opType = 212 + opStructFieldPtrHeadBytes opType = 213 + opStructFieldPtrHeadArray opType = 214 + opStructFieldPtrHeadMap opType = 215 + opStructFieldPtrHeadMapLoad opType = 216 + opStructFieldPtrHeadSlice opType = 217 + opStructFieldPtrHeadStruct opType = 218 + opStructFieldPtrHeadMarshalJSON opType = 219 + opStructFieldPtrHeadMarshalText opType = 220 + opStructFieldPtrHeadOmitEmptyInt opType = 221 + opStructFieldPtrHeadOmitEmptyInt8 opType = 222 + opStructFieldPtrHeadOmitEmptyInt16 opType = 223 + opStructFieldPtrHeadOmitEmptyInt32 opType = 224 + opStructFieldPtrHeadOmitEmptyInt64 opType = 225 + opStructFieldPtrHeadOmitEmptyUint opType = 226 + opStructFieldPtrHeadOmitEmptyUint8 opType = 227 + opStructFieldPtrHeadOmitEmptyUint16 opType = 228 + opStructFieldPtrHeadOmitEmptyUint32 opType = 229 + opStructFieldPtrHeadOmitEmptyUint64 opType = 230 + opStructFieldPtrHeadOmitEmptyFloat32 opType = 231 + opStructFieldPtrHeadOmitEmptyFloat64 opType = 232 + opStructFieldPtrHeadOmitEmptyBool opType = 233 + opStructFieldPtrHeadOmitEmptyString opType = 234 + opStructFieldPtrHeadOmitEmptyBytes opType = 235 + opStructFieldPtrHeadOmitEmptyArray opType = 236 + opStructFieldPtrHeadOmitEmptyMap opType = 237 + opStructFieldPtrHeadOmitEmptyMapLoad opType = 238 + opStructFieldPtrHeadOmitEmptySlice opType = 239 + opStructFieldPtrHeadOmitEmptyStruct opType = 240 + opStructFieldPtrHeadOmitEmptyMarshalJSON opType = 241 + opStructFieldPtrHeadOmitEmptyMarshalText opType = 242 + opStructFieldPtrHeadStringTagInt opType = 243 + opStructFieldPtrHeadStringTagInt8 opType = 244 + opStructFieldPtrHeadStringTagInt16 opType = 245 + opStructFieldPtrHeadStringTagInt32 opType = 246 + opStructFieldPtrHeadStringTagInt64 opType = 247 + opStructFieldPtrHeadStringTagUint opType = 248 + opStructFieldPtrHeadStringTagUint8 opType = 249 + opStructFieldPtrHeadStringTagUint16 opType = 250 + opStructFieldPtrHeadStringTagUint32 opType = 251 + opStructFieldPtrHeadStringTagUint64 opType = 252 + opStructFieldPtrHeadStringTagFloat32 opType = 253 + opStructFieldPtrHeadStringTagFloat64 opType = 254 + opStructFieldPtrHeadStringTagBool opType = 255 + opStructFieldPtrHeadStringTagString opType = 256 + opStructFieldPtrHeadStringTagBytes opType = 257 + opStructFieldPtrHeadStringTagArray opType = 258 + opStructFieldPtrHeadStringTagMap opType = 259 + opStructFieldPtrHeadStringTagMapLoad opType = 260 + opStructFieldPtrHeadStringTagSlice opType = 261 + opStructFieldPtrHeadStringTagStruct opType = 262 + opStructFieldPtrHeadStringTagMarshalJSON opType = 263 + opStructFieldPtrHeadStringTagMarshalText opType = 264 + opStructFieldPtrAnonymousHeadInt opType = 265 + opStructFieldPtrAnonymousHeadInt8 opType = 266 + opStructFieldPtrAnonymousHeadInt16 opType = 267 + opStructFieldPtrAnonymousHeadInt32 opType = 268 + opStructFieldPtrAnonymousHeadInt64 opType = 269 + opStructFieldPtrAnonymousHeadUint opType = 270 + opStructFieldPtrAnonymousHeadUint8 opType = 271 + opStructFieldPtrAnonymousHeadUint16 opType = 272 + opStructFieldPtrAnonymousHeadUint32 opType = 273 + opStructFieldPtrAnonymousHeadUint64 opType = 274 + opStructFieldPtrAnonymousHeadFloat32 opType = 275 + opStructFieldPtrAnonymousHeadFloat64 opType = 276 + opStructFieldPtrAnonymousHeadBool opType = 277 + opStructFieldPtrAnonymousHeadString opType = 278 + opStructFieldPtrAnonymousHeadBytes opType = 279 + opStructFieldPtrAnonymousHeadArray opType = 280 + opStructFieldPtrAnonymousHeadMap opType = 281 + opStructFieldPtrAnonymousHeadMapLoad opType = 282 + opStructFieldPtrAnonymousHeadSlice opType = 283 + opStructFieldPtrAnonymousHeadStruct opType = 284 + opStructFieldPtrAnonymousHeadMarshalJSON opType = 285 + opStructFieldPtrAnonymousHeadMarshalText opType = 286 + opStructFieldPtrAnonymousHeadOmitEmptyInt opType = 287 + opStructFieldPtrAnonymousHeadOmitEmptyInt8 opType = 288 + opStructFieldPtrAnonymousHeadOmitEmptyInt16 opType = 289 + opStructFieldPtrAnonymousHeadOmitEmptyInt32 opType = 290 + opStructFieldPtrAnonymousHeadOmitEmptyInt64 opType = 291 + opStructFieldPtrAnonymousHeadOmitEmptyUint opType = 292 + opStructFieldPtrAnonymousHeadOmitEmptyUint8 opType = 293 + opStructFieldPtrAnonymousHeadOmitEmptyUint16 opType = 294 + opStructFieldPtrAnonymousHeadOmitEmptyUint32 opType = 295 + opStructFieldPtrAnonymousHeadOmitEmptyUint64 opType = 296 + opStructFieldPtrAnonymousHeadOmitEmptyFloat32 opType = 297 + opStructFieldPtrAnonymousHeadOmitEmptyFloat64 opType = 298 + opStructFieldPtrAnonymousHeadOmitEmptyBool opType = 299 + opStructFieldPtrAnonymousHeadOmitEmptyString opType = 300 + opStructFieldPtrAnonymousHeadOmitEmptyBytes opType = 301 + opStructFieldPtrAnonymousHeadOmitEmptyArray opType = 302 + opStructFieldPtrAnonymousHeadOmitEmptyMap opType = 303 + opStructFieldPtrAnonymousHeadOmitEmptyMapLoad opType = 304 + opStructFieldPtrAnonymousHeadOmitEmptySlice opType = 305 + opStructFieldPtrAnonymousHeadOmitEmptyStruct opType = 306 + opStructFieldPtrAnonymousHeadOmitEmptyMarshalJSON opType = 307 + opStructFieldPtrAnonymousHeadOmitEmptyMarshalText opType = 308 + opStructFieldPtrAnonymousHeadStringTagInt opType = 309 + opStructFieldPtrAnonymousHeadStringTagInt8 opType = 310 + opStructFieldPtrAnonymousHeadStringTagInt16 opType = 311 + opStructFieldPtrAnonymousHeadStringTagInt32 opType = 312 + opStructFieldPtrAnonymousHeadStringTagInt64 opType = 313 + opStructFieldPtrAnonymousHeadStringTagUint opType = 314 + opStructFieldPtrAnonymousHeadStringTagUint8 opType = 315 + opStructFieldPtrAnonymousHeadStringTagUint16 opType = 316 + opStructFieldPtrAnonymousHeadStringTagUint32 opType = 317 + opStructFieldPtrAnonymousHeadStringTagUint64 opType = 318 + opStructFieldPtrAnonymousHeadStringTagFloat32 opType = 319 + opStructFieldPtrAnonymousHeadStringTagFloat64 opType = 320 + opStructFieldPtrAnonymousHeadStringTagBool opType = 321 + opStructFieldPtrAnonymousHeadStringTagString opType = 322 + opStructFieldPtrAnonymousHeadStringTagBytes opType = 323 + opStructFieldPtrAnonymousHeadStringTagArray opType = 324 + opStructFieldPtrAnonymousHeadStringTagMap opType = 325 + opStructFieldPtrAnonymousHeadStringTagMapLoad opType = 326 + opStructFieldPtrAnonymousHeadStringTagSlice opType = 327 + opStructFieldPtrAnonymousHeadStringTagStruct opType = 328 + opStructFieldPtrAnonymousHeadStringTagMarshalJSON opType = 329 + opStructFieldPtrAnonymousHeadStringTagMarshalText opType = 330 + opStructFieldInt opType = 331 + opStructFieldInt8 opType = 332 + opStructFieldInt16 opType = 333 + opStructFieldInt32 opType = 334 + opStructFieldInt64 opType = 335 + opStructFieldUint opType = 336 + opStructFieldUint8 opType = 337 + opStructFieldUint16 opType = 338 + opStructFieldUint32 opType = 339 + opStructFieldUint64 opType = 340 + opStructFieldFloat32 opType = 341 + opStructFieldFloat64 opType = 342 + opStructFieldBool opType = 343 + opStructFieldString opType = 344 + opStructFieldBytes opType = 345 + opStructFieldArray opType = 346 + opStructFieldMap opType = 347 + opStructFieldMapLoad opType = 348 + opStructFieldSlice opType = 349 + opStructFieldStruct opType = 350 + opStructFieldMarshalJSON opType = 351 + opStructFieldMarshalText opType = 352 + opStructFieldOmitEmptyInt opType = 353 + opStructFieldOmitEmptyInt8 opType = 354 + opStructFieldOmitEmptyInt16 opType = 355 + opStructFieldOmitEmptyInt32 opType = 356 + opStructFieldOmitEmptyInt64 opType = 357 + opStructFieldOmitEmptyUint opType = 358 + opStructFieldOmitEmptyUint8 opType = 359 + opStructFieldOmitEmptyUint16 opType = 360 + opStructFieldOmitEmptyUint32 opType = 361 + opStructFieldOmitEmptyUint64 opType = 362 + opStructFieldOmitEmptyFloat32 opType = 363 + opStructFieldOmitEmptyFloat64 opType = 364 + opStructFieldOmitEmptyBool opType = 365 + opStructFieldOmitEmptyString opType = 366 + opStructFieldOmitEmptyBytes opType = 367 + opStructFieldOmitEmptyArray opType = 368 + opStructFieldOmitEmptyMap opType = 369 + opStructFieldOmitEmptyMapLoad opType = 370 + opStructFieldOmitEmptySlice opType = 371 + opStructFieldOmitEmptyStruct opType = 372 + opStructFieldOmitEmptyMarshalJSON opType = 373 + opStructFieldOmitEmptyMarshalText opType = 374 + opStructFieldStringTagInt opType = 375 + opStructFieldStringTagInt8 opType = 376 + opStructFieldStringTagInt16 opType = 377 + opStructFieldStringTagInt32 opType = 378 + opStructFieldStringTagInt64 opType = 379 + opStructFieldStringTagUint opType = 380 + opStructFieldStringTagUint8 opType = 381 + opStructFieldStringTagUint16 opType = 382 + opStructFieldStringTagUint32 opType = 383 + opStructFieldStringTagUint64 opType = 384 + opStructFieldStringTagFloat32 opType = 385 + opStructFieldStringTagFloat64 opType = 386 + opStructFieldStringTagBool opType = 387 + opStructFieldStringTagString opType = 388 + opStructFieldStringTagBytes opType = 389 + opStructFieldStringTagArray opType = 390 + opStructFieldStringTagMap opType = 391 + opStructFieldStringTagMapLoad opType = 392 + opStructFieldStringTagSlice opType = 393 + opStructFieldStringTagStruct opType = 394 + opStructFieldStringTagMarshalJSON opType = 395 + opStructFieldStringTagMarshalText opType = 396 + opEndIndent opType = 397 + opInterfaceIndent opType = 398 + opInterfaceEndIndent opType = 399 + opPtrIndent opType = 400 + opSliceHeadIndent opType = 401 + opRootSliceHeadIndent opType = 402 + opSliceElemIndent opType = 403 + opRootSliceElemIndent opType = 404 + opSliceEndIndent opType = 405 + opArrayHeadIndent opType = 406 + opArrayElemIndent opType = 407 + opArrayEndIndent opType = 408 + opMapHeadIndent opType = 409 + opMapHeadLoadIndent opType = 410 + opRootMapHeadIndent opType = 411 + opMapKeyIndent opType = 412 + opRootMapKeyIndent opType = 413 + opMapValueIndent opType = 414 + opMapEndIndent opType = 415 + opSortedMapHeadIndent opType = 416 + opSortedMapHeadLoadIndent opType = 417 + opSortedRootMapHeadIndent opType = 418 + opSortedMapKeyIndent opType = 419 + opSortedRootMapKeyIndent opType = 420 + opSortedMapValueIndent opType = 421 + opSortedMapEndIndent opType = 422 + opStructFieldHeadIndent opType = 423 + opStructFieldHeadOmitEmptyIndent opType = 424 + opStructFieldHeadStringTagIndent opType = 425 + opStructFieldAnonymousHeadIndent opType = 426 + opStructFieldAnonymousHeadOmitEmptyIndent opType = 427 + opStructFieldPtrAnonymousHeadOmitEmptyIndent opType = 428 + opStructFieldAnonymousHeadStringTagIndent opType = 429 + opStructFieldPtrAnonymousHeadStringTagIndent opType = 430 + opStructFieldPtrHeadIndent opType = 431 + opStructFieldPtrHeadOmitEmptyIndent opType = 432 + opStructFieldPtrHeadStringTagIndent opType = 433 + opStructFieldPtrAnonymousHeadIndent opType = 434 + opStructFieldIndent opType = 435 + opStructFieldOmitEmptyIndent opType = 436 + opStructFieldStringTagIndent opType = 437 + opStructFieldRecursiveIndent opType = 438 + opStructFieldRecursiveEndIndent opType = 439 + opStructEndIndent opType = 440 + opStructAnonymousEndIndent opType = 441 + opIntIndent opType = 442 + opInt8Indent opType = 443 + opInt16Indent opType = 444 + opInt32Indent opType = 445 + opInt64Indent opType = 446 + opUintIndent opType = 447 + opUint8Indent opType = 448 + opUint16Indent opType = 449 + opUint32Indent opType = 450 + opUint64Indent opType = 451 + opFloat32Indent opType = 452 + opFloat64Indent opType = 453 + opBoolIndent opType = 454 + opStringIndent opType = 455 + opBytesIndent opType = 456 + opArrayIndent opType = 457 + opMapIndent opType = 458 + opMapLoadIndent opType = 459 + opSliceIndent opType = 460 + opStructIndent opType = 461 + opMarshalJSONIndent opType = 462 + opMarshalTextIndent opType = 463 + opStructFieldHeadIntIndent opType = 464 + opStructFieldHeadInt8Indent opType = 465 + opStructFieldHeadInt16Indent opType = 466 + opStructFieldHeadInt32Indent opType = 467 + opStructFieldHeadInt64Indent opType = 468 + opStructFieldHeadUintIndent opType = 469 + opStructFieldHeadUint8Indent opType = 470 + opStructFieldHeadUint16Indent opType = 471 + opStructFieldHeadUint32Indent opType = 472 + opStructFieldHeadUint64Indent opType = 473 + opStructFieldHeadFloat32Indent opType = 474 + opStructFieldHeadFloat64Indent opType = 475 + opStructFieldHeadBoolIndent opType = 476 + opStructFieldHeadStringIndent opType = 477 + opStructFieldHeadBytesIndent opType = 478 + opStructFieldHeadArrayIndent opType = 479 + opStructFieldHeadMapIndent opType = 480 + opStructFieldHeadMapLoadIndent opType = 481 + opStructFieldHeadSliceIndent opType = 482 + opStructFieldHeadStructIndent opType = 483 + opStructFieldHeadMarshalJSONIndent opType = 484 + opStructFieldHeadMarshalTextIndent opType = 485 + opStructFieldHeadOmitEmptyIntIndent opType = 486 + opStructFieldHeadOmitEmptyInt8Indent opType = 487 + opStructFieldHeadOmitEmptyInt16Indent opType = 488 + opStructFieldHeadOmitEmptyInt32Indent opType = 489 + opStructFieldHeadOmitEmptyInt64Indent opType = 490 + opStructFieldHeadOmitEmptyUintIndent opType = 491 + opStructFieldHeadOmitEmptyUint8Indent opType = 492 + opStructFieldHeadOmitEmptyUint16Indent opType = 493 + opStructFieldHeadOmitEmptyUint32Indent opType = 494 + opStructFieldHeadOmitEmptyUint64Indent opType = 495 + opStructFieldHeadOmitEmptyFloat32Indent opType = 496 + opStructFieldHeadOmitEmptyFloat64Indent opType = 497 + opStructFieldHeadOmitEmptyBoolIndent opType = 498 + opStructFieldHeadOmitEmptyStringIndent opType = 499 + opStructFieldHeadOmitEmptyBytesIndent opType = 500 + opStructFieldHeadOmitEmptyArrayIndent opType = 501 + opStructFieldHeadOmitEmptyMapIndent opType = 502 + opStructFieldHeadOmitEmptyMapLoadIndent opType = 503 + opStructFieldHeadOmitEmptySliceIndent opType = 504 + opStructFieldHeadOmitEmptyStructIndent opType = 505 + opStructFieldHeadOmitEmptyMarshalJSONIndent opType = 506 + opStructFieldHeadOmitEmptyMarshalTextIndent opType = 507 + opStructFieldHeadStringTagIntIndent opType = 508 + opStructFieldHeadStringTagInt8Indent opType = 509 + opStructFieldHeadStringTagInt16Indent opType = 510 + opStructFieldHeadStringTagInt32Indent opType = 511 + opStructFieldHeadStringTagInt64Indent opType = 512 + opStructFieldHeadStringTagUintIndent opType = 513 + opStructFieldHeadStringTagUint8Indent opType = 514 + opStructFieldHeadStringTagUint16Indent opType = 515 + opStructFieldHeadStringTagUint32Indent opType = 516 + opStructFieldHeadStringTagUint64Indent opType = 517 + opStructFieldHeadStringTagFloat32Indent opType = 518 + opStructFieldHeadStringTagFloat64Indent opType = 519 + opStructFieldHeadStringTagBoolIndent opType = 520 + opStructFieldHeadStringTagStringIndent opType = 521 + opStructFieldHeadStringTagBytesIndent opType = 522 + opStructFieldHeadStringTagArrayIndent opType = 523 + opStructFieldHeadStringTagMapIndent opType = 524 + opStructFieldHeadStringTagMapLoadIndent opType = 525 + opStructFieldHeadStringTagSliceIndent opType = 526 + opStructFieldHeadStringTagStructIndent opType = 527 + opStructFieldHeadStringTagMarshalJSONIndent opType = 528 + opStructFieldHeadStringTagMarshalTextIndent opType = 529 + opStructFieldAnonymousHeadIntIndent opType = 530 + opStructFieldAnonymousHeadInt8Indent opType = 531 + opStructFieldAnonymousHeadInt16Indent opType = 532 + opStructFieldAnonymousHeadInt32Indent opType = 533 + opStructFieldAnonymousHeadInt64Indent opType = 534 + opStructFieldAnonymousHeadUintIndent opType = 535 + opStructFieldAnonymousHeadUint8Indent opType = 536 + opStructFieldAnonymousHeadUint16Indent opType = 537 + opStructFieldAnonymousHeadUint32Indent opType = 538 + opStructFieldAnonymousHeadUint64Indent opType = 539 + opStructFieldAnonymousHeadFloat32Indent opType = 540 + opStructFieldAnonymousHeadFloat64Indent opType = 541 + opStructFieldAnonymousHeadBoolIndent opType = 542 + opStructFieldAnonymousHeadStringIndent opType = 543 + opStructFieldAnonymousHeadBytesIndent opType = 544 + opStructFieldAnonymousHeadArrayIndent opType = 545 + opStructFieldAnonymousHeadMapIndent opType = 546 + opStructFieldAnonymousHeadMapLoadIndent opType = 547 + opStructFieldAnonymousHeadSliceIndent opType = 548 + opStructFieldAnonymousHeadStructIndent opType = 549 + opStructFieldAnonymousHeadMarshalJSONIndent opType = 550 + opStructFieldAnonymousHeadMarshalTextIndent opType = 551 + opStructFieldAnonymousHeadOmitEmptyIntIndent opType = 552 + opStructFieldAnonymousHeadOmitEmptyInt8Indent opType = 553 + opStructFieldAnonymousHeadOmitEmptyInt16Indent opType = 554 + opStructFieldAnonymousHeadOmitEmptyInt32Indent opType = 555 + opStructFieldAnonymousHeadOmitEmptyInt64Indent opType = 556 + opStructFieldAnonymousHeadOmitEmptyUintIndent opType = 557 + opStructFieldAnonymousHeadOmitEmptyUint8Indent opType = 558 + opStructFieldAnonymousHeadOmitEmptyUint16Indent opType = 559 + opStructFieldAnonymousHeadOmitEmptyUint32Indent opType = 560 + opStructFieldAnonymousHeadOmitEmptyUint64Indent opType = 561 + opStructFieldAnonymousHeadOmitEmptyFloat32Indent opType = 562 + opStructFieldAnonymousHeadOmitEmptyFloat64Indent opType = 563 + opStructFieldAnonymousHeadOmitEmptyBoolIndent opType = 564 + opStructFieldAnonymousHeadOmitEmptyStringIndent opType = 565 + opStructFieldAnonymousHeadOmitEmptyBytesIndent opType = 566 + opStructFieldAnonymousHeadOmitEmptyArrayIndent opType = 567 + opStructFieldAnonymousHeadOmitEmptyMapIndent opType = 568 + opStructFieldAnonymousHeadOmitEmptyMapLoadIndent opType = 569 + opStructFieldAnonymousHeadOmitEmptySliceIndent opType = 570 + opStructFieldAnonymousHeadOmitEmptyStructIndent opType = 571 + opStructFieldAnonymousHeadOmitEmptyMarshalJSONIndent opType = 572 + opStructFieldAnonymousHeadOmitEmptyMarshalTextIndent opType = 573 + opStructFieldAnonymousHeadStringTagIntIndent opType = 574 + opStructFieldAnonymousHeadStringTagInt8Indent opType = 575 + opStructFieldAnonymousHeadStringTagInt16Indent opType = 576 + opStructFieldAnonymousHeadStringTagInt32Indent opType = 577 + opStructFieldAnonymousHeadStringTagInt64Indent opType = 578 + opStructFieldAnonymousHeadStringTagUintIndent opType = 579 + opStructFieldAnonymousHeadStringTagUint8Indent opType = 580 + opStructFieldAnonymousHeadStringTagUint16Indent opType = 581 + opStructFieldAnonymousHeadStringTagUint32Indent opType = 582 + opStructFieldAnonymousHeadStringTagUint64Indent opType = 583 + opStructFieldAnonymousHeadStringTagFloat32Indent opType = 584 + opStructFieldAnonymousHeadStringTagFloat64Indent opType = 585 + opStructFieldAnonymousHeadStringTagBoolIndent opType = 586 + opStructFieldAnonymousHeadStringTagStringIndent opType = 587 + opStructFieldAnonymousHeadStringTagBytesIndent opType = 588 + opStructFieldAnonymousHeadStringTagArrayIndent opType = 589 + opStructFieldAnonymousHeadStringTagMapIndent opType = 590 + opStructFieldAnonymousHeadStringTagMapLoadIndent opType = 591 + opStructFieldAnonymousHeadStringTagSliceIndent opType = 592 + opStructFieldAnonymousHeadStringTagStructIndent opType = 593 + opStructFieldAnonymousHeadStringTagMarshalJSONIndent opType = 594 + opStructFieldAnonymousHeadStringTagMarshalTextIndent opType = 595 + opStructFieldPtrHeadIntIndent opType = 596 + opStructFieldPtrHeadInt8Indent opType = 597 + opStructFieldPtrHeadInt16Indent opType = 598 + opStructFieldPtrHeadInt32Indent opType = 599 + opStructFieldPtrHeadInt64Indent opType = 600 + opStructFieldPtrHeadUintIndent opType = 601 + opStructFieldPtrHeadUint8Indent opType = 602 + opStructFieldPtrHeadUint16Indent opType = 603 + opStructFieldPtrHeadUint32Indent opType = 604 + opStructFieldPtrHeadUint64Indent opType = 605 + opStructFieldPtrHeadFloat32Indent opType = 606 + opStructFieldPtrHeadFloat64Indent opType = 607 + opStructFieldPtrHeadBoolIndent opType = 608 + opStructFieldPtrHeadStringIndent opType = 609 + opStructFieldPtrHeadBytesIndent opType = 610 + opStructFieldPtrHeadArrayIndent opType = 611 + opStructFieldPtrHeadMapIndent opType = 612 + opStructFieldPtrHeadMapLoadIndent opType = 613 + opStructFieldPtrHeadSliceIndent opType = 614 + opStructFieldPtrHeadStructIndent opType = 615 + opStructFieldPtrHeadMarshalJSONIndent opType = 616 + opStructFieldPtrHeadMarshalTextIndent opType = 617 + opStructFieldPtrHeadOmitEmptyIntIndent opType = 618 + opStructFieldPtrHeadOmitEmptyInt8Indent opType = 619 + opStructFieldPtrHeadOmitEmptyInt16Indent opType = 620 + opStructFieldPtrHeadOmitEmptyInt32Indent opType = 621 + opStructFieldPtrHeadOmitEmptyInt64Indent opType = 622 + opStructFieldPtrHeadOmitEmptyUintIndent opType = 623 + opStructFieldPtrHeadOmitEmptyUint8Indent opType = 624 + opStructFieldPtrHeadOmitEmptyUint16Indent opType = 625 + opStructFieldPtrHeadOmitEmptyUint32Indent opType = 626 + opStructFieldPtrHeadOmitEmptyUint64Indent opType = 627 + opStructFieldPtrHeadOmitEmptyFloat32Indent opType = 628 + opStructFieldPtrHeadOmitEmptyFloat64Indent opType = 629 + opStructFieldPtrHeadOmitEmptyBoolIndent opType = 630 + opStructFieldPtrHeadOmitEmptyStringIndent opType = 631 + opStructFieldPtrHeadOmitEmptyBytesIndent opType = 632 + opStructFieldPtrHeadOmitEmptyArrayIndent opType = 633 + opStructFieldPtrHeadOmitEmptyMapIndent opType = 634 + opStructFieldPtrHeadOmitEmptyMapLoadIndent opType = 635 + opStructFieldPtrHeadOmitEmptySliceIndent opType = 636 + opStructFieldPtrHeadOmitEmptyStructIndent opType = 637 + opStructFieldPtrHeadOmitEmptyMarshalJSONIndent opType = 638 + opStructFieldPtrHeadOmitEmptyMarshalTextIndent opType = 639 + opStructFieldPtrHeadStringTagIntIndent opType = 640 + opStructFieldPtrHeadStringTagInt8Indent opType = 641 + opStructFieldPtrHeadStringTagInt16Indent opType = 642 + opStructFieldPtrHeadStringTagInt32Indent opType = 643 + opStructFieldPtrHeadStringTagInt64Indent opType = 644 + opStructFieldPtrHeadStringTagUintIndent opType = 645 + opStructFieldPtrHeadStringTagUint8Indent opType = 646 + opStructFieldPtrHeadStringTagUint16Indent opType = 647 + opStructFieldPtrHeadStringTagUint32Indent opType = 648 + opStructFieldPtrHeadStringTagUint64Indent opType = 649 + opStructFieldPtrHeadStringTagFloat32Indent opType = 650 + opStructFieldPtrHeadStringTagFloat64Indent opType = 651 + opStructFieldPtrHeadStringTagBoolIndent opType = 652 + opStructFieldPtrHeadStringTagStringIndent opType = 653 + opStructFieldPtrHeadStringTagBytesIndent opType = 654 + opStructFieldPtrHeadStringTagArrayIndent opType = 655 + opStructFieldPtrHeadStringTagMapIndent opType = 656 + opStructFieldPtrHeadStringTagMapLoadIndent opType = 657 + opStructFieldPtrHeadStringTagSliceIndent opType = 658 + opStructFieldPtrHeadStringTagStructIndent opType = 659 + opStructFieldPtrHeadStringTagMarshalJSONIndent opType = 660 + opStructFieldPtrHeadStringTagMarshalTextIndent opType = 661 + opStructFieldPtrAnonymousHeadIntIndent opType = 662 + opStructFieldPtrAnonymousHeadInt8Indent opType = 663 + opStructFieldPtrAnonymousHeadInt16Indent opType = 664 + opStructFieldPtrAnonymousHeadInt32Indent opType = 665 + opStructFieldPtrAnonymousHeadInt64Indent opType = 666 + opStructFieldPtrAnonymousHeadUintIndent opType = 667 + opStructFieldPtrAnonymousHeadUint8Indent opType = 668 + opStructFieldPtrAnonymousHeadUint16Indent opType = 669 + opStructFieldPtrAnonymousHeadUint32Indent opType = 670 + opStructFieldPtrAnonymousHeadUint64Indent opType = 671 + opStructFieldPtrAnonymousHeadFloat32Indent opType = 672 + opStructFieldPtrAnonymousHeadFloat64Indent opType = 673 + opStructFieldPtrAnonymousHeadBoolIndent opType = 674 + opStructFieldPtrAnonymousHeadStringIndent opType = 675 + opStructFieldPtrAnonymousHeadBytesIndent opType = 676 + opStructFieldPtrAnonymousHeadArrayIndent opType = 677 + opStructFieldPtrAnonymousHeadMapIndent opType = 678 + opStructFieldPtrAnonymousHeadMapLoadIndent opType = 679 + opStructFieldPtrAnonymousHeadSliceIndent opType = 680 + opStructFieldPtrAnonymousHeadStructIndent opType = 681 + opStructFieldPtrAnonymousHeadMarshalJSONIndent opType = 682 + opStructFieldPtrAnonymousHeadMarshalTextIndent opType = 683 + opStructFieldPtrAnonymousHeadOmitEmptyIntIndent opType = 684 + opStructFieldPtrAnonymousHeadOmitEmptyInt8Indent opType = 685 + opStructFieldPtrAnonymousHeadOmitEmptyInt16Indent opType = 686 + opStructFieldPtrAnonymousHeadOmitEmptyInt32Indent opType = 687 + opStructFieldPtrAnonymousHeadOmitEmptyInt64Indent opType = 688 + opStructFieldPtrAnonymousHeadOmitEmptyUintIndent opType = 689 + opStructFieldPtrAnonymousHeadOmitEmptyUint8Indent opType = 690 + opStructFieldPtrAnonymousHeadOmitEmptyUint16Indent opType = 691 + opStructFieldPtrAnonymousHeadOmitEmptyUint32Indent opType = 692 + opStructFieldPtrAnonymousHeadOmitEmptyUint64Indent opType = 693 + opStructFieldPtrAnonymousHeadOmitEmptyFloat32Indent opType = 694 + opStructFieldPtrAnonymousHeadOmitEmptyFloat64Indent opType = 695 + opStructFieldPtrAnonymousHeadOmitEmptyBoolIndent opType = 696 + opStructFieldPtrAnonymousHeadOmitEmptyStringIndent opType = 697 + opStructFieldPtrAnonymousHeadOmitEmptyBytesIndent opType = 698 + opStructFieldPtrAnonymousHeadOmitEmptyArrayIndent opType = 699 + opStructFieldPtrAnonymousHeadOmitEmptyMapIndent opType = 700 + opStructFieldPtrAnonymousHeadOmitEmptyMapLoadIndent opType = 701 + opStructFieldPtrAnonymousHeadOmitEmptySliceIndent opType = 702 + opStructFieldPtrAnonymousHeadOmitEmptyStructIndent opType = 703 + opStructFieldPtrAnonymousHeadOmitEmptyMarshalJSONIndent opType = 704 + opStructFieldPtrAnonymousHeadOmitEmptyMarshalTextIndent opType = 705 + opStructFieldPtrAnonymousHeadStringTagIntIndent opType = 706 + opStructFieldPtrAnonymousHeadStringTagInt8Indent opType = 707 + opStructFieldPtrAnonymousHeadStringTagInt16Indent opType = 708 + opStructFieldPtrAnonymousHeadStringTagInt32Indent opType = 709 + opStructFieldPtrAnonymousHeadStringTagInt64Indent opType = 710 + opStructFieldPtrAnonymousHeadStringTagUintIndent opType = 711 + opStructFieldPtrAnonymousHeadStringTagUint8Indent opType = 712 + opStructFieldPtrAnonymousHeadStringTagUint16Indent opType = 713 + opStructFieldPtrAnonymousHeadStringTagUint32Indent opType = 714 + opStructFieldPtrAnonymousHeadStringTagUint64Indent opType = 715 + opStructFieldPtrAnonymousHeadStringTagFloat32Indent opType = 716 + opStructFieldPtrAnonymousHeadStringTagFloat64Indent opType = 717 + opStructFieldPtrAnonymousHeadStringTagBoolIndent opType = 718 + opStructFieldPtrAnonymousHeadStringTagStringIndent opType = 719 + opStructFieldPtrAnonymousHeadStringTagBytesIndent opType = 720 + opStructFieldPtrAnonymousHeadStringTagArrayIndent opType = 721 + opStructFieldPtrAnonymousHeadStringTagMapIndent opType = 722 + opStructFieldPtrAnonymousHeadStringTagMapLoadIndent opType = 723 + opStructFieldPtrAnonymousHeadStringTagSliceIndent opType = 724 + opStructFieldPtrAnonymousHeadStringTagStructIndent opType = 725 + opStructFieldPtrAnonymousHeadStringTagMarshalJSONIndent opType = 726 + opStructFieldPtrAnonymousHeadStringTagMarshalTextIndent opType = 727 + opStructFieldIntIndent opType = 728 + opStructFieldInt8Indent opType = 729 + opStructFieldInt16Indent opType = 730 + opStructFieldInt32Indent opType = 731 + opStructFieldInt64Indent opType = 732 + opStructFieldUintIndent opType = 733 + opStructFieldUint8Indent opType = 734 + opStructFieldUint16Indent opType = 735 + opStructFieldUint32Indent opType = 736 + opStructFieldUint64Indent opType = 737 + opStructFieldFloat32Indent opType = 738 + opStructFieldFloat64Indent opType = 739 + opStructFieldBoolIndent opType = 740 + opStructFieldStringIndent opType = 741 + opStructFieldBytesIndent opType = 742 + opStructFieldArrayIndent opType = 743 + opStructFieldMapIndent opType = 744 + opStructFieldMapLoadIndent opType = 745 + opStructFieldSliceIndent opType = 746 + opStructFieldStructIndent opType = 747 + opStructFieldMarshalJSONIndent opType = 748 + opStructFieldMarshalTextIndent opType = 749 + opStructFieldOmitEmptyIntIndent opType = 750 + opStructFieldOmitEmptyInt8Indent opType = 751 + opStructFieldOmitEmptyInt16Indent opType = 752 + opStructFieldOmitEmptyInt32Indent opType = 753 + opStructFieldOmitEmptyInt64Indent opType = 754 + opStructFieldOmitEmptyUintIndent opType = 755 + opStructFieldOmitEmptyUint8Indent opType = 756 + opStructFieldOmitEmptyUint16Indent opType = 757 + opStructFieldOmitEmptyUint32Indent opType = 758 + opStructFieldOmitEmptyUint64Indent opType = 759 + opStructFieldOmitEmptyFloat32Indent opType = 760 + opStructFieldOmitEmptyFloat64Indent opType = 761 + opStructFieldOmitEmptyBoolIndent opType = 762 + opStructFieldOmitEmptyStringIndent opType = 763 + opStructFieldOmitEmptyBytesIndent opType = 764 + opStructFieldOmitEmptyArrayIndent opType = 765 + opStructFieldOmitEmptyMapIndent opType = 766 + opStructFieldOmitEmptyMapLoadIndent opType = 767 + opStructFieldOmitEmptySliceIndent opType = 768 + opStructFieldOmitEmptyStructIndent opType = 769 + opStructFieldOmitEmptyMarshalJSONIndent opType = 770 + opStructFieldOmitEmptyMarshalTextIndent opType = 771 + opStructFieldStringTagIntIndent opType = 772 + opStructFieldStringTagInt8Indent opType = 773 + opStructFieldStringTagInt16Indent opType = 774 + opStructFieldStringTagInt32Indent opType = 775 + opStructFieldStringTagInt64Indent opType = 776 + opStructFieldStringTagUintIndent opType = 777 + opStructFieldStringTagUint8Indent opType = 778 + opStructFieldStringTagUint16Indent opType = 779 + opStructFieldStringTagUint32Indent opType = 780 + opStructFieldStringTagUint64Indent opType = 781 + opStructFieldStringTagFloat32Indent opType = 782 + opStructFieldStringTagFloat64Indent opType = 783 + opStructFieldStringTagBoolIndent opType = 784 + opStructFieldStringTagStringIndent opType = 785 + opStructFieldStringTagBytesIndent opType = 786 + opStructFieldStringTagArrayIndent opType = 787 + opStructFieldStringTagMapIndent opType = 788 + opStructFieldStringTagMapLoadIndent opType = 789 + opStructFieldStringTagSliceIndent opType = 790 + opStructFieldStringTagStructIndent opType = 791 + opStructFieldStringTagMarshalJSONIndent opType = 792 + opStructFieldStringTagMarshalTextIndent opType = 793 ) func (t opType) String() string { @@ -841,6 +855,20 @@ func (t opType) String() string { return "MapValue" case opMapEnd: return "MapEnd" + case opSortedMapHead: + return "SortedMapHead" + case opSortedMapHeadLoad: + return "SortedMapHeadLoad" + case opSortedRootMapHead: + return "SortedRootMapHead" + case opSortedMapKey: + return "SortedMapKey" + case opSortedRootMapKey: + return "SortedRootMapKey" + case opSortedMapValue: + return "SortedMapValue" + case opSortedMapEnd: + return "SortedMapEnd" case opStructFieldHead: return "StructFieldHead" case opStructFieldHeadOmitEmpty: @@ -1621,6 +1649,20 @@ func (t opType) String() string { return "MapValueIndent" case opMapEndIndent: return "MapEndIndent" + case opSortedMapHeadIndent: + return "SortedMapHeadIndent" + case opSortedMapHeadLoadIndent: + return "SortedMapHeadLoadIndent" + case opSortedRootMapHeadIndent: + return "SortedRootMapHeadIndent" + case opSortedMapKeyIndent: + return "SortedMapKeyIndent" + case opSortedRootMapKeyIndent: + return "SortedRootMapKeyIndent" + case opSortedMapValueIndent: + return "SortedMapValueIndent" + case opSortedMapEndIndent: + return "SortedMapEndIndent" case opStructFieldHeadIndent: return "StructFieldHeadIndent" case opStructFieldHeadOmitEmptyIndent: @@ -2407,6 +2449,20 @@ func (t opType) codeType() codeType { return codeMapValue case opMapEnd: return codeOp + case opSortedMapHead: + return codeMapHead + case opSortedMapHeadLoad: + return codeMapHead + case opSortedRootMapHead: + return codeMapHead + case opSortedMapKey: + return codeMapKey + case opSortedRootMapKey: + return codeMapKey + case opSortedMapValue: + return codeMapValue + case opSortedMapEnd: + return codeOp case opStructFieldHead: return codeStructField case opStructFieldHeadOmitEmpty: @@ -3187,6 +3243,20 @@ func (t opType) codeType() codeType { return codeMapValue case opMapEndIndent: return codeOp + case opSortedMapHeadIndent: + return codeMapHead + case opSortedMapHeadLoadIndent: + return codeMapHead + case opSortedRootMapHeadIndent: + return codeMapHead + case opSortedMapKeyIndent: + return codeMapKey + case opSortedRootMapKeyIndent: + return codeMapKey + case opSortedMapValueIndent: + return codeMapValue + case opSortedMapEndIndent: + return codeOp case opStructFieldHeadIndent: return codeStructField case opStructFieldHeadOmitEmptyIndent: @@ -3973,6 +4043,20 @@ func (t opType) toIndent() opType { return opMapValueIndent case opMapEnd: return opMapEndIndent + case opSortedMapHead: + return opSortedMapHeadIndent + case opSortedMapHeadLoad: + return opSortedMapHeadLoadIndent + case opSortedRootMapHead: + return opSortedRootMapHeadIndent + case opSortedMapKey: + return opSortedMapKeyIndent + case opSortedRootMapKey: + return opSortedRootMapKeyIndent + case opSortedMapValue: + return opSortedMapValueIndent + case opSortedMapEnd: + return opSortedMapEndIndent case opStructFieldHead: return opStructFieldHeadIndent case opStructFieldHeadOmitEmpty: @@ -4753,6 +4837,20 @@ func (t opType) toIndent() opType { return opMapValueIndent case opMapEndIndent: return opMapEndIndent + case opSortedMapHeadIndent: + return opSortedMapHeadIndent + case opSortedMapHeadLoadIndent: + return opSortedMapHeadLoadIndent + case opSortedRootMapHeadIndent: + return opSortedRootMapHeadIndent + case opSortedMapKeyIndent: + return opSortedMapKeyIndent + case opSortedRootMapKeyIndent: + return opSortedRootMapKeyIndent + case opSortedMapValueIndent: + return opSortedMapValueIndent + case opSortedMapEndIndent: + return opSortedMapEndIndent case opStructFieldHeadIndent: return opStructFieldHeadIndent case opStructFieldHeadOmitEmptyIndent: From 898d58b8b834f430914f7e870f068cb27eff63f6 Mon Sep 17 00:00:00 2001 From: Masaaki Goshima Date: Wed, 16 Sep 2020 14:51:37 +0900 Subject: [PATCH 2/5] Supported sorted map --- cmd/generator/main.go | 3 +- encode_compile.go | 40 +++---- encode_opcode.go | 46 +++++++- encode_optype.go | 9 +- encode_test.go | 12 +- encode_vm.go | 250 ++++++++++++++++++++++++++++++++++++++++++ 6 files changed, 320 insertions(+), 40 deletions(-) diff --git a/cmd/generator/main.go b/cmd/generator/main.go index f824328..4be0633 100644 --- a/cmd/generator/main.go +++ b/cmd/generator/main.go @@ -204,6 +204,7 @@ func (t opType) fieldToStringTagField() opType { "MapHead", "MapKey", "MapValue", + "MapEnd", "StructFieldRecursive", "StructField", } @@ -243,7 +244,7 @@ func (t opType) fieldToStringTagField() opType { {"SortedMapKey", "SortedMapKeyIndent", "MapKey"}, {"SortedRootMapKey", "SortedRootMapKeyIndent", "MapKey"}, {"SortedMapValue", "SortedMapValueIndent", "MapValue"}, - {"SortedMapEnd", "SortedMapEndIndent", "Op"}, + {"SortedMapEnd", "SortedMapEndIndent", "MapEnd"}, {"StructFieldHead", "StructFieldHeadIndent", "StructField"}, {"StructFieldHeadOmitEmpty", "StructFieldHeadOmitEmptyIndent", "StructField"}, {"StructFieldHeadStringTag", "StructFieldHeadStringTagIndent", "StructField"}, diff --git a/encode_compile.go b/encode_compile.go index fcbb05d..e681a0d 100644 --- a/encode_compile.go +++ b/encode_compile.go @@ -398,26 +398,15 @@ func (e *Encoder) compileMap(ctx *encodeCompileContext, withLoad bool) (*opcode, header.mapKey = key header.mapValue = value - end := newOpCode(ctx, opMapEnd) + + end := newMapEndCode(ctx, header) ctx.incIndex() if ctx.withIndent { - if header.op == opMapHead { - if ctx.root { - header.op = opRootMapHeadIndent - } else { - header.op = opMapHeadIndent - } - } else { - header.op = opMapHeadLoadIndent - } - if ctx.root { - key.op = opRootMapKeyIndent - } else { - key.op = opMapKeyIndent - } - value.op = opMapValueIndent - end.op = opMapEndIndent + header.op = header.op.toIndent() + key.op = key.op.toIndent() + value.op = value.op.toIndent() + end.op = end.op.toIndent() } header.next = keyCode @@ -428,6 +417,7 @@ func (e *Encoder) compileMap(ctx *encodeCompileContext, withLoad bool) (*opcode, header.end = end key.end = end + value.end = end return (*opcode)(unsafe.Pointer(header)), nil } @@ -462,13 +452,13 @@ func (e *Encoder) typeToHeaderType(op opType) opType { return opStructFieldHeadString case opBool: return opStructFieldHeadBool - case opMapHead: + case opMapHead, opSortedMapHead: return opStructFieldHeadMap - case opMapHeadLoad: + case opMapHeadLoad, opSortedMapHeadLoad: return opStructFieldHeadMapLoad - case opMapHeadIndent: + case opMapHeadIndent, opSortedMapHeadIndent: return opStructFieldHeadMapIndent - case opMapHeadLoadIndent: + case opMapHeadLoadIndent, opSortedMapHeadLoadIndent: return opStructFieldHeadMapLoadIndent case opArrayHead: return opStructFieldHeadArray @@ -520,13 +510,13 @@ func (e *Encoder) typeToFieldType(op opType) opType { return opStructFieldString case opBool: return opStructFieldBool - case opMapHead: + case opMapHead, opSortedMapHead: return opStructFieldMap - case opMapHeadLoad: + case opMapHeadLoad, opSortedMapHeadLoad: return opStructFieldMapLoad - case opMapHeadIndent: + case opMapHeadIndent, opSortedMapHeadIndent: return opStructFieldMapIndent - case opMapHeadLoadIndent: + case opMapHeadLoadIndent, opSortedMapHeadLoadIndent: return opStructFieldMapLoadIndent case opArrayHead: return opStructFieldArray diff --git a/encode_opcode.go b/encode_opcode.go index a959074..96a0f7c 100644 --- a/encode_opcode.go +++ b/encode_opcode.go @@ -24,6 +24,8 @@ type opcode struct { elemIdx uintptr // offset to access array/slice/map elem length uintptr // offset to access slice/map length or array length mapIter uintptr // offset to access map iterator + headPos uintptr // offset to access head position of map + mapPos uintptr // offset to access position list for sorted map offset uintptr // offset size from struct header size uintptr // array/slice elem size @@ -87,6 +89,8 @@ func (c *opcode) copy(codeMap map[uintptr]*opcode) *opcode { elemIdx: c.elemIdx, length: c.length, mapIter: c.mapIter, + headPos: c.headPos, + mapPos: c.mapPos, offset: c.offset, size: c.size, } @@ -194,6 +198,19 @@ func (c *opcode) dumpMapHead(code *opcode) string { ) } +func (c *opcode) dumpMapEnd(code *opcode) string { + return fmt.Sprintf( + `[%d]%s%s ([idx:%d][headPos:%d][mapPos:%d][length:%d])`, + code.displayIdx, + strings.Repeat("-", code.indent), + code.op, + code.idx/uintptrSize, + code.headPos/uintptrSize, + code.mapPos/uintptrSize, + code.length/uintptrSize, + ) +} + func (c *opcode) dumpElem(code *opcode) string { var length uintptr if code.op.codeType() == codeArrayElem { @@ -270,6 +287,9 @@ func (c *opcode) dump() string { case codeMapValue: codes = append(codes, c.dumpValue(code)) code = code.next + case codeMapEnd: + codes = append(codes, c.dumpMapEnd(code)) + code = code.next case codeStructField: codes = append(codes, c.dumpField(code)) code = code.next @@ -369,9 +389,9 @@ func newArrayElemCode(ctx *encodeCompileContext, head *opcode, length int, size func newMapHeaderCode(ctx *encodeCompileContext, withLoad bool) *opcode { var op opType if withLoad { - op = opMapHeadLoad + op = opSortedMapHeadLoad } else { - op = opMapHead + op = opSortedMapHead } idx := opcodeOffset(ctx.ptrIndex) ctx.incPtrIndex() @@ -394,7 +414,7 @@ func newMapHeaderCode(ctx *encodeCompileContext, withLoad bool) *opcode { func newMapKeyCode(ctx *encodeCompileContext, head *opcode) *opcode { return &opcode{ - op: opMapKey, + op: opSortedMapKey, displayIdx: ctx.opcodeIndex, idx: opcodeOffset(ctx.ptrIndex), elemIdx: head.elemIdx, @@ -406,7 +426,7 @@ func newMapKeyCode(ctx *encodeCompileContext, head *opcode) *opcode { func newMapValueCode(ctx *encodeCompileContext, head *opcode) *opcode { return &opcode{ - op: opMapValue, + op: opSortedMapValue, displayIdx: ctx.opcodeIndex, idx: opcodeOffset(ctx.ptrIndex), elemIdx: head.elemIdx, @@ -416,6 +436,24 @@ func newMapValueCode(ctx *encodeCompileContext, head *opcode) *opcode { } } +func newMapEndCode(ctx *encodeCompileContext, head *opcode) *opcode { + headPos := opcodeOffset(ctx.ptrIndex) + ctx.incPtrIndex() + mapPos := opcodeOffset(ctx.ptrIndex) + ctx.incPtrIndex() + idx := opcodeOffset(ctx.ptrIndex) + return &opcode{ + op: opSortedMapEnd, + displayIdx: ctx.opcodeIndex, + idx: idx, + length: head.length, + headPos: headPos, + mapPos: mapPos, + indent: ctx.indent, + next: newEndOp(ctx), + } +} + func newInterfaceCode(ctx *encodeCompileContext) *opcode { return &opcode{ op: opInterface, diff --git a/encode_optype.go b/encode_optype.go index d04b843..34fc612 100644 --- a/encode_optype.go +++ b/encode_optype.go @@ -12,8 +12,9 @@ const ( codeMapHead codeType = 5 codeMapKey codeType = 6 codeMapValue codeType = 7 - codeStructFieldRecursive codeType = 8 - codeStructField codeType = 9 + codeMapEnd codeType = 8 + codeStructFieldRecursive codeType = 9 + codeStructField codeType = 10 ) type opType int @@ -2462,7 +2463,7 @@ func (t opType) codeType() codeType { case opSortedMapValue: return codeMapValue case opSortedMapEnd: - return codeOp + return codeMapEnd case opStructFieldHead: return codeStructField case opStructFieldHeadOmitEmpty: @@ -3256,7 +3257,7 @@ func (t opType) codeType() codeType { case opSortedMapValueIndent: return codeMapValue case opSortedMapEndIndent: - return codeOp + return codeMapEnd case opStructFieldHeadIndent: return codeStructField case opStructFieldHeadOmitEmptyIndent: diff --git a/encode_test.go b/encode_test.go index a6fb37c..52a6aa2 100644 --- a/encode_test.go +++ b/encode_test.go @@ -384,7 +384,7 @@ func Test_Marshal(t *testing.T) { "d": 4, }) assertErr(t, err) - assertEq(t, "map", len(`{"a":1,"b":2,"c":3,"d":4}`), len(string(bytes))) + assertEq(t, "map", `{"a":1,"b":2,"c":3,"d":4}`, string(bytes)) }) t.Run("map[string]interface{}", func(t *testing.T) { type T struct { @@ -400,7 +400,7 @@ func Test_Marshal(t *testing.T) { } bytes, err := json.Marshal(v) assertErr(t, err) - assertEq(t, "map[string]interface{}", len(`{"a":1,"b":2.1,"c":{"A":10},"d":4}`), len(string(bytes))) + assertEq(t, "map[string]interface{}", `{"a":1,"b":2.1,"c":{"A":10},"d":4}`, string(bytes)) }) }) } @@ -474,7 +474,7 @@ func Test_MarshalIndent(t *testing.T) { }, prefix, indent) assertErr(t, err) result := "{\n-\t\"a\": 1,\n-\t\"b\": 2,\n-\t\"c\": 3,\n-\t\"d\": 4\n-}" - assertEq(t, "map", len(result), len(string(bytes))) + assertEq(t, "map", result, string(bytes)) }) t.Run("map[string]interface{}", func(t *testing.T) { type T struct { @@ -493,7 +493,7 @@ func Test_MarshalIndent(t *testing.T) { bytes, err := json.MarshalIndent(v, prefix, indent) assertErr(t, err) result := "{\n-\t\"a\": 1,\n-\t\"b\": 2.1,\n-\t\"c\": {\n-\t\t\"E\": 10,\n-\t\t\"F\": 11\n-\t},\n-\t\"d\": 4\n-}" - assertEq(t, "map[string]interface{}", len(result), len(string(bytes))) + assertEq(t, "map[string]interface{}", result, string(bytes)) }) }) } @@ -898,7 +898,7 @@ func TestTextMarshalerMapKeysAreSorted(t *testing.T) { t.Fatalf("Failed to Marshal text.Marshaler: %v", err) } const want = `{"a:z":3,"x:y":1,"y:x":2,"z:a":4}` - if len(string(b)) != len(want) { + if string(b) != want { t.Errorf("Marshal map with text.Marshaler keys: got %#q, want %#q", b, want) } } @@ -914,7 +914,7 @@ func TestNilMarshalerTextMapKey(t *testing.T) { t.Fatalf("Failed to Marshal *text.Marshaler: %v", err) } const want = `{"":1,"A:B":2}` - if len(string(b)) != len(want) { + if string(b) != want { t.Errorf("Marshal map with *text.Marshaler keys: got %#q, want %#q", b, want) } } diff --git a/encode_vm.go b/encode_vm.go index 9780a03..3e2bb71 100644 --- a/encode_vm.go +++ b/encode_vm.go @@ -7,6 +7,7 @@ import ( "fmt" "math" "reflect" + "sort" "strconv" "unsafe" ) @@ -425,6 +426,125 @@ func (e *Encoder) run(ctx *encodeRuntimeContext, code *opcode) error { e.encodeBytes([]byte{']', '\n'}) code = code.end.next } + case opSortedMapHead: + ptr := load(ctxptr, code.idx) + if ptr == 0 { + e.encodeNull() + code = code.end.next + } else { + e.encodeByte('{') + mlen := maplen(unsafe.Pointer(ptr)) + if mlen > 0 { + iter := mapiterinit(code.typ, unsafe.Pointer(ptr)) + ctx.keepRefs = append(ctx.keepRefs, iter) + store(ctxptr, code.elemIdx, 0) + store(ctxptr, code.length, uintptr(mlen)) + store(ctxptr, code.mapIter, uintptr(iter)) + pos := make([]int, 0, mlen) + pos = append(pos, len(e.buf)) + posPtr := unsafe.Pointer(&pos) + ctx.keepRefs = append(ctx.keepRefs, posPtr) + store(ctxptr, code.end.mapPos, uintptr(posPtr)) + key := mapiterkey(iter) + store(ctxptr, code.next.idx, uintptr(key)) + code = code.next + } else { + e.encodeByte('}') + code = code.end.next + } + } + case opSortedMapHeadLoad: + ptr := load(ctxptr, code.idx) + if ptr == 0 { + e.encodeNull() + code = code.end.next + } else { + // load pointer + ptr = uintptr(*(*unsafe.Pointer)(unsafe.Pointer(ptr))) + e.encodeByte('{') + mlen := maplen(unsafe.Pointer(ptr)) + if mlen > 0 { + iter := mapiterinit(code.typ, unsafe.Pointer(ptr)) + ctx.keepRefs = append(ctx.keepRefs, iter) + store(ctxptr, code.elemIdx, 0) + store(ctxptr, code.length, uintptr(mlen)) + store(ctxptr, code.mapIter, uintptr(iter)) + key := mapiterkey(iter) + store(ctxptr, code.next.idx, uintptr(key)) + pos := make([]int, 0, mlen) + pos = append(pos, len(e.buf)) + posPtr := unsafe.Pointer(&pos) + ctx.keepRefs = append(ctx.keepRefs, posPtr) + store(ctxptr, code.end.mapPos, uintptr(posPtr)) + code = code.next + } else { + e.encodeByte('}') + code = code.end.next + } + } + case opSortedMapKey: + idx := load(ctxptr, code.elemIdx) + length := load(ctxptr, code.length) + posPtr := (*[]int)(unsafe.Pointer(load(ctxptr, code.end.mapPos))) + *posPtr = append(*posPtr, len(e.buf)) + idx++ + if idx < length { + iter := unsafe.Pointer(load(ctxptr, code.mapIter)) + store(ctxptr, code.elemIdx, idx) + key := mapiterkey(iter) + store(ctxptr, code.next.idx, uintptr(key)) + code = code.next + } else { + code = code.end + } + case opSortedMapValue: + posPtr := (*[]int)(unsafe.Pointer(load(ctxptr, code.end.mapPos))) + *posPtr = append(*posPtr, len(e.buf)) + iter := unsafe.Pointer(load(ctxptr, code.mapIter)) + value := mapitervalue(iter) + store(ctxptr, code.next.idx, uintptr(value)) + mapiternext(iter) + code = code.next + case opSortedMapEnd: + length := int(load(ctxptr, code.length)) + type mapKV struct { + key string + value string + } + kvs := make([]mapKV, 0, length) + posPtr := unsafe.Pointer(load(ctxptr, code.mapPos)) + pos := *(*[]int)(posPtr) + for i := 0; i < length; i++ { + startKey := pos[i*2] + startValue := pos[i*2+1] + var endValue int + if i+1 < length { + endValue = pos[i*2+2] + } else { + endValue = len(e.buf) + } + kvs = append(kvs, mapKV{ + key: string(e.buf[startKey:startValue]), + value: string(e.buf[startValue:endValue]), + }) + } + sort.Slice(kvs, func(i, j int) bool { + return kvs[i].key < kvs[j].key + }) + buf := e.buf[pos[0]:] + buf = buf[:0] + for idx, kv := range kvs { + if idx != 0 { + buf = append(buf, ',') + } + buf = append(buf, []byte(kv.key)...) + buf = append(buf, ':') + buf = append(buf, []byte(kv.value)...) + } + buf = append(buf, '}') + e.buf = e.buf[:pos[0]] + e.buf = append(e.buf, buf...) + code = code.next case opMapHead: ptr := load(ctxptr, code.idx) if ptr == 0 { @@ -493,6 +613,136 @@ func (e *Encoder) run(ctx *encodeRuntimeContext, code *opcode) error { store(ctxptr, code.next.idx, uintptr(value)) mapiternext(iter) code = code.next + case opSortedMapHeadIndent: + ptr := load(ctxptr, code.idx) + if ptr == 0 { + e.encodeNull() + code = code.end.next + } else { + mlen := maplen(unsafe.Pointer(ptr)) + if mlen > 0 { + e.encodeBytes([]byte{'{', '\n'}) + + iter := mapiterinit(code.typ, unsafe.Pointer(ptr)) + ctx.keepRefs = append(ctx.keepRefs, iter) + store(ctxptr, code.elemIdx, 0) + store(ctxptr, code.length, uintptr(mlen)) + store(ctxptr, code.mapIter, uintptr(iter)) + pos := make([]int, 0, mlen) + pos = append(pos, len(e.buf)) + posPtr := unsafe.Pointer(&pos) + ctx.keepRefs = append(ctx.keepRefs, posPtr) + store(ctxptr, code.end.mapPos, uintptr(posPtr)) + key := mapiterkey(iter) + store(ctxptr, code.next.idx, uintptr(key)) + code = code.next + } else { + e.encodeIndent(code.indent) + e.encodeBytes([]byte{'{', '}'}) + code = code.end.next + } + } + case opSortedMapHeadLoadIndent: + ptr := load(ctxptr, code.idx) + if ptr == 0 { + e.encodeNull() + code = code.end.next + } else { + // load pointer + ptr = uintptr(*(*unsafe.Pointer)(unsafe.Pointer(ptr))) + mlen := maplen(unsafe.Pointer(ptr)) + if mlen > 0 { + e.encodeBytes([]byte{'{', '\n'}) + + iter := mapiterinit(code.typ, unsafe.Pointer(ptr)) + ctx.keepRefs = append(ctx.keepRefs, iter) + store(ctxptr, code.elemIdx, 0) + store(ctxptr, code.length, uintptr(mlen)) + store(ctxptr, code.mapIter, uintptr(iter)) + key := mapiterkey(iter) + store(ctxptr, code.next.idx, uintptr(key)) + pos := make([]int, 0, mlen) + pos = append(pos, len(e.buf)) + posPtr := unsafe.Pointer(&pos) + ctx.keepRefs = append(ctx.keepRefs, posPtr) + store(ctxptr, code.end.mapPos, uintptr(posPtr)) + code = code.next + } else { + e.encodeIndent(code.indent) + e.encodeBytes([]byte{'{', '}'}) + code = code.end.next + } + } + case opSortedMapKeyIndent: + idx := load(ctxptr, code.elemIdx) + length := load(ctxptr, code.length) + posPtr := (*[]int)(unsafe.Pointer(load(ctxptr, code.end.mapPos))) + *posPtr = append(*posPtr, len(e.buf)) + idx++ + if idx < length { + iter := unsafe.Pointer(load(ctxptr, code.mapIter)) + store(ctxptr, code.elemIdx, idx) + key := mapiterkey(iter) + store(ctxptr, code.next.idx, uintptr(key)) + code = code.next + } else { + code = code.end + } + case opSortedMapValueIndent: + posPtr := (*[]int)(unsafe.Pointer(load(ctxptr, code.end.mapPos))) + *posPtr = append(*posPtr, len(e.buf)) + iter := unsafe.Pointer(load(ctxptr, code.mapIter)) + value := mapitervalue(iter) + store(ctxptr, code.next.idx, uintptr(value)) + mapiternext(iter) + code = code.next + case opSortedMapEndIndent: + length := int(load(ctxptr, code.length)) + type mapKV struct { + key string + value string + } + kvs := make([]mapKV, 0, length) + pos := *(*[]int)(unsafe.Pointer(load(ctxptr, code.mapPos))) + for i := 0; i < length; i++ { + startKey := pos[i*2] + startValue := pos[i*2+1] + var endValue int + if i+1 < length { + endValue = pos[i*2+2] + } else { + endValue = len(e.buf) + } + kvs = append(kvs, mapKV{ + key: string(e.buf[startKey:startValue]), + value: string(e.buf[startValue:endValue]), + }) + } + fmt.Println("kvs = ", kvs) + sort.Slice(kvs, func(i, j int) bool { + return kvs[i].key < kvs[j].key + }) + buf := e.buf[pos[0]:] + buf = buf[:0] + for idx, kv := range kvs { + if idx != 0 { + buf = append(buf, []byte{',', '\n'}...) + } + + buf = append(buf, e.prefix...) + buf = append(buf, bytes.Repeat(e.indentStr, code.indent+1)...) + + buf = append(buf, []byte(kv.key)...) + buf = append(buf, []byte{':', ' '}...) + buf = append(buf, []byte(kv.value)...) + } + buf = append(buf, '\n') + buf = append(buf, e.prefix...) + buf = append(buf, bytes.Repeat(e.indentStr, code.indent)...) + buf = append(buf, '}') + e.buf = e.buf[:pos[0]] + e.buf = append(e.buf, buf...) + code = code.next case opMapHeadIndent: ptr := load(ctxptr, code.idx) if ptr == 0 { From aaea586778efb1ba02ab3d518d775e1409372952 Mon Sep 17 00:00:00 2001 From: Masaaki Goshima Date: Wed, 16 Sep 2020 18:15:47 +0900 Subject: [PATCH 3/5] Enable switch map processing at runtime --- cmd/generator/main.go | 7 - encode.go | 12 + encode_compile.go | 16 +- encode_opcode.go | 10 +- encode_optype.go | 1620 +++++++++++++++++++---------------------- encode_test.go | 8 +- encode_vm.go | 389 ++++------ json.go | 20 + 8 files changed, 962 insertions(+), 1120 deletions(-) diff --git a/cmd/generator/main.go b/cmd/generator/main.go index 4be0633..a317dfd 100644 --- a/cmd/generator/main.go +++ b/cmd/generator/main.go @@ -238,13 +238,6 @@ func (t opType) fieldToStringTagField() opType { {"RootMapKey", "RootMapKeyIndent", "MapKey"}, {"MapValue", "MapValueIndent", "MapValue"}, {"MapEnd", "MapEndIndent", "Op"}, - {"SortedMapHead", "SortedMapHeadIndent", "MapHead"}, - {"SortedMapHeadLoad", "SortedMapHeadLoadIndent", "MapHead"}, - {"SortedRootMapHead", "SortedRootMapHeadIndent", "MapHead"}, - {"SortedMapKey", "SortedMapKeyIndent", "MapKey"}, - {"SortedRootMapKey", "SortedRootMapKeyIndent", "MapKey"}, - {"SortedMapValue", "SortedMapValueIndent", "MapValue"}, - {"SortedMapEnd", "SortedMapEndIndent", "MapEnd"}, {"StructFieldHead", "StructFieldHeadIndent", "StructField"}, {"StructFieldHeadOmitEmpty", "StructFieldHeadOmitEmptyIndent", "StructField"}, {"StructFieldHeadStringTag", "StructFieldHeadStringTagIndent", "StructField"}, diff --git a/encode.go b/encode.go index 5cce9ad..dda693f 100644 --- a/encode.go +++ b/encode.go @@ -18,6 +18,7 @@ type Encoder struct { buf []byte enabledIndent bool enabledHTMLEscape bool + unorderedMap bool prefix []byte indentStr []byte structTypeToCompiledCode map[uintptr]*compiledCode @@ -88,6 +89,16 @@ func NewEncoder(w io.Writer) *Encoder { // // See the documentation for Marshal for details about the conversion of Go values to JSON. func (e *Encoder) Encode(v interface{}) error { + return e.EncodeWithOption(v) +} + +// EncodeWithOption call Encode with EncodeOption. +func (e *Encoder) EncodeWithOption(v interface{}, opts ...EncodeOption) error { + for _, opt := range opts { + if err := opt(e); err != nil { + return err + } + } if err := e.encode(v); err != nil { return err } @@ -126,6 +137,7 @@ func (e *Encoder) reset() { e.buf = e.buf[:0] e.enabledHTMLEscape = true e.enabledIndent = false + e.unorderedMap = false } func (e *Encoder) encodeForMarshal(v interface{}) ([]byte, error) { diff --git a/encode_compile.go b/encode_compile.go index e681a0d..d66cef1 100644 --- a/encode_compile.go +++ b/encode_compile.go @@ -452,13 +452,13 @@ func (e *Encoder) typeToHeaderType(op opType) opType { return opStructFieldHeadString case opBool: return opStructFieldHeadBool - case opMapHead, opSortedMapHead: + case opMapHead: return opStructFieldHeadMap - case opMapHeadLoad, opSortedMapHeadLoad: + case opMapHeadLoad: return opStructFieldHeadMapLoad - case opMapHeadIndent, opSortedMapHeadIndent: + case opMapHeadIndent: return opStructFieldHeadMapIndent - case opMapHeadLoadIndent, opSortedMapHeadLoadIndent: + case opMapHeadLoadIndent: return opStructFieldHeadMapLoadIndent case opArrayHead: return opStructFieldHeadArray @@ -510,13 +510,13 @@ func (e *Encoder) typeToFieldType(op opType) opType { return opStructFieldString case opBool: return opStructFieldBool - case opMapHead, opSortedMapHead: + case opMapHead: return opStructFieldMap - case opMapHeadLoad, opSortedMapHeadLoad: + case opMapHeadLoad: return opStructFieldMapLoad - case opMapHeadIndent, opSortedMapHeadIndent: + case opMapHeadIndent: return opStructFieldMapIndent - case opMapHeadLoadIndent, opSortedMapHeadLoadIndent: + case opMapHeadLoadIndent: return opStructFieldMapLoadIndent case opArrayHead: return opStructFieldArray diff --git a/encode_opcode.go b/encode_opcode.go index 96a0f7c..c9ae061 100644 --- a/encode_opcode.go +++ b/encode_opcode.go @@ -389,9 +389,9 @@ func newArrayElemCode(ctx *encodeCompileContext, head *opcode, length int, size func newMapHeaderCode(ctx *encodeCompileContext, withLoad bool) *opcode { var op opType if withLoad { - op = opSortedMapHeadLoad + op = opMapHeadLoad } else { - op = opSortedMapHead + op = opMapHead } idx := opcodeOffset(ctx.ptrIndex) ctx.incPtrIndex() @@ -414,7 +414,7 @@ func newMapHeaderCode(ctx *encodeCompileContext, withLoad bool) *opcode { func newMapKeyCode(ctx *encodeCompileContext, head *opcode) *opcode { return &opcode{ - op: opSortedMapKey, + op: opMapKey, displayIdx: ctx.opcodeIndex, idx: opcodeOffset(ctx.ptrIndex), elemIdx: head.elemIdx, @@ -426,7 +426,7 @@ func newMapKeyCode(ctx *encodeCompileContext, head *opcode) *opcode { func newMapValueCode(ctx *encodeCompileContext, head *opcode) *opcode { return &opcode{ - op: opSortedMapValue, + op: opMapValue, displayIdx: ctx.opcodeIndex, idx: opcodeOffset(ctx.ptrIndex), elemIdx: head.elemIdx, @@ -443,7 +443,7 @@ func newMapEndCode(ctx *encodeCompileContext, head *opcode) *opcode { ctx.incPtrIndex() idx := opcodeOffset(ctx.ptrIndex) return &opcode{ - op: opSortedMapEnd, + op: opMapEnd, displayIdx: ctx.opcodeIndex, idx: idx, length: head.length, diff --git a/encode_optype.go b/encode_optype.go index 34fc612..9f34193 100644 --- a/encode_optype.go +++ b/encode_optype.go @@ -39,781 +39,767 @@ const ( opRootMapKey opType = 16 opMapValue opType = 17 opMapEnd opType = 18 - opSortedMapHead opType = 19 - opSortedMapHeadLoad opType = 20 - opSortedRootMapHead opType = 21 - opSortedMapKey opType = 22 - opSortedRootMapKey opType = 23 - opSortedMapValue opType = 24 - opSortedMapEnd opType = 25 - opStructFieldHead opType = 26 - opStructFieldHeadOmitEmpty opType = 27 - opStructFieldHeadStringTag opType = 28 - opStructFieldAnonymousHead opType = 29 - opStructFieldAnonymousHeadOmitEmpty opType = 30 - opStructFieldPtrAnonymousHeadOmitEmpty opType = 31 - opStructFieldAnonymousHeadStringTag opType = 32 - opStructFieldPtrAnonymousHeadStringTag opType = 33 - opStructFieldPtrHead opType = 34 - opStructFieldPtrHeadOmitEmpty opType = 35 - opStructFieldPtrHeadStringTag opType = 36 - opStructFieldPtrAnonymousHead opType = 37 - opStructField opType = 38 - opStructFieldOmitEmpty opType = 39 - opStructFieldStringTag opType = 40 - opStructFieldRecursive opType = 41 - opStructFieldRecursiveEnd opType = 42 - opStructEnd opType = 43 - opStructAnonymousEnd opType = 44 - opInt opType = 45 - opInt8 opType = 46 - opInt16 opType = 47 - opInt32 opType = 48 - opInt64 opType = 49 - opUint opType = 50 - opUint8 opType = 51 - opUint16 opType = 52 - opUint32 opType = 53 - opUint64 opType = 54 - opFloat32 opType = 55 - opFloat64 opType = 56 - opBool opType = 57 - opString opType = 58 - opBytes opType = 59 - opArray opType = 60 - opMap opType = 61 - opMapLoad opType = 62 - opSlice opType = 63 - opStruct opType = 64 - opMarshalJSON opType = 65 - opMarshalText opType = 66 - opStructFieldHeadInt opType = 67 - opStructFieldHeadInt8 opType = 68 - opStructFieldHeadInt16 opType = 69 - opStructFieldHeadInt32 opType = 70 - opStructFieldHeadInt64 opType = 71 - opStructFieldHeadUint opType = 72 - opStructFieldHeadUint8 opType = 73 - opStructFieldHeadUint16 opType = 74 - opStructFieldHeadUint32 opType = 75 - opStructFieldHeadUint64 opType = 76 - opStructFieldHeadFloat32 opType = 77 - opStructFieldHeadFloat64 opType = 78 - opStructFieldHeadBool opType = 79 - opStructFieldHeadString opType = 80 - opStructFieldHeadBytes opType = 81 - opStructFieldHeadArray opType = 82 - opStructFieldHeadMap opType = 83 - opStructFieldHeadMapLoad opType = 84 - opStructFieldHeadSlice opType = 85 - opStructFieldHeadStruct opType = 86 - opStructFieldHeadMarshalJSON opType = 87 - opStructFieldHeadMarshalText opType = 88 - opStructFieldHeadOmitEmptyInt opType = 89 - opStructFieldHeadOmitEmptyInt8 opType = 90 - opStructFieldHeadOmitEmptyInt16 opType = 91 - opStructFieldHeadOmitEmptyInt32 opType = 92 - opStructFieldHeadOmitEmptyInt64 opType = 93 - opStructFieldHeadOmitEmptyUint opType = 94 - opStructFieldHeadOmitEmptyUint8 opType = 95 - opStructFieldHeadOmitEmptyUint16 opType = 96 - opStructFieldHeadOmitEmptyUint32 opType = 97 - opStructFieldHeadOmitEmptyUint64 opType = 98 - opStructFieldHeadOmitEmptyFloat32 opType = 99 - opStructFieldHeadOmitEmptyFloat64 opType = 100 - opStructFieldHeadOmitEmptyBool opType = 101 - opStructFieldHeadOmitEmptyString opType = 102 - opStructFieldHeadOmitEmptyBytes opType = 103 - opStructFieldHeadOmitEmptyArray opType = 104 - opStructFieldHeadOmitEmptyMap opType = 105 - opStructFieldHeadOmitEmptyMapLoad opType = 106 - opStructFieldHeadOmitEmptySlice opType = 107 - opStructFieldHeadOmitEmptyStruct opType = 108 - opStructFieldHeadOmitEmptyMarshalJSON opType = 109 - opStructFieldHeadOmitEmptyMarshalText opType = 110 - opStructFieldHeadStringTagInt opType = 111 - opStructFieldHeadStringTagInt8 opType = 112 - opStructFieldHeadStringTagInt16 opType = 113 - opStructFieldHeadStringTagInt32 opType = 114 - opStructFieldHeadStringTagInt64 opType = 115 - opStructFieldHeadStringTagUint opType = 116 - opStructFieldHeadStringTagUint8 opType = 117 - opStructFieldHeadStringTagUint16 opType = 118 - opStructFieldHeadStringTagUint32 opType = 119 - opStructFieldHeadStringTagUint64 opType = 120 - opStructFieldHeadStringTagFloat32 opType = 121 - opStructFieldHeadStringTagFloat64 opType = 122 - opStructFieldHeadStringTagBool opType = 123 - opStructFieldHeadStringTagString opType = 124 - opStructFieldHeadStringTagBytes opType = 125 - opStructFieldHeadStringTagArray opType = 126 - opStructFieldHeadStringTagMap opType = 127 - opStructFieldHeadStringTagMapLoad opType = 128 - opStructFieldHeadStringTagSlice opType = 129 - opStructFieldHeadStringTagStruct opType = 130 - opStructFieldHeadStringTagMarshalJSON opType = 131 - opStructFieldHeadStringTagMarshalText opType = 132 - opStructFieldAnonymousHeadInt opType = 133 - opStructFieldAnonymousHeadInt8 opType = 134 - opStructFieldAnonymousHeadInt16 opType = 135 - opStructFieldAnonymousHeadInt32 opType = 136 - opStructFieldAnonymousHeadInt64 opType = 137 - opStructFieldAnonymousHeadUint opType = 138 - opStructFieldAnonymousHeadUint8 opType = 139 - opStructFieldAnonymousHeadUint16 opType = 140 - opStructFieldAnonymousHeadUint32 opType = 141 - opStructFieldAnonymousHeadUint64 opType = 142 - opStructFieldAnonymousHeadFloat32 opType = 143 - opStructFieldAnonymousHeadFloat64 opType = 144 - opStructFieldAnonymousHeadBool opType = 145 - opStructFieldAnonymousHeadString opType = 146 - opStructFieldAnonymousHeadBytes opType = 147 - opStructFieldAnonymousHeadArray opType = 148 - opStructFieldAnonymousHeadMap opType = 149 - opStructFieldAnonymousHeadMapLoad opType = 150 - opStructFieldAnonymousHeadSlice opType = 151 - opStructFieldAnonymousHeadStruct opType = 152 - opStructFieldAnonymousHeadMarshalJSON opType = 153 - opStructFieldAnonymousHeadMarshalText opType = 154 - opStructFieldAnonymousHeadOmitEmptyInt opType = 155 - opStructFieldAnonymousHeadOmitEmptyInt8 opType = 156 - opStructFieldAnonymousHeadOmitEmptyInt16 opType = 157 - opStructFieldAnonymousHeadOmitEmptyInt32 opType = 158 - opStructFieldAnonymousHeadOmitEmptyInt64 opType = 159 - opStructFieldAnonymousHeadOmitEmptyUint opType = 160 - opStructFieldAnonymousHeadOmitEmptyUint8 opType = 161 - opStructFieldAnonymousHeadOmitEmptyUint16 opType = 162 - opStructFieldAnonymousHeadOmitEmptyUint32 opType = 163 - opStructFieldAnonymousHeadOmitEmptyUint64 opType = 164 - opStructFieldAnonymousHeadOmitEmptyFloat32 opType = 165 - opStructFieldAnonymousHeadOmitEmptyFloat64 opType = 166 - opStructFieldAnonymousHeadOmitEmptyBool opType = 167 - opStructFieldAnonymousHeadOmitEmptyString opType = 168 - opStructFieldAnonymousHeadOmitEmptyBytes opType = 169 - opStructFieldAnonymousHeadOmitEmptyArray opType = 170 - opStructFieldAnonymousHeadOmitEmptyMap opType = 171 - opStructFieldAnonymousHeadOmitEmptyMapLoad opType = 172 - opStructFieldAnonymousHeadOmitEmptySlice opType = 173 - opStructFieldAnonymousHeadOmitEmptyStruct opType = 174 - opStructFieldAnonymousHeadOmitEmptyMarshalJSON opType = 175 - opStructFieldAnonymousHeadOmitEmptyMarshalText opType = 176 - opStructFieldAnonymousHeadStringTagInt opType = 177 - opStructFieldAnonymousHeadStringTagInt8 opType = 178 - opStructFieldAnonymousHeadStringTagInt16 opType = 179 - opStructFieldAnonymousHeadStringTagInt32 opType = 180 - opStructFieldAnonymousHeadStringTagInt64 opType = 181 - opStructFieldAnonymousHeadStringTagUint opType = 182 - opStructFieldAnonymousHeadStringTagUint8 opType = 183 - opStructFieldAnonymousHeadStringTagUint16 opType = 184 - opStructFieldAnonymousHeadStringTagUint32 opType = 185 - opStructFieldAnonymousHeadStringTagUint64 opType = 186 - opStructFieldAnonymousHeadStringTagFloat32 opType = 187 - opStructFieldAnonymousHeadStringTagFloat64 opType = 188 - opStructFieldAnonymousHeadStringTagBool opType = 189 - opStructFieldAnonymousHeadStringTagString opType = 190 - opStructFieldAnonymousHeadStringTagBytes opType = 191 - opStructFieldAnonymousHeadStringTagArray opType = 192 - opStructFieldAnonymousHeadStringTagMap opType = 193 - opStructFieldAnonymousHeadStringTagMapLoad opType = 194 - opStructFieldAnonymousHeadStringTagSlice opType = 195 - opStructFieldAnonymousHeadStringTagStruct opType = 196 - opStructFieldAnonymousHeadStringTagMarshalJSON opType = 197 - opStructFieldAnonymousHeadStringTagMarshalText opType = 198 - opStructFieldPtrHeadInt opType = 199 - opStructFieldPtrHeadInt8 opType = 200 - opStructFieldPtrHeadInt16 opType = 201 - opStructFieldPtrHeadInt32 opType = 202 - opStructFieldPtrHeadInt64 opType = 203 - opStructFieldPtrHeadUint opType = 204 - opStructFieldPtrHeadUint8 opType = 205 - opStructFieldPtrHeadUint16 opType = 206 - opStructFieldPtrHeadUint32 opType = 207 - opStructFieldPtrHeadUint64 opType = 208 - opStructFieldPtrHeadFloat32 opType = 209 - opStructFieldPtrHeadFloat64 opType = 210 - opStructFieldPtrHeadBool opType = 211 - opStructFieldPtrHeadString opType = 212 - opStructFieldPtrHeadBytes opType = 213 - opStructFieldPtrHeadArray opType = 214 - opStructFieldPtrHeadMap opType = 215 - opStructFieldPtrHeadMapLoad opType = 216 - opStructFieldPtrHeadSlice opType = 217 - opStructFieldPtrHeadStruct opType = 218 - opStructFieldPtrHeadMarshalJSON opType = 219 - opStructFieldPtrHeadMarshalText opType = 220 - opStructFieldPtrHeadOmitEmptyInt opType = 221 - opStructFieldPtrHeadOmitEmptyInt8 opType = 222 - opStructFieldPtrHeadOmitEmptyInt16 opType = 223 - opStructFieldPtrHeadOmitEmptyInt32 opType = 224 - opStructFieldPtrHeadOmitEmptyInt64 opType = 225 - opStructFieldPtrHeadOmitEmptyUint opType = 226 - opStructFieldPtrHeadOmitEmptyUint8 opType = 227 - opStructFieldPtrHeadOmitEmptyUint16 opType = 228 - opStructFieldPtrHeadOmitEmptyUint32 opType = 229 - opStructFieldPtrHeadOmitEmptyUint64 opType = 230 - opStructFieldPtrHeadOmitEmptyFloat32 opType = 231 - opStructFieldPtrHeadOmitEmptyFloat64 opType = 232 - opStructFieldPtrHeadOmitEmptyBool opType = 233 - opStructFieldPtrHeadOmitEmptyString opType = 234 - opStructFieldPtrHeadOmitEmptyBytes opType = 235 - opStructFieldPtrHeadOmitEmptyArray opType = 236 - opStructFieldPtrHeadOmitEmptyMap opType = 237 - opStructFieldPtrHeadOmitEmptyMapLoad opType = 238 - opStructFieldPtrHeadOmitEmptySlice opType = 239 - opStructFieldPtrHeadOmitEmptyStruct opType = 240 - opStructFieldPtrHeadOmitEmptyMarshalJSON opType = 241 - opStructFieldPtrHeadOmitEmptyMarshalText opType = 242 - opStructFieldPtrHeadStringTagInt opType = 243 - opStructFieldPtrHeadStringTagInt8 opType = 244 - opStructFieldPtrHeadStringTagInt16 opType = 245 - opStructFieldPtrHeadStringTagInt32 opType = 246 - opStructFieldPtrHeadStringTagInt64 opType = 247 - opStructFieldPtrHeadStringTagUint opType = 248 - opStructFieldPtrHeadStringTagUint8 opType = 249 - opStructFieldPtrHeadStringTagUint16 opType = 250 - opStructFieldPtrHeadStringTagUint32 opType = 251 - opStructFieldPtrHeadStringTagUint64 opType = 252 - opStructFieldPtrHeadStringTagFloat32 opType = 253 - opStructFieldPtrHeadStringTagFloat64 opType = 254 - opStructFieldPtrHeadStringTagBool opType = 255 - opStructFieldPtrHeadStringTagString opType = 256 - opStructFieldPtrHeadStringTagBytes opType = 257 - opStructFieldPtrHeadStringTagArray opType = 258 - opStructFieldPtrHeadStringTagMap opType = 259 - opStructFieldPtrHeadStringTagMapLoad opType = 260 - opStructFieldPtrHeadStringTagSlice opType = 261 - opStructFieldPtrHeadStringTagStruct opType = 262 - opStructFieldPtrHeadStringTagMarshalJSON opType = 263 - opStructFieldPtrHeadStringTagMarshalText opType = 264 - opStructFieldPtrAnonymousHeadInt opType = 265 - opStructFieldPtrAnonymousHeadInt8 opType = 266 - opStructFieldPtrAnonymousHeadInt16 opType = 267 - opStructFieldPtrAnonymousHeadInt32 opType = 268 - opStructFieldPtrAnonymousHeadInt64 opType = 269 - opStructFieldPtrAnonymousHeadUint opType = 270 - opStructFieldPtrAnonymousHeadUint8 opType = 271 - opStructFieldPtrAnonymousHeadUint16 opType = 272 - opStructFieldPtrAnonymousHeadUint32 opType = 273 - opStructFieldPtrAnonymousHeadUint64 opType = 274 - opStructFieldPtrAnonymousHeadFloat32 opType = 275 - opStructFieldPtrAnonymousHeadFloat64 opType = 276 - opStructFieldPtrAnonymousHeadBool opType = 277 - opStructFieldPtrAnonymousHeadString opType = 278 - opStructFieldPtrAnonymousHeadBytes opType = 279 - opStructFieldPtrAnonymousHeadArray opType = 280 - opStructFieldPtrAnonymousHeadMap opType = 281 - opStructFieldPtrAnonymousHeadMapLoad opType = 282 - opStructFieldPtrAnonymousHeadSlice opType = 283 - opStructFieldPtrAnonymousHeadStruct opType = 284 - opStructFieldPtrAnonymousHeadMarshalJSON opType = 285 - opStructFieldPtrAnonymousHeadMarshalText opType = 286 - opStructFieldPtrAnonymousHeadOmitEmptyInt opType = 287 - opStructFieldPtrAnonymousHeadOmitEmptyInt8 opType = 288 - opStructFieldPtrAnonymousHeadOmitEmptyInt16 opType = 289 - opStructFieldPtrAnonymousHeadOmitEmptyInt32 opType = 290 - opStructFieldPtrAnonymousHeadOmitEmptyInt64 opType = 291 - opStructFieldPtrAnonymousHeadOmitEmptyUint opType = 292 - opStructFieldPtrAnonymousHeadOmitEmptyUint8 opType = 293 - opStructFieldPtrAnonymousHeadOmitEmptyUint16 opType = 294 - opStructFieldPtrAnonymousHeadOmitEmptyUint32 opType = 295 - opStructFieldPtrAnonymousHeadOmitEmptyUint64 opType = 296 - opStructFieldPtrAnonymousHeadOmitEmptyFloat32 opType = 297 - opStructFieldPtrAnonymousHeadOmitEmptyFloat64 opType = 298 - opStructFieldPtrAnonymousHeadOmitEmptyBool opType = 299 - opStructFieldPtrAnonymousHeadOmitEmptyString opType = 300 - opStructFieldPtrAnonymousHeadOmitEmptyBytes opType = 301 - opStructFieldPtrAnonymousHeadOmitEmptyArray opType = 302 - opStructFieldPtrAnonymousHeadOmitEmptyMap opType = 303 - opStructFieldPtrAnonymousHeadOmitEmptyMapLoad opType = 304 - opStructFieldPtrAnonymousHeadOmitEmptySlice opType = 305 - opStructFieldPtrAnonymousHeadOmitEmptyStruct opType = 306 - opStructFieldPtrAnonymousHeadOmitEmptyMarshalJSON opType = 307 - opStructFieldPtrAnonymousHeadOmitEmptyMarshalText opType = 308 - opStructFieldPtrAnonymousHeadStringTagInt opType = 309 - opStructFieldPtrAnonymousHeadStringTagInt8 opType = 310 - opStructFieldPtrAnonymousHeadStringTagInt16 opType = 311 - opStructFieldPtrAnonymousHeadStringTagInt32 opType = 312 - opStructFieldPtrAnonymousHeadStringTagInt64 opType = 313 - opStructFieldPtrAnonymousHeadStringTagUint opType = 314 - opStructFieldPtrAnonymousHeadStringTagUint8 opType = 315 - opStructFieldPtrAnonymousHeadStringTagUint16 opType = 316 - opStructFieldPtrAnonymousHeadStringTagUint32 opType = 317 - opStructFieldPtrAnonymousHeadStringTagUint64 opType = 318 - opStructFieldPtrAnonymousHeadStringTagFloat32 opType = 319 - opStructFieldPtrAnonymousHeadStringTagFloat64 opType = 320 - opStructFieldPtrAnonymousHeadStringTagBool opType = 321 - opStructFieldPtrAnonymousHeadStringTagString opType = 322 - opStructFieldPtrAnonymousHeadStringTagBytes opType = 323 - opStructFieldPtrAnonymousHeadStringTagArray opType = 324 - opStructFieldPtrAnonymousHeadStringTagMap opType = 325 - opStructFieldPtrAnonymousHeadStringTagMapLoad opType = 326 - opStructFieldPtrAnonymousHeadStringTagSlice opType = 327 - opStructFieldPtrAnonymousHeadStringTagStruct opType = 328 - opStructFieldPtrAnonymousHeadStringTagMarshalJSON opType = 329 - opStructFieldPtrAnonymousHeadStringTagMarshalText opType = 330 - opStructFieldInt opType = 331 - opStructFieldInt8 opType = 332 - opStructFieldInt16 opType = 333 - opStructFieldInt32 opType = 334 - opStructFieldInt64 opType = 335 - opStructFieldUint opType = 336 - opStructFieldUint8 opType = 337 - opStructFieldUint16 opType = 338 - opStructFieldUint32 opType = 339 - opStructFieldUint64 opType = 340 - opStructFieldFloat32 opType = 341 - opStructFieldFloat64 opType = 342 - opStructFieldBool opType = 343 - opStructFieldString opType = 344 - opStructFieldBytes opType = 345 - opStructFieldArray opType = 346 - opStructFieldMap opType = 347 - opStructFieldMapLoad opType = 348 - opStructFieldSlice opType = 349 - opStructFieldStruct opType = 350 - opStructFieldMarshalJSON opType = 351 - opStructFieldMarshalText opType = 352 - opStructFieldOmitEmptyInt opType = 353 - opStructFieldOmitEmptyInt8 opType = 354 - opStructFieldOmitEmptyInt16 opType = 355 - opStructFieldOmitEmptyInt32 opType = 356 - opStructFieldOmitEmptyInt64 opType = 357 - opStructFieldOmitEmptyUint opType = 358 - opStructFieldOmitEmptyUint8 opType = 359 - opStructFieldOmitEmptyUint16 opType = 360 - opStructFieldOmitEmptyUint32 opType = 361 - opStructFieldOmitEmptyUint64 opType = 362 - opStructFieldOmitEmptyFloat32 opType = 363 - opStructFieldOmitEmptyFloat64 opType = 364 - opStructFieldOmitEmptyBool opType = 365 - opStructFieldOmitEmptyString opType = 366 - opStructFieldOmitEmptyBytes opType = 367 - opStructFieldOmitEmptyArray opType = 368 - opStructFieldOmitEmptyMap opType = 369 - opStructFieldOmitEmptyMapLoad opType = 370 - opStructFieldOmitEmptySlice opType = 371 - opStructFieldOmitEmptyStruct opType = 372 - opStructFieldOmitEmptyMarshalJSON opType = 373 - opStructFieldOmitEmptyMarshalText opType = 374 - opStructFieldStringTagInt opType = 375 - opStructFieldStringTagInt8 opType = 376 - opStructFieldStringTagInt16 opType = 377 - opStructFieldStringTagInt32 opType = 378 - opStructFieldStringTagInt64 opType = 379 - opStructFieldStringTagUint opType = 380 - opStructFieldStringTagUint8 opType = 381 - opStructFieldStringTagUint16 opType = 382 - opStructFieldStringTagUint32 opType = 383 - opStructFieldStringTagUint64 opType = 384 - opStructFieldStringTagFloat32 opType = 385 - opStructFieldStringTagFloat64 opType = 386 - opStructFieldStringTagBool opType = 387 - opStructFieldStringTagString opType = 388 - opStructFieldStringTagBytes opType = 389 - opStructFieldStringTagArray opType = 390 - opStructFieldStringTagMap opType = 391 - opStructFieldStringTagMapLoad opType = 392 - opStructFieldStringTagSlice opType = 393 - opStructFieldStringTagStruct opType = 394 - opStructFieldStringTagMarshalJSON opType = 395 - opStructFieldStringTagMarshalText opType = 396 - opEndIndent opType = 397 - opInterfaceIndent opType = 398 - opInterfaceEndIndent opType = 399 - opPtrIndent opType = 400 - opSliceHeadIndent opType = 401 - opRootSliceHeadIndent opType = 402 - opSliceElemIndent opType = 403 - opRootSliceElemIndent opType = 404 - opSliceEndIndent opType = 405 - opArrayHeadIndent opType = 406 - opArrayElemIndent opType = 407 - opArrayEndIndent opType = 408 - opMapHeadIndent opType = 409 - opMapHeadLoadIndent opType = 410 - opRootMapHeadIndent opType = 411 - opMapKeyIndent opType = 412 - opRootMapKeyIndent opType = 413 - opMapValueIndent opType = 414 - opMapEndIndent opType = 415 - opSortedMapHeadIndent opType = 416 - opSortedMapHeadLoadIndent opType = 417 - opSortedRootMapHeadIndent opType = 418 - opSortedMapKeyIndent opType = 419 - opSortedRootMapKeyIndent opType = 420 - opSortedMapValueIndent opType = 421 - opSortedMapEndIndent opType = 422 - opStructFieldHeadIndent opType = 423 - opStructFieldHeadOmitEmptyIndent opType = 424 - opStructFieldHeadStringTagIndent opType = 425 - opStructFieldAnonymousHeadIndent opType = 426 - opStructFieldAnonymousHeadOmitEmptyIndent opType = 427 - opStructFieldPtrAnonymousHeadOmitEmptyIndent opType = 428 - opStructFieldAnonymousHeadStringTagIndent opType = 429 - opStructFieldPtrAnonymousHeadStringTagIndent opType = 430 - opStructFieldPtrHeadIndent opType = 431 - opStructFieldPtrHeadOmitEmptyIndent opType = 432 - opStructFieldPtrHeadStringTagIndent opType = 433 - opStructFieldPtrAnonymousHeadIndent opType = 434 - opStructFieldIndent opType = 435 - opStructFieldOmitEmptyIndent opType = 436 - opStructFieldStringTagIndent opType = 437 - opStructFieldRecursiveIndent opType = 438 - opStructFieldRecursiveEndIndent opType = 439 - opStructEndIndent opType = 440 - opStructAnonymousEndIndent opType = 441 - opIntIndent opType = 442 - opInt8Indent opType = 443 - opInt16Indent opType = 444 - opInt32Indent opType = 445 - opInt64Indent opType = 446 - opUintIndent opType = 447 - opUint8Indent opType = 448 - opUint16Indent opType = 449 - opUint32Indent opType = 450 - opUint64Indent opType = 451 - opFloat32Indent opType = 452 - opFloat64Indent opType = 453 - opBoolIndent opType = 454 - opStringIndent opType = 455 - opBytesIndent opType = 456 - opArrayIndent opType = 457 - opMapIndent opType = 458 - opMapLoadIndent opType = 459 - opSliceIndent opType = 460 - opStructIndent opType = 461 - opMarshalJSONIndent opType = 462 - opMarshalTextIndent opType = 463 - opStructFieldHeadIntIndent opType = 464 - opStructFieldHeadInt8Indent opType = 465 - opStructFieldHeadInt16Indent opType = 466 - opStructFieldHeadInt32Indent opType = 467 - opStructFieldHeadInt64Indent opType = 468 - opStructFieldHeadUintIndent opType = 469 - opStructFieldHeadUint8Indent opType = 470 - opStructFieldHeadUint16Indent opType = 471 - opStructFieldHeadUint32Indent opType = 472 - opStructFieldHeadUint64Indent opType = 473 - opStructFieldHeadFloat32Indent opType = 474 - opStructFieldHeadFloat64Indent opType = 475 - opStructFieldHeadBoolIndent opType = 476 - opStructFieldHeadStringIndent opType = 477 - opStructFieldHeadBytesIndent opType = 478 - opStructFieldHeadArrayIndent opType = 479 - opStructFieldHeadMapIndent opType = 480 - opStructFieldHeadMapLoadIndent opType = 481 - opStructFieldHeadSliceIndent opType = 482 - opStructFieldHeadStructIndent opType = 483 - opStructFieldHeadMarshalJSONIndent opType = 484 - opStructFieldHeadMarshalTextIndent opType = 485 - opStructFieldHeadOmitEmptyIntIndent opType = 486 - opStructFieldHeadOmitEmptyInt8Indent opType = 487 - opStructFieldHeadOmitEmptyInt16Indent opType = 488 - opStructFieldHeadOmitEmptyInt32Indent opType = 489 - opStructFieldHeadOmitEmptyInt64Indent opType = 490 - opStructFieldHeadOmitEmptyUintIndent opType = 491 - opStructFieldHeadOmitEmptyUint8Indent opType = 492 - opStructFieldHeadOmitEmptyUint16Indent opType = 493 - opStructFieldHeadOmitEmptyUint32Indent opType = 494 - opStructFieldHeadOmitEmptyUint64Indent opType = 495 - opStructFieldHeadOmitEmptyFloat32Indent opType = 496 - opStructFieldHeadOmitEmptyFloat64Indent opType = 497 - opStructFieldHeadOmitEmptyBoolIndent opType = 498 - opStructFieldHeadOmitEmptyStringIndent opType = 499 - opStructFieldHeadOmitEmptyBytesIndent opType = 500 - opStructFieldHeadOmitEmptyArrayIndent opType = 501 - opStructFieldHeadOmitEmptyMapIndent opType = 502 - opStructFieldHeadOmitEmptyMapLoadIndent opType = 503 - opStructFieldHeadOmitEmptySliceIndent opType = 504 - opStructFieldHeadOmitEmptyStructIndent opType = 505 - opStructFieldHeadOmitEmptyMarshalJSONIndent opType = 506 - opStructFieldHeadOmitEmptyMarshalTextIndent opType = 507 - opStructFieldHeadStringTagIntIndent opType = 508 - opStructFieldHeadStringTagInt8Indent opType = 509 - opStructFieldHeadStringTagInt16Indent opType = 510 - opStructFieldHeadStringTagInt32Indent opType = 511 - opStructFieldHeadStringTagInt64Indent opType = 512 - opStructFieldHeadStringTagUintIndent opType = 513 - opStructFieldHeadStringTagUint8Indent opType = 514 - opStructFieldHeadStringTagUint16Indent opType = 515 - opStructFieldHeadStringTagUint32Indent opType = 516 - opStructFieldHeadStringTagUint64Indent opType = 517 - opStructFieldHeadStringTagFloat32Indent opType = 518 - opStructFieldHeadStringTagFloat64Indent opType = 519 - opStructFieldHeadStringTagBoolIndent opType = 520 - opStructFieldHeadStringTagStringIndent opType = 521 - opStructFieldHeadStringTagBytesIndent opType = 522 - opStructFieldHeadStringTagArrayIndent opType = 523 - opStructFieldHeadStringTagMapIndent opType = 524 - opStructFieldHeadStringTagMapLoadIndent opType = 525 - opStructFieldHeadStringTagSliceIndent opType = 526 - opStructFieldHeadStringTagStructIndent opType = 527 - opStructFieldHeadStringTagMarshalJSONIndent opType = 528 - opStructFieldHeadStringTagMarshalTextIndent opType = 529 - opStructFieldAnonymousHeadIntIndent opType = 530 - opStructFieldAnonymousHeadInt8Indent opType = 531 - opStructFieldAnonymousHeadInt16Indent opType = 532 - opStructFieldAnonymousHeadInt32Indent opType = 533 - opStructFieldAnonymousHeadInt64Indent opType = 534 - opStructFieldAnonymousHeadUintIndent opType = 535 - opStructFieldAnonymousHeadUint8Indent opType = 536 - opStructFieldAnonymousHeadUint16Indent opType = 537 - opStructFieldAnonymousHeadUint32Indent opType = 538 - opStructFieldAnonymousHeadUint64Indent opType = 539 - opStructFieldAnonymousHeadFloat32Indent opType = 540 - opStructFieldAnonymousHeadFloat64Indent opType = 541 - opStructFieldAnonymousHeadBoolIndent opType = 542 - opStructFieldAnonymousHeadStringIndent opType = 543 - opStructFieldAnonymousHeadBytesIndent opType = 544 - opStructFieldAnonymousHeadArrayIndent opType = 545 - opStructFieldAnonymousHeadMapIndent opType = 546 - opStructFieldAnonymousHeadMapLoadIndent opType = 547 - opStructFieldAnonymousHeadSliceIndent opType = 548 - opStructFieldAnonymousHeadStructIndent opType = 549 - opStructFieldAnonymousHeadMarshalJSONIndent opType = 550 - opStructFieldAnonymousHeadMarshalTextIndent opType = 551 - opStructFieldAnonymousHeadOmitEmptyIntIndent opType = 552 - opStructFieldAnonymousHeadOmitEmptyInt8Indent opType = 553 - opStructFieldAnonymousHeadOmitEmptyInt16Indent opType = 554 - opStructFieldAnonymousHeadOmitEmptyInt32Indent opType = 555 - opStructFieldAnonymousHeadOmitEmptyInt64Indent opType = 556 - opStructFieldAnonymousHeadOmitEmptyUintIndent opType = 557 - opStructFieldAnonymousHeadOmitEmptyUint8Indent opType = 558 - opStructFieldAnonymousHeadOmitEmptyUint16Indent opType = 559 - opStructFieldAnonymousHeadOmitEmptyUint32Indent opType = 560 - opStructFieldAnonymousHeadOmitEmptyUint64Indent opType = 561 - opStructFieldAnonymousHeadOmitEmptyFloat32Indent opType = 562 - opStructFieldAnonymousHeadOmitEmptyFloat64Indent opType = 563 - opStructFieldAnonymousHeadOmitEmptyBoolIndent opType = 564 - opStructFieldAnonymousHeadOmitEmptyStringIndent opType = 565 - opStructFieldAnonymousHeadOmitEmptyBytesIndent opType = 566 - opStructFieldAnonymousHeadOmitEmptyArrayIndent opType = 567 - opStructFieldAnonymousHeadOmitEmptyMapIndent opType = 568 - opStructFieldAnonymousHeadOmitEmptyMapLoadIndent opType = 569 - opStructFieldAnonymousHeadOmitEmptySliceIndent opType = 570 - opStructFieldAnonymousHeadOmitEmptyStructIndent opType = 571 - opStructFieldAnonymousHeadOmitEmptyMarshalJSONIndent opType = 572 - opStructFieldAnonymousHeadOmitEmptyMarshalTextIndent opType = 573 - opStructFieldAnonymousHeadStringTagIntIndent opType = 574 - opStructFieldAnonymousHeadStringTagInt8Indent opType = 575 - opStructFieldAnonymousHeadStringTagInt16Indent opType = 576 - opStructFieldAnonymousHeadStringTagInt32Indent opType = 577 - opStructFieldAnonymousHeadStringTagInt64Indent opType = 578 - opStructFieldAnonymousHeadStringTagUintIndent opType = 579 - opStructFieldAnonymousHeadStringTagUint8Indent opType = 580 - opStructFieldAnonymousHeadStringTagUint16Indent opType = 581 - opStructFieldAnonymousHeadStringTagUint32Indent opType = 582 - opStructFieldAnonymousHeadStringTagUint64Indent opType = 583 - opStructFieldAnonymousHeadStringTagFloat32Indent opType = 584 - opStructFieldAnonymousHeadStringTagFloat64Indent opType = 585 - opStructFieldAnonymousHeadStringTagBoolIndent opType = 586 - opStructFieldAnonymousHeadStringTagStringIndent opType = 587 - opStructFieldAnonymousHeadStringTagBytesIndent opType = 588 - opStructFieldAnonymousHeadStringTagArrayIndent opType = 589 - opStructFieldAnonymousHeadStringTagMapIndent opType = 590 - opStructFieldAnonymousHeadStringTagMapLoadIndent opType = 591 - opStructFieldAnonymousHeadStringTagSliceIndent opType = 592 - opStructFieldAnonymousHeadStringTagStructIndent opType = 593 - opStructFieldAnonymousHeadStringTagMarshalJSONIndent opType = 594 - opStructFieldAnonymousHeadStringTagMarshalTextIndent opType = 595 - opStructFieldPtrHeadIntIndent opType = 596 - opStructFieldPtrHeadInt8Indent opType = 597 - opStructFieldPtrHeadInt16Indent opType = 598 - opStructFieldPtrHeadInt32Indent opType = 599 - opStructFieldPtrHeadInt64Indent opType = 600 - opStructFieldPtrHeadUintIndent opType = 601 - opStructFieldPtrHeadUint8Indent opType = 602 - opStructFieldPtrHeadUint16Indent opType = 603 - opStructFieldPtrHeadUint32Indent opType = 604 - opStructFieldPtrHeadUint64Indent opType = 605 - opStructFieldPtrHeadFloat32Indent opType = 606 - opStructFieldPtrHeadFloat64Indent opType = 607 - opStructFieldPtrHeadBoolIndent opType = 608 - opStructFieldPtrHeadStringIndent opType = 609 - opStructFieldPtrHeadBytesIndent opType = 610 - opStructFieldPtrHeadArrayIndent opType = 611 - opStructFieldPtrHeadMapIndent opType = 612 - opStructFieldPtrHeadMapLoadIndent opType = 613 - opStructFieldPtrHeadSliceIndent opType = 614 - opStructFieldPtrHeadStructIndent opType = 615 - opStructFieldPtrHeadMarshalJSONIndent opType = 616 - opStructFieldPtrHeadMarshalTextIndent opType = 617 - opStructFieldPtrHeadOmitEmptyIntIndent opType = 618 - opStructFieldPtrHeadOmitEmptyInt8Indent opType = 619 - opStructFieldPtrHeadOmitEmptyInt16Indent opType = 620 - opStructFieldPtrHeadOmitEmptyInt32Indent opType = 621 - opStructFieldPtrHeadOmitEmptyInt64Indent opType = 622 - opStructFieldPtrHeadOmitEmptyUintIndent opType = 623 - opStructFieldPtrHeadOmitEmptyUint8Indent opType = 624 - opStructFieldPtrHeadOmitEmptyUint16Indent opType = 625 - opStructFieldPtrHeadOmitEmptyUint32Indent opType = 626 - opStructFieldPtrHeadOmitEmptyUint64Indent opType = 627 - opStructFieldPtrHeadOmitEmptyFloat32Indent opType = 628 - opStructFieldPtrHeadOmitEmptyFloat64Indent opType = 629 - opStructFieldPtrHeadOmitEmptyBoolIndent opType = 630 - opStructFieldPtrHeadOmitEmptyStringIndent opType = 631 - opStructFieldPtrHeadOmitEmptyBytesIndent opType = 632 - opStructFieldPtrHeadOmitEmptyArrayIndent opType = 633 - opStructFieldPtrHeadOmitEmptyMapIndent opType = 634 - opStructFieldPtrHeadOmitEmptyMapLoadIndent opType = 635 - opStructFieldPtrHeadOmitEmptySliceIndent opType = 636 - opStructFieldPtrHeadOmitEmptyStructIndent opType = 637 - opStructFieldPtrHeadOmitEmptyMarshalJSONIndent opType = 638 - opStructFieldPtrHeadOmitEmptyMarshalTextIndent opType = 639 - opStructFieldPtrHeadStringTagIntIndent opType = 640 - opStructFieldPtrHeadStringTagInt8Indent opType = 641 - opStructFieldPtrHeadStringTagInt16Indent opType = 642 - opStructFieldPtrHeadStringTagInt32Indent opType = 643 - opStructFieldPtrHeadStringTagInt64Indent opType = 644 - opStructFieldPtrHeadStringTagUintIndent opType = 645 - opStructFieldPtrHeadStringTagUint8Indent opType = 646 - opStructFieldPtrHeadStringTagUint16Indent opType = 647 - opStructFieldPtrHeadStringTagUint32Indent opType = 648 - opStructFieldPtrHeadStringTagUint64Indent opType = 649 - opStructFieldPtrHeadStringTagFloat32Indent opType = 650 - opStructFieldPtrHeadStringTagFloat64Indent opType = 651 - opStructFieldPtrHeadStringTagBoolIndent opType = 652 - opStructFieldPtrHeadStringTagStringIndent opType = 653 - opStructFieldPtrHeadStringTagBytesIndent opType = 654 - opStructFieldPtrHeadStringTagArrayIndent opType = 655 - opStructFieldPtrHeadStringTagMapIndent opType = 656 - opStructFieldPtrHeadStringTagMapLoadIndent opType = 657 - opStructFieldPtrHeadStringTagSliceIndent opType = 658 - opStructFieldPtrHeadStringTagStructIndent opType = 659 - opStructFieldPtrHeadStringTagMarshalJSONIndent opType = 660 - opStructFieldPtrHeadStringTagMarshalTextIndent opType = 661 - opStructFieldPtrAnonymousHeadIntIndent opType = 662 - opStructFieldPtrAnonymousHeadInt8Indent opType = 663 - opStructFieldPtrAnonymousHeadInt16Indent opType = 664 - opStructFieldPtrAnonymousHeadInt32Indent opType = 665 - opStructFieldPtrAnonymousHeadInt64Indent opType = 666 - opStructFieldPtrAnonymousHeadUintIndent opType = 667 - opStructFieldPtrAnonymousHeadUint8Indent opType = 668 - opStructFieldPtrAnonymousHeadUint16Indent opType = 669 - opStructFieldPtrAnonymousHeadUint32Indent opType = 670 - opStructFieldPtrAnonymousHeadUint64Indent opType = 671 - opStructFieldPtrAnonymousHeadFloat32Indent opType = 672 - opStructFieldPtrAnonymousHeadFloat64Indent opType = 673 - opStructFieldPtrAnonymousHeadBoolIndent opType = 674 - opStructFieldPtrAnonymousHeadStringIndent opType = 675 - opStructFieldPtrAnonymousHeadBytesIndent opType = 676 - opStructFieldPtrAnonymousHeadArrayIndent opType = 677 - opStructFieldPtrAnonymousHeadMapIndent opType = 678 - opStructFieldPtrAnonymousHeadMapLoadIndent opType = 679 - opStructFieldPtrAnonymousHeadSliceIndent opType = 680 - opStructFieldPtrAnonymousHeadStructIndent opType = 681 - opStructFieldPtrAnonymousHeadMarshalJSONIndent opType = 682 - opStructFieldPtrAnonymousHeadMarshalTextIndent opType = 683 - opStructFieldPtrAnonymousHeadOmitEmptyIntIndent opType = 684 - opStructFieldPtrAnonymousHeadOmitEmptyInt8Indent opType = 685 - opStructFieldPtrAnonymousHeadOmitEmptyInt16Indent opType = 686 - opStructFieldPtrAnonymousHeadOmitEmptyInt32Indent opType = 687 - opStructFieldPtrAnonymousHeadOmitEmptyInt64Indent opType = 688 - opStructFieldPtrAnonymousHeadOmitEmptyUintIndent opType = 689 - opStructFieldPtrAnonymousHeadOmitEmptyUint8Indent opType = 690 - opStructFieldPtrAnonymousHeadOmitEmptyUint16Indent opType = 691 - opStructFieldPtrAnonymousHeadOmitEmptyUint32Indent opType = 692 - opStructFieldPtrAnonymousHeadOmitEmptyUint64Indent opType = 693 - opStructFieldPtrAnonymousHeadOmitEmptyFloat32Indent opType = 694 - opStructFieldPtrAnonymousHeadOmitEmptyFloat64Indent opType = 695 - opStructFieldPtrAnonymousHeadOmitEmptyBoolIndent opType = 696 - opStructFieldPtrAnonymousHeadOmitEmptyStringIndent opType = 697 - opStructFieldPtrAnonymousHeadOmitEmptyBytesIndent opType = 698 - opStructFieldPtrAnonymousHeadOmitEmptyArrayIndent opType = 699 - opStructFieldPtrAnonymousHeadOmitEmptyMapIndent opType = 700 - opStructFieldPtrAnonymousHeadOmitEmptyMapLoadIndent opType = 701 - opStructFieldPtrAnonymousHeadOmitEmptySliceIndent opType = 702 - opStructFieldPtrAnonymousHeadOmitEmptyStructIndent opType = 703 - opStructFieldPtrAnonymousHeadOmitEmptyMarshalJSONIndent opType = 704 - opStructFieldPtrAnonymousHeadOmitEmptyMarshalTextIndent opType = 705 - opStructFieldPtrAnonymousHeadStringTagIntIndent opType = 706 - opStructFieldPtrAnonymousHeadStringTagInt8Indent opType = 707 - opStructFieldPtrAnonymousHeadStringTagInt16Indent opType = 708 - opStructFieldPtrAnonymousHeadStringTagInt32Indent opType = 709 - opStructFieldPtrAnonymousHeadStringTagInt64Indent opType = 710 - opStructFieldPtrAnonymousHeadStringTagUintIndent opType = 711 - opStructFieldPtrAnonymousHeadStringTagUint8Indent opType = 712 - opStructFieldPtrAnonymousHeadStringTagUint16Indent opType = 713 - opStructFieldPtrAnonymousHeadStringTagUint32Indent opType = 714 - opStructFieldPtrAnonymousHeadStringTagUint64Indent opType = 715 - opStructFieldPtrAnonymousHeadStringTagFloat32Indent opType = 716 - opStructFieldPtrAnonymousHeadStringTagFloat64Indent opType = 717 - opStructFieldPtrAnonymousHeadStringTagBoolIndent opType = 718 - opStructFieldPtrAnonymousHeadStringTagStringIndent opType = 719 - opStructFieldPtrAnonymousHeadStringTagBytesIndent opType = 720 - opStructFieldPtrAnonymousHeadStringTagArrayIndent opType = 721 - opStructFieldPtrAnonymousHeadStringTagMapIndent opType = 722 - opStructFieldPtrAnonymousHeadStringTagMapLoadIndent opType = 723 - opStructFieldPtrAnonymousHeadStringTagSliceIndent opType = 724 - opStructFieldPtrAnonymousHeadStringTagStructIndent opType = 725 - opStructFieldPtrAnonymousHeadStringTagMarshalJSONIndent opType = 726 - opStructFieldPtrAnonymousHeadStringTagMarshalTextIndent opType = 727 - opStructFieldIntIndent opType = 728 - opStructFieldInt8Indent opType = 729 - opStructFieldInt16Indent opType = 730 - opStructFieldInt32Indent opType = 731 - opStructFieldInt64Indent opType = 732 - opStructFieldUintIndent opType = 733 - opStructFieldUint8Indent opType = 734 - opStructFieldUint16Indent opType = 735 - opStructFieldUint32Indent opType = 736 - opStructFieldUint64Indent opType = 737 - opStructFieldFloat32Indent opType = 738 - opStructFieldFloat64Indent opType = 739 - opStructFieldBoolIndent opType = 740 - opStructFieldStringIndent opType = 741 - opStructFieldBytesIndent opType = 742 - opStructFieldArrayIndent opType = 743 - opStructFieldMapIndent opType = 744 - opStructFieldMapLoadIndent opType = 745 - opStructFieldSliceIndent opType = 746 - opStructFieldStructIndent opType = 747 - opStructFieldMarshalJSONIndent opType = 748 - opStructFieldMarshalTextIndent opType = 749 - opStructFieldOmitEmptyIntIndent opType = 750 - opStructFieldOmitEmptyInt8Indent opType = 751 - opStructFieldOmitEmptyInt16Indent opType = 752 - opStructFieldOmitEmptyInt32Indent opType = 753 - opStructFieldOmitEmptyInt64Indent opType = 754 - opStructFieldOmitEmptyUintIndent opType = 755 - opStructFieldOmitEmptyUint8Indent opType = 756 - opStructFieldOmitEmptyUint16Indent opType = 757 - opStructFieldOmitEmptyUint32Indent opType = 758 - opStructFieldOmitEmptyUint64Indent opType = 759 - opStructFieldOmitEmptyFloat32Indent opType = 760 - opStructFieldOmitEmptyFloat64Indent opType = 761 - opStructFieldOmitEmptyBoolIndent opType = 762 - opStructFieldOmitEmptyStringIndent opType = 763 - opStructFieldOmitEmptyBytesIndent opType = 764 - opStructFieldOmitEmptyArrayIndent opType = 765 - opStructFieldOmitEmptyMapIndent opType = 766 - opStructFieldOmitEmptyMapLoadIndent opType = 767 - opStructFieldOmitEmptySliceIndent opType = 768 - opStructFieldOmitEmptyStructIndent opType = 769 - opStructFieldOmitEmptyMarshalJSONIndent opType = 770 - opStructFieldOmitEmptyMarshalTextIndent opType = 771 - opStructFieldStringTagIntIndent opType = 772 - opStructFieldStringTagInt8Indent opType = 773 - opStructFieldStringTagInt16Indent opType = 774 - opStructFieldStringTagInt32Indent opType = 775 - opStructFieldStringTagInt64Indent opType = 776 - opStructFieldStringTagUintIndent opType = 777 - opStructFieldStringTagUint8Indent opType = 778 - opStructFieldStringTagUint16Indent opType = 779 - opStructFieldStringTagUint32Indent opType = 780 - opStructFieldStringTagUint64Indent opType = 781 - opStructFieldStringTagFloat32Indent opType = 782 - opStructFieldStringTagFloat64Indent opType = 783 - opStructFieldStringTagBoolIndent opType = 784 - opStructFieldStringTagStringIndent opType = 785 - opStructFieldStringTagBytesIndent opType = 786 - opStructFieldStringTagArrayIndent opType = 787 - opStructFieldStringTagMapIndent opType = 788 - opStructFieldStringTagMapLoadIndent opType = 789 - opStructFieldStringTagSliceIndent opType = 790 - opStructFieldStringTagStructIndent opType = 791 - opStructFieldStringTagMarshalJSONIndent opType = 792 - opStructFieldStringTagMarshalTextIndent opType = 793 + opStructFieldHead opType = 19 + opStructFieldHeadOmitEmpty opType = 20 + opStructFieldHeadStringTag opType = 21 + opStructFieldAnonymousHead opType = 22 + opStructFieldAnonymousHeadOmitEmpty opType = 23 + opStructFieldPtrAnonymousHeadOmitEmpty opType = 24 + opStructFieldAnonymousHeadStringTag opType = 25 + opStructFieldPtrAnonymousHeadStringTag opType = 26 + opStructFieldPtrHead opType = 27 + opStructFieldPtrHeadOmitEmpty opType = 28 + opStructFieldPtrHeadStringTag opType = 29 + opStructFieldPtrAnonymousHead opType = 30 + opStructField opType = 31 + opStructFieldOmitEmpty opType = 32 + opStructFieldStringTag opType = 33 + opStructFieldRecursive opType = 34 + opStructFieldRecursiveEnd opType = 35 + opStructEnd opType = 36 + opStructAnonymousEnd opType = 37 + opInt opType = 38 + opInt8 opType = 39 + opInt16 opType = 40 + opInt32 opType = 41 + opInt64 opType = 42 + opUint opType = 43 + opUint8 opType = 44 + opUint16 opType = 45 + opUint32 opType = 46 + opUint64 opType = 47 + opFloat32 opType = 48 + opFloat64 opType = 49 + opBool opType = 50 + opString opType = 51 + opBytes opType = 52 + opArray opType = 53 + opMap opType = 54 + opMapLoad opType = 55 + opSlice opType = 56 + opStruct opType = 57 + opMarshalJSON opType = 58 + opMarshalText opType = 59 + opStructFieldHeadInt opType = 60 + opStructFieldHeadInt8 opType = 61 + opStructFieldHeadInt16 opType = 62 + opStructFieldHeadInt32 opType = 63 + opStructFieldHeadInt64 opType = 64 + opStructFieldHeadUint opType = 65 + opStructFieldHeadUint8 opType = 66 + opStructFieldHeadUint16 opType = 67 + opStructFieldHeadUint32 opType = 68 + opStructFieldHeadUint64 opType = 69 + opStructFieldHeadFloat32 opType = 70 + opStructFieldHeadFloat64 opType = 71 + opStructFieldHeadBool opType = 72 + opStructFieldHeadString opType = 73 + opStructFieldHeadBytes opType = 74 + opStructFieldHeadArray opType = 75 + opStructFieldHeadMap opType = 76 + opStructFieldHeadMapLoad opType = 77 + opStructFieldHeadSlice opType = 78 + opStructFieldHeadStruct opType = 79 + opStructFieldHeadMarshalJSON opType = 80 + opStructFieldHeadMarshalText opType = 81 + opStructFieldHeadOmitEmptyInt opType = 82 + opStructFieldHeadOmitEmptyInt8 opType = 83 + opStructFieldHeadOmitEmptyInt16 opType = 84 + opStructFieldHeadOmitEmptyInt32 opType = 85 + opStructFieldHeadOmitEmptyInt64 opType = 86 + opStructFieldHeadOmitEmptyUint opType = 87 + opStructFieldHeadOmitEmptyUint8 opType = 88 + opStructFieldHeadOmitEmptyUint16 opType = 89 + opStructFieldHeadOmitEmptyUint32 opType = 90 + opStructFieldHeadOmitEmptyUint64 opType = 91 + opStructFieldHeadOmitEmptyFloat32 opType = 92 + opStructFieldHeadOmitEmptyFloat64 opType = 93 + opStructFieldHeadOmitEmptyBool opType = 94 + opStructFieldHeadOmitEmptyString opType = 95 + opStructFieldHeadOmitEmptyBytes opType = 96 + opStructFieldHeadOmitEmptyArray opType = 97 + opStructFieldHeadOmitEmptyMap opType = 98 + opStructFieldHeadOmitEmptyMapLoad opType = 99 + opStructFieldHeadOmitEmptySlice opType = 100 + opStructFieldHeadOmitEmptyStruct opType = 101 + opStructFieldHeadOmitEmptyMarshalJSON opType = 102 + opStructFieldHeadOmitEmptyMarshalText opType = 103 + opStructFieldHeadStringTagInt opType = 104 + opStructFieldHeadStringTagInt8 opType = 105 + opStructFieldHeadStringTagInt16 opType = 106 + opStructFieldHeadStringTagInt32 opType = 107 + opStructFieldHeadStringTagInt64 opType = 108 + opStructFieldHeadStringTagUint opType = 109 + opStructFieldHeadStringTagUint8 opType = 110 + opStructFieldHeadStringTagUint16 opType = 111 + opStructFieldHeadStringTagUint32 opType = 112 + opStructFieldHeadStringTagUint64 opType = 113 + opStructFieldHeadStringTagFloat32 opType = 114 + opStructFieldHeadStringTagFloat64 opType = 115 + opStructFieldHeadStringTagBool opType = 116 + opStructFieldHeadStringTagString opType = 117 + opStructFieldHeadStringTagBytes opType = 118 + opStructFieldHeadStringTagArray opType = 119 + opStructFieldHeadStringTagMap opType = 120 + opStructFieldHeadStringTagMapLoad opType = 121 + opStructFieldHeadStringTagSlice opType = 122 + opStructFieldHeadStringTagStruct opType = 123 + opStructFieldHeadStringTagMarshalJSON opType = 124 + opStructFieldHeadStringTagMarshalText opType = 125 + opStructFieldAnonymousHeadInt opType = 126 + opStructFieldAnonymousHeadInt8 opType = 127 + opStructFieldAnonymousHeadInt16 opType = 128 + opStructFieldAnonymousHeadInt32 opType = 129 + opStructFieldAnonymousHeadInt64 opType = 130 + opStructFieldAnonymousHeadUint opType = 131 + opStructFieldAnonymousHeadUint8 opType = 132 + opStructFieldAnonymousHeadUint16 opType = 133 + opStructFieldAnonymousHeadUint32 opType = 134 + opStructFieldAnonymousHeadUint64 opType = 135 + opStructFieldAnonymousHeadFloat32 opType = 136 + opStructFieldAnonymousHeadFloat64 opType = 137 + opStructFieldAnonymousHeadBool opType = 138 + opStructFieldAnonymousHeadString opType = 139 + opStructFieldAnonymousHeadBytes opType = 140 + opStructFieldAnonymousHeadArray opType = 141 + opStructFieldAnonymousHeadMap opType = 142 + opStructFieldAnonymousHeadMapLoad opType = 143 + opStructFieldAnonymousHeadSlice opType = 144 + opStructFieldAnonymousHeadStruct opType = 145 + opStructFieldAnonymousHeadMarshalJSON opType = 146 + opStructFieldAnonymousHeadMarshalText opType = 147 + opStructFieldAnonymousHeadOmitEmptyInt opType = 148 + opStructFieldAnonymousHeadOmitEmptyInt8 opType = 149 + opStructFieldAnonymousHeadOmitEmptyInt16 opType = 150 + opStructFieldAnonymousHeadOmitEmptyInt32 opType = 151 + opStructFieldAnonymousHeadOmitEmptyInt64 opType = 152 + opStructFieldAnonymousHeadOmitEmptyUint opType = 153 + opStructFieldAnonymousHeadOmitEmptyUint8 opType = 154 + opStructFieldAnonymousHeadOmitEmptyUint16 opType = 155 + opStructFieldAnonymousHeadOmitEmptyUint32 opType = 156 + opStructFieldAnonymousHeadOmitEmptyUint64 opType = 157 + opStructFieldAnonymousHeadOmitEmptyFloat32 opType = 158 + opStructFieldAnonymousHeadOmitEmptyFloat64 opType = 159 + opStructFieldAnonymousHeadOmitEmptyBool opType = 160 + opStructFieldAnonymousHeadOmitEmptyString opType = 161 + opStructFieldAnonymousHeadOmitEmptyBytes opType = 162 + opStructFieldAnonymousHeadOmitEmptyArray opType = 163 + opStructFieldAnonymousHeadOmitEmptyMap opType = 164 + opStructFieldAnonymousHeadOmitEmptyMapLoad opType = 165 + opStructFieldAnonymousHeadOmitEmptySlice opType = 166 + opStructFieldAnonymousHeadOmitEmptyStruct opType = 167 + opStructFieldAnonymousHeadOmitEmptyMarshalJSON opType = 168 + opStructFieldAnonymousHeadOmitEmptyMarshalText opType = 169 + opStructFieldAnonymousHeadStringTagInt opType = 170 + opStructFieldAnonymousHeadStringTagInt8 opType = 171 + opStructFieldAnonymousHeadStringTagInt16 opType = 172 + opStructFieldAnonymousHeadStringTagInt32 opType = 173 + opStructFieldAnonymousHeadStringTagInt64 opType = 174 + opStructFieldAnonymousHeadStringTagUint opType = 175 + opStructFieldAnonymousHeadStringTagUint8 opType = 176 + opStructFieldAnonymousHeadStringTagUint16 opType = 177 + opStructFieldAnonymousHeadStringTagUint32 opType = 178 + opStructFieldAnonymousHeadStringTagUint64 opType = 179 + opStructFieldAnonymousHeadStringTagFloat32 opType = 180 + opStructFieldAnonymousHeadStringTagFloat64 opType = 181 + opStructFieldAnonymousHeadStringTagBool opType = 182 + opStructFieldAnonymousHeadStringTagString opType = 183 + opStructFieldAnonymousHeadStringTagBytes opType = 184 + opStructFieldAnonymousHeadStringTagArray opType = 185 + opStructFieldAnonymousHeadStringTagMap opType = 186 + opStructFieldAnonymousHeadStringTagMapLoad opType = 187 + opStructFieldAnonymousHeadStringTagSlice opType = 188 + opStructFieldAnonymousHeadStringTagStruct opType = 189 + opStructFieldAnonymousHeadStringTagMarshalJSON opType = 190 + opStructFieldAnonymousHeadStringTagMarshalText opType = 191 + opStructFieldPtrHeadInt opType = 192 + opStructFieldPtrHeadInt8 opType = 193 + opStructFieldPtrHeadInt16 opType = 194 + opStructFieldPtrHeadInt32 opType = 195 + opStructFieldPtrHeadInt64 opType = 196 + opStructFieldPtrHeadUint opType = 197 + opStructFieldPtrHeadUint8 opType = 198 + opStructFieldPtrHeadUint16 opType = 199 + opStructFieldPtrHeadUint32 opType = 200 + opStructFieldPtrHeadUint64 opType = 201 + opStructFieldPtrHeadFloat32 opType = 202 + opStructFieldPtrHeadFloat64 opType = 203 + opStructFieldPtrHeadBool opType = 204 + opStructFieldPtrHeadString opType = 205 + opStructFieldPtrHeadBytes opType = 206 + opStructFieldPtrHeadArray opType = 207 + opStructFieldPtrHeadMap opType = 208 + opStructFieldPtrHeadMapLoad opType = 209 + opStructFieldPtrHeadSlice opType = 210 + opStructFieldPtrHeadStruct opType = 211 + opStructFieldPtrHeadMarshalJSON opType = 212 + opStructFieldPtrHeadMarshalText opType = 213 + opStructFieldPtrHeadOmitEmptyInt opType = 214 + opStructFieldPtrHeadOmitEmptyInt8 opType = 215 + opStructFieldPtrHeadOmitEmptyInt16 opType = 216 + opStructFieldPtrHeadOmitEmptyInt32 opType = 217 + opStructFieldPtrHeadOmitEmptyInt64 opType = 218 + opStructFieldPtrHeadOmitEmptyUint opType = 219 + opStructFieldPtrHeadOmitEmptyUint8 opType = 220 + opStructFieldPtrHeadOmitEmptyUint16 opType = 221 + opStructFieldPtrHeadOmitEmptyUint32 opType = 222 + opStructFieldPtrHeadOmitEmptyUint64 opType = 223 + opStructFieldPtrHeadOmitEmptyFloat32 opType = 224 + opStructFieldPtrHeadOmitEmptyFloat64 opType = 225 + opStructFieldPtrHeadOmitEmptyBool opType = 226 + opStructFieldPtrHeadOmitEmptyString opType = 227 + opStructFieldPtrHeadOmitEmptyBytes opType = 228 + opStructFieldPtrHeadOmitEmptyArray opType = 229 + opStructFieldPtrHeadOmitEmptyMap opType = 230 + opStructFieldPtrHeadOmitEmptyMapLoad opType = 231 + opStructFieldPtrHeadOmitEmptySlice opType = 232 + opStructFieldPtrHeadOmitEmptyStruct opType = 233 + opStructFieldPtrHeadOmitEmptyMarshalJSON opType = 234 + opStructFieldPtrHeadOmitEmptyMarshalText opType = 235 + opStructFieldPtrHeadStringTagInt opType = 236 + opStructFieldPtrHeadStringTagInt8 opType = 237 + opStructFieldPtrHeadStringTagInt16 opType = 238 + opStructFieldPtrHeadStringTagInt32 opType = 239 + opStructFieldPtrHeadStringTagInt64 opType = 240 + opStructFieldPtrHeadStringTagUint opType = 241 + opStructFieldPtrHeadStringTagUint8 opType = 242 + opStructFieldPtrHeadStringTagUint16 opType = 243 + opStructFieldPtrHeadStringTagUint32 opType = 244 + opStructFieldPtrHeadStringTagUint64 opType = 245 + opStructFieldPtrHeadStringTagFloat32 opType = 246 + opStructFieldPtrHeadStringTagFloat64 opType = 247 + opStructFieldPtrHeadStringTagBool opType = 248 + opStructFieldPtrHeadStringTagString opType = 249 + opStructFieldPtrHeadStringTagBytes opType = 250 + opStructFieldPtrHeadStringTagArray opType = 251 + opStructFieldPtrHeadStringTagMap opType = 252 + opStructFieldPtrHeadStringTagMapLoad opType = 253 + opStructFieldPtrHeadStringTagSlice opType = 254 + opStructFieldPtrHeadStringTagStruct opType = 255 + opStructFieldPtrHeadStringTagMarshalJSON opType = 256 + opStructFieldPtrHeadStringTagMarshalText opType = 257 + opStructFieldPtrAnonymousHeadInt opType = 258 + opStructFieldPtrAnonymousHeadInt8 opType = 259 + opStructFieldPtrAnonymousHeadInt16 opType = 260 + opStructFieldPtrAnonymousHeadInt32 opType = 261 + opStructFieldPtrAnonymousHeadInt64 opType = 262 + opStructFieldPtrAnonymousHeadUint opType = 263 + opStructFieldPtrAnonymousHeadUint8 opType = 264 + opStructFieldPtrAnonymousHeadUint16 opType = 265 + opStructFieldPtrAnonymousHeadUint32 opType = 266 + opStructFieldPtrAnonymousHeadUint64 opType = 267 + opStructFieldPtrAnonymousHeadFloat32 opType = 268 + opStructFieldPtrAnonymousHeadFloat64 opType = 269 + opStructFieldPtrAnonymousHeadBool opType = 270 + opStructFieldPtrAnonymousHeadString opType = 271 + opStructFieldPtrAnonymousHeadBytes opType = 272 + opStructFieldPtrAnonymousHeadArray opType = 273 + opStructFieldPtrAnonymousHeadMap opType = 274 + opStructFieldPtrAnonymousHeadMapLoad opType = 275 + opStructFieldPtrAnonymousHeadSlice opType = 276 + opStructFieldPtrAnonymousHeadStruct opType = 277 + opStructFieldPtrAnonymousHeadMarshalJSON opType = 278 + opStructFieldPtrAnonymousHeadMarshalText opType = 279 + opStructFieldPtrAnonymousHeadOmitEmptyInt opType = 280 + opStructFieldPtrAnonymousHeadOmitEmptyInt8 opType = 281 + opStructFieldPtrAnonymousHeadOmitEmptyInt16 opType = 282 + opStructFieldPtrAnonymousHeadOmitEmptyInt32 opType = 283 + opStructFieldPtrAnonymousHeadOmitEmptyInt64 opType = 284 + opStructFieldPtrAnonymousHeadOmitEmptyUint opType = 285 + opStructFieldPtrAnonymousHeadOmitEmptyUint8 opType = 286 + opStructFieldPtrAnonymousHeadOmitEmptyUint16 opType = 287 + opStructFieldPtrAnonymousHeadOmitEmptyUint32 opType = 288 + opStructFieldPtrAnonymousHeadOmitEmptyUint64 opType = 289 + opStructFieldPtrAnonymousHeadOmitEmptyFloat32 opType = 290 + opStructFieldPtrAnonymousHeadOmitEmptyFloat64 opType = 291 + opStructFieldPtrAnonymousHeadOmitEmptyBool opType = 292 + opStructFieldPtrAnonymousHeadOmitEmptyString opType = 293 + opStructFieldPtrAnonymousHeadOmitEmptyBytes opType = 294 + opStructFieldPtrAnonymousHeadOmitEmptyArray opType = 295 + opStructFieldPtrAnonymousHeadOmitEmptyMap opType = 296 + opStructFieldPtrAnonymousHeadOmitEmptyMapLoad opType = 297 + opStructFieldPtrAnonymousHeadOmitEmptySlice opType = 298 + opStructFieldPtrAnonymousHeadOmitEmptyStruct opType = 299 + opStructFieldPtrAnonymousHeadOmitEmptyMarshalJSON opType = 300 + opStructFieldPtrAnonymousHeadOmitEmptyMarshalText opType = 301 + opStructFieldPtrAnonymousHeadStringTagInt opType = 302 + opStructFieldPtrAnonymousHeadStringTagInt8 opType = 303 + opStructFieldPtrAnonymousHeadStringTagInt16 opType = 304 + opStructFieldPtrAnonymousHeadStringTagInt32 opType = 305 + opStructFieldPtrAnonymousHeadStringTagInt64 opType = 306 + opStructFieldPtrAnonymousHeadStringTagUint opType = 307 + opStructFieldPtrAnonymousHeadStringTagUint8 opType = 308 + opStructFieldPtrAnonymousHeadStringTagUint16 opType = 309 + opStructFieldPtrAnonymousHeadStringTagUint32 opType = 310 + opStructFieldPtrAnonymousHeadStringTagUint64 opType = 311 + opStructFieldPtrAnonymousHeadStringTagFloat32 opType = 312 + opStructFieldPtrAnonymousHeadStringTagFloat64 opType = 313 + opStructFieldPtrAnonymousHeadStringTagBool opType = 314 + opStructFieldPtrAnonymousHeadStringTagString opType = 315 + opStructFieldPtrAnonymousHeadStringTagBytes opType = 316 + opStructFieldPtrAnonymousHeadStringTagArray opType = 317 + opStructFieldPtrAnonymousHeadStringTagMap opType = 318 + opStructFieldPtrAnonymousHeadStringTagMapLoad opType = 319 + opStructFieldPtrAnonymousHeadStringTagSlice opType = 320 + opStructFieldPtrAnonymousHeadStringTagStruct opType = 321 + opStructFieldPtrAnonymousHeadStringTagMarshalJSON opType = 322 + opStructFieldPtrAnonymousHeadStringTagMarshalText opType = 323 + opStructFieldInt opType = 324 + opStructFieldInt8 opType = 325 + opStructFieldInt16 opType = 326 + opStructFieldInt32 opType = 327 + opStructFieldInt64 opType = 328 + opStructFieldUint opType = 329 + opStructFieldUint8 opType = 330 + opStructFieldUint16 opType = 331 + opStructFieldUint32 opType = 332 + opStructFieldUint64 opType = 333 + opStructFieldFloat32 opType = 334 + opStructFieldFloat64 opType = 335 + opStructFieldBool opType = 336 + opStructFieldString opType = 337 + opStructFieldBytes opType = 338 + opStructFieldArray opType = 339 + opStructFieldMap opType = 340 + opStructFieldMapLoad opType = 341 + opStructFieldSlice opType = 342 + opStructFieldStruct opType = 343 + opStructFieldMarshalJSON opType = 344 + opStructFieldMarshalText opType = 345 + opStructFieldOmitEmptyInt opType = 346 + opStructFieldOmitEmptyInt8 opType = 347 + opStructFieldOmitEmptyInt16 opType = 348 + opStructFieldOmitEmptyInt32 opType = 349 + opStructFieldOmitEmptyInt64 opType = 350 + opStructFieldOmitEmptyUint opType = 351 + opStructFieldOmitEmptyUint8 opType = 352 + opStructFieldOmitEmptyUint16 opType = 353 + opStructFieldOmitEmptyUint32 opType = 354 + opStructFieldOmitEmptyUint64 opType = 355 + opStructFieldOmitEmptyFloat32 opType = 356 + opStructFieldOmitEmptyFloat64 opType = 357 + opStructFieldOmitEmptyBool opType = 358 + opStructFieldOmitEmptyString opType = 359 + opStructFieldOmitEmptyBytes opType = 360 + opStructFieldOmitEmptyArray opType = 361 + opStructFieldOmitEmptyMap opType = 362 + opStructFieldOmitEmptyMapLoad opType = 363 + opStructFieldOmitEmptySlice opType = 364 + opStructFieldOmitEmptyStruct opType = 365 + opStructFieldOmitEmptyMarshalJSON opType = 366 + opStructFieldOmitEmptyMarshalText opType = 367 + opStructFieldStringTagInt opType = 368 + opStructFieldStringTagInt8 opType = 369 + opStructFieldStringTagInt16 opType = 370 + opStructFieldStringTagInt32 opType = 371 + opStructFieldStringTagInt64 opType = 372 + opStructFieldStringTagUint opType = 373 + opStructFieldStringTagUint8 opType = 374 + opStructFieldStringTagUint16 opType = 375 + opStructFieldStringTagUint32 opType = 376 + opStructFieldStringTagUint64 opType = 377 + opStructFieldStringTagFloat32 opType = 378 + opStructFieldStringTagFloat64 opType = 379 + opStructFieldStringTagBool opType = 380 + opStructFieldStringTagString opType = 381 + opStructFieldStringTagBytes opType = 382 + opStructFieldStringTagArray opType = 383 + opStructFieldStringTagMap opType = 384 + opStructFieldStringTagMapLoad opType = 385 + opStructFieldStringTagSlice opType = 386 + opStructFieldStringTagStruct opType = 387 + opStructFieldStringTagMarshalJSON opType = 388 + opStructFieldStringTagMarshalText opType = 389 + opEndIndent opType = 390 + opInterfaceIndent opType = 391 + opInterfaceEndIndent opType = 392 + opPtrIndent opType = 393 + opSliceHeadIndent opType = 394 + opRootSliceHeadIndent opType = 395 + opSliceElemIndent opType = 396 + opRootSliceElemIndent opType = 397 + opSliceEndIndent opType = 398 + opArrayHeadIndent opType = 399 + opArrayElemIndent opType = 400 + opArrayEndIndent opType = 401 + opMapHeadIndent opType = 402 + opMapHeadLoadIndent opType = 403 + opRootMapHeadIndent opType = 404 + opMapKeyIndent opType = 405 + opRootMapKeyIndent opType = 406 + opMapValueIndent opType = 407 + opMapEndIndent opType = 408 + opStructFieldHeadIndent opType = 409 + opStructFieldHeadOmitEmptyIndent opType = 410 + opStructFieldHeadStringTagIndent opType = 411 + opStructFieldAnonymousHeadIndent opType = 412 + opStructFieldAnonymousHeadOmitEmptyIndent opType = 413 + opStructFieldPtrAnonymousHeadOmitEmptyIndent opType = 414 + opStructFieldAnonymousHeadStringTagIndent opType = 415 + opStructFieldPtrAnonymousHeadStringTagIndent opType = 416 + opStructFieldPtrHeadIndent opType = 417 + opStructFieldPtrHeadOmitEmptyIndent opType = 418 + opStructFieldPtrHeadStringTagIndent opType = 419 + opStructFieldPtrAnonymousHeadIndent opType = 420 + opStructFieldIndent opType = 421 + opStructFieldOmitEmptyIndent opType = 422 + opStructFieldStringTagIndent opType = 423 + opStructFieldRecursiveIndent opType = 424 + opStructFieldRecursiveEndIndent opType = 425 + opStructEndIndent opType = 426 + opStructAnonymousEndIndent opType = 427 + opIntIndent opType = 428 + opInt8Indent opType = 429 + opInt16Indent opType = 430 + opInt32Indent opType = 431 + opInt64Indent opType = 432 + opUintIndent opType = 433 + opUint8Indent opType = 434 + opUint16Indent opType = 435 + opUint32Indent opType = 436 + opUint64Indent opType = 437 + opFloat32Indent opType = 438 + opFloat64Indent opType = 439 + opBoolIndent opType = 440 + opStringIndent opType = 441 + opBytesIndent opType = 442 + opArrayIndent opType = 443 + opMapIndent opType = 444 + opMapLoadIndent opType = 445 + opSliceIndent opType = 446 + opStructIndent opType = 447 + opMarshalJSONIndent opType = 448 + opMarshalTextIndent opType = 449 + opStructFieldHeadIntIndent opType = 450 + opStructFieldHeadInt8Indent opType = 451 + opStructFieldHeadInt16Indent opType = 452 + opStructFieldHeadInt32Indent opType = 453 + opStructFieldHeadInt64Indent opType = 454 + opStructFieldHeadUintIndent opType = 455 + opStructFieldHeadUint8Indent opType = 456 + opStructFieldHeadUint16Indent opType = 457 + opStructFieldHeadUint32Indent opType = 458 + opStructFieldHeadUint64Indent opType = 459 + opStructFieldHeadFloat32Indent opType = 460 + opStructFieldHeadFloat64Indent opType = 461 + opStructFieldHeadBoolIndent opType = 462 + opStructFieldHeadStringIndent opType = 463 + opStructFieldHeadBytesIndent opType = 464 + opStructFieldHeadArrayIndent opType = 465 + opStructFieldHeadMapIndent opType = 466 + opStructFieldHeadMapLoadIndent opType = 467 + opStructFieldHeadSliceIndent opType = 468 + opStructFieldHeadStructIndent opType = 469 + opStructFieldHeadMarshalJSONIndent opType = 470 + opStructFieldHeadMarshalTextIndent opType = 471 + opStructFieldHeadOmitEmptyIntIndent opType = 472 + opStructFieldHeadOmitEmptyInt8Indent opType = 473 + opStructFieldHeadOmitEmptyInt16Indent opType = 474 + opStructFieldHeadOmitEmptyInt32Indent opType = 475 + opStructFieldHeadOmitEmptyInt64Indent opType = 476 + opStructFieldHeadOmitEmptyUintIndent opType = 477 + opStructFieldHeadOmitEmptyUint8Indent opType = 478 + opStructFieldHeadOmitEmptyUint16Indent opType = 479 + opStructFieldHeadOmitEmptyUint32Indent opType = 480 + opStructFieldHeadOmitEmptyUint64Indent opType = 481 + opStructFieldHeadOmitEmptyFloat32Indent opType = 482 + opStructFieldHeadOmitEmptyFloat64Indent opType = 483 + opStructFieldHeadOmitEmptyBoolIndent opType = 484 + opStructFieldHeadOmitEmptyStringIndent opType = 485 + opStructFieldHeadOmitEmptyBytesIndent opType = 486 + opStructFieldHeadOmitEmptyArrayIndent opType = 487 + opStructFieldHeadOmitEmptyMapIndent opType = 488 + opStructFieldHeadOmitEmptyMapLoadIndent opType = 489 + opStructFieldHeadOmitEmptySliceIndent opType = 490 + opStructFieldHeadOmitEmptyStructIndent opType = 491 + opStructFieldHeadOmitEmptyMarshalJSONIndent opType = 492 + opStructFieldHeadOmitEmptyMarshalTextIndent opType = 493 + opStructFieldHeadStringTagIntIndent opType = 494 + opStructFieldHeadStringTagInt8Indent opType = 495 + opStructFieldHeadStringTagInt16Indent opType = 496 + opStructFieldHeadStringTagInt32Indent opType = 497 + opStructFieldHeadStringTagInt64Indent opType = 498 + opStructFieldHeadStringTagUintIndent opType = 499 + opStructFieldHeadStringTagUint8Indent opType = 500 + opStructFieldHeadStringTagUint16Indent opType = 501 + opStructFieldHeadStringTagUint32Indent opType = 502 + opStructFieldHeadStringTagUint64Indent opType = 503 + opStructFieldHeadStringTagFloat32Indent opType = 504 + opStructFieldHeadStringTagFloat64Indent opType = 505 + opStructFieldHeadStringTagBoolIndent opType = 506 + opStructFieldHeadStringTagStringIndent opType = 507 + opStructFieldHeadStringTagBytesIndent opType = 508 + opStructFieldHeadStringTagArrayIndent opType = 509 + opStructFieldHeadStringTagMapIndent opType = 510 + opStructFieldHeadStringTagMapLoadIndent opType = 511 + opStructFieldHeadStringTagSliceIndent opType = 512 + opStructFieldHeadStringTagStructIndent opType = 513 + opStructFieldHeadStringTagMarshalJSONIndent opType = 514 + opStructFieldHeadStringTagMarshalTextIndent opType = 515 + opStructFieldAnonymousHeadIntIndent opType = 516 + opStructFieldAnonymousHeadInt8Indent opType = 517 + opStructFieldAnonymousHeadInt16Indent opType = 518 + opStructFieldAnonymousHeadInt32Indent opType = 519 + opStructFieldAnonymousHeadInt64Indent opType = 520 + opStructFieldAnonymousHeadUintIndent opType = 521 + opStructFieldAnonymousHeadUint8Indent opType = 522 + opStructFieldAnonymousHeadUint16Indent opType = 523 + opStructFieldAnonymousHeadUint32Indent opType = 524 + opStructFieldAnonymousHeadUint64Indent opType = 525 + opStructFieldAnonymousHeadFloat32Indent opType = 526 + opStructFieldAnonymousHeadFloat64Indent opType = 527 + opStructFieldAnonymousHeadBoolIndent opType = 528 + opStructFieldAnonymousHeadStringIndent opType = 529 + opStructFieldAnonymousHeadBytesIndent opType = 530 + opStructFieldAnonymousHeadArrayIndent opType = 531 + opStructFieldAnonymousHeadMapIndent opType = 532 + opStructFieldAnonymousHeadMapLoadIndent opType = 533 + opStructFieldAnonymousHeadSliceIndent opType = 534 + opStructFieldAnonymousHeadStructIndent opType = 535 + opStructFieldAnonymousHeadMarshalJSONIndent opType = 536 + opStructFieldAnonymousHeadMarshalTextIndent opType = 537 + opStructFieldAnonymousHeadOmitEmptyIntIndent opType = 538 + opStructFieldAnonymousHeadOmitEmptyInt8Indent opType = 539 + opStructFieldAnonymousHeadOmitEmptyInt16Indent opType = 540 + opStructFieldAnonymousHeadOmitEmptyInt32Indent opType = 541 + opStructFieldAnonymousHeadOmitEmptyInt64Indent opType = 542 + opStructFieldAnonymousHeadOmitEmptyUintIndent opType = 543 + opStructFieldAnonymousHeadOmitEmptyUint8Indent opType = 544 + opStructFieldAnonymousHeadOmitEmptyUint16Indent opType = 545 + opStructFieldAnonymousHeadOmitEmptyUint32Indent opType = 546 + opStructFieldAnonymousHeadOmitEmptyUint64Indent opType = 547 + opStructFieldAnonymousHeadOmitEmptyFloat32Indent opType = 548 + opStructFieldAnonymousHeadOmitEmptyFloat64Indent opType = 549 + opStructFieldAnonymousHeadOmitEmptyBoolIndent opType = 550 + opStructFieldAnonymousHeadOmitEmptyStringIndent opType = 551 + opStructFieldAnonymousHeadOmitEmptyBytesIndent opType = 552 + opStructFieldAnonymousHeadOmitEmptyArrayIndent opType = 553 + opStructFieldAnonymousHeadOmitEmptyMapIndent opType = 554 + opStructFieldAnonymousHeadOmitEmptyMapLoadIndent opType = 555 + opStructFieldAnonymousHeadOmitEmptySliceIndent opType = 556 + opStructFieldAnonymousHeadOmitEmptyStructIndent opType = 557 + opStructFieldAnonymousHeadOmitEmptyMarshalJSONIndent opType = 558 + opStructFieldAnonymousHeadOmitEmptyMarshalTextIndent opType = 559 + opStructFieldAnonymousHeadStringTagIntIndent opType = 560 + opStructFieldAnonymousHeadStringTagInt8Indent opType = 561 + opStructFieldAnonymousHeadStringTagInt16Indent opType = 562 + opStructFieldAnonymousHeadStringTagInt32Indent opType = 563 + opStructFieldAnonymousHeadStringTagInt64Indent opType = 564 + opStructFieldAnonymousHeadStringTagUintIndent opType = 565 + opStructFieldAnonymousHeadStringTagUint8Indent opType = 566 + opStructFieldAnonymousHeadStringTagUint16Indent opType = 567 + opStructFieldAnonymousHeadStringTagUint32Indent opType = 568 + opStructFieldAnonymousHeadStringTagUint64Indent opType = 569 + opStructFieldAnonymousHeadStringTagFloat32Indent opType = 570 + opStructFieldAnonymousHeadStringTagFloat64Indent opType = 571 + opStructFieldAnonymousHeadStringTagBoolIndent opType = 572 + opStructFieldAnonymousHeadStringTagStringIndent opType = 573 + opStructFieldAnonymousHeadStringTagBytesIndent opType = 574 + opStructFieldAnonymousHeadStringTagArrayIndent opType = 575 + opStructFieldAnonymousHeadStringTagMapIndent opType = 576 + opStructFieldAnonymousHeadStringTagMapLoadIndent opType = 577 + opStructFieldAnonymousHeadStringTagSliceIndent opType = 578 + opStructFieldAnonymousHeadStringTagStructIndent opType = 579 + opStructFieldAnonymousHeadStringTagMarshalJSONIndent opType = 580 + opStructFieldAnonymousHeadStringTagMarshalTextIndent opType = 581 + opStructFieldPtrHeadIntIndent opType = 582 + opStructFieldPtrHeadInt8Indent opType = 583 + opStructFieldPtrHeadInt16Indent opType = 584 + opStructFieldPtrHeadInt32Indent opType = 585 + opStructFieldPtrHeadInt64Indent opType = 586 + opStructFieldPtrHeadUintIndent opType = 587 + opStructFieldPtrHeadUint8Indent opType = 588 + opStructFieldPtrHeadUint16Indent opType = 589 + opStructFieldPtrHeadUint32Indent opType = 590 + opStructFieldPtrHeadUint64Indent opType = 591 + opStructFieldPtrHeadFloat32Indent opType = 592 + opStructFieldPtrHeadFloat64Indent opType = 593 + opStructFieldPtrHeadBoolIndent opType = 594 + opStructFieldPtrHeadStringIndent opType = 595 + opStructFieldPtrHeadBytesIndent opType = 596 + opStructFieldPtrHeadArrayIndent opType = 597 + opStructFieldPtrHeadMapIndent opType = 598 + opStructFieldPtrHeadMapLoadIndent opType = 599 + opStructFieldPtrHeadSliceIndent opType = 600 + opStructFieldPtrHeadStructIndent opType = 601 + opStructFieldPtrHeadMarshalJSONIndent opType = 602 + opStructFieldPtrHeadMarshalTextIndent opType = 603 + opStructFieldPtrHeadOmitEmptyIntIndent opType = 604 + opStructFieldPtrHeadOmitEmptyInt8Indent opType = 605 + opStructFieldPtrHeadOmitEmptyInt16Indent opType = 606 + opStructFieldPtrHeadOmitEmptyInt32Indent opType = 607 + opStructFieldPtrHeadOmitEmptyInt64Indent opType = 608 + opStructFieldPtrHeadOmitEmptyUintIndent opType = 609 + opStructFieldPtrHeadOmitEmptyUint8Indent opType = 610 + opStructFieldPtrHeadOmitEmptyUint16Indent opType = 611 + opStructFieldPtrHeadOmitEmptyUint32Indent opType = 612 + opStructFieldPtrHeadOmitEmptyUint64Indent opType = 613 + opStructFieldPtrHeadOmitEmptyFloat32Indent opType = 614 + opStructFieldPtrHeadOmitEmptyFloat64Indent opType = 615 + opStructFieldPtrHeadOmitEmptyBoolIndent opType = 616 + opStructFieldPtrHeadOmitEmptyStringIndent opType = 617 + opStructFieldPtrHeadOmitEmptyBytesIndent opType = 618 + opStructFieldPtrHeadOmitEmptyArrayIndent opType = 619 + opStructFieldPtrHeadOmitEmptyMapIndent opType = 620 + opStructFieldPtrHeadOmitEmptyMapLoadIndent opType = 621 + opStructFieldPtrHeadOmitEmptySliceIndent opType = 622 + opStructFieldPtrHeadOmitEmptyStructIndent opType = 623 + opStructFieldPtrHeadOmitEmptyMarshalJSONIndent opType = 624 + opStructFieldPtrHeadOmitEmptyMarshalTextIndent opType = 625 + opStructFieldPtrHeadStringTagIntIndent opType = 626 + opStructFieldPtrHeadStringTagInt8Indent opType = 627 + opStructFieldPtrHeadStringTagInt16Indent opType = 628 + opStructFieldPtrHeadStringTagInt32Indent opType = 629 + opStructFieldPtrHeadStringTagInt64Indent opType = 630 + opStructFieldPtrHeadStringTagUintIndent opType = 631 + opStructFieldPtrHeadStringTagUint8Indent opType = 632 + opStructFieldPtrHeadStringTagUint16Indent opType = 633 + opStructFieldPtrHeadStringTagUint32Indent opType = 634 + opStructFieldPtrHeadStringTagUint64Indent opType = 635 + opStructFieldPtrHeadStringTagFloat32Indent opType = 636 + opStructFieldPtrHeadStringTagFloat64Indent opType = 637 + opStructFieldPtrHeadStringTagBoolIndent opType = 638 + opStructFieldPtrHeadStringTagStringIndent opType = 639 + opStructFieldPtrHeadStringTagBytesIndent opType = 640 + opStructFieldPtrHeadStringTagArrayIndent opType = 641 + opStructFieldPtrHeadStringTagMapIndent opType = 642 + opStructFieldPtrHeadStringTagMapLoadIndent opType = 643 + opStructFieldPtrHeadStringTagSliceIndent opType = 644 + opStructFieldPtrHeadStringTagStructIndent opType = 645 + opStructFieldPtrHeadStringTagMarshalJSONIndent opType = 646 + opStructFieldPtrHeadStringTagMarshalTextIndent opType = 647 + opStructFieldPtrAnonymousHeadIntIndent opType = 648 + opStructFieldPtrAnonymousHeadInt8Indent opType = 649 + opStructFieldPtrAnonymousHeadInt16Indent opType = 650 + opStructFieldPtrAnonymousHeadInt32Indent opType = 651 + opStructFieldPtrAnonymousHeadInt64Indent opType = 652 + opStructFieldPtrAnonymousHeadUintIndent opType = 653 + opStructFieldPtrAnonymousHeadUint8Indent opType = 654 + opStructFieldPtrAnonymousHeadUint16Indent opType = 655 + opStructFieldPtrAnonymousHeadUint32Indent opType = 656 + opStructFieldPtrAnonymousHeadUint64Indent opType = 657 + opStructFieldPtrAnonymousHeadFloat32Indent opType = 658 + opStructFieldPtrAnonymousHeadFloat64Indent opType = 659 + opStructFieldPtrAnonymousHeadBoolIndent opType = 660 + opStructFieldPtrAnonymousHeadStringIndent opType = 661 + opStructFieldPtrAnonymousHeadBytesIndent opType = 662 + opStructFieldPtrAnonymousHeadArrayIndent opType = 663 + opStructFieldPtrAnonymousHeadMapIndent opType = 664 + opStructFieldPtrAnonymousHeadMapLoadIndent opType = 665 + opStructFieldPtrAnonymousHeadSliceIndent opType = 666 + opStructFieldPtrAnonymousHeadStructIndent opType = 667 + opStructFieldPtrAnonymousHeadMarshalJSONIndent opType = 668 + opStructFieldPtrAnonymousHeadMarshalTextIndent opType = 669 + opStructFieldPtrAnonymousHeadOmitEmptyIntIndent opType = 670 + opStructFieldPtrAnonymousHeadOmitEmptyInt8Indent opType = 671 + opStructFieldPtrAnonymousHeadOmitEmptyInt16Indent opType = 672 + opStructFieldPtrAnonymousHeadOmitEmptyInt32Indent opType = 673 + opStructFieldPtrAnonymousHeadOmitEmptyInt64Indent opType = 674 + opStructFieldPtrAnonymousHeadOmitEmptyUintIndent opType = 675 + opStructFieldPtrAnonymousHeadOmitEmptyUint8Indent opType = 676 + opStructFieldPtrAnonymousHeadOmitEmptyUint16Indent opType = 677 + opStructFieldPtrAnonymousHeadOmitEmptyUint32Indent opType = 678 + opStructFieldPtrAnonymousHeadOmitEmptyUint64Indent opType = 679 + opStructFieldPtrAnonymousHeadOmitEmptyFloat32Indent opType = 680 + opStructFieldPtrAnonymousHeadOmitEmptyFloat64Indent opType = 681 + opStructFieldPtrAnonymousHeadOmitEmptyBoolIndent opType = 682 + opStructFieldPtrAnonymousHeadOmitEmptyStringIndent opType = 683 + opStructFieldPtrAnonymousHeadOmitEmptyBytesIndent opType = 684 + opStructFieldPtrAnonymousHeadOmitEmptyArrayIndent opType = 685 + opStructFieldPtrAnonymousHeadOmitEmptyMapIndent opType = 686 + opStructFieldPtrAnonymousHeadOmitEmptyMapLoadIndent opType = 687 + opStructFieldPtrAnonymousHeadOmitEmptySliceIndent opType = 688 + opStructFieldPtrAnonymousHeadOmitEmptyStructIndent opType = 689 + opStructFieldPtrAnonymousHeadOmitEmptyMarshalJSONIndent opType = 690 + opStructFieldPtrAnonymousHeadOmitEmptyMarshalTextIndent opType = 691 + opStructFieldPtrAnonymousHeadStringTagIntIndent opType = 692 + opStructFieldPtrAnonymousHeadStringTagInt8Indent opType = 693 + opStructFieldPtrAnonymousHeadStringTagInt16Indent opType = 694 + opStructFieldPtrAnonymousHeadStringTagInt32Indent opType = 695 + opStructFieldPtrAnonymousHeadStringTagInt64Indent opType = 696 + opStructFieldPtrAnonymousHeadStringTagUintIndent opType = 697 + opStructFieldPtrAnonymousHeadStringTagUint8Indent opType = 698 + opStructFieldPtrAnonymousHeadStringTagUint16Indent opType = 699 + opStructFieldPtrAnonymousHeadStringTagUint32Indent opType = 700 + opStructFieldPtrAnonymousHeadStringTagUint64Indent opType = 701 + opStructFieldPtrAnonymousHeadStringTagFloat32Indent opType = 702 + opStructFieldPtrAnonymousHeadStringTagFloat64Indent opType = 703 + opStructFieldPtrAnonymousHeadStringTagBoolIndent opType = 704 + opStructFieldPtrAnonymousHeadStringTagStringIndent opType = 705 + opStructFieldPtrAnonymousHeadStringTagBytesIndent opType = 706 + opStructFieldPtrAnonymousHeadStringTagArrayIndent opType = 707 + opStructFieldPtrAnonymousHeadStringTagMapIndent opType = 708 + opStructFieldPtrAnonymousHeadStringTagMapLoadIndent opType = 709 + opStructFieldPtrAnonymousHeadStringTagSliceIndent opType = 710 + opStructFieldPtrAnonymousHeadStringTagStructIndent opType = 711 + opStructFieldPtrAnonymousHeadStringTagMarshalJSONIndent opType = 712 + opStructFieldPtrAnonymousHeadStringTagMarshalTextIndent opType = 713 + opStructFieldIntIndent opType = 714 + opStructFieldInt8Indent opType = 715 + opStructFieldInt16Indent opType = 716 + opStructFieldInt32Indent opType = 717 + opStructFieldInt64Indent opType = 718 + opStructFieldUintIndent opType = 719 + opStructFieldUint8Indent opType = 720 + opStructFieldUint16Indent opType = 721 + opStructFieldUint32Indent opType = 722 + opStructFieldUint64Indent opType = 723 + opStructFieldFloat32Indent opType = 724 + opStructFieldFloat64Indent opType = 725 + opStructFieldBoolIndent opType = 726 + opStructFieldStringIndent opType = 727 + opStructFieldBytesIndent opType = 728 + opStructFieldArrayIndent opType = 729 + opStructFieldMapIndent opType = 730 + opStructFieldMapLoadIndent opType = 731 + opStructFieldSliceIndent opType = 732 + opStructFieldStructIndent opType = 733 + opStructFieldMarshalJSONIndent opType = 734 + opStructFieldMarshalTextIndent opType = 735 + opStructFieldOmitEmptyIntIndent opType = 736 + opStructFieldOmitEmptyInt8Indent opType = 737 + opStructFieldOmitEmptyInt16Indent opType = 738 + opStructFieldOmitEmptyInt32Indent opType = 739 + opStructFieldOmitEmptyInt64Indent opType = 740 + opStructFieldOmitEmptyUintIndent opType = 741 + opStructFieldOmitEmptyUint8Indent opType = 742 + opStructFieldOmitEmptyUint16Indent opType = 743 + opStructFieldOmitEmptyUint32Indent opType = 744 + opStructFieldOmitEmptyUint64Indent opType = 745 + opStructFieldOmitEmptyFloat32Indent opType = 746 + opStructFieldOmitEmptyFloat64Indent opType = 747 + opStructFieldOmitEmptyBoolIndent opType = 748 + opStructFieldOmitEmptyStringIndent opType = 749 + opStructFieldOmitEmptyBytesIndent opType = 750 + opStructFieldOmitEmptyArrayIndent opType = 751 + opStructFieldOmitEmptyMapIndent opType = 752 + opStructFieldOmitEmptyMapLoadIndent opType = 753 + opStructFieldOmitEmptySliceIndent opType = 754 + opStructFieldOmitEmptyStructIndent opType = 755 + opStructFieldOmitEmptyMarshalJSONIndent opType = 756 + opStructFieldOmitEmptyMarshalTextIndent opType = 757 + opStructFieldStringTagIntIndent opType = 758 + opStructFieldStringTagInt8Indent opType = 759 + opStructFieldStringTagInt16Indent opType = 760 + opStructFieldStringTagInt32Indent opType = 761 + opStructFieldStringTagInt64Indent opType = 762 + opStructFieldStringTagUintIndent opType = 763 + opStructFieldStringTagUint8Indent opType = 764 + opStructFieldStringTagUint16Indent opType = 765 + opStructFieldStringTagUint32Indent opType = 766 + opStructFieldStringTagUint64Indent opType = 767 + opStructFieldStringTagFloat32Indent opType = 768 + opStructFieldStringTagFloat64Indent opType = 769 + opStructFieldStringTagBoolIndent opType = 770 + opStructFieldStringTagStringIndent opType = 771 + opStructFieldStringTagBytesIndent opType = 772 + opStructFieldStringTagArrayIndent opType = 773 + opStructFieldStringTagMapIndent opType = 774 + opStructFieldStringTagMapLoadIndent opType = 775 + opStructFieldStringTagSliceIndent opType = 776 + opStructFieldStringTagStructIndent opType = 777 + opStructFieldStringTagMarshalJSONIndent opType = 778 + opStructFieldStringTagMarshalTextIndent opType = 779 ) func (t opType) String() string { @@ -856,20 +842,6 @@ func (t opType) String() string { return "MapValue" case opMapEnd: return "MapEnd" - case opSortedMapHead: - return "SortedMapHead" - case opSortedMapHeadLoad: - return "SortedMapHeadLoad" - case opSortedRootMapHead: - return "SortedRootMapHead" - case opSortedMapKey: - return "SortedMapKey" - case opSortedRootMapKey: - return "SortedRootMapKey" - case opSortedMapValue: - return "SortedMapValue" - case opSortedMapEnd: - return "SortedMapEnd" case opStructFieldHead: return "StructFieldHead" case opStructFieldHeadOmitEmpty: @@ -1650,20 +1622,6 @@ func (t opType) String() string { return "MapValueIndent" case opMapEndIndent: return "MapEndIndent" - case opSortedMapHeadIndent: - return "SortedMapHeadIndent" - case opSortedMapHeadLoadIndent: - return "SortedMapHeadLoadIndent" - case opSortedRootMapHeadIndent: - return "SortedRootMapHeadIndent" - case opSortedMapKeyIndent: - return "SortedMapKeyIndent" - case opSortedRootMapKeyIndent: - return "SortedRootMapKeyIndent" - case opSortedMapValueIndent: - return "SortedMapValueIndent" - case opSortedMapEndIndent: - return "SortedMapEndIndent" case opStructFieldHeadIndent: return "StructFieldHeadIndent" case opStructFieldHeadOmitEmptyIndent: @@ -2450,20 +2408,6 @@ func (t opType) codeType() codeType { return codeMapValue case opMapEnd: return codeOp - case opSortedMapHead: - return codeMapHead - case opSortedMapHeadLoad: - return codeMapHead - case opSortedRootMapHead: - return codeMapHead - case opSortedMapKey: - return codeMapKey - case opSortedRootMapKey: - return codeMapKey - case opSortedMapValue: - return codeMapValue - case opSortedMapEnd: - return codeMapEnd case opStructFieldHead: return codeStructField case opStructFieldHeadOmitEmpty: @@ -3244,20 +3188,6 @@ func (t opType) codeType() codeType { return codeMapValue case opMapEndIndent: return codeOp - case opSortedMapHeadIndent: - return codeMapHead - case opSortedMapHeadLoadIndent: - return codeMapHead - case opSortedRootMapHeadIndent: - return codeMapHead - case opSortedMapKeyIndent: - return codeMapKey - case opSortedRootMapKeyIndent: - return codeMapKey - case opSortedMapValueIndent: - return codeMapValue - case opSortedMapEndIndent: - return codeMapEnd case opStructFieldHeadIndent: return codeStructField case opStructFieldHeadOmitEmptyIndent: @@ -4044,20 +3974,6 @@ func (t opType) toIndent() opType { return opMapValueIndent case opMapEnd: return opMapEndIndent - case opSortedMapHead: - return opSortedMapHeadIndent - case opSortedMapHeadLoad: - return opSortedMapHeadLoadIndent - case opSortedRootMapHead: - return opSortedRootMapHeadIndent - case opSortedMapKey: - return opSortedMapKeyIndent - case opSortedRootMapKey: - return opSortedRootMapKeyIndent - case opSortedMapValue: - return opSortedMapValueIndent - case opSortedMapEnd: - return opSortedMapEndIndent case opStructFieldHead: return opStructFieldHeadIndent case opStructFieldHeadOmitEmpty: @@ -4838,20 +4754,6 @@ func (t opType) toIndent() opType { return opMapValueIndent case opMapEndIndent: return opMapEndIndent - case opSortedMapHeadIndent: - return opSortedMapHeadIndent - case opSortedMapHeadLoadIndent: - return opSortedMapHeadLoadIndent - case opSortedRootMapHeadIndent: - return opSortedRootMapHeadIndent - case opSortedMapKeyIndent: - return opSortedMapKeyIndent - case opSortedRootMapKeyIndent: - return opSortedRootMapKeyIndent - case opSortedMapValueIndent: - return opSortedMapValueIndent - case opSortedMapEndIndent: - return opSortedMapEndIndent case opStructFieldHeadIndent: return opStructFieldHeadIndent case opStructFieldHeadOmitEmptyIndent: diff --git a/encode_test.go b/encode_test.go index 52a6aa2..316e3c6 100644 --- a/encode_test.go +++ b/encode_test.go @@ -377,14 +377,18 @@ func Test_Marshal(t *testing.T) { }) t.Run("map", func(t *testing.T) { t.Run("map[string]int", func(t *testing.T) { - bytes, err := json.Marshal(map[string]int{ + v := map[string]int{ "a": 1, "b": 2, "c": 3, "d": 4, - }) + } + bytes, err := json.Marshal(v) assertErr(t, err) assertEq(t, "map", `{"a":1,"b":2,"c":3,"d":4}`, string(bytes)) + b, err := json.MarshalWithOption(v, json.UnorderedMap()) + assertErr(t, err) + assertEq(t, "unordered map", len(`{"a":1,"b":2,"c":3,"d":4}`), len(string(b))) }) t.Run("map[string]interface{}", func(t *testing.T) { type T struct { diff --git a/encode_vm.go b/encode_vm.go index 3e2bb71..01d2ba1 100644 --- a/encode_vm.go +++ b/encode_vm.go @@ -426,7 +426,7 @@ func (e *Encoder) run(ctx *encodeRuntimeContext, code *opcode) error { e.encodeBytes([]byte{']', '\n'}) code = code.end.next } - case opSortedMapHead: + case opMapHead: ptr := load(ctxptr, code.idx) if ptr == 0 { e.encodeNull() @@ -440,11 +440,13 @@ func (e *Encoder) run(ctx *encodeRuntimeContext, code *opcode) error { store(ctxptr, code.elemIdx, 0) store(ctxptr, code.length, uintptr(mlen)) store(ctxptr, code.mapIter, uintptr(iter)) - pos := make([]int, 0, mlen) - pos = append(pos, len(e.buf)) - posPtr := unsafe.Pointer(&pos) - ctx.keepRefs = append(ctx.keepRefs, posPtr) - store(ctxptr, code.end.mapPos, uintptr(posPtr)) + if !e.unorderedMap { + pos := make([]int, 0, mlen) + pos = append(pos, len(e.buf)) + posPtr := unsafe.Pointer(&pos) + ctx.keepRefs = append(ctx.keepRefs, posPtr) + store(ctxptr, code.end.mapPos, uintptr(posPtr)) + } key := mapiterkey(iter) store(ctxptr, code.next.idx, uintptr(key)) code = code.next @@ -453,7 +455,7 @@ func (e *Encoder) run(ctx *encodeRuntimeContext, code *opcode) error { code = code.end.next } } - case opSortedMapHeadLoad: + case opMapHeadLoad: ptr := load(ctxptr, code.idx) if ptr == 0 { e.encodeNull() @@ -471,41 +473,62 @@ func (e *Encoder) run(ctx *encodeRuntimeContext, code *opcode) error { store(ctxptr, code.mapIter, uintptr(iter)) key := mapiterkey(iter) store(ctxptr, code.next.idx, uintptr(key)) - pos := make([]int, 0, mlen) - pos = append(pos, len(e.buf)) - posPtr := unsafe.Pointer(&pos) - ctx.keepRefs = append(ctx.keepRefs, posPtr) - store(ctxptr, code.end.mapPos, uintptr(posPtr)) + if !e.unorderedMap { + pos := make([]int, 0, mlen) + pos = append(pos, len(e.buf)) + posPtr := unsafe.Pointer(&pos) + ctx.keepRefs = append(ctx.keepRefs, posPtr) + store(ctxptr, code.end.mapPos, uintptr(posPtr)) + } code = code.next } else { e.encodeByte('}') code = code.end.next } } - case opSortedMapKey: + case opMapKey: idx := load(ctxptr, code.elemIdx) length := load(ctxptr, code.length) - posPtr := (*[]int)(unsafe.Pointer(load(ctxptr, code.end.mapPos))) - *posPtr = append(*posPtr, len(e.buf)) idx++ - if idx < length { - iter := unsafe.Pointer(load(ctxptr, code.mapIter)) - store(ctxptr, code.elemIdx, idx) - key := mapiterkey(iter) - store(ctxptr, code.next.idx, uintptr(key)) - code = code.next + if e.unorderedMap { + if idx < length { + e.encodeByte(',') + iter := unsafe.Pointer(load(ctxptr, code.mapIter)) + store(ctxptr, code.elemIdx, idx) + key := mapiterkey(iter) + store(ctxptr, code.next.idx, uintptr(key)) + code = code.next + } else { + e.encodeByte('}') + code = code.end.next + } } else { - code = code.end + posPtr := (*[]int)(unsafe.Pointer(load(ctxptr, code.end.mapPos))) + *posPtr = append(*posPtr, len(e.buf)) + if idx < length { + iter := unsafe.Pointer(load(ctxptr, code.mapIter)) + store(ctxptr, code.elemIdx, idx) + key := mapiterkey(iter) + store(ctxptr, code.next.idx, uintptr(key)) + code = code.next + } else { + code = code.end + } + } + case opMapValue: + if e.unorderedMap { + e.encodeByte(':') + } else { + posPtr := (*[]int)(unsafe.Pointer(load(ctxptr, code.end.mapPos))) + *posPtr = append(*posPtr, len(e.buf)) } - case opSortedMapValue: - posPtr := (*[]int)(unsafe.Pointer(load(ctxptr, code.end.mapPos))) - *posPtr = append(*posPtr, len(e.buf)) iter := unsafe.Pointer(load(ctxptr, code.mapIter)) value := mapitervalue(iter) store(ctxptr, code.next.idx, uintptr(value)) mapiternext(iter) code = code.next - case opSortedMapEnd: + case opMapEnd: + // this operation only used by sorted map. length := int(load(ctxptr, code.length)) type mapKV struct { key string @@ -545,204 +568,6 @@ func (e *Encoder) run(ctx *encodeRuntimeContext, code *opcode) error { e.buf = e.buf[:pos[0]] e.buf = append(e.buf, buf...) code = code.next - case opMapHead: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - e.encodeNull() - code = code.end.next - } else { - e.encodeByte('{') - mlen := maplen(unsafe.Pointer(ptr)) - if mlen > 0 { - iter := mapiterinit(code.typ, unsafe.Pointer(ptr)) - ctx.keepRefs = append(ctx.keepRefs, iter) - store(ctxptr, code.elemIdx, 0) - store(ctxptr, code.length, uintptr(mlen)) - store(ctxptr, code.mapIter, uintptr(iter)) - key := mapiterkey(iter) - store(ctxptr, code.next.idx, uintptr(key)) - code = code.next - } else { - e.encodeByte('}') - code = code.end.next - } - } - case opMapHeadLoad: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - e.encodeNull() - code = code.end.next - } else { - // load pointer - ptr = uintptr(*(*unsafe.Pointer)(unsafe.Pointer(ptr))) - e.encodeByte('{') - mlen := maplen(unsafe.Pointer(ptr)) - if mlen > 0 { - iter := mapiterinit(code.typ, unsafe.Pointer(ptr)) - ctx.keepRefs = append(ctx.keepRefs, iter) - store(ctxptr, code.elemIdx, 0) - store(ctxptr, code.length, uintptr(mlen)) - store(ctxptr, code.mapIter, uintptr(iter)) - key := mapiterkey(iter) - store(ctxptr, code.next.idx, uintptr(key)) - code = code.next - } else { - e.encodeByte('}') - code = code.end.next - } - } - case opMapKey: - idx := load(ctxptr, code.elemIdx) - length := load(ctxptr, code.length) - idx++ - if idx < length { - e.encodeByte(',') - iter := unsafe.Pointer(load(ctxptr, code.mapIter)) - store(ctxptr, code.elemIdx, idx) - key := mapiterkey(iter) - store(ctxptr, code.next.idx, uintptr(key)) - code = code.next - } else { - e.encodeByte('}') - code = code.end.next - } - case opMapValue: - e.encodeByte(':') - iter := unsafe.Pointer(load(ctxptr, code.mapIter)) - value := mapitervalue(iter) - store(ctxptr, code.next.idx, uintptr(value)) - mapiternext(iter) - code = code.next - case opSortedMapHeadIndent: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - e.encodeNull() - code = code.end.next - } else { - mlen := maplen(unsafe.Pointer(ptr)) - if mlen > 0 { - e.encodeBytes([]byte{'{', '\n'}) - - iter := mapiterinit(code.typ, unsafe.Pointer(ptr)) - ctx.keepRefs = append(ctx.keepRefs, iter) - store(ctxptr, code.elemIdx, 0) - store(ctxptr, code.length, uintptr(mlen)) - store(ctxptr, code.mapIter, uintptr(iter)) - pos := make([]int, 0, mlen) - pos = append(pos, len(e.buf)) - posPtr := unsafe.Pointer(&pos) - ctx.keepRefs = append(ctx.keepRefs, posPtr) - store(ctxptr, code.end.mapPos, uintptr(posPtr)) - key := mapiterkey(iter) - store(ctxptr, code.next.idx, uintptr(key)) - code = code.next - } else { - e.encodeIndent(code.indent) - e.encodeBytes([]byte{'{', '}'}) - code = code.end.next - } - } - case opSortedMapHeadLoadIndent: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - e.encodeNull() - code = code.end.next - } else { - // load pointer - ptr = uintptr(*(*unsafe.Pointer)(unsafe.Pointer(ptr))) - mlen := maplen(unsafe.Pointer(ptr)) - if mlen > 0 { - e.encodeBytes([]byte{'{', '\n'}) - - iter := mapiterinit(code.typ, unsafe.Pointer(ptr)) - ctx.keepRefs = append(ctx.keepRefs, iter) - store(ctxptr, code.elemIdx, 0) - store(ctxptr, code.length, uintptr(mlen)) - store(ctxptr, code.mapIter, uintptr(iter)) - key := mapiterkey(iter) - store(ctxptr, code.next.idx, uintptr(key)) - pos := make([]int, 0, mlen) - pos = append(pos, len(e.buf)) - posPtr := unsafe.Pointer(&pos) - ctx.keepRefs = append(ctx.keepRefs, posPtr) - store(ctxptr, code.end.mapPos, uintptr(posPtr)) - code = code.next - } else { - e.encodeIndent(code.indent) - e.encodeBytes([]byte{'{', '}'}) - code = code.end.next - } - } - case opSortedMapKeyIndent: - idx := load(ctxptr, code.elemIdx) - length := load(ctxptr, code.length) - posPtr := (*[]int)(unsafe.Pointer(load(ctxptr, code.end.mapPos))) - *posPtr = append(*posPtr, len(e.buf)) - idx++ - if idx < length { - iter := unsafe.Pointer(load(ctxptr, code.mapIter)) - store(ctxptr, code.elemIdx, idx) - key := mapiterkey(iter) - store(ctxptr, code.next.idx, uintptr(key)) - code = code.next - } else { - code = code.end - } - case opSortedMapValueIndent: - posPtr := (*[]int)(unsafe.Pointer(load(ctxptr, code.end.mapPos))) - *posPtr = append(*posPtr, len(e.buf)) - iter := unsafe.Pointer(load(ctxptr, code.mapIter)) - value := mapitervalue(iter) - store(ctxptr, code.next.idx, uintptr(value)) - mapiternext(iter) - code = code.next - case opSortedMapEndIndent: - length := int(load(ctxptr, code.length)) - type mapKV struct { - key string - value string - } - kvs := make([]mapKV, 0, length) - pos := *(*[]int)(unsafe.Pointer(load(ctxptr, code.mapPos))) - for i := 0; i < length; i++ { - startKey := pos[i*2] - startValue := pos[i*2+1] - var endValue int - if i+1 < length { - endValue = pos[i*2+2] - } else { - endValue = len(e.buf) - } - kvs = append(kvs, mapKV{ - key: string(e.buf[startKey:startValue]), - value: string(e.buf[startValue:endValue]), - }) - } - fmt.Println("kvs = ", kvs) - sort.Slice(kvs, func(i, j int) bool { - return kvs[i].key < kvs[j].key - }) - buf := e.buf[pos[0]:] - buf = buf[:0] - for idx, kv := range kvs { - if idx != 0 { - buf = append(buf, []byte{',', '\n'}...) - } - - buf = append(buf, e.prefix...) - buf = append(buf, bytes.Repeat(e.indentStr, code.indent+1)...) - - buf = append(buf, []byte(kv.key)...) - buf = append(buf, []byte{':', ' '}...) - buf = append(buf, []byte(kv.value)...) - } - buf = append(buf, '\n') - buf = append(buf, e.prefix...) - buf = append(buf, bytes.Repeat(e.indentStr, code.indent)...) - buf = append(buf, '}') - e.buf = e.buf[:pos[0]] - e.buf = append(e.buf, buf...) - code = code.next case opMapHeadIndent: ptr := load(ctxptr, code.idx) if ptr == 0 { @@ -758,10 +583,20 @@ func (e *Encoder) run(ctx *encodeRuntimeContext, code *opcode) error { store(ctxptr, code.elemIdx, 0) store(ctxptr, code.length, uintptr(mlen)) store(ctxptr, code.mapIter, uintptr(iter)) + + if !e.unorderedMap { + pos := make([]int, 0, mlen) + pos = append(pos, len(e.buf)) + posPtr := unsafe.Pointer(&pos) + ctx.keepRefs = append(ctx.keepRefs, posPtr) + store(ctxptr, code.end.mapPos, uintptr(posPtr)) + } else { + e.encodeIndent(code.next.indent) + } + key := mapiterkey(iter) store(ctxptr, code.next.idx, uintptr(key)) code = code.next - e.encodeIndent(code.indent) } else { e.encodeIndent(code.indent) e.encodeBytes([]byte{'{', '}'}) @@ -787,8 +622,18 @@ func (e *Encoder) run(ctx *encodeRuntimeContext, code *opcode) error { store(ctxptr, code.mapIter, uintptr(iter)) key := mapiterkey(iter) store(ctxptr, code.next.idx, uintptr(key)) + + if !e.unorderedMap { + pos := make([]int, 0, mlen) + pos = append(pos, len(e.buf)) + posPtr := unsafe.Pointer(&pos) + ctx.keepRefs = append(ctx.keepRefs, posPtr) + store(ctxptr, code.end.mapPos, uintptr(posPtr)) + } else { + e.encodeIndent(code.next.indent) + } + code = code.next - e.encodeIndent(code.indent) } else { e.encodeIndent(code.indent) e.encodeBytes([]byte{'{', '}'}) @@ -824,19 +669,33 @@ func (e *Encoder) run(ctx *encodeRuntimeContext, code *opcode) error { idx := load(ctxptr, code.elemIdx) length := load(ctxptr, code.length) idx++ - if idx < length { - e.encodeBytes([]byte{',', '\n'}) - e.encodeIndent(code.indent) - store(ctxptr, code.elemIdx, idx) - iter := unsafe.Pointer(load(ctxptr, code.mapIter)) - key := mapiterkey(iter) - store(ctxptr, code.next.idx, uintptr(key)) - code = code.next + if e.unorderedMap { + if idx < length { + e.encodeBytes([]byte{',', '\n'}) + e.encodeIndent(code.indent) + store(ctxptr, code.elemIdx, idx) + iter := unsafe.Pointer(load(ctxptr, code.mapIter)) + key := mapiterkey(iter) + store(ctxptr, code.next.idx, uintptr(key)) + code = code.next + } else { + e.encodeByte('\n') + e.encodeIndent(code.indent - 1) + e.encodeByte('}') + code = code.end.next + } } else { - e.encodeByte('\n') - e.encodeIndent(code.indent - 1) - e.encodeByte('}') - code = code.end.next + posPtr := (*[]int)(unsafe.Pointer(load(ctxptr, code.end.mapPos))) + *posPtr = append(*posPtr, len(e.buf)) + if idx < length { + iter := unsafe.Pointer(load(ctxptr, code.mapIter)) + store(ctxptr, code.elemIdx, idx) + key := mapiterkey(iter) + store(ctxptr, code.next.idx, uintptr(key)) + code = code.next + } else { + code = code.end + } } case opRootMapKeyIndent: idx := load(ctxptr, code.elemIdx) @@ -857,12 +716,64 @@ func (e *Encoder) run(ctx *encodeRuntimeContext, code *opcode) error { code = code.end.next } case opMapValueIndent: - e.encodeBytes([]byte{':', ' '}) + if e.unorderedMap { + e.encodeBytes([]byte{':', ' '}) + } else { + posPtr := (*[]int)(unsafe.Pointer(load(ctxptr, code.end.mapPos))) + *posPtr = append(*posPtr, len(e.buf)) + } iter := unsafe.Pointer(load(ctxptr, code.mapIter)) value := mapitervalue(iter) store(ctxptr, code.next.idx, uintptr(value)) mapiternext(iter) code = code.next + case opMapEndIndent: + // this operation only used by sorted map + length := int(load(ctxptr, code.length)) + type mapKV struct { + key string + value string + } + kvs := make([]mapKV, 0, length) + pos := *(*[]int)(unsafe.Pointer(load(ctxptr, code.mapPos))) + for i := 0; i < length; i++ { + startKey := pos[i*2] + startValue := pos[i*2+1] + var endValue int + if i+1 < length { + endValue = pos[i*2+2] + } else { + endValue = len(e.buf) + } + kvs = append(kvs, mapKV{ + key: string(e.buf[startKey:startValue]), + value: string(e.buf[startValue:endValue]), + }) + } + sort.Slice(kvs, func(i, j int) bool { + return kvs[i].key < kvs[j].key + }) + buf := e.buf[pos[0]:] + buf = buf[:0] + for idx, kv := range kvs { + if idx != 0 { + buf = append(buf, []byte{',', '\n'}...) + } + + buf = append(buf, e.prefix...) + buf = append(buf, bytes.Repeat(e.indentStr, code.indent+1)...) + + buf = append(buf, []byte(kv.key)...) + buf = append(buf, []byte{':', ' '}...) + buf = append(buf, []byte(kv.value)...) + } + buf = append(buf, '\n') + buf = append(buf, e.prefix...) + buf = append(buf, bytes.Repeat(e.indentStr, code.indent)...) + buf = append(buf, '}') + e.buf = e.buf[:pos[0]] + e.buf = append(e.buf, buf...) + code = code.next case opStructFieldRecursive: ptr := load(ctxptr, code.idx) if ptr != 0 { diff --git a/json.go b/json.go index 5b51102..19a2d72 100644 --- a/json.go +++ b/json.go @@ -154,8 +154,18 @@ type Unmarshaler interface { // an infinite recursion. // func Marshal(v interface{}) ([]byte, error) { + return MarshalWithOption(v) +} + +// MarshalWithOption returns the JSON encoding of v with EncodeOption. +func MarshalWithOption(v interface{}, opts ...EncodeOption) ([]byte, error) { var b *bytes.Buffer enc := NewEncoder(b) + for _, opt := range opts { + if err := opt(enc); err != nil { + return nil, err + } + } bytes, err := enc.encodeForMarshal(v) if err != nil { enc.release() @@ -169,8 +179,18 @@ func Marshal(v interface{}) ([]byte, error) { // Each JSON element in the output will begin on a new line beginning with prefix // followed by one or more copies of indent according to the indentation nesting. func MarshalIndent(v interface{}, prefix, indent string) ([]byte, error) { + return MarshalIndentWithOption(v, prefix, indent) +} + +// MarshalIndentWithOption is like Marshal but applies Indent to format the output with EncodeOption. +func MarshalIndentWithOption(v interface{}, prefix, indent string, opts ...EncodeOption) ([]byte, error) { var b *bytes.Buffer enc := NewEncoder(b) + for _, opt := range opts { + if err := opt(enc); err != nil { + return nil, err + } + } enc.SetIndent(prefix, indent) bytes, err := enc.encodeForMarshal(v) if err != nil { From e1240f02fbf41b865510f5dd6062c33019782a12 Mon Sep 17 00:00:00 2001 From: Masaaki Goshima Date: Wed, 16 Sep 2020 18:17:17 +0900 Subject: [PATCH 4/5] Remove unused variable ( headPos ) --- encode_opcode.go | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/encode_opcode.go b/encode_opcode.go index c9ae061..19087c7 100644 --- a/encode_opcode.go +++ b/encode_opcode.go @@ -24,7 +24,6 @@ type opcode struct { elemIdx uintptr // offset to access array/slice/map elem length uintptr // offset to access slice/map length or array length mapIter uintptr // offset to access map iterator - headPos uintptr // offset to access head position of map mapPos uintptr // offset to access position list for sorted map offset uintptr // offset size from struct header size uintptr // array/slice elem size @@ -89,7 +88,6 @@ func (c *opcode) copy(codeMap map[uintptr]*opcode) *opcode { elemIdx: c.elemIdx, length: c.length, mapIter: c.mapIter, - headPos: c.headPos, mapPos: c.mapPos, offset: c.offset, size: c.size, @@ -200,12 +198,11 @@ func (c *opcode) dumpMapHead(code *opcode) string { func (c *opcode) dumpMapEnd(code *opcode) string { return fmt.Sprintf( - `[%d]%s%s ([idx:%d][headPos:%d][mapPos:%d][length:%d])`, + `[%d]%s%s ([idx:%d][mapPos:%d][length:%d])`, code.displayIdx, strings.Repeat("-", code.indent), code.op, code.idx/uintptrSize, - code.headPos/uintptrSize, code.mapPos/uintptrSize, code.length/uintptrSize, ) @@ -437,8 +434,6 @@ func newMapValueCode(ctx *encodeCompileContext, head *opcode) *opcode { } func newMapEndCode(ctx *encodeCompileContext, head *opcode) *opcode { - headPos := opcodeOffset(ctx.ptrIndex) - ctx.incPtrIndex() mapPos := opcodeOffset(ctx.ptrIndex) ctx.incPtrIndex() idx := opcodeOffset(ctx.ptrIndex) @@ -447,7 +442,6 @@ func newMapEndCode(ctx *encodeCompileContext, head *opcode) *opcode { displayIdx: ctx.opcodeIndex, idx: idx, length: head.length, - headPos: headPos, mapPos: mapPos, indent: ctx.indent, next: newEndOp(ctx), From 40448a1cfe2527a6095cca22f96289e79929b7d3 Mon Sep 17 00:00:00 2001 From: Masaaki Goshima Date: Wed, 16 Sep 2020 18:23:43 +0900 Subject: [PATCH 5/5] Add option.go --- option.go | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 option.go diff --git a/option.go b/option.go new file mode 100644 index 0000000..b2414a7 --- /dev/null +++ b/option.go @@ -0,0 +1,10 @@ +package json + +type EncodeOption func(*Encoder) error + +func UnorderedMap() EncodeOption { + return func(e *Encoder) error { + e.unorderedMap = true + return nil + } +}