MCPcopy Create free account
hub / github.com/e2wugui/zeze / JsonWriter

Class JsonWriter

ZezeJava/ZezeJava/src/main/java/Zeze/Util/JsonWriter.java:13–1327  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

11import static Zeze.Util.Json.*;
12
13public final class JsonWriter {
14 //@formatter:off
15 private static final long DOUBLE_SIGN_MASK = 0x8000_0000_0000_0000L;
16 private static final long DOUBLE_EXP_MASK = 0x7FF0_0000_0000_0000L;
17 private static final long DOUBLE_SIGNIFICAND_MASK = 0x000F_FFFF_FFFF_FFFFL; // low 52-bit
18 private static final long DOUBLE_HIDDEN_BIT = 0x0010_0000_0000_0000L; // 1e52
19 private static final int DOUBLE_SIGNIFICAND_SIZE = 52;
20 private static final int DOUBLE_EXP_SIZE = 64 - DOUBLE_SIGNIFICAND_SIZE - 2; // 10
21 private static final int DOUBLE_EXP_BIAS = 0x3FF + DOUBLE_SIGNIFICAND_SIZE; // 0x433
22
23 public static final int FLAG_PRETTY_FORMAT = 0x1;
24 public static final int FLAG_NO_QUOTE_KEY = 0x2;
25 public static final int FLAG_WRITE_NULL = 0x4;
26 public static final int FLAG_WRAP_ELEMENT = 0x8; // need FLAG_PRETTY_FORMAT
27 public static final int FLAG_ALL = 0xf;
28 public static final int FLAG_PRETTY_FORMAT_AND_WRAP_ELEMENT = FLAG_PRETTY_FORMAT | FLAG_WRAP_ELEMENT;
29 //@formatter:on
30
31 private static final byte[] LONG_MIN_BYTES = "-9223372036854775808".getBytes(StandardCharsets.ISO_8859_1);
32
33 private static final byte[] DIGITES_LUT = { // [200]
34 '0', '0', '0', '1', '0', '2', '0', '3', '0', '4', '0', '5', '0', '6', '0', '7', '0', '8', '0', '9', '1',
35 '0', '1', '1', '1', '2', '1', '3', '1', '4', '1', '5', '1', '6', '1', '7', '1', '8', '1', '9', '2', '0',
36 '2', '1', '2', '2', '2', '3', '2', '4', '2', '5', '2', '6', '2', '7', '2', '8', '2', '9', '3', '0', '3',
37 '1', '3', '2', '3', '3', '3', '4', '3', '5', '3', '6', '3', '7', '3', '8', '3', '9', '4', '0', '4', '1',
38 '4', '2', '4', '3', '4', '4', '4', '5', '4', '6', '4', '7', '4', '8', '4', '9', '5', '0', '5', '1', '5',
39 '2', '5', '3', '5', '4', '5', '5', '5', '6', '5', '7', '5', '8', '5', '9', '6', '0', '6', '1', '6', '2',
40 '6', '3', '6', '4', '6', '5', '6', '6', '6', '7', '6', '8', '6', '9', '7', '0', '7', '1', '7', '2', '7',
41 '3', '7', '4', '7', '5', '7', '6', '7', '7', '7', '8', '7', '9', '8', '0', '8', '1', '8', '2', '8', '3',
42 '8', '4', '8', '5', '8', '6', '8', '7', '8', '8', '8', '9', '9', '0', '9', '1', '9', '2', '9', '3', '9',
43 '4', '9', '5', '9', '6', '9', '7', '9', '8', '9', '9'};
44
45 private static final long[] POW10 = { // [19]
46 1, 10, 100, 1000, 1_0000, 10_0000, 100_0000, 1000_0000, 1_0000_0000, 10_0000_0000, 100_0000_0000L,
47 1000_0000_0000L, 1_0000_0000_0000L, 10_0000_0000_0000L, 100_0000_0000_0000L, 1000_0000_0000_0000L,
48 1_0000_0000_0000_0000L, 10_0000_0000_0000_0000L, 100_0000_0000_0000_0000L};
49
50 private static final long[] CACHED_POWERS_F = {
51 0xfa8fd5a0_081c0288L, 0xbaaee17f_a23ebf76L, 0x8b16fb20_3055ac76L,
52 0xcf42894a_5dce35eaL, 0x9a6bb0aa_55653b2dL, 0xe61acf03_3d1a45dfL, 0xab70fe17_c79ac6caL,
53 0xff77b1fc_bebcdc4fL, 0xbe5691ef_416bd60cL, 0x8dd01fad_907ffc3cL, 0xd3515c28_31559a83L,
54 0x9d71ac8f_ada6c9b5L, 0xea9c2277_23ee8bcbL, 0xaecc4991_4078536dL, 0x823c1279_5db6ce57L,
55 0xc2109436_4dfb5637L, 0x9096ea6f_3848984fL, 0xd77485cb_25823ac7L, 0xa086cfcd_97bf97f4L,
56 0xef340a98_172aace5L, 0xb23867fb_2a35b28eL, 0x84c8d4df_d2c63f3bL, 0xc5dd4427_1ad3cdbaL,
57 0x936b9fce_bb25c996L, 0xdbac6c24_7d62a584L, 0xa3ab6658_0d5fdaf6L, 0xf3e2f893_dec3f126L,
58 0xb5b5ada8_aaff80b8L, 0x87625f05_6c7c4a8bL, 0xc9bcff60_34c13053L, 0x964e858c_91ba2655L,
59 0xdff97724_70297ebdL, 0xa6dfbd9f_b8e5b88fL, 0xf8a95fcf_88747d94L, 0xb9447093_8fa89bcfL,
60 0x8a08f0f8_bf0f156bL, 0xcdb02555_653131b6L, 0x993fe2c6_d07b7facL, 0xe45c10c4_2a2b3b06L,
61 0xaa242499_697392d3L, 0xfd87b5f2_8300ca0eL, 0xbce50864_92111aebL, 0x8cbccc09_6f5088ccL,
62 0xd1b71758_e219652cL, 0x9c400000_00000000L, 0xe8d4a510_00000000L, 0xad78ebc5_ac620000L,
63 0x813f3978_f8940984L, 0xc097ce7b_c90715b3L, 0x8f7e32ce_7bea5c70L, 0xd5d238a4_abe98068L,
64 0x9f4f2726_179a2245L, 0xed63a231_d4c4fb27L, 0xb0de6538_8cc8ada8L, 0x83c7088e_1aab65dbL,
65 0xc45d1df9_42711d9aL, 0x924d692c_a61be758L, 0xda01ee64_1a708deaL, 0xa26da399_9aef774aL,
66 0xf209787b_b47d6b85L, 0xb454e4a1_79dd1877L, 0x865b8692_5b9bc5c2L, 0xc83553c5_c8965d3dL,
67 0x952ab45c_fa97a0b3L, 0xde469fbd_99a05fe3L, 0xa59bc234_db398c25L, 0xf6c69a72_a3989f5cL,
68 0xb7dcbf53_54e9beceL, 0x88fcf317_f22241e2L, 0xcc20ce9b_d35c78a5L, 0x98165af3_7b2153dfL,
69 0xe2a0b5dc_971f303aL, 0xa8d9d153_5ce3b396L, 0xfb9b7cd9_a4a7443cL, 0xbb764c4c_a7a44410L,
70 0x8bab8eef_b6409c1aL, 0xd01fef10_a657842cL, 0x9b10a4e5_e9913129L, 0xe7109bfb_a19c0c9dL,

Callers

nothing calls this directly

Calls 2

ensureNotNullMethod · 0.80
getBytesMethod · 0.65

Tested by

no test coverage detected