ruby_memprofiler_pprof 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (200) hide show
  1. checksums.yaml +7 -0
  2. data/ext/ruby_memprofiler_pprof/backtrace.c +429 -0
  3. data/ext/ruby_memprofiler_pprof/collector.c +1055 -0
  4. data/ext/ruby_memprofiler_pprof/compat.c +182 -0
  5. data/ext/ruby_memprofiler_pprof/extconf.rb +72 -0
  6. data/ext/ruby_memprofiler_pprof/pprof.upb.c +170 -0
  7. data/ext/ruby_memprofiler_pprof/pprof.upb.h +848 -0
  8. data/ext/ruby_memprofiler_pprof/pprof_out.c +285 -0
  9. data/ext/ruby_memprofiler_pprof/ruby_memprofiler_pprof.c +11 -0
  10. data/ext/ruby_memprofiler_pprof/ruby_memprofiler_pprof.h +301 -0
  11. data/ext/ruby_memprofiler_pprof/strtab.c +391 -0
  12. data/ext/ruby_memprofiler_pprof/vendor/upb/BUILD +719 -0
  13. data/ext/ruby_memprofiler_pprof/vendor/upb/CONTRIBUTING.md +37 -0
  14. data/ext/ruby_memprofiler_pprof/vendor/upb/DESIGN.md +201 -0
  15. data/ext/ruby_memprofiler_pprof/vendor/upb/LICENSE +26 -0
  16. data/ext/ruby_memprofiler_pprof/vendor/upb/README.md +78 -0
  17. data/ext/ruby_memprofiler_pprof/vendor/upb/WORKSPACE +58 -0
  18. data/ext/ruby_memprofiler_pprof/vendor/upb/bazel/BUILD +53 -0
  19. data/ext/ruby_memprofiler_pprof/vendor/upb/bazel/amalgamate.py +129 -0
  20. data/ext/ruby_memprofiler_pprof/vendor/upb/bazel/build_defs.bzl +160 -0
  21. data/ext/ruby_memprofiler_pprof/vendor/upb/bazel/lua.BUILD +127 -0
  22. data/ext/ruby_memprofiler_pprof/vendor/upb/bazel/protobuf.patch +54 -0
  23. data/ext/ruby_memprofiler_pprof/vendor/upb/bazel/py_proto_library.bzl +137 -0
  24. data/ext/ruby_memprofiler_pprof/vendor/upb/bazel/python_downloads.bzl +84 -0
  25. data/ext/ruby_memprofiler_pprof/vendor/upb/bazel/system_python.bzl +101 -0
  26. data/ext/ruby_memprofiler_pprof/vendor/upb/bazel/upb_proto_library.bzl +388 -0
  27. data/ext/ruby_memprofiler_pprof/vendor/upb/bazel/workspace_deps.bzl +89 -0
  28. data/ext/ruby_memprofiler_pprof/vendor/upb/benchmarks/BUILD +252 -0
  29. data/ext/ruby_memprofiler_pprof/vendor/upb/benchmarks/BUILD.googleapis +54 -0
  30. data/ext/ruby_memprofiler_pprof/vendor/upb/benchmarks/benchmark.cc +333 -0
  31. data/ext/ruby_memprofiler_pprof/vendor/upb/benchmarks/build_defs.bzl +88 -0
  32. data/ext/ruby_memprofiler_pprof/vendor/upb/benchmarks/compare.py +118 -0
  33. data/ext/ruby_memprofiler_pprof/vendor/upb/benchmarks/descriptor.proto +888 -0
  34. data/ext/ruby_memprofiler_pprof/vendor/upb/benchmarks/descriptor_sv.proto +890 -0
  35. data/ext/ruby_memprofiler_pprof/vendor/upb/benchmarks/empty.proto +6 -0
  36. data/ext/ruby_memprofiler_pprof/vendor/upb/benchmarks/gen_protobuf_binary_cc.py +64 -0
  37. data/ext/ruby_memprofiler_pprof/vendor/upb/benchmarks/gen_synthetic_protos.py +118 -0
  38. data/ext/ruby_memprofiler_pprof/vendor/upb/benchmarks/gen_upb_binary_c.py +65 -0
  39. data/ext/ruby_memprofiler_pprof/vendor/upb/cmake/BUILD.bazel +102 -0
  40. data/ext/ruby_memprofiler_pprof/vendor/upb/cmake/README.md +23 -0
  41. data/ext/ruby_memprofiler_pprof/vendor/upb/cmake/build_defs.bzl +73 -0
  42. data/ext/ruby_memprofiler_pprof/vendor/upb/cmake/make_cmakelists.py +340 -0
  43. data/ext/ruby_memprofiler_pprof/vendor/upb/cmake/staleness_test.py +57 -0
  44. data/ext/ruby_memprofiler_pprof/vendor/upb/cmake/staleness_test_lib.py +186 -0
  45. data/ext/ruby_memprofiler_pprof/vendor/upb/docs/render.py +43 -0
  46. data/ext/ruby_memprofiler_pprof/vendor/upb/docs/style-guide.md +65 -0
  47. data/ext/ruby_memprofiler_pprof/vendor/upb/docs/vs-cpp-protos.md +255 -0
  48. data/ext/ruby_memprofiler_pprof/vendor/upb/docs/wrapping-upb.md +444 -0
  49. data/ext/ruby_memprofiler_pprof/vendor/upb/python/BUILD +216 -0
  50. data/ext/ruby_memprofiler_pprof/vendor/upb/python/convert.c +394 -0
  51. data/ext/ruby_memprofiler_pprof/vendor/upb/python/convert.h +63 -0
  52. data/ext/ruby_memprofiler_pprof/vendor/upb/python/descriptor.c +1694 -0
  53. data/ext/ruby_memprofiler_pprof/vendor/upb/python/descriptor.h +80 -0
  54. data/ext/ruby_memprofiler_pprof/vendor/upb/python/descriptor_containers.c +704 -0
  55. data/ext/ruby_memprofiler_pprof/vendor/upb/python/descriptor_containers.h +114 -0
  56. data/ext/ruby_memprofiler_pprof/vendor/upb/python/descriptor_pool.c +650 -0
  57. data/ext/ruby_memprofiler_pprof/vendor/upb/python/descriptor_pool.h +48 -0
  58. data/ext/ruby_memprofiler_pprof/vendor/upb/python/dist/BUILD.bazel +193 -0
  59. data/ext/ruby_memprofiler_pprof/vendor/upb/python/dist/dist.bzl +190 -0
  60. data/ext/ruby_memprofiler_pprof/vendor/upb/python/extension_dict.c +247 -0
  61. data/ext/ruby_memprofiler_pprof/vendor/upb/python/extension_dict.h +39 -0
  62. data/ext/ruby_memprofiler_pprof/vendor/upb/python/map.c +522 -0
  63. data/ext/ruby_memprofiler_pprof/vendor/upb/python/map.h +66 -0
  64. data/ext/ruby_memprofiler_pprof/vendor/upb/python/message.c +1909 -0
  65. data/ext/ruby_memprofiler_pprof/vendor/upb/python/message.h +101 -0
  66. data/ext/ruby_memprofiler_pprof/vendor/upb/python/minimal_test.py +183 -0
  67. data/ext/ruby_memprofiler_pprof/vendor/upb/python/pb_unit_tests/BUILD +70 -0
  68. data/ext/ruby_memprofiler_pprof/vendor/upb/python/pb_unit_tests/README.md +11 -0
  69. data/ext/ruby_memprofiler_pprof/vendor/upb/python/pb_unit_tests/descriptor_database_test_wrapper.py +30 -0
  70. data/ext/ruby_memprofiler_pprof/vendor/upb/python/pb_unit_tests/descriptor_pool_test_wrapper.py +45 -0
  71. data/ext/ruby_memprofiler_pprof/vendor/upb/python/pb_unit_tests/descriptor_test_wrapper.py +46 -0
  72. data/ext/ruby_memprofiler_pprof/vendor/upb/python/pb_unit_tests/generator_test_wrapper.py +30 -0
  73. data/ext/ruby_memprofiler_pprof/vendor/upb/python/pb_unit_tests/json_format_test_wrapper.py +30 -0
  74. data/ext/ruby_memprofiler_pprof/vendor/upb/python/pb_unit_tests/keywords_test_wrapper.py +30 -0
  75. data/ext/ruby_memprofiler_pprof/vendor/upb/python/pb_unit_tests/message_factory_test_wrapper.py +37 -0
  76. data/ext/ruby_memprofiler_pprof/vendor/upb/python/pb_unit_tests/message_test_wrapper.py +52 -0
  77. data/ext/ruby_memprofiler_pprof/vendor/upb/python/pb_unit_tests/proto_builder_test_wrapper.py +32 -0
  78. data/ext/ruby_memprofiler_pprof/vendor/upb/python/pb_unit_tests/pyproto_test_wrapper.bzl +36 -0
  79. data/ext/ruby_memprofiler_pprof/vendor/upb/python/pb_unit_tests/reflection_test_wrapper.py +45 -0
  80. data/ext/ruby_memprofiler_pprof/vendor/upb/python/pb_unit_tests/service_reflection_test_wrapper.py +30 -0
  81. data/ext/ruby_memprofiler_pprof/vendor/upb/python/pb_unit_tests/symbol_database_test_wrapper.py +30 -0
  82. data/ext/ruby_memprofiler_pprof/vendor/upb/python/pb_unit_tests/text_encoding_test_wrapper.py +30 -0
  83. data/ext/ruby_memprofiler_pprof/vendor/upb/python/pb_unit_tests/text_format_test_wrapper.py +30 -0
  84. data/ext/ruby_memprofiler_pprof/vendor/upb/python/pb_unit_tests/unknown_fields_test_wrapper.py +30 -0
  85. data/ext/ruby_memprofiler_pprof/vendor/upb/python/pb_unit_tests/well_known_types_test_wrapper.py +36 -0
  86. data/ext/ruby_memprofiler_pprof/vendor/upb/python/pb_unit_tests/wire_format_test_wrapper.py +30 -0
  87. data/ext/ruby_memprofiler_pprof/vendor/upb/python/protobuf.c +350 -0
  88. data/ext/ruby_memprofiler_pprof/vendor/upb/python/protobuf.h +230 -0
  89. data/ext/ruby_memprofiler_pprof/vendor/upb/python/py_extension.bzl +55 -0
  90. data/ext/ruby_memprofiler_pprof/vendor/upb/python/python_api.h +61 -0
  91. data/ext/ruby_memprofiler_pprof/vendor/upb/python/repeated.c +828 -0
  92. data/ext/ruby_memprofiler_pprof/vendor/upb/python/repeated.h +69 -0
  93. data/ext/ruby_memprofiler_pprof/vendor/upb/python/unknown_fields.c +404 -0
  94. data/ext/ruby_memprofiler_pprof/vendor/upb/python/unknown_fields.h +39 -0
  95. data/ext/ruby_memprofiler_pprof/vendor/upb/python/version_script.lds +6 -0
  96. data/ext/ruby_memprofiler_pprof/vendor/upb/third_party/lunit/LICENSE +32 -0
  97. data/ext/ruby_memprofiler_pprof/vendor/upb/third_party/lunit/README.google +9 -0
  98. data/ext/ruby_memprofiler_pprof/vendor/upb/third_party/lunit/console.lua +156 -0
  99. data/ext/ruby_memprofiler_pprof/vendor/upb/third_party/lunit/lunit.lua +725 -0
  100. data/ext/ruby_memprofiler_pprof/vendor/upb/third_party/utf8_range/BUILD +19 -0
  101. data/ext/ruby_memprofiler_pprof/vendor/upb/third_party/utf8_range/LICENSE +21 -0
  102. data/ext/ruby_memprofiler_pprof/vendor/upb/third_party/utf8_range/naive.c +92 -0
  103. data/ext/ruby_memprofiler_pprof/vendor/upb/third_party/utf8_range/range2-neon.c +157 -0
  104. data/ext/ruby_memprofiler_pprof/vendor/upb/third_party/utf8_range/range2-sse.c +170 -0
  105. data/ext/ruby_memprofiler_pprof/vendor/upb/third_party/utf8_range/utf8_range.h +9 -0
  106. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/bindings/lua/BUILD.bazel +129 -0
  107. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/bindings/lua/README.md +8 -0
  108. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/bindings/lua/def.c +939 -0
  109. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/bindings/lua/lua_proto_library.bzl +138 -0
  110. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/bindings/lua/main.c +83 -0
  111. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/bindings/lua/msg.c +1118 -0
  112. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/bindings/lua/test.proto +69 -0
  113. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/bindings/lua/test_upb.lua +846 -0
  114. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/bindings/lua/upb.c +258 -0
  115. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/bindings/lua/upb.h +132 -0
  116. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/bindings/lua/upb.lua +58 -0
  117. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/bindings/lua/upbc.cc +134 -0
  118. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/collections.c +192 -0
  119. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/collections.h +174 -0
  120. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/conformance_upb.c +346 -0
  121. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/conformance_upb_failures.txt +1 -0
  122. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/decode.c +1221 -0
  123. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/decode.h +94 -0
  124. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/decode_fast.c +1055 -0
  125. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/decode_fast.h +153 -0
  126. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/decode_internal.h +211 -0
  127. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/def.c +3262 -0
  128. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/def.h +414 -0
  129. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/def.hpp +438 -0
  130. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/empty.proto +1 -0
  131. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/encode.c +604 -0
  132. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/encode.h +71 -0
  133. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/fuzz/BUILD +13 -0
  134. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/fuzz/file_descriptor_parsenew_fuzzer.cc +43 -0
  135. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/json_decode.c +1509 -0
  136. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/json_decode.h +47 -0
  137. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/json_encode.c +776 -0
  138. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/json_encode.h +62 -0
  139. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/mini_table.c +1147 -0
  140. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/mini_table.h +189 -0
  141. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/mini_table.hpp +112 -0
  142. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/mini_table_accessors.c +363 -0
  143. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/mini_table_accessors.h +263 -0
  144. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/mini_table_accessors_internal.h +59 -0
  145. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/mini_table_accessors_test.cc +425 -0
  146. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/mini_table_test.cc +230 -0
  147. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/msg.c +428 -0
  148. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/msg.h +114 -0
  149. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/msg_internal.h +836 -0
  150. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/msg_test.cc +491 -0
  151. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/msg_test.proto +195 -0
  152. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/port_def.inc +261 -0
  153. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/port_undef.inc +62 -0
  154. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/reflection.c +323 -0
  155. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/reflection.h +109 -0
  156. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/reflection.hpp +37 -0
  157. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/table.c +926 -0
  158. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/table_internal.h +385 -0
  159. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/test.proto +74 -0
  160. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/test_cpp.cc +186 -0
  161. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/test_cpp.proto +12 -0
  162. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/test_generated_code.cc +977 -0
  163. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/test_table.cc +580 -0
  164. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/text_encode.c +472 -0
  165. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/text_encode.h +64 -0
  166. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/upb.c +362 -0
  167. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/upb.h +378 -0
  168. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/upb.hpp +115 -0
  169. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/upb_internal.h +68 -0
  170. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/util/BUILD +121 -0
  171. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/util/README.md +7 -0
  172. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/util/compare.c +300 -0
  173. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/util/compare.h +66 -0
  174. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/util/compare_test.cc +236 -0
  175. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/util/def_to_proto.c +572 -0
  176. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/util/def_to_proto.h +62 -0
  177. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/util/def_to_proto_public_import_test.proto +32 -0
  178. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/util/def_to_proto_regular_import_test.proto +36 -0
  179. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/util/def_to_proto_test.cc +143 -0
  180. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/util/def_to_proto_test.proto +119 -0
  181. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/util/def_to_proto_weak_import_test.proto +28 -0
  182. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/util/def_to_proto_wweak_import_test.proto +28 -0
  183. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/util/required_fields.c +311 -0
  184. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/util/required_fields.h +94 -0
  185. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/util/required_fields_test.cc +202 -0
  186. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/util/required_fields_test.proto +48 -0
  187. data/ext/ruby_memprofiler_pprof/vendor/upb/upbc/BUILD +78 -0
  188. data/ext/ruby_memprofiler_pprof/vendor/upb/upbc/common.cc +77 -0
  189. data/ext/ruby_memprofiler_pprof/vendor/upb/upbc/common.h +112 -0
  190. data/ext/ruby_memprofiler_pprof/vendor/upb/upbc/protoc-gen-upb.cc +1997 -0
  191. data/ext/ruby_memprofiler_pprof/vendor/upb/upbc/protoc-gen-upbdefs.cc +193 -0
  192. data/lib/ruby_memprofiler_pprof/atfork.rb +77 -0
  193. data/lib/ruby_memprofiler_pprof/block_flusher.rb +61 -0
  194. data/lib/ruby_memprofiler_pprof/file_flusher.rb +45 -0
  195. data/lib/ruby_memprofiler_pprof/profile_app.rb +30 -0
  196. data/lib/ruby_memprofiler_pprof/profile_data.rb +18 -0
  197. data/lib/ruby_memprofiler_pprof/version.rb +5 -0
  198. data/lib/ruby_memprofiler_pprof.rb +8 -0
  199. data/libexec/ruby_memprofiler_pprof_profile +16 -0
  200. metadata +257 -0
@@ -0,0 +1,263 @@
1
+ /*
2
+ * Copyright (c) 2009-2022, Google LLC
3
+ * All rights reserved.
4
+ *
5
+ * Redistribution and use in source and binary forms, with or without
6
+ * modification, are permitted provided that the following conditions are met:
7
+ * * Redistributions of source code must retain the above copyright
8
+ * notice, this list of conditions and the following disclaimer.
9
+ * * Redistributions in binary form must reproduce the above copyright
10
+ * notice, this list of conditions and the following disclaimer in the
11
+ * documentation and/or other materials provided with the distribution.
12
+ * * Neither the name of Google LLC nor the
13
+ * names of its contributors may be used to endorse or promote products
14
+ * derived from this software without specific prior written permission.
15
+ *
16
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
17
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19
+ * ARE DISCLAIMED. IN NO EVENT SHALL Google LLC BE LIABLE FOR ANY DIRECT,
20
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26
+ */
27
+
28
+ #ifndef UPB_MINI_TABLE_ACCESSORS_H_
29
+ #define UPB_MINI_TABLE_ACCESSORS_H_
30
+
31
+ #include "upb/collections.h"
32
+ #include "upb/mini_table_accessors_internal.h"
33
+ #include "upb/msg_internal.h"
34
+
35
+ // Must be last.
36
+ #include "upb/port_def.inc"
37
+
38
+ #ifdef __cplusplus
39
+ extern "C" {
40
+ #endif
41
+
42
+ bool upb_MiniTable_HasField(const upb_Message* msg,
43
+ const upb_MiniTable_Field* field);
44
+
45
+ void upb_MiniTable_ClearField(upb_Message* msg,
46
+ const upb_MiniTable_Field* field);
47
+
48
+ UPB_INLINE bool upb_MiniTable_GetBool(const upb_Message* msg,
49
+ const upb_MiniTable_Field* field) {
50
+ UPB_ASSERT(field->descriptortype == kUpb_FieldType_Bool);
51
+ return *UPB_PTR_AT(msg, field->offset, bool);
52
+ }
53
+
54
+ UPB_INLINE void upb_MiniTable_SetBool(upb_Message* msg,
55
+ const upb_MiniTable_Field* field,
56
+ bool value) {
57
+ UPB_ASSERT(field->descriptortype == kUpb_FieldType_Bool);
58
+ _upb_MiniTable_SetPresence(msg, field);
59
+ *UPB_PTR_AT(msg, field->offset, bool) = value;
60
+ }
61
+
62
+ UPB_INLINE int32_t upb_MiniTable_GetInt32(const upb_Message* msg,
63
+ const upb_MiniTable_Field* field) {
64
+ UPB_ASSERT(field->descriptortype == kUpb_FieldType_Int32 ||
65
+ field->descriptortype == kUpb_FieldType_SInt32 ||
66
+ field->descriptortype == kUpb_FieldType_SFixed32);
67
+ return *UPB_PTR_AT(msg, field->offset, int32_t);
68
+ }
69
+
70
+ UPB_INLINE void upb_MiniTable_SetInt32(upb_Message* msg,
71
+ const upb_MiniTable_Field* field,
72
+ int32_t value) {
73
+ UPB_ASSERT(field->descriptortype == kUpb_FieldType_Int32 ||
74
+ field->descriptortype == kUpb_FieldType_SInt32 ||
75
+ field->descriptortype == kUpb_FieldType_SFixed32);
76
+ _upb_MiniTable_SetPresence(msg, field);
77
+ *UPB_PTR_AT(msg, field->offset, int32_t) = value;
78
+ }
79
+
80
+ UPB_INLINE uint32_t upb_MiniTable_GetUInt32(const upb_Message* msg,
81
+ const upb_MiniTable_Field* field) {
82
+ UPB_ASSERT(field->descriptortype == kUpb_FieldType_UInt32 ||
83
+ field->descriptortype == kUpb_FieldType_Fixed32);
84
+ return *UPB_PTR_AT(msg, field->offset, uint32_t);
85
+ }
86
+
87
+ UPB_INLINE void upb_MiniTable_SetUInt32(upb_Message* msg,
88
+ const upb_MiniTable_Field* field,
89
+ uint32_t value) {
90
+ UPB_ASSERT(field->descriptortype == kUpb_FieldType_UInt32 ||
91
+ field->descriptortype == kUpb_FieldType_Fixed32);
92
+ _upb_MiniTable_SetPresence(msg, field);
93
+ *UPB_PTR_AT(msg, field->offset, uint32_t) = value;
94
+ }
95
+
96
+ UPB_INLINE int32_t upb_MiniTable_GetEnum(const upb_Message* msg,
97
+ const upb_MiniTable_Field* field) {
98
+ UPB_ASSERT(field->descriptortype == kUpb_FieldType_Enum);
99
+ return *UPB_PTR_AT(msg, field->offset, int32_t);
100
+ }
101
+
102
+ UPB_INLINE void upb_MiniTable_SetEnum(upb_Message* msg,
103
+ const upb_MiniTable_Field* field,
104
+ int32_t value) {
105
+ UPB_ASSERT(field->descriptortype == kUpb_FieldType_Enum);
106
+ _upb_MiniTable_SetPresence(msg, field);
107
+ *UPB_PTR_AT(msg, field->offset, int32_t) = value;
108
+ }
109
+
110
+ UPB_INLINE int64_t upb_MiniTable_GetInt64(const upb_Message* msg,
111
+ const upb_MiniTable_Field* field) {
112
+ UPB_ASSERT(field->descriptortype == kUpb_FieldType_Int64 ||
113
+ field->descriptortype == kUpb_FieldType_SInt64 ||
114
+ field->descriptortype == kUpb_FieldType_SFixed64);
115
+ return *UPB_PTR_AT(msg, field->offset, int64_t);
116
+ }
117
+
118
+ UPB_INLINE void upb_MiniTable_SetInt64(upb_Message* msg,
119
+ const upb_MiniTable_Field* field,
120
+ int64_t value) {
121
+ UPB_ASSERT(field->descriptortype == kUpb_FieldType_Int64 ||
122
+ field->descriptortype == kUpb_FieldType_SInt64 ||
123
+ field->descriptortype == kUpb_FieldType_SFixed64);
124
+ _upb_MiniTable_SetPresence(msg, field);
125
+ *UPB_PTR_AT(msg, field->offset, int64_t) = value;
126
+ }
127
+
128
+ UPB_INLINE uint64_t upb_MiniTable_GetUInt64(const upb_Message* msg,
129
+ const upb_MiniTable_Field* field) {
130
+ UPB_ASSERT(field->descriptortype == kUpb_FieldType_UInt64 ||
131
+ field->descriptortype == kUpb_FieldType_Fixed64);
132
+ return *UPB_PTR_AT(msg, field->offset, uint64_t);
133
+ }
134
+
135
+ UPB_INLINE void upb_MiniTable_SetUInt64(upb_Message* msg,
136
+ const upb_MiniTable_Field* field,
137
+ uint64_t value) {
138
+ UPB_ASSERT(field->descriptortype == kUpb_FieldType_UInt64 ||
139
+ field->descriptortype == kUpb_FieldType_Fixed64);
140
+ _upb_MiniTable_SetPresence(msg, field);
141
+ *UPB_PTR_AT(msg, field->offset, uint64_t) = value;
142
+ }
143
+
144
+ UPB_INLINE float upb_MiniTable_GetFloat(const upb_Message* msg,
145
+ const upb_MiniTable_Field* field) {
146
+ UPB_ASSERT(field->descriptortype == kUpb_FieldType_Float);
147
+ return *UPB_PTR_AT(msg, field->offset, float);
148
+ }
149
+
150
+ UPB_INLINE void upb_MiniTable_SetFloat(upb_Message* msg,
151
+ const upb_MiniTable_Field* field,
152
+ float value) {
153
+ UPB_ASSERT(field->descriptortype == kUpb_FieldType_Float);
154
+ _upb_MiniTable_SetPresence(msg, field);
155
+ *UPB_PTR_AT(msg, field->offset, float) = value;
156
+ }
157
+
158
+ UPB_INLINE double upb_MiniTable_GetDouble(const upb_Message* msg,
159
+ const upb_MiniTable_Field* field) {
160
+ UPB_ASSERT(field->descriptortype == kUpb_FieldType_Double);
161
+ return *UPB_PTR_AT(msg, field->offset, double);
162
+ }
163
+
164
+ UPB_INLINE void upb_MiniTable_SetDouble(upb_Message* msg,
165
+ const upb_MiniTable_Field* field,
166
+ double value) {
167
+ UPB_ASSERT(field->descriptortype == kUpb_FieldType_Double);
168
+ _upb_MiniTable_SetPresence(msg, field);
169
+ *UPB_PTR_AT(msg, field->offset, double) = value;
170
+ }
171
+
172
+ UPB_INLINE upb_StringView upb_MiniTable_GetString(
173
+ const upb_Message* msg, const upb_MiniTable_Field* field) {
174
+ UPB_ASSERT(field->descriptortype == kUpb_FieldType_Bytes ||
175
+ field->descriptortype == kUpb_FieldType_String);
176
+ return *UPB_PTR_AT(msg, field->offset, upb_StringView);
177
+ }
178
+
179
+ UPB_INLINE void upb_MiniTable_SetString(upb_Message* msg,
180
+ const upb_MiniTable_Field* field,
181
+ upb_StringView value) {
182
+ UPB_ASSERT(field->descriptortype == kUpb_FieldType_Bytes ||
183
+ field->descriptortype == kUpb_FieldType_String);
184
+ _upb_MiniTable_SetPresence(msg, field);
185
+ *UPB_PTR_AT(msg, field->offset, upb_StringView) = value;
186
+ }
187
+
188
+ UPB_INLINE const upb_Message* upb_MiniTable_GetMessage(
189
+ const upb_Message* msg, const upb_MiniTable_Field* field) {
190
+ UPB_ASSERT(field->descriptortype == kUpb_FieldType_Message);
191
+ return *UPB_PTR_AT(msg, field->offset, const upb_Message*);
192
+ }
193
+
194
+ UPB_INLINE void upb_MiniTable_SetMessage(upb_Message* msg,
195
+ const upb_MiniTable_Field* field,
196
+ upb_Message* sub_message) {
197
+ UPB_ASSERT(field->descriptortype == kUpb_FieldType_Message);
198
+ _upb_MiniTable_SetPresence(msg, field);
199
+ *UPB_PTR_AT(msg, field->offset, const upb_Message*) = sub_message;
200
+ }
201
+
202
+ UPB_INLINE upb_Message* upb_MiniTable_GetMutableMessage(
203
+ upb_Message* msg, const upb_MiniTable* mini_table,
204
+ const upb_MiniTable_Field* field, upb_Arena* arena) {
205
+ UPB_ASSERT(field->descriptortype == kUpb_FieldType_Message);
206
+ upb_Message* sub_message = *UPB_PTR_AT(msg, field->offset, upb_Message*);
207
+ if (!sub_message) {
208
+ sub_message =
209
+ _upb_Message_New(mini_table->subs[field->submsg_index].submsg, arena);
210
+ }
211
+ return sub_message;
212
+ }
213
+
214
+ UPB_INLINE const upb_Array* upb_MiniTable_GetArray(
215
+ const upb_Message* msg, const upb_MiniTable_Field* field) {
216
+ return (const upb_Array*)*UPB_PTR_AT(msg, field->offset, upb_Array*);
217
+ }
218
+
219
+ UPB_INLINE upb_Array* upb_MiniTable_GetMutableArray(
220
+ upb_Message* msg, const upb_MiniTable_Field* field) {
221
+ return (upb_Array*)*UPB_PTR_AT(msg, field->offset, upb_Array*);
222
+ }
223
+
224
+ typedef enum {
225
+ kUpb_GetExtension_Ok,
226
+ kUpb_GetExtension_NotPresent,
227
+ kUpb_GetExtension_ParseError,
228
+ kUpb_GetExtension_OutOfMemory,
229
+ } upb_GetExtension_Status;
230
+
231
+ typedef enum {
232
+ kUpb_GetExtensionAsBytes_Ok,
233
+ kUpb_GetExtensionAsBytes_NotPresent,
234
+ kUpb_GetExtensionAsBytes_EncodeError,
235
+ } upb_GetExtensionAsBytes_Status;
236
+
237
+ // Returns a message extension or promotes an unknown field to
238
+ // an extension.
239
+ //
240
+ // TODO(ferhat): Only supports extension fields that are messages,
241
+ // expand support to include non-message types.
242
+ upb_GetExtension_Status upb_MiniTable_GetOrPromoteExtension(
243
+ upb_Message* msg, const upb_MiniTable_Extension* ext_table,
244
+ int decode_options, upb_Arena* arena,
245
+ const upb_Message_Extension** extension);
246
+
247
+ // Returns a message extension or unknown field matching the extension
248
+ // data as bytes.
249
+ //
250
+ // If an extension has already been decoded it will be re-encoded
251
+ // to bytes.
252
+ upb_GetExtensionAsBytes_Status upb_MiniTable_GetExtensionAsBytes(
253
+ const upb_Message* msg, const upb_MiniTable_Extension* ext_table,
254
+ int encode_options, upb_Arena* arena, const char** extension_data,
255
+ size_t* len);
256
+
257
+ #ifdef __cplusplus
258
+ } /* extern "C" */
259
+ #endif
260
+
261
+ #include "upb/port_undef.inc"
262
+
263
+ #endif // UPB_MINI_TABLE_ACCESSORS_H_
@@ -0,0 +1,59 @@
1
+ /*
2
+ * Copyright (c) 2009-2022, Google LLC
3
+ * All rights reserved.
4
+ *
5
+ * Redistribution and use in source and binary forms, with or without
6
+ * modification, are permitted provided that the following conditions are met:
7
+ * * Redistributions of source code must retain the above copyright
8
+ * notice, this list of conditions and the following disclaimer.
9
+ * * Redistributions in binary form must reproduce the above copyright
10
+ * notice, this list of conditions and the following disclaimer in the
11
+ * documentation and/or other materials provided with the distribution.
12
+ * * Neither the name of Google LLC nor the
13
+ * names of its contributors may be used to endorse or promote products
14
+ * derived from this software without specific prior written permission.
15
+ *
16
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
17
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19
+ * ARE DISCLAIMED. IN NO EVENT SHALL Google LLC BE LIABLE FOR ANY DIRECT,
20
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26
+ */
27
+
28
+ #ifndef UPB_MINI_TABLE_ACCESSORS_INTERNAL_H_
29
+ #define UPB_MINI_TABLE_ACCESSORS_INTERNAL_H_
30
+
31
+ #include "upb/msg_internal.h"
32
+
33
+ // Must be last.
34
+ #include "upb/port_def.inc"
35
+
36
+ #ifdef __cplusplus
37
+ extern "C" {
38
+ #endif
39
+
40
+ UPB_INLINE bool _upb_MiniTable_Field_InOneOf(const upb_MiniTable_Field* field) {
41
+ return field->presence < 0;
42
+ }
43
+
44
+ UPB_INLINE void _upb_MiniTable_SetPresence(upb_Message* msg,
45
+ const upb_MiniTable_Field* field) {
46
+ if (field->presence > 0) {
47
+ _upb_sethas_field(msg, field);
48
+ } else if (_upb_MiniTable_Field_InOneOf(field)) {
49
+ *_upb_oneofcase_field(msg, field) = field->number;
50
+ }
51
+ }
52
+
53
+ #ifdef __cplusplus
54
+ } /* extern "C" */
55
+ #endif
56
+
57
+ #include "upb/port_undef.inc"
58
+
59
+ #endif // UPB_MINI_TABLE_ACCESSORS_INTERNAL_H_