ruby_memprofiler_pprof 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
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_