const.go 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. package optdec
  2. import "math"
  3. /*
  4. Copied from sonic-rs
  5. // JSON Value Type
  6. const NULL: u64 = 0;
  7. const BOOL: u64 = 2;
  8. const FALSE: u64 = BOOL;
  9. const TRUE: u64 = (1 << 3) | BOOL;
  10. const NUMBER: u64 = 3;
  11. const UINT: u64 = NUMBER;
  12. const SINT: u64 = (1 << 3) | NUMBER;
  13. const REAL: u64 = (2 << 3) | NUMBER;
  14. const RAWNUMBER: u64 = (3 << 3) | NUMBER;
  15. const STRING: u64 = 4;
  16. const STRING_COMMON: u64 = STRING;
  17. const STRING_HASESCAPED: u64 = (1 << 3) | STRING;
  18. const OBJECT: u64 = 6;
  19. const ARRAY: u64 = 7;
  20. /// JSON Type Mask
  21. const POS_MASK: u64 = (!0) << 32;
  22. const POS_BITS: u64 = 32;
  23. const TYPE_MASK: u64 = 0xFF;
  24. const TYPE_BITS: u64 = 8;
  25. */
  26. const (
  27. // BasicType: 3 bits
  28. KNull = 0 // xxxxx000
  29. KBool = 2 // xxxxx010
  30. KNumber = 3 // xxxxx011
  31. KString = 4 // xxxxx100
  32. KRaw = 5 // xxxxx101
  33. KObject = 6 // xxxxx110
  34. KArray = 7 // xxxxx111
  35. // SubType: 2 bits
  36. KFalse = (0 << 3) | KBool // xxx00_010, 2
  37. KTrue = (1 << 3) | KBool // xxx01_010, 10
  38. KUint = (0 << 3) | KNumber // xxx00_011, 3
  39. KSint = (1 << 3) | KNumber // xxx01_011, 11
  40. KReal = (2 << 3) | KNumber // xxx10_011, 19
  41. KRawNumber = (3 << 3) | KNumber // xxx11_011, 27
  42. KStringCommon = KString // xxx00_100, 4
  43. KStringEscaped = (1 << 3) | KString // xxx01_100, 12
  44. )
  45. const (
  46. PosMask = math.MaxUint64 << 32
  47. PosBits = 32
  48. TypeMask = 0xFF
  49. TypeBits = 8
  50. ConLenMask = uint64(math.MaxUint32)
  51. ConLenBits = 32
  52. )