protobuf/src/google/protobuf/stubs/int128_unittest.cc
Go to the documentation of this file.
1 // Protocol Buffers - Google's data interchange format
2 // Copyright 2008 Google Inc. All rights reserved.
3 // https://developers.google.com/protocol-buffers/
4 //
5 // Redistribution and use in source and binary forms, with or without
6 // modification, are permitted provided that the following conditions are
7 // met:
8 //
9 // * Redistributions of source code must retain the above copyright
10 // notice, this list of conditions and the following disclaimer.
11 // * Redistributions in binary form must reproduce the above
12 // copyright notice, this list of conditions and the following disclaimer
13 // in the documentation and/or other materials provided with the
14 // distribution.
15 // * Neither the name of Google Inc. nor the names of its
16 // contributors may be used to endorse or promote products derived from
17 // this software without specific prior written permission.
18 //
19 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30 
31 #include <google/protobuf/stubs/int128.h>
32 
33 #include <algorithm>
34 #include <sstream>
35 #include <utility>
36 
37 #include <google/protobuf/testing/googletest.h>
38 #include <gtest/gtest.h>
39 
40 #include <google/protobuf/port_def.inc>
41 
42 namespace google {
43 namespace protobuf {
44 
45 TEST(Int128, AllTests) {
46  uint128 zero(0);
47  uint128 one(1);
48  uint128 one_2arg(0, 1);
49  uint128 two(0, 2);
50  uint128 three(0, 3);
51  uint128 big(2000, 2);
52  uint128 big_minus_one(2000, 1);
53  uint128 bigger(2001, 1);
54  uint128 biggest(kuint128max);
55  uint128 high_low(1, 0);
56  uint128 low_high(0, kuint64max);
57  EXPECT_LT(one, two);
58  EXPECT_GT(two, one);
59  EXPECT_LT(one, big);
60  EXPECT_LT(one, big);
61  EXPECT_EQ(one, one_2arg);
62  EXPECT_NE(one, two);
63  EXPECT_GT(big, one);
64  EXPECT_GE(big, two);
65  EXPECT_GE(big, big_minus_one);
66  EXPECT_GT(big, big_minus_one);
67  EXPECT_LT(big_minus_one, big);
68  EXPECT_LE(big_minus_one, big);
69  EXPECT_NE(big_minus_one, big);
70  EXPECT_LT(big, biggest);
71  EXPECT_LE(big, biggest);
72  EXPECT_GT(biggest, big);
73  EXPECT_GE(biggest, big);
74  EXPECT_EQ(big, ~~big);
75  EXPECT_EQ(one, one | one);
76  EXPECT_EQ(big, big | big);
77  EXPECT_EQ(one, one | zero);
78  EXPECT_EQ(one, one & one);
79  EXPECT_EQ(big, big & big);
80  EXPECT_EQ(zero, one & zero);
81  EXPECT_EQ(zero, big & ~big);
82  EXPECT_EQ(zero, one ^ one);
83  EXPECT_EQ(zero, big ^ big);
84  EXPECT_EQ(one, one ^ zero);
85 
86  // Shift operators.
87  EXPECT_EQ(big, big << 0);
88  EXPECT_EQ(big, big >> 0);
89  EXPECT_GT(big << 1, big);
90  EXPECT_LT(big >> 1, big);
91  EXPECT_EQ(big, (big << 10) >> 10);
92  EXPECT_EQ(big, (big >> 1) << 1);
93  EXPECT_EQ(one, (one << 80) >> 80);
94  EXPECT_EQ(zero, (one >> 80) << 80);
95  EXPECT_EQ(zero, big >> 128);
96  EXPECT_EQ(zero, big << 128);
97 
98  // Shift assignments.
99  uint128 big_copy = big;
100  EXPECT_EQ(big << 0, big_copy <<= 0);
101  big_copy = big;
102  EXPECT_EQ(big >> 0, big_copy >>= 0);
103  big_copy = big;
104  EXPECT_EQ(big << 1, big_copy <<= 1);
105  big_copy = big;
106  EXPECT_EQ(big >> 1, big_copy >>= 1);
107  big_copy = big;
108  EXPECT_EQ(big << 10, big_copy <<= 10);
109  big_copy = big;
110  EXPECT_EQ(big >> 10, big_copy >>= 10);
111  big_copy = big;
112  EXPECT_EQ(big << 64, big_copy <<= 64);
113  big_copy = big;
114  EXPECT_EQ(big >> 64, big_copy >>= 64);
115  big_copy = big;
116  EXPECT_EQ(big << 73, big_copy <<= 73);
117  big_copy = big;
118  EXPECT_EQ(big >> 73, big_copy >>= 73);
119  big_copy = big;
120  EXPECT_EQ(big << 128, big_copy <<= 128);
121  big_copy = big;
122  EXPECT_EQ(big >> 128, big_copy >>= 128);
123 
125  EXPECT_EQ(Uint128Low64(biggest), kuint64max);
126  EXPECT_EQ(zero + one, one);
127  EXPECT_EQ(one + one, two);
128  EXPECT_EQ(big_minus_one + one, big);
129  EXPECT_EQ(one - one, zero);
130  EXPECT_EQ(one - zero, one);
131  EXPECT_EQ(zero - one, biggest);
132  EXPECT_EQ(big - big, zero);
133  EXPECT_EQ(big - one, big_minus_one);
134  EXPECT_EQ(big + kuint64max, bigger);
135  EXPECT_EQ(biggest + 1, zero);
136  EXPECT_EQ(zero - 1, biggest);
137  EXPECT_EQ(high_low - one, low_high);
138  EXPECT_EQ(low_high + one, high_low);
139  EXPECT_EQ(Uint128High64((uint128(1) << 64) - 1), 0);
140  EXPECT_EQ(Uint128Low64((uint128(1) << 64) - 1), kuint64max);
141  EXPECT_TRUE(!!one);
142  EXPECT_TRUE(!!high_low);
143  EXPECT_FALSE(!!zero);
144  EXPECT_FALSE(!one);
145  EXPECT_FALSE(!high_low);
146  EXPECT_TRUE(!zero);
147  EXPECT_TRUE(zero == 0);
148  EXPECT_FALSE(zero != 0);
149  EXPECT_FALSE(one == 0);
150  EXPECT_TRUE(one != 0);
151 
152  uint128 test = zero;
153  EXPECT_EQ(++test, one);
154  EXPECT_EQ(test, one);
155  EXPECT_EQ(test++, one);
156  EXPECT_EQ(test, two);
157  EXPECT_EQ(test -= 2, zero);
158  EXPECT_EQ(test, zero);
159  EXPECT_EQ(test += 2, two);
160  EXPECT_EQ(test, two);
161  EXPECT_EQ(--test, one);
162  EXPECT_EQ(test, one);
163  EXPECT_EQ(test--, one);
164  EXPECT_EQ(test, zero);
165  EXPECT_EQ(test |= three, three);
166  EXPECT_EQ(test &= one, one);
167  EXPECT_EQ(test ^= three, two);
168  EXPECT_EQ(test >>= 1, one);
169  EXPECT_EQ(test <<= 1, two);
170 
171  EXPECT_EQ(big, -(-big));
172  EXPECT_EQ(two, -((-one) - 1));
173  EXPECT_EQ(kuint128max, -one);
174  EXPECT_EQ(zero, -zero);
175 
176  GOOGLE_LOG(INFO) << one;
177  GOOGLE_LOG(INFO) << big_minus_one;
178 }
179 
180 TEST(Int128, PodTests) {
181  uint128_pod pod = { 12345, 67890 };
182  uint128 from_pod(pod);
183  EXPECT_EQ(12345, Uint128High64(from_pod));
184  EXPECT_EQ(67890, Uint128Low64(from_pod));
185 
186  uint128 zero(0);
187  uint128_pod zero_pod = {0, 0};
188  uint128 one(1);
189  uint128_pod one_pod = {0, 1};
190  uint128 two(2);
191  uint128_pod two_pod = {0, 2};
192  uint128 three(3);
193  uint128_pod three_pod = {0, 3};
194  uint128 big(1, 0);
195  uint128_pod big_pod = {1, 0};
196 
197  EXPECT_EQ(zero, zero_pod);
198  EXPECT_EQ(zero_pod, zero);
199  EXPECT_EQ(zero_pod, zero_pod);
200  EXPECT_EQ(one, one_pod);
201  EXPECT_EQ(one_pod, one);
202  EXPECT_EQ(one_pod, one_pod);
203  EXPECT_EQ(two, two_pod);
204  EXPECT_EQ(two_pod, two);
205  EXPECT_EQ(two_pod, two_pod);
206 
207  EXPECT_NE(one, two_pod);
208  EXPECT_NE(one_pod, two);
209  EXPECT_NE(one_pod, two_pod);
210 
211  EXPECT_LT(one, two_pod);
212  EXPECT_LT(one_pod, two);
213  EXPECT_LT(one_pod, two_pod);
214  EXPECT_LE(one, one_pod);
215  EXPECT_LE(one_pod, one);
216  EXPECT_LE(one_pod, one_pod);
217  EXPECT_LE(one, two_pod);
218  EXPECT_LE(one_pod, two);
219  EXPECT_LE(one_pod, two_pod);
220 
221  EXPECT_GT(two, one_pod);
222  EXPECT_GT(two_pod, one);
223  EXPECT_GT(two_pod, one_pod);
224  EXPECT_GE(two, two_pod);
225  EXPECT_GE(two_pod, two);
226  EXPECT_GE(two_pod, two_pod);
227  EXPECT_GE(two, one_pod);
228  EXPECT_GE(two_pod, one);
229  EXPECT_GE(two_pod, one_pod);
230 
231  EXPECT_EQ(three, one | two_pod);
232  EXPECT_EQ(three, one_pod | two);
233  EXPECT_EQ(three, one_pod | two_pod);
234  EXPECT_EQ(one, three & one_pod);
235  EXPECT_EQ(one, three_pod & one);
236  EXPECT_EQ(one, three_pod & one_pod);
237  EXPECT_EQ(two, three ^ one_pod);
238  EXPECT_EQ(two, three_pod ^ one);
239  EXPECT_EQ(two, three_pod ^ one_pod);
240  EXPECT_EQ(two, three & (~one));
241  EXPECT_EQ(three, ~~three);
242 
243  EXPECT_EQ(two, two_pod << 0);
244  EXPECT_EQ(two, one_pod << 1);
245  EXPECT_EQ(big, one_pod << 64);
246  EXPECT_EQ(zero, one_pod << 128);
247  EXPECT_EQ(two, two_pod >> 0);
248  EXPECT_EQ(one, two_pod >> 1);
249  EXPECT_EQ(one, big_pod >> 64);
250 
251  EXPECT_EQ(one, zero + one_pod);
252  EXPECT_EQ(one, zero_pod + one);
253  EXPECT_EQ(one, zero_pod + one_pod);
254  EXPECT_EQ(one, two - one_pod);
255  EXPECT_EQ(one, two_pod - one);
256  EXPECT_EQ(one, two_pod - one_pod);
257 }
258 
259 TEST(Int128, OperatorAssignReturnRef) {
260  uint128 v(1);
261  (v += 4) -= 3;
262  EXPECT_EQ(2, v);
263 }
264 
265 TEST(Int128, Multiply) {
266  uint128 a, b, c;
267 
268  // Zero test.
269  a = 0;
270  b = 0;
271  c = a * b;
272  EXPECT_EQ(0, c);
273 
274  // Max carries.
275  a = uint128(0) - 1;
276  b = uint128(0) - 1;
277  c = a * b;
278  EXPECT_EQ(1, c);
279 
280  // Self-operation with max carries.
281  c = uint128(0) - 1;
282  c *= c;
283  EXPECT_EQ(1, c);
284 
285  // 1-bit x 1-bit.
286  for (int i = 0; i < 64; ++i) {
287  for (int j = 0; j < 64; ++j) {
288  a = uint128(1) << i;
289  b = uint128(1) << j;
290  c = a * b;
291  EXPECT_EQ(uint128(1) << (i+j), c);
292  }
293  }
294 
295  // Verified with dc.
296  a = uint128(uint64_t{0xffffeeeeddddccccu}, uint64_t{0xbbbbaaaa99998888u});
297  b = uint128(uint64_t{0x7777666655554444u}, uint64_t{0x3333222211110000u});
298  c = a * b;
299  EXPECT_EQ(
300  uint128(uint64_t{0x530EDA741C71D4C3u}, uint64_t{0xBF25975319080000u}), c);
301  EXPECT_EQ(0, c - b * a);
302  EXPECT_EQ(a * a - b * b, (a + b) * (a - b));
303 
304  // Verified with dc.
305  a = uint128(uint64_t{0x0123456789abcdefu}, uint64_t{0xfedcba9876543210u});
306  b = uint128(uint64_t{0x02468ace13579bdfu}, uint64_t{0xfdb97531eca86420u});
307  c = a * b;
308  EXPECT_EQ(
309  uint128(uint64_t{0x97a87f4f261ba3f2u}, uint64_t{0x342d0bbf48948200u}), c);
310  EXPECT_EQ(0, c - b * a);
311  EXPECT_EQ(a*a - b*b, (a+b) * (a-b));
312 }
313 
314 TEST(Int128, AliasTests) {
315  uint128 x1(1, 2);
316  uint128 x2(2, 4);
317  x1 += x1;
318  EXPECT_EQ(x2, x1);
319 
320  uint128 x3(1, static_cast<uint64>(1) << 63);
321  uint128 x4(3, 0);
322  x3 += x3;
323  EXPECT_EQ(x4, x3);
324 }
325 
326 #ifdef PROTOBUF_HAS_DEATH_TEST
327 TEST(Int128, DivideByZeroCheckFails) {
328  uint128 a = 0;
329  uint128 b = 0;
330  EXPECT_DEATH(a / b, "Division or mod by zero:");
331  a = 123;
332  EXPECT_DEATH(a / b, "Division or mod by zero:");
333 }
334 
335 TEST(Int128, ModByZeroCheckFails) {
336  uint128 a = 0;
337  uint128 b = 0;
338  EXPECT_DEATH(a % b, "Division or mod by zero:");
339  a = 123;
340  EXPECT_DEATH(a % b, "Division or mod by zero:");
341 }
342 #endif // PROTOBUF_HAS_DEATH_TEST
343 
344 TEST(Int128, DivideAndMod) {
345  // a := q * b + r
346  uint128 a, b, q, r;
347 
348  // Zero test.
349  a = 0;
350  b = 123;
351  q = a / b;
352  r = a % b;
353  EXPECT_EQ(0, q);
354  EXPECT_EQ(0, r);
355 
356  a = uint128(uint64_t{0x530eda741c71d4c3u}, uint64_t{0xbf25975319080000u});
357  q = uint128(uint64_t{0x4de2cab081u}, uint64_t{0x14c34ab4676e4babu});
358  b = uint128(0x1110001);
359  r = uint128(0x3eb455);
360  ASSERT_EQ(a, q * b + r); // Sanity-check.
361 
362  uint128 result_q, result_r;
363  result_q = a / b;
364  result_r = a % b;
365  EXPECT_EQ(q, result_q);
366  EXPECT_EQ(r, result_r);
367 
368  // Try the other way around.
369  std::swap(q, b);
370  result_q = a / b;
371  result_r = a % b;
372  EXPECT_EQ(q, result_q);
373  EXPECT_EQ(r, result_r);
374  // Restore.
375  std::swap(b, q);
376 
377  // Dividend < divisor; result should be q:0 r:<dividend>.
378  std::swap(a, b);
379  result_q = a / b;
380  result_r = a % b;
381  EXPECT_EQ(0, result_q);
382  EXPECT_EQ(a, result_r);
383  // Try the other way around.
384  std::swap(a, q);
385  result_q = a / b;
386  result_r = a % b;
387  EXPECT_EQ(0, result_q);
388  EXPECT_EQ(a, result_r);
389  // Restore.
390  std::swap(q, a);
391  std::swap(b, a);
392 
393  // Try a large remainder.
394  b = a / 2 + 1;
395  uint128 expected_r(uint64_t{0x29876d3a0e38ea61u},
396  uint64_t{0xdf92cba98c83ffffu});
397  // Sanity checks.
398  ASSERT_EQ(a / 2 - 1, expected_r);
399  ASSERT_EQ(a, b + expected_r);
400  result_q = a / b;
401  result_r = a % b;
402  EXPECT_EQ(1, result_q);
403  EXPECT_EQ(expected_r, result_r);
404 }
405 
407  uint64 v1 = rand();
408  uint64 v2 = rand();
409  uint64 v3 = rand();
410  return v1 * v2 + v3;
411 }
412 
413 TEST(Int128, DivideAndModRandomInputs) {
414  const int kNumIters = 1 << 18;
415  for (int i = 0; i < kNumIters; ++i) {
416  const uint128 a(RandomUint64(), RandomUint64());
417  const uint128 b(RandomUint64(), RandomUint64());
418  if (b == 0) {
419  continue; // Avoid a div-by-zero.
420  }
421  const uint128 q = a / b;
422  const uint128 r = a % b;
423  ASSERT_EQ(a, b * q + r);
424  }
425 }
426 
427 #ifdef GOOGLE_PROTOBUF_HAS_CONSTEXPR
428 TEST(Int128, ConstexprTest) {
429  constexpr uint128 zero;
430  constexpr uint128 one = 1;
431  constexpr uint128_pod pod = {2, 3};
432  constexpr uint128 from_pod = pod;
433  constexpr uint128 minus_two = -2;
434  EXPECT_EQ(one, uint128(1));
435  EXPECT_EQ(from_pod, uint128(2, 3));
436  EXPECT_EQ(minus_two, uint128(-1ULL, -2ULL));
437 }
438 
439 TEST(Int128, Traits) {
443 }
444 #endif // GOOGLE_PROTOBUF_HAS_CONSTEXPR
445 
446 TEST(Int128, OStream) {
447  struct {
448  uint128 val;
449  std::ios_base::fmtflags flags;
450  std::streamsize width;
451  char fill;
452  const char* rep;
453  } cases[] = {
454  // zero with different bases
455  {uint128(0), std::ios::dec, 0, '_', "0"},
456  {uint128(0), std::ios::oct, 0, '_', "0"},
457  {uint128(0), std::ios::hex, 0, '_', "0"},
458  // crossover between lo_ and hi_
459  {uint128(0, -1), std::ios::dec, 0, '_', "18446744073709551615"},
460  {uint128(0, -1), std::ios::oct, 0, '_', "1777777777777777777777"},
461  {uint128(0, -1), std::ios::hex, 0, '_', "ffffffffffffffff"},
462  {uint128(1, 0), std::ios::dec, 0, '_', "18446744073709551616"},
463  {uint128(1, 0), std::ios::oct, 0, '_', "2000000000000000000000"},
464  {uint128(1, 0), std::ios::hex, 0, '_', "10000000000000000"},
465  // just the top bit
466  {uint128(uint64_t{0x8000000000000000u}, 0), std::ios::dec, 0, '_',
467  "170141183460469231731687303715884105728"},
468  {uint128(uint64_t{0x8000000000000000u}, 0), std::ios::oct, 0, '_',
469  "2000000000000000000000000000000000000000000"},
470  {uint128(uint64_t{0x8000000000000000u}, 0), std::ios::hex, 0, '_',
471  "80000000000000000000000000000000"},
472  // maximum uint128 value
473  {uint128(-1, -1), std::ios::dec, 0, '_',
474  "340282366920938463463374607431768211455"},
475  {uint128(-1, -1), std::ios::oct, 0, '_',
476  "3777777777777777777777777777777777777777777"},
477  {uint128(-1, -1), std::ios::hex, 0, '_',
478  "ffffffffffffffffffffffffffffffff"},
479  // uppercase
480  {uint128(-1, -1), std::ios::hex | std::ios::uppercase, 0, '_',
481  "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"},
482  // showbase
483  {uint128(1), std::ios::dec | std::ios::showbase, 0, '_', "1"},
484  {uint128(1), std::ios::oct | std::ios::showbase, 0, '_', "01"},
485  {uint128(1), std::ios::hex | std::ios::showbase, 0, '_', "0x1"},
486  // showbase does nothing on zero
487  {uint128(0), std::ios::dec | std::ios::showbase, 0, '_', "0"},
488  {uint128(0), std::ios::oct | std::ios::showbase, 0, '_', "0"},
489  {uint128(0), std::ios::hex | std::ios::showbase, 0, '_', "0"},
490  // showpos does nothing on unsigned types
491  {uint128(1), std::ios::dec | std::ios::showpos, 0, '_', "1"},
492  // padding
493  {uint128(9), std::ios::dec, 6, '_', "_____9"},
494  {uint128(12345), std::ios::dec, 6, '_', "_12345"},
495  // left adjustment
496  {uint128(9), std::ios::dec | std::ios::left, 6, '_', "9_____"},
497  {uint128(12345), std::ios::dec | std::ios::left, 6, '_', "12345_"},
498  };
499  for (size_t i = 0; i < GOOGLE_ARRAYSIZE(cases); ++i) {
500  std::ostringstream os;
501  os.flags(cases[i].flags);
502  os.width(cases[i].width);
503  os.fill(cases[i].fill);
504  os << cases[i].val;
505  EXPECT_EQ(cases[i].rep, os.str());
506  }
507 }
508 } // namespace protobuf
509 } // namespace google
510 
511 #include <google/protobuf/port_undef.inc>
EXPECT_FALSE
#define EXPECT_FALSE(condition)
Definition: bloaty/third_party/googletest/googletest/include/gtest/gtest.h:1970
width
int width
Definition: libuv/docs/code/tty-gravity/main.c:10
absl::str_format_internal::LengthMod::j
@ j
google::protobuf::Uint128Low64
uint64 Uint128Low64(const uint128 &v)
Definition: bloaty/third_party/protobuf/src/google/protobuf/stubs/int128.h:130
fix_build_deps.c
list c
Definition: fix_build_deps.py:490
test
Definition: spinlock_test.cc:36
EXPECT_GT
#define EXPECT_GT(val1, val2)
Definition: bloaty/third_party/googletest/googletest/include/gtest/gtest.h:2036
u
OPENSSL_EXPORT pem_password_cb void * u
Definition: pem.h:351
google::protobuf
Definition: bloaty/third_party/protobuf/benchmarks/util/data_proto2_to_proto3_util.h:12
a
int a
Definition: abseil-cpp/absl/container/internal/hash_policy_traits_test.cc:88
EXPECT_LE
#define EXPECT_LE(val1, val2)
Definition: bloaty/third_party/googletest/googletest/include/gtest/gtest.h:2030
google::protobuf::Uint128High64
uint64 Uint128High64(const uint128 &v)
Definition: bloaty/third_party/protobuf/src/google/protobuf/stubs/int128.h:131
EXPECT_EQ
#define EXPECT_EQ(a, b)
Definition: iomgr/time_averaged_stats_test.cc:27
ULL
#define ULL(x)
Definition: bloaty/third_party/protobuf/src/google/protobuf/io/coded_stream_unittest.cc:57
google::protobuf::RandomUint64
static uint64 RandomUint64()
Definition: bloaty/third_party/protobuf/src/google/protobuf/stubs/int128_unittest.cc:414
python_utils.jobset.INFO
INFO
Definition: jobset.py:111
EXPECT_NE
#define EXPECT_NE(val1, val2)
Definition: bloaty/third_party/googletest/googletest/include/gtest/gtest.h:2028
setup.v
v
Definition: third_party/bloaty/third_party/capstone/bindings/python/setup.py:42
uint64_t
unsigned __int64 uint64_t
Definition: stdint-msvc2008.h:90
std::swap
void swap(Json::Value &a, Json::Value &b)
Specialize std::swap() for Json::Value.
Definition: third_party/bloaty/third_party/protobuf/conformance/third_party/jsoncpp/json.h:1226
google::protobuf::uint64
uint64_t uint64
Definition: third_party/bloaty/third_party/protobuf/src/google/protobuf/stubs/port.h:156
google::protobuf::TEST
TEST(ArenaTest, ArenaConstructable)
Definition: bloaty/third_party/protobuf/src/google/protobuf/arena_unittest.cc:156
b
uint64_t b
Definition: abseil-cpp/absl/container/internal/layout_test.cc:53
value
const char * value
Definition: hpack_parser_table.cc:165
absl::flags_internal
Definition: abseil-cpp/absl/flags/commandlineflag.h:40
fix_build_deps.r
r
Definition: fix_build_deps.py:491
GOOGLE_ARRAYSIZE
#define GOOGLE_ARRAYSIZE(a)
Definition: bloaty/third_party/protobuf/src/google/protobuf/stubs/macros.h:88
EXPECT_LT
#define EXPECT_LT(val1, val2)
Definition: bloaty/third_party/googletest/googletest/include/gtest/gtest.h:2032
rep
const CordRep * rep
Definition: cord_analysis.cc:53
EXPECT_GE
#define EXPECT_GE(val1, val2)
Definition: bloaty/third_party/googletest/googletest/include/gtest/gtest.h:2034
EXPECT_TRUE
#define EXPECT_TRUE(condition)
Definition: bloaty/third_party/googletest/googletest/include/gtest/gtest.h:1967
fill
int fill
Definition: abseil-cpp/absl/base/internal/low_level_alloc_test.cc:47
absl::str_format_internal::LengthMod::q
@ q
flags
uint32_t flags
Definition: retry_filter.cc:632
google::protobuf::kuint64max
static const uint64 kuint64max
Definition: third_party/bloaty/third_party/protobuf/src/google/protobuf/stubs/port.h:164
google::protobuf::kuint128max
const uint128_pod kuint128max
Definition: bloaty/third_party/protobuf/src/google/protobuf/stubs/int128.cc:44
GOOGLE_LOG
#define GOOGLE_LOG(LEVEL)
Definition: bloaty/third_party/protobuf/src/google/protobuf/stubs/logging.h:146
google
Definition: bloaty/third_party/protobuf/benchmarks/util/data_proto2_to_proto3_util.h:11
i
uint64_t i
Definition: abseil-cpp/absl/container/btree_benchmark.cc:230
ASSERT_EQ
#define ASSERT_EQ(val1, val2)
Definition: bloaty/third_party/googletest/googletest/include/gtest/gtest.h:2056


grpc
Author(s):
autogenerated on Fri May 16 2025 02:59:06