(valEntryOff int)
| 304 | } |
| 305 | |
| 306 | func (bj BinaryJSON) valEntryGet(valEntryOff int) BinaryJSON { |
| 307 | tpCode := bj.Value[valEntryOff] |
| 308 | valOff := jsonEndian.Uint32(bj.Value[valEntryOff+valTypeSize:]) |
| 309 | switch tpCode { |
| 310 | case JSONTypeCodeLiteral: |
| 311 | return BinaryJSON{TypeCode: JSONTypeCodeLiteral, Value: bj.Value[valEntryOff+valTypeSize : valEntryOff+valTypeSize+1]} |
| 312 | case JSONTypeCodeUint64, JSONTypeCodeInt64, JSONTypeCodeFloat64: |
| 313 | return BinaryJSON{TypeCode: tpCode, Value: bj.Value[valOff : valOff+8]} |
| 314 | case JSONTypeCodeString: |
| 315 | strLen, lenLen := binary.Uvarint(bj.Value[valOff:]) |
| 316 | totalLen := uint32(lenLen) + uint32(strLen) |
| 317 | return BinaryJSON{TypeCode: tpCode, Value: bj.Value[valOff : valOff+totalLen]} |
| 318 | case JSONTypeCodeOpaque: |
| 319 | strLen, lenLen := binary.Uvarint(bj.Value[valOff+1:]) |
| 320 | totalLen := 1 + uint32(lenLen) + uint32(strLen) |
| 321 | return BinaryJSON{TypeCode: tpCode, Value: bj.Value[valOff : valOff+totalLen]} |
| 322 | case JSONTypeCodeDate, JSONTypeCodeDatetime, JSONTypeCodeTimestamp: |
| 323 | return BinaryJSON{TypeCode: tpCode, Value: bj.Value[valOff : valOff+8]} |
| 324 | case JSONTypeCodeDuration: |
| 325 | return BinaryJSON{TypeCode: tpCode, Value: bj.Value[valOff : valOff+12]} |
| 326 | } |
| 327 | dataSize := jsonEndian.Uint32(bj.Value[valOff+dataSizeOff:]) |
| 328 | return BinaryJSON{TypeCode: tpCode, Value: bj.Value[valOff : valOff+dataSize]} |
| 329 | } |
| 330 | |
| 331 | func (bj BinaryJSON) marshalFloat64To(buf []byte) ([]byte, error) { |
| 332 | // NOTE: copied from Go standard library. |
no outgoing calls
no test coverage detected