automerge-rb 0.1.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 (481) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE.txt +22 -0
  3. data/README.md +175 -0
  4. data/ext/automerge_ext/automerge_ext.c +1805 -0
  5. data/ext/automerge_ext/extconf.rb +132 -0
  6. data/lib/automerge/version.rb +6 -0
  7. data/lib/automerge.rb +110 -0
  8. data/rust-toolchain.toml +4 -0
  9. data/vendor/automerge-rust/Cargo.lock +1909 -0
  10. data/vendor/automerge-rust/Cargo.toml +15 -0
  11. data/vendor/automerge-rust/automerge/Cargo.toml +78 -0
  12. data/vendor/automerge-rust/automerge/README.md +5 -0
  13. data/vendor/automerge-rust/automerge/benches/load_save.rs +102 -0
  14. data/vendor/automerge-rust/automerge/benches/map.rs +260 -0
  15. data/vendor/automerge-rust/automerge/benches/range.rs +37 -0
  16. data/vendor/automerge-rust/automerge/benches/sync.rs +95 -0
  17. data/vendor/automerge-rust/automerge/examples/README.md +7 -0
  18. data/vendor/automerge-rust/automerge/examples/quickstart.rs +57 -0
  19. data/vendor/automerge-rust/automerge/examples/watch.rs +94 -0
  20. data/vendor/automerge-rust/automerge/fuzz/Cargo.toml +29 -0
  21. data/vendor/automerge-rust/automerge/fuzz/fuzz_targets/load.rs +37 -0
  22. data/vendor/automerge-rust/automerge/src/autocommit.rs +1286 -0
  23. data/vendor/automerge-rust/automerge/src/automerge/current_state.rs +546 -0
  24. data/vendor/automerge-rust/automerge/src/automerge/tests.rs +2023 -0
  25. data/vendor/automerge-rust/automerge/src/automerge.rs +2071 -0
  26. data/vendor/automerge-rust/automerge/src/autoserde.rs +128 -0
  27. data/vendor/automerge-rust/automerge/src/change.rs +357 -0
  28. data/vendor/automerge-rust/automerge/src/change_graph.rs +1215 -0
  29. data/vendor/automerge-rust/automerge/src/change_queue.rs +46 -0
  30. data/vendor/automerge-rust/automerge/src/clock.rs +206 -0
  31. data/vendor/automerge-rust/automerge/src/columnar/column_range/boolean.rs +83 -0
  32. data/vendor/automerge-rust/automerge/src/columnar/column_range/delta.rs +148 -0
  33. data/vendor/automerge-rust/automerge/src/columnar/column_range/generic/group.rs +138 -0
  34. data/vendor/automerge-rust/automerge/src/columnar/column_range/generic/simple.rs +76 -0
  35. data/vendor/automerge-rust/automerge/src/columnar/column_range/generic.rs +93 -0
  36. data/vendor/automerge-rust/automerge/src/columnar/column_range/key.rs +272 -0
  37. data/vendor/automerge-rust/automerge/src/columnar/column_range/obj_id.rs +202 -0
  38. data/vendor/automerge-rust/automerge/src/columnar/column_range/opid_list.rs +329 -0
  39. data/vendor/automerge-rust/automerge/src/columnar/column_range/raw.rs +38 -0
  40. data/vendor/automerge-rust/automerge/src/columnar/column_range/rle.rs +216 -0
  41. data/vendor/automerge-rust/automerge/src/columnar/column_range/value.rs +547 -0
  42. data/vendor/automerge-rust/automerge/src/columnar/column_range.rs +17 -0
  43. data/vendor/automerge-rust/automerge/src/columnar/encoding/boolean.rs +197 -0
  44. data/vendor/automerge-rust/automerge/src/columnar/encoding/col_error.rs +88 -0
  45. data/vendor/automerge-rust/automerge/src/columnar/encoding/column_decoder.rs +133 -0
  46. data/vendor/automerge-rust/automerge/src/columnar/encoding/decodable_impls.rs +175 -0
  47. data/vendor/automerge-rust/automerge/src/columnar/encoding/delta.rs +96 -0
  48. data/vendor/automerge-rust/automerge/src/columnar/encoding/encodable_impls.rs +200 -0
  49. data/vendor/automerge-rust/automerge/src/columnar/encoding/leb128.rs +82 -0
  50. data/vendor/automerge-rust/automerge/src/columnar/encoding/properties.rs +178 -0
  51. data/vendor/automerge-rust/automerge/src/columnar/encoding/raw.rs +101 -0
  52. data/vendor/automerge-rust/automerge/src/columnar/encoding/rle.rs +239 -0
  53. data/vendor/automerge-rust/automerge/src/columnar/encoding.rs +67 -0
  54. data/vendor/automerge-rust/automerge/src/columnar/splice_error.rs +47 -0
  55. data/vendor/automerge-rust/automerge/src/columnar.rs +14 -0
  56. data/vendor/automerge-rust/automerge/src/convert.rs +112 -0
  57. data/vendor/automerge-rust/automerge/src/cursor.rs +296 -0
  58. data/vendor/automerge-rust/automerge/src/decoding.rs +475 -0
  59. data/vendor/automerge-rust/automerge/src/error.rs +159 -0
  60. data/vendor/automerge-rust/automerge/src/exid.rs +238 -0
  61. data/vendor/automerge-rust/automerge/src/hydrate/list.rs +140 -0
  62. data/vendor/automerge-rust/automerge/src/hydrate/map.rs +132 -0
  63. data/vendor/automerge-rust/automerge/src/hydrate/tests.rs +40 -0
  64. data/vendor/automerge-rust/automerge/src/hydrate/text.rs +89 -0
  65. data/vendor/automerge-rust/automerge/src/hydrate.rs +368 -0
  66. data/vendor/automerge-rust/automerge/src/indexed_cache.rs +113 -0
  67. data/vendor/automerge-rust/automerge/src/iter/doc.rs +603 -0
  68. data/vendor/automerge-rust/automerge/src/iter/keys.rs +93 -0
  69. data/vendor/automerge-rust/automerge/src/iter/list_range.rs +433 -0
  70. data/vendor/automerge-rust/automerge/src/iter/map_range.rs +316 -0
  71. data/vendor/automerge-rust/automerge/src/iter/spans.rs +601 -0
  72. data/vendor/automerge-rust/automerge/src/iter/tools.rs +427 -0
  73. data/vendor/automerge-rust/automerge/src/iter/values.rs +36 -0
  74. data/vendor/automerge-rust/automerge/src/iter.rs +25 -0
  75. data/vendor/automerge-rust/automerge/src/legacy/mod.rs +364 -0
  76. data/vendor/automerge-rust/automerge/src/legacy/serde_impls/actor_id.rs +25 -0
  77. data/vendor/automerge-rust/automerge/src/legacy/serde_impls/change_hash.rs +29 -0
  78. data/vendor/automerge-rust/automerge/src/legacy/serde_impls/element_id.rs +27 -0
  79. data/vendor/automerge-rust/automerge/src/legacy/serde_impls/mod.rs +31 -0
  80. data/vendor/automerge-rust/automerge/src/legacy/serde_impls/object_id.rs +36 -0
  81. data/vendor/automerge-rust/automerge/src/legacy/serde_impls/op.rs +668 -0
  82. data/vendor/automerge-rust/automerge/src/legacy/serde_impls/op_type.rs +26 -0
  83. data/vendor/automerge-rust/automerge/src/legacy/serde_impls/opid.rs +25 -0
  84. data/vendor/automerge-rust/automerge/src/legacy/serde_impls/scalar_value.rs +63 -0
  85. data/vendor/automerge-rust/automerge/src/legacy/utility_impls/element_id.rs +66 -0
  86. data/vendor/automerge-rust/automerge/src/legacy/utility_impls/key.rs +49 -0
  87. data/vendor/automerge-rust/automerge/src/legacy/utility_impls/mod.rs +4 -0
  88. data/vendor/automerge-rust/automerge/src/legacy/utility_impls/object_id.rs +74 -0
  89. data/vendor/automerge-rust/automerge/src/legacy/utility_impls/opid.rs +68 -0
  90. data/vendor/automerge-rust/automerge/src/lib.rs +315 -0
  91. data/vendor/automerge-rust/automerge/src/marks.rs +478 -0
  92. data/vendor/automerge-rust/automerge/src/op_set2/change/batch.rs +2002 -0
  93. data/vendor/automerge-rust/automerge/src/op_set2/change/collector.rs +974 -0
  94. data/vendor/automerge-rust/automerge/src/op_set2/change.rs +332 -0
  95. data/vendor/automerge-rust/automerge/src/op_set2/columns.rs +714 -0
  96. data/vendor/automerge-rust/automerge/src/op_set2/meta.rs +174 -0
  97. data/vendor/automerge-rust/automerge/src/op_set2/op.rs +1363 -0
  98. data/vendor/automerge-rust/automerge/src/op_set2/op_set/elems.rs +43 -0
  99. data/vendor/automerge-rust/automerge/src/op_set2/op_set/found_op.rs +60 -0
  100. data/vendor/automerge-rust/automerge/src/op_set2/op_set/index.rs +197 -0
  101. data/vendor/automerge-rust/automerge/src/op_set2/op_set/insert.rs +179 -0
  102. data/vendor/automerge-rust/automerge/src/op_set2/op_set/mark_index.rs +292 -0
  103. data/vendor/automerge-rust/automerge/src/op_set2/op_set/marks.rs +86 -0
  104. data/vendor/automerge-rust/automerge/src/op_set2/op_set/op_iter.rs +1295 -0
  105. data/vendor/automerge-rust/automerge/src/op_set2/op_set/op_query.rs +82 -0
  106. data/vendor/automerge-rust/automerge/src/op_set2/op_set/top_op.rs +50 -0
  107. data/vendor/automerge-rust/automerge/src/op_set2/op_set/visible.rs +290 -0
  108. data/vendor/automerge-rust/automerge/src/op_set2/op_set.rs +1793 -0
  109. data/vendor/automerge-rust/automerge/src/op_set2/parents.rs +133 -0
  110. data/vendor/automerge-rust/automerge/src/op_set2/skip_list.rs +714 -0
  111. data/vendor/automerge-rust/automerge/src/op_set2/types.rs +769 -0
  112. data/vendor/automerge-rust/automerge/src/op_set2.rs +18 -0
  113. data/vendor/automerge-rust/automerge/src/patches/patch.rs +95 -0
  114. data/vendor/automerge-rust/automerge/src/patches/patch_builder.rs +382 -0
  115. data/vendor/automerge-rust/automerge/src/patches/patch_log.rs +584 -0
  116. data/vendor/automerge-rust/automerge/src/patches.rs +7 -0
  117. data/vendor/automerge-rust/automerge/src/query/list_state.rs +230 -0
  118. data/vendor/automerge-rust/automerge/src/query/seek_mark.rs +142 -0
  119. data/vendor/automerge-rust/automerge/src/read.rs +326 -0
  120. data/vendor/automerge-rust/automerge/src/sequence_tree.rs +662 -0
  121. data/vendor/automerge-rust/automerge/src/storage/bundle/builder.rs +942 -0
  122. data/vendor/automerge-rust/automerge/src/storage/bundle/error.rs +42 -0
  123. data/vendor/automerge-rust/automerge/src/storage/bundle/meta.rs +23 -0
  124. data/vendor/automerge-rust/automerge/src/storage/bundle/storage.rs +146 -0
  125. data/vendor/automerge-rust/automerge/src/storage/bundle.rs +210 -0
  126. data/vendor/automerge-rust/automerge/src/storage/change/change_actors.rs +311 -0
  127. data/vendor/automerge-rust/automerge/src/storage/change/change_op_columns.rs +621 -0
  128. data/vendor/automerge-rust/automerge/src/storage/change/compressed.rs +51 -0
  129. data/vendor/automerge-rust/automerge/src/storage/change/op_with_change_actors.rs +1 -0
  130. data/vendor/automerge-rust/automerge/src/storage/change.rs +523 -0
  131. data/vendor/automerge-rust/automerge/src/storage/chunk.rs +312 -0
  132. data/vendor/automerge-rust/automerge/src/storage/columns/column.rs +42 -0
  133. data/vendor/automerge-rust/automerge/src/storage/columns/column_builder.rs +199 -0
  134. data/vendor/automerge-rust/automerge/src/storage/columns/column_specification.rs +340 -0
  135. data/vendor/automerge-rust/automerge/src/storage/columns/raw_column.rs +286 -0
  136. data/vendor/automerge-rust/automerge/src/storage/columns.rs +355 -0
  137. data/vendor/automerge-rust/automerge/src/storage/document/compression.rs +362 -0
  138. data/vendor/automerge-rust/automerge/src/storage/document.rs +411 -0
  139. data/vendor/automerge-rust/automerge/src/storage/load/change_collector.rs +15 -0
  140. data/vendor/automerge-rust/automerge/src/storage/load.rs +136 -0
  141. data/vendor/automerge-rust/automerge/src/storage/parse/leb128.rs +302 -0
  142. data/vendor/automerge-rust/automerge/src/storage/parse.rs +619 -0
  143. data/vendor/automerge-rust/automerge/src/storage/save/document.rs +27 -0
  144. data/vendor/automerge-rust/automerge/src/storage.rs +26 -0
  145. data/vendor/automerge-rust/automerge/src/sync/bloom.rs +161 -0
  146. data/vendor/automerge-rust/automerge/src/sync/message_builder.rs +118 -0
  147. data/vendor/automerge-rust/automerge/src/sync/state.rs +214 -0
  148. data/vendor/automerge-rust/automerge/src/sync/v1_compat_test/bloom.rs +162 -0
  149. data/vendor/automerge-rust/automerge/src/sync/v1_compat_test/mod.rs +625 -0
  150. data/vendor/automerge-rust/automerge/src/sync/v1_compat_test/state.rs +120 -0
  151. data/vendor/automerge-rust/automerge/src/sync.rs +2482 -0
  152. data/vendor/automerge-rust/automerge/src/text_diff/LICENSE +201 -0
  153. data/vendor/automerge-rust/automerge/src/text_diff/myers.rs +332 -0
  154. data/vendor/automerge-rust/automerge/src/text_diff/replace.rs +139 -0
  155. data/vendor/automerge-rust/automerge/src/text_diff/utils.rs +119 -0
  156. data/vendor/automerge-rust/automerge/src/text_diff.rs +515 -0
  157. data/vendor/automerge-rust/automerge/src/text_value.rs +276 -0
  158. data/vendor/automerge-rust/automerge/src/transaction/commit.rs +34 -0
  159. data/vendor/automerge-rust/automerge/src/transaction/inner.rs +1403 -0
  160. data/vendor/automerge-rust/automerge/src/transaction/manual_transaction.rs +147 -0
  161. data/vendor/automerge-rust/automerge/src/transaction/owned_transaction.rs +266 -0
  162. data/vendor/automerge-rust/automerge/src/transaction/result.rs +21 -0
  163. data/vendor/automerge-rust/automerge/src/transaction/transactable.rs +203 -0
  164. data/vendor/automerge-rust/automerge/src/transaction.rs +513 -0
  165. data/vendor/automerge-rust/automerge/src/types.rs +749 -0
  166. data/vendor/automerge-rust/automerge/src/validation.rs +29 -0
  167. data/vendor/automerge-rust/automerge/src/value.rs +763 -0
  168. data/vendor/automerge-rust/automerge/tests/batch_insert.rs +1034 -0
  169. data/vendor/automerge-rust/automerge/tests/block_tests.rs +887 -0
  170. data/vendor/automerge-rust/automerge/tests/convert_string_to_text.rs +72 -0
  171. data/vendor/automerge-rust/automerge/tests/diff_marks.rs +1508 -0
  172. data/vendor/automerge-rust/automerge/tests/fixtures/64bit_obj_id_change.automerge +0 -0
  173. data/vendor/automerge-rust/automerge/tests/fixtures/64bit_obj_id_doc.automerge +0 -0
  174. data/vendor/automerge-rust/automerge/tests/fixtures/counter_value_has_incorrect_meta.automerge +0 -0
  175. data/vendor/automerge-rust/automerge/tests/fixtures/counter_value_is_ok.automerge +0 -0
  176. data/vendor/automerge-rust/automerge/tests/fixtures/counter_value_is_overlong.automerge +0 -0
  177. data/vendor/automerge-rust/automerge/tests/fixtures/two_change_chunks.automerge +0 -0
  178. data/vendor/automerge-rust/automerge/tests/fixtures/two_change_chunks_compressed.automerge +0 -0
  179. data/vendor/automerge-rust/automerge/tests/fixtures/two_change_chunks_out_of_order.automerge +0 -0
  180. data/vendor/automerge-rust/automerge/tests/fuzz-crashers/action-is-48.automerge +0 -0
  181. data/vendor/automerge-rust/automerge/tests/fuzz-crashers/crash-da39a3ee5e6b4b0d3255bfef95601890afd80709 +0 -0
  182. data/vendor/automerge-rust/automerge/tests/fuzz-crashers/incorrect_max_op.automerge +0 -0
  183. data/vendor/automerge-rust/automerge/tests/fuzz-crashers/invalid_deflate_stream.automerge +0 -0
  184. data/vendor/automerge-rust/automerge/tests/fuzz-crashers/missing_actor.automerge +0 -0
  185. data/vendor/automerge-rust/automerge/tests/fuzz-crashers/overflow_in_length.automerge +0 -0
  186. data/vendor/automerge-rust/automerge/tests/fuzz-crashers/too_many_deps.automerge +0 -0
  187. data/vendor/automerge-rust/automerge/tests/fuzz-crashers/too_many_ops.automerge +0 -0
  188. data/vendor/automerge-rust/automerge/tests/test.rs +2668 -0
  189. data/vendor/automerge-rust/automerge/tests/test_mark_patches.rs +41 -0
  190. data/vendor/automerge-rust/automerge/tests/test_save_load_orphans.rs +84 -0
  191. data/vendor/automerge-rust/automerge/tests/text.rs +1098 -0
  192. data/vendor/automerge-rust/automerge/tests/text_encoding.rs +640 -0
  193. data/vendor/automerge-rust/automerge-c/CMakeLists.txt +439 -0
  194. data/vendor/automerge-rust/automerge-c/Cargo.toml +22 -0
  195. data/vendor/automerge-rust/automerge-c/README.md +233 -0
  196. data/vendor/automerge-rust/automerge-c/build.rs +21 -0
  197. data/vendor/automerge-rust/automerge-c/cbindgen.toml +48 -0
  198. data/vendor/automerge-rust/automerge-c/cmake/Cargo.toml.in +22 -0
  199. data/vendor/automerge-rust/automerge-c/cmake/automerge-c-config.cmake.in +99 -0
  200. data/vendor/automerge-rust/automerge-c/cmake/cbindgen.toml.in +48 -0
  201. data/vendor/automerge-rust/automerge-c/cmake/config.h.in +58 -0
  202. data/vendor/automerge-rust/automerge-c/cmake/enum-string-functions-gen.cmake +183 -0
  203. data/vendor/automerge-rust/automerge-c/cmake/file-regex-replace.cmake +33 -0
  204. data/vendor/automerge-rust/automerge-c/cmake/file-touch.cmake +35 -0
  205. data/vendor/automerge-rust/automerge-c/docs/CMakeLists.txt +39 -0
  206. data/vendor/automerge-rust/automerge-c/docs/img/brandmark.png +0 -0
  207. data/vendor/automerge-rust/automerge-c/examples/CMakeLists.txt +42 -0
  208. data/vendor/automerge-rust/automerge-c/examples/README.md +9 -0
  209. data/vendor/automerge-rust/automerge-c/examples/quickstart.c +131 -0
  210. data/vendor/automerge-rust/automerge-c/include/automerge-c/utils/result.h +30 -0
  211. data/vendor/automerge-rust/automerge-c/include/automerge-c/utils/stack.h +130 -0
  212. data/vendor/automerge-rust/automerge-c/include/automerge-c/utils/stack_callback_data.h +53 -0
  213. data/vendor/automerge-rust/automerge-c/include/automerge-c/utils/string.h +29 -0
  214. data/vendor/automerge-rust/automerge-c/src/actor_id.rs +193 -0
  215. data/vendor/automerge-rust/automerge-c/src/byte_span.rs +227 -0
  216. data/vendor/automerge-rust/automerge-c/src/change.rs +356 -0
  217. data/vendor/automerge-rust/automerge-c/src/cursor.rs +168 -0
  218. data/vendor/automerge-rust/automerge-c/src/doc/list.rs +636 -0
  219. data/vendor/automerge-rust/automerge-c/src/doc/map.rs +556 -0
  220. data/vendor/automerge-rust/automerge-c/src/doc/mark.rs +296 -0
  221. data/vendor/automerge-rust/automerge-c/src/doc/utils.rs +46 -0
  222. data/vendor/automerge-rust/automerge-c/src/doc.rs +1009 -0
  223. data/vendor/automerge-rust/automerge-c/src/index.rs +84 -0
  224. data/vendor/automerge-rust/automerge-c/src/item.rs +2177 -0
  225. data/vendor/automerge-rust/automerge-c/src/items.rs +401 -0
  226. data/vendor/automerge-rust/automerge-c/src/lib.rs +11 -0
  227. data/vendor/automerge-rust/automerge-c/src/obj.rs +216 -0
  228. data/vendor/automerge-rust/automerge-c/src/result.rs +653 -0
  229. data/vendor/automerge-rust/automerge-c/src/sync/have.rs +42 -0
  230. data/vendor/automerge-rust/automerge-c/src/sync/message.rs +146 -0
  231. data/vendor/automerge-rust/automerge-c/src/sync/state.rs +262 -0
  232. data/vendor/automerge-rust/automerge-c/src/sync.rs +7 -0
  233. data/vendor/automerge-rust/automerge-c/src/utils/result.c +33 -0
  234. data/vendor/automerge-rust/automerge-c/src/utils/stack.c +106 -0
  235. data/vendor/automerge-rust/automerge-c/src/utils/stack_callback_data.c +9 -0
  236. data/vendor/automerge-rust/automerge-c/src/utils/string.c +46 -0
  237. data/vendor/automerge-rust/automerge-c/test/CMakeLists.txt +67 -0
  238. data/vendor/automerge-rust/automerge-c/test/actor_id_tests.c +140 -0
  239. data/vendor/automerge-rust/automerge-c/test/base_state.c +17 -0
  240. data/vendor/automerge-rust/automerge-c/test/base_state.h +39 -0
  241. data/vendor/automerge-rust/automerge-c/test/byte_span_tests.c +119 -0
  242. data/vendor/automerge-rust/automerge-c/test/cmocka_utils.c +91 -0
  243. data/vendor/automerge-rust/automerge-c/test/cmocka_utils.h +42 -0
  244. data/vendor/automerge-rust/automerge-c/test/cursor_tests.c +263 -0
  245. data/vendor/automerge-rust/automerge-c/test/doc_state.c +27 -0
  246. data/vendor/automerge-rust/automerge-c/test/doc_state.h +17 -0
  247. data/vendor/automerge-rust/automerge-c/test/doc_tests.c +335 -0
  248. data/vendor/automerge-rust/automerge-c/test/enum_string_tests.c +148 -0
  249. data/vendor/automerge-rust/automerge-c/test/files/brave-ape-49.automerge +0 -0
  250. data/vendor/automerge-rust/automerge-c/test/item_tests.c +313 -0
  251. data/vendor/automerge-rust/automerge-c/test/list_tests.c +544 -0
  252. data/vendor/automerge-rust/automerge-c/test/macro_utils.c +38 -0
  253. data/vendor/automerge-rust/automerge-c/test/macro_utils.h +23 -0
  254. data/vendor/automerge-rust/automerge-c/test/main.c +33 -0
  255. data/vendor/automerge-rust/automerge-c/test/map_tests.c +1610 -0
  256. data/vendor/automerge-rust/automerge-c/test/mark_tests.c +124 -0
  257. data/vendor/automerge-rust/automerge-c/test/ported_wasm/basic_tests.c +1642 -0
  258. data/vendor/automerge-rust/automerge-c/test/ported_wasm/cursor_tests.c +108 -0
  259. data/vendor/automerge-rust/automerge-c/test/ported_wasm/suite.c +17 -0
  260. data/vendor/automerge-rust/automerge-c/test/ported_wasm/sync_tests.c +1280 -0
  261. data/vendor/automerge-rust/automerge-c/test/str_utils.c +15 -0
  262. data/vendor/automerge-rust/automerge-c/test/str_utils.h +17 -0
  263. data/vendor/automerge-rust/automerge-test/Cargo.toml +17 -0
  264. data/vendor/automerge-rust/automerge-test/README.md +3 -0
  265. data/vendor/automerge-rust/automerge-test/src/lib.rs +487 -0
  266. data/vendor/automerge-rust/hexane/CHANGELOG.md +34 -0
  267. data/vendor/automerge-rust/hexane/Cargo.toml +47 -0
  268. data/vendor/automerge-rust/hexane/README.md +292 -0
  269. data/vendor/automerge-rust/hexane/RESULTS.txt +20 -0
  270. data/vendor/automerge-rust/hexane/TODO +18 -0
  271. data/vendor/automerge-rust/hexane/benches/insert.rs +82 -0
  272. data/vendor/automerge-rust/hexane/benches/seek.rs +77 -0
  273. data/vendor/automerge-rust/hexane/benches/splice.rs +82 -0
  274. data/vendor/automerge-rust/hexane/src/aggregate.rs +288 -0
  275. data/vendor/automerge-rust/hexane/src/boolean.rs +478 -0
  276. data/vendor/automerge-rust/hexane/src/columndata.rs +2540 -0
  277. data/vendor/automerge-rust/hexane/src/cursor.rs +756 -0
  278. data/vendor/automerge-rust/hexane/src/delta.rs +793 -0
  279. data/vendor/automerge-rust/hexane/src/encoder.rs +639 -0
  280. data/vendor/automerge-rust/hexane/src/leb128.rs +82 -0
  281. data/vendor/automerge-rust/hexane/src/lib.rs +95 -0
  282. data/vendor/automerge-rust/hexane/src/pack.rs +325 -0
  283. data/vendor/automerge-rust/hexane/src/raw.rs +314 -0
  284. data/vendor/automerge-rust/hexane/src/rle.rs +928 -0
  285. data/vendor/automerge-rust/hexane/src/slab/tree.rs +1373 -0
  286. data/vendor/automerge-rust/hexane/src/slab/writer.rs +535 -0
  287. data/vendor/automerge-rust/hexane/src/slab.rs +224 -0
  288. data/vendor/automerge-rust/hexane/src/test.rs +108 -0
  289. data/vendor/bundle/ruby/3.3.0/bin/rake +29 -0
  290. data/vendor/bundle/ruby/3.3.0/bin/rake-compiler +29 -0
  291. data/vendor/bundle/ruby/3.3.0/bin/rake-compiler-dock +29 -0
  292. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/History.rdoc +1732 -0
  293. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/Manifest.txt +32 -0
  294. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/README.rdoc +845 -0
  295. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/Rakefile +97 -0
  296. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/design_rationale.rb +54 -0
  297. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/hoe/minitest.rb +30 -0
  298. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest/assertions.rb +850 -0
  299. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest/autorun.rb +6 -0
  300. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest/benchmark.rb +452 -0
  301. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest/compress.rb +94 -0
  302. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest/error_on_warning.rb +11 -0
  303. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest/expectations.rb +321 -0
  304. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest/hell.rb +11 -0
  305. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest/manual_plugins.rb +16 -0
  306. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest/mock.rb +327 -0
  307. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest/parallel.rb +72 -0
  308. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest/pride.rb +4 -0
  309. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest/pride_plugin.rb +135 -0
  310. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest/spec.rb +353 -0
  311. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest/test.rb +238 -0
  312. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest/test_task.rb +324 -0
  313. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest/unit.rb +42 -0
  314. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest.rb +1250 -0
  315. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/test/minitest/metametameta.rb +150 -0
  316. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/test/minitest/test_minitest_assertions.rb +1677 -0
  317. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/test/minitest/test_minitest_benchmark.rb +137 -0
  318. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/test/minitest/test_minitest_mock.rb +1213 -0
  319. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/test/minitest/test_minitest_reporter.rb +437 -0
  320. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/test/minitest/test_minitest_spec.rb +1159 -0
  321. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/test/minitest/test_minitest_test.rb +1374 -0
  322. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/test/minitest/test_minitest_test_task.rb +57 -0
  323. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/History.rdoc +2454 -0
  324. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/MIT-LICENSE +21 -0
  325. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/README.rdoc +155 -0
  326. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/doc/command_line_usage.rdoc +171 -0
  327. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/doc/example/Rakefile1 +38 -0
  328. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/doc/example/Rakefile2 +35 -0
  329. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/doc/example/a.c +6 -0
  330. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/doc/example/b.c +6 -0
  331. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/doc/example/main.c +11 -0
  332. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/doc/glossary.rdoc +42 -0
  333. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/doc/jamis.rb +592 -0
  334. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/doc/proto_rake.rdoc +127 -0
  335. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/doc/rake.1 +156 -0
  336. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/doc/rakefile.rdoc +635 -0
  337. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/doc/rational.rdoc +151 -0
  338. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/exe/rake +27 -0
  339. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/application.rb +847 -0
  340. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/backtrace.rb +25 -0
  341. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/clean.rb +78 -0
  342. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/cloneable.rb +17 -0
  343. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/cpu_counter.rb +122 -0
  344. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/default_loader.rb +15 -0
  345. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/dsl_definition.rb +196 -0
  346. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/early_time.rb +22 -0
  347. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/ext/core.rb +26 -0
  348. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/ext/string.rb +176 -0
  349. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/file_creation_task.rb +25 -0
  350. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/file_list.rb +435 -0
  351. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/file_task.rb +58 -0
  352. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/file_utils.rb +137 -0
  353. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/file_utils_ext.rb +135 -0
  354. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/invocation_chain.rb +57 -0
  355. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/invocation_exception_mixin.rb +17 -0
  356. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/late_time.rb +18 -0
  357. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/linked_list.rb +112 -0
  358. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/loaders/makefile.rb +54 -0
  359. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/multi_task.rb +14 -0
  360. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/name_space.rb +38 -0
  361. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/options.rb +31 -0
  362. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/packagetask.rb +222 -0
  363. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/phony.rb +16 -0
  364. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/private_reader.rb +21 -0
  365. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/promise.rb +100 -0
  366. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/pseudo_status.rb +30 -0
  367. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/rake_module.rb +67 -0
  368. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/rake_test_loader.rb +27 -0
  369. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/rule_recursion_overflow_error.rb +20 -0
  370. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/scope.rb +43 -0
  371. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/task.rb +434 -0
  372. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/task_argument_error.rb +8 -0
  373. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/task_arguments.rb +113 -0
  374. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/task_manager.rb +333 -0
  375. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/tasklib.rb +12 -0
  376. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/testtask.rb +192 -0
  377. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/thread_history_display.rb +49 -0
  378. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/thread_pool.rb +157 -0
  379. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/trace_output.rb +23 -0
  380. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/version.rb +10 -0
  381. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/win32.rb +17 -0
  382. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake.rb +69 -0
  383. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/rake.gemspec +102 -0
  384. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/Gemfile +8 -0
  385. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/History.md +695 -0
  386. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/LICENSE.txt +20 -0
  387. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/README.md +476 -0
  388. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/Rakefile +15 -0
  389. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/appveyor.yml +22 -0
  390. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/bin/rake-compiler +24 -0
  391. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/cucumber.yml +4 -0
  392. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/compile.feature +79 -0
  393. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/cross-compile.feature +23 -0
  394. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/cross-package-multi.feature +15 -0
  395. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/cross-package.feature +14 -0
  396. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/java-compile.feature +22 -0
  397. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/java-no-native-compile.feature +33 -0
  398. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/java-package.feature +24 -0
  399. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/package.feature +40 -0
  400. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/step_definitions/compilation.rb +70 -0
  401. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/step_definitions/cross_compilation.rb +27 -0
  402. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/step_definitions/execution.rb +52 -0
  403. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/step_definitions/folders.rb +32 -0
  404. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/step_definitions/gem.rb +46 -0
  405. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/step_definitions/java_compilation.rb +7 -0
  406. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/support/env.rb +10 -0
  407. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/support/file_template_helpers.rb +137 -0
  408. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/support/generator_helpers.rb +123 -0
  409. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/support/platform_extension_helpers.rb +27 -0
  410. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/lib/rake/baseextensiontask.rb +90 -0
  411. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/lib/rake/compiler_config.rb +38 -0
  412. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/lib/rake/extensioncompiler.rb +51 -0
  413. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/lib/rake/extensiontask.rb +589 -0
  414. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/lib/rake/javaextensiontask.rb +321 -0
  415. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/tasks/bin/cross-ruby.rake +189 -0
  416. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/tasks/bootstrap.rake +11 -0
  417. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/tasks/common.rake +10 -0
  418. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/tasks/cucumber.rake +23 -0
  419. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/tasks/gem.rake +15 -0
  420. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/tasks/rspec.rake +9 -0
  421. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/CHANGELOG.md +446 -0
  422. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/CONTRIBUTING.md +109 -0
  423. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/Dockerfile.jruby +79 -0
  424. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/Dockerfile.mri.erb +282 -0
  425. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/Gemfile +8 -0
  426. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/LICENSE.txt +22 -0
  427. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/README.md +447 -0
  428. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/Rakefile +246 -0
  429. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/bin/rake-compiler-dock +18 -0
  430. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/build/buildkitd.toml +2 -0
  431. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/build/gem_helper.rb +54 -0
  432. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/build/mk_i686.rb +18 -0
  433. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/build/mk_musl_cross.sh +37 -0
  434. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/build/mk_osxcross.sh +45 -0
  435. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/build/mk_pkg_config.sh +24 -0
  436. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/build/parallel_docker_build.rb +169 -0
  437. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/build/patches/rake-compiler-1.3.1/0004-Enable-build-of-static-libruby.patch +38 -0
  438. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/build/patches/rake-compiler-1.3.1/0005-build-miniruby-first.patch +16 -0
  439. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/build/patches/rake-compiler-1.3.1/0006-ruby-4-rubyspec-capiext.patch +16 -0
  440. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/build/rcd-env.sh +6 -0
  441. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/build/runas +7 -0
  442. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/build/sigfw.c +45 -0
  443. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/build/strip_wrapper_codesign +17 -0
  444. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/build/strip_wrapper_vbox +30 -0
  445. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/build/sudoers +1 -0
  446. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/lib/rake_compiler_dock/colors.rb +43 -0
  447. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/lib/rake_compiler_dock/docker_check.rb +356 -0
  448. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/lib/rake_compiler_dock/predefined_user_group.rb +5 -0
  449. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/lib/rake_compiler_dock/starter.rb +206 -0
  450. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/lib/rake_compiler_dock/version.rb +4 -0
  451. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/lib/rake_compiler_dock.rb +151 -0
  452. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/mingw64-ucrt/Dockerfile +66 -0
  453. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/mingw64-ucrt/README.md +14 -0
  454. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/mingw64-ucrt/binutils-mingw-w64-ignore-check-errors.patch +13 -0
  455. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/mingw64-ucrt/gcc-mingw-w64-only-c-c++.patch +13 -0
  456. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/mingw64-ucrt/mingw-w64-enable-ucrt.patch +22 -0
  457. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/rake-compiler-dock.gemspec +34 -0
  458. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/env/Dockerfile.alpine +17 -0
  459. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/env/Dockerfile.debian +24 -0
  460. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/fixtures/mig_test_rpc.defs +8 -0
  461. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/rcd_test/Gemfile +11 -0
  462. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/rcd_test/Rakefile +97 -0
  463. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/rcd_test/ext/java/RcdTestExtService.java +19 -0
  464. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/rcd_test/ext/java/RubyRcdTest.java +16 -0
  465. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/rcd_test/ext/mri/extconf.rb +111 -0
  466. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/rcd_test/ext/mri/rcd_test_ext.c +65 -0
  467. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/rcd_test/ext/mri/rcd_test_ext.h +11 -0
  468. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/rcd_test/lib/rcd_test.rb +6 -0
  469. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/rcd_test/rcd_test.gemspec +28 -0
  470. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/rcd_test/test/test_basic.rb +49 -0
  471. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/test_environment_variables.rb +108 -0
  472. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/test_mig.rb +18 -0
  473. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/test_parallel_docker_build.rb +95 -0
  474. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/test_rubygems_plugins.rb +12 -0
  475. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/test_starter.rb +158 -0
  476. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/test_versions.rb +82 -0
  477. data/vendor/bundle/ruby/3.3.0/specifications/minitest-5.27.0.gemspec +32 -0
  478. data/vendor/bundle/ruby/3.3.0/specifications/rake-13.4.2.gemspec +26 -0
  479. data/vendor/bundle/ruby/3.3.0/specifications/rake-compiler-1.3.1.gemspec +33 -0
  480. data/vendor/bundle/ruby/3.3.0/specifications/rake-compiler-dock-1.12.0.gemspec +28 -0
  481. metadata +584 -0
@@ -0,0 +1,636 @@
1
+ use automerge as am;
2
+ use automerge::transaction::Transactable;
3
+ use automerge::ReadDoc;
4
+
5
+ use crate::byte_span::{to_str, AMbyteSpan};
6
+ use crate::doc::{to_doc, to_doc_mut, AMdoc};
7
+ use crate::items::AMitems;
8
+ use crate::obj::{to_obj_id, to_obj_type, AMobjId, AMobjType};
9
+ use crate::result::{to_result, AMresult};
10
+
11
+ macro_rules! adjust {
12
+ ($pos:expr, $insert:expr, $len:expr) => {{
13
+ // An empty object can only be inserted into.
14
+ let insert = $insert || $len == 0;
15
+ let end = if insert { $len } else { $len - 1 };
16
+ if $pos > end && $pos != usize::MAX {
17
+ return AMresult::error(&format!("Invalid pos {}", $pos)).into();
18
+ }
19
+ (std::cmp::min($pos, end), insert)
20
+ }};
21
+ }
22
+
23
+ macro_rules! to_range {
24
+ ($begin:expr, $end:expr) => {{
25
+ if $begin > $end {
26
+ return AMresult::error(&format!("Invalid range [{}-{})", $begin, $end)).into();
27
+ };
28
+ ($begin..$end)
29
+ }};
30
+ }
31
+
32
+ /// \memberof AMdoc
33
+ /// \brief Deletes an item from a list object.
34
+ ///
35
+ /// \param[in] doc A pointer to an `AMdoc` struct.
36
+ /// \param[in] obj_id A pointer to an `AMobjId` struct or `AM_ROOT`.
37
+ /// \param[in] pos The position of an item within the list object identified by
38
+ /// \p obj_id or `SIZE_MAX` to indicate its last item.
39
+ /// \return A pointer to an `AMresult` struct with an `AM_VAL_TYPE_VOID` item.
40
+ /// \pre \p doc `!= NULL`
41
+ /// \pre `0 <=` \p pos `<= AMobjSize(`\p obj_id `)` or \p pos `== SIZE_MAX`
42
+ /// \warning The returned `AMresult` struct pointer must be passed to
43
+ /// `AMresultFree()` in order to avoid a memory leak.
44
+ /// \internal
45
+ ///
46
+ /// # Safety
47
+ /// doc must be a valid pointer to an AMdoc
48
+ /// obj_id must be a valid pointer to an AMobjId or std::ptr::null()
49
+ #[no_mangle]
50
+ pub unsafe extern "C" fn AMlistDelete(
51
+ doc: *mut AMdoc,
52
+ obj_id: *const AMobjId,
53
+ pos: usize,
54
+ ) -> *mut AMresult {
55
+ let doc = to_doc_mut!(doc);
56
+ let obj_id = to_obj_id!(obj_id);
57
+ let (pos, _) = adjust!(pos, false, doc.length(obj_id));
58
+ to_result(doc.delete(obj_id, pos))
59
+ }
60
+
61
+ /// \memberof AMdoc
62
+ /// \brief Gets a current or historical item within a list object.
63
+ ///
64
+ /// \param[in] doc A pointer to an `AMdoc` struct.
65
+ /// \param[in] obj_id A pointer to an `AMobjId` struct or `AM_ROOT`.
66
+ /// \param[in] pos The position of an item within the list object identified by
67
+ /// \p obj_id or `SIZE_MAX` to indicate its last item.
68
+ /// \param[in] heads A pointer to an `AMitems` struct with `AM_VAL_TYPE_CHANGE_HASH`
69
+ /// items to select a historical item at \p pos or `NULL`
70
+ /// to select the current item at \p pos.
71
+ /// \return A pointer to an `AMresult` struct with an `AMitem` struct.
72
+ /// \pre \p doc `!= NULL`
73
+ /// \pre `0 <=` \p pos `<= AMobjSize(`\p obj_id `)` or \p pos `== SIZE_MAX`
74
+ /// \warning The returned `AMresult` struct pointer must be passed to
75
+ /// `AMresultFree()` in order to avoid a memory leak.
76
+ /// \internal
77
+ ///
78
+ /// # Safety
79
+ /// doc must be a valid pointer to an AMdoc
80
+ /// obj_id must be a valid pointer to an AMobjId or std::ptr::null()
81
+ /// heads must be a valid pointer to an AMitems or std::ptr::null()
82
+ #[no_mangle]
83
+ pub unsafe extern "C" fn AMlistGet(
84
+ doc: *const AMdoc,
85
+ obj_id: *const AMobjId,
86
+ pos: usize,
87
+ heads: *const AMitems,
88
+ ) -> *mut AMresult {
89
+ let doc = to_doc!(doc);
90
+ let obj_id = to_obj_id!(obj_id);
91
+ let (pos, _) = adjust!(pos, false, doc.length(obj_id));
92
+ match heads.as_ref() {
93
+ None => to_result((doc.get(obj_id, pos), pos)),
94
+ Some(heads) => match <Vec<am::ChangeHash>>::try_from(heads) {
95
+ Ok(heads) => to_result((doc.get_at(obj_id, pos, &heads), pos)),
96
+ Err(e) => AMresult::error(&e.to_string()).into(),
97
+ },
98
+ }
99
+ }
100
+
101
+ /// \memberof AMdoc
102
+ /// \brief Gets all of the historical items at a position within a list object
103
+ /// until its current one or a specific one.
104
+ ///
105
+ /// \param[in] doc A pointer to an `AMdoc` struct.
106
+ /// \param[in] obj_id A pointer to an `AMobjId` struct or `AM_ROOT`.
107
+ /// \param[in] pos The position of an item within the list object identified by
108
+ /// \p obj_id or `SIZE_MAX` to indicate its last item.
109
+ /// \param[in] heads A pointer to an `AMitems` struct with `AM_VAL_TYPE_CHANGE_HASH`
110
+ /// items to select a historical last item or `NULL` to select
111
+ /// the current last item.
112
+ /// \return A pointer to an `AMresult` struct with an `AMitems` struct.
113
+ /// \pre \p doc `!= NULL`
114
+ /// \pre `0 <=` \p pos `<= AMobjSize(`\p obj_id `)` or \p pos `== SIZE_MAX`
115
+ /// \warning The returned `AMresult` struct pointer must be passed to
116
+ /// `AMresultFree()` in order to avoid a memory leak.
117
+ /// \internal
118
+ ///
119
+ /// # Safety
120
+ /// doc must be a valid pointer to an AMdoc
121
+ /// obj_id must be a valid pointer to an AMobjId or std::ptr::null()
122
+ /// heads must be a valid pointer to an AMitems or std::ptr::null()
123
+ #[no_mangle]
124
+ pub unsafe extern "C" fn AMlistGetAll(
125
+ doc: *const AMdoc,
126
+ obj_id: *const AMobjId,
127
+ pos: usize,
128
+ heads: *const AMitems,
129
+ ) -> *mut AMresult {
130
+ let doc = to_doc!(doc);
131
+ let obj_id = to_obj_id!(obj_id);
132
+ let (pos, _) = adjust!(pos, false, doc.length(obj_id));
133
+ match heads.as_ref() {
134
+ None => to_result(doc.get_all(obj_id, pos)),
135
+ Some(heads) => match <Vec<am::ChangeHash>>::try_from(heads) {
136
+ Ok(heads) => to_result(doc.get_all_at(obj_id, pos, &heads)),
137
+ Err(e) => AMresult::error(&e.to_string()).into(),
138
+ },
139
+ }
140
+ }
141
+
142
+ /// \memberof AMdoc
143
+ /// \brief Increments a counter value in an item within a list object by the
144
+ /// given value.
145
+ ///
146
+ /// \param[in] doc A pointer to an `AMdoc` struct.
147
+ /// \param[in] obj_id A pointer to an `AMobjId` struct or `AM_ROOT`.
148
+ /// \param[in] pos The position of an item within the list object identified by
149
+ /// \p obj_id or `SIZE_MAX` to indicate its last item.
150
+ /// \param[in] value A 64-bit signed integer.
151
+ /// \return A pointer to an `AMresult` struct with an `AM_VAL_TYPE_VOID` item.
152
+ /// \pre \p doc `!= NULL`
153
+ /// \pre `0 <=` \p pos `<= AMobjSize(`\p obj_id `)` or \p pos `== SIZE_MAX`
154
+ /// \warning The returned `AMresult` struct pointer must be passed to
155
+ /// `AMresultFree()` in order to avoid a memory leak.
156
+ /// \internal
157
+ ///
158
+ /// # Safety
159
+ /// doc must be a valid pointer to an AMdoc
160
+ /// obj_id must be a valid pointer to an AMobjId or std::ptr::null()
161
+ #[no_mangle]
162
+ pub unsafe extern "C" fn AMlistIncrement(
163
+ doc: *mut AMdoc,
164
+ obj_id: *const AMobjId,
165
+ pos: usize,
166
+ value: i64,
167
+ ) -> *mut AMresult {
168
+ let doc = to_doc_mut!(doc);
169
+ let obj_id = to_obj_id!(obj_id);
170
+ let (pos, _) = adjust!(pos, false, doc.length(obj_id));
171
+ to_result(doc.increment(obj_id, pos, value))
172
+ }
173
+
174
+ /// \memberof AMdoc
175
+ /// \brief Puts a boolean value into an item within a list object.
176
+ ///
177
+ /// \param[in] doc A pointer to an `AMdoc` struct.
178
+ /// \param[in] obj_id A pointer to an `AMobjId` struct or `AM_ROOT`.
179
+ /// \param[in] pos The position of an item within the list object identified by
180
+ /// \p obj_id or `SIZE_MAX` to indicate its last item if
181
+ /// \p insert `== false` or one past its last item if
182
+ /// \p insert `== true`.
183
+ /// \param[in] insert A flag for inserting a new item for \p value before
184
+ /// \p pos instead of putting \p value into the item at
185
+ /// \p pos.
186
+ /// \param[in] value A boolean.
187
+ /// \return A pointer to an `AMresult` struct with an `AM_VAL_TYPE_VOID` item.
188
+ /// \pre \p doc `!= NULL`
189
+ /// \pre `0 <=` \p pos `<= AMobjSize(`\p obj_id `)` or \p pos `== SIZE_MAX`
190
+ /// \warning The returned `AMresult` struct pointer must be passed to
191
+ /// `AMresultFree()` in order to avoid a memory leak.
192
+ /// \internal
193
+ ///
194
+ /// # Safety
195
+ /// doc must be a valid pointer to an AMdoc
196
+ /// obj_id must be a valid pointer to an AMobjId or std::ptr::null()
197
+ #[no_mangle]
198
+ pub unsafe extern "C" fn AMlistPutBool(
199
+ doc: *mut AMdoc,
200
+ obj_id: *const AMobjId,
201
+ pos: usize,
202
+ insert: bool,
203
+ value: bool,
204
+ ) -> *mut AMresult {
205
+ let doc = to_doc_mut!(doc);
206
+ let obj_id = to_obj_id!(obj_id);
207
+ let (pos, insert) = adjust!(pos, insert, doc.length(obj_id));
208
+ let value = am::ScalarValue::Boolean(value);
209
+ to_result(if insert {
210
+ doc.insert(obj_id, pos, value)
211
+ } else {
212
+ doc.put(obj_id, pos, value)
213
+ })
214
+ }
215
+
216
+ /// \memberof AMdoc
217
+ /// \brief Puts an array of bytes value at a position within a list object.
218
+ ///
219
+ /// \param[in] doc A pointer to an `AMdoc` struct.
220
+ /// \param[in] obj_id A pointer to an `AMobjId` struct or `AM_ROOT`.
221
+ /// \param[in] pos The position of an item within the list object identified by
222
+ /// \p obj_id or `SIZE_MAX` to indicate its last item if
223
+ /// \p insert `== false` or one past its last item if
224
+ /// \p insert `== true`.
225
+ /// \param[in] insert A flag for inserting a new item for \p value before
226
+ /// \p pos instead of putting \p value into the item at
227
+ /// \p pos.
228
+ /// \param[in] value A view onto the array of bytes to copy from as an
229
+ /// `AMbyteSpan` struct.
230
+ /// \return A pointer to an `AMresult` struct with an `AM_VAL_TYPE_VOID` item.
231
+ /// \pre \p doc `!= NULL`
232
+ /// \pre `0 <=` \p pos `<= AMobjSize(`\p obj_id `)` or \p pos `== SIZE_MAX`
233
+ /// \pre \p value.src `!= NULL`
234
+ /// \pre `0 <` \p value.count `<= sizeof(`\p value.src `)`
235
+ /// \warning The returned `AMresult` struct pointer must be passed to
236
+ /// `AMresultFree()` in order to avoid a memory leak.
237
+ /// \internal
238
+ ///
239
+ /// # Safety
240
+ /// doc must be a valid pointer to an AMdoc
241
+ /// obj_id must be a valid pointer to an AMobjId or std::ptr::null()
242
+ /// value.src must be a byte array of length >= value.count
243
+ #[no_mangle]
244
+ pub unsafe extern "C" fn AMlistPutBytes(
245
+ doc: *mut AMdoc,
246
+ obj_id: *const AMobjId,
247
+ pos: usize,
248
+ insert: bool,
249
+ value: AMbyteSpan,
250
+ ) -> *mut AMresult {
251
+ let doc = to_doc_mut!(doc);
252
+ let obj_id = to_obj_id!(obj_id);
253
+ let (pos, insert) = adjust!(pos, insert, doc.length(obj_id));
254
+ let value: Vec<u8> = (&value).into();
255
+ to_result(if insert {
256
+ doc.insert(obj_id, pos, value)
257
+ } else {
258
+ doc.put(obj_id, pos, value)
259
+ })
260
+ }
261
+
262
+ /// \memberof AMdoc
263
+ /// \brief Puts a CRDT counter value into an item within a list object.
264
+ ///
265
+ /// \param[in] doc A pointer to an `AMdoc` struct.
266
+ /// \param[in] obj_id A pointer to an `AMobjId` struct or `AM_ROOT`.
267
+ /// \param[in] pos The position of an item within the list object identified by
268
+ /// \p obj_id or `SIZE_MAX` to indicate its last item if
269
+ /// \p insert `== false` or one past its last item if
270
+ /// \p insert `== true`.
271
+ /// \param[in] insert A flag for inserting a new item for \p value before
272
+ /// \p pos instead of putting \p value into the item at
273
+ /// \p pos.
274
+ /// \param[in] value A 64-bit signed integer.
275
+ /// \return A pointer to an `AMresult` struct with an `AM_VAL_TYPE_VOID` item.
276
+ /// \pre \p doc `!= NULL`
277
+ /// \pre `0 <=` \p pos `<= AMobjSize(`\p obj_id `)` or \p pos `== SIZE_MAX`
278
+ /// \warning The returned `AMresult` struct pointer must be passed to
279
+ /// `AMresultFree()` in order to avoid a memory leak.
280
+ /// \internal
281
+ ///
282
+ /// # Safety
283
+ /// doc must be a valid pointer to an AMdoc
284
+ /// obj_id must be a valid pointer to an AMobjId or std::ptr::null()
285
+ #[no_mangle]
286
+ pub unsafe extern "C" fn AMlistPutCounter(
287
+ doc: *mut AMdoc,
288
+ obj_id: *const AMobjId,
289
+ pos: usize,
290
+ insert: bool,
291
+ value: i64,
292
+ ) -> *mut AMresult {
293
+ let doc = to_doc_mut!(doc);
294
+ let obj_id = to_obj_id!(obj_id);
295
+ let (pos, insert) = adjust!(pos, insert, doc.length(obj_id));
296
+ let value = am::ScalarValue::Counter(value.into());
297
+ to_result(if insert {
298
+ doc.insert(obj_id, pos, value)
299
+ } else {
300
+ doc.put(obj_id, pos, value)
301
+ })
302
+ }
303
+
304
+ /// \memberof AMdoc
305
+ /// \brief Puts a float value into an item within a list object.
306
+ ///
307
+ /// \param[in] doc A pointer to an `AMdoc` struct.
308
+ /// \param[in] obj_id A pointer to an `AMobjId` struct or `AM_ROOT`.
309
+ /// \param[in] pos The position of an item within the list object identified by
310
+ /// \p obj_id or `SIZE_MAX` to indicate its last item if
311
+ /// \p insert `== false` or one past its last item if
312
+ /// \p insert `== true`.
313
+ /// \param[in] insert A flag for inserting a new item for \p value before
314
+ /// \p pos instead of putting \p value into the item at
315
+ /// \p pos.
316
+ /// \param[in] value A 64-bit float.
317
+ /// \return A pointer to an `AMresult` struct with an `AM_VAL_TYPE_VOID` item.
318
+ /// \pre \p doc `!= NULL`
319
+ /// \pre `0 <=` \p pos `<= AMobjSize(`\p obj_id `)` or \p pos `== SIZE_MAX`
320
+ /// \warning The returned `AMresult` struct pointer must be passed to
321
+ /// `AMresultFree()` in order to avoid a memory leak.
322
+ /// \internal
323
+ ///
324
+ /// # Safety
325
+ /// doc must be a valid pointer to an AMdoc
326
+ /// obj_id must be a valid pointer to an AMobjId or std::ptr::null()
327
+ #[no_mangle]
328
+ pub unsafe extern "C" fn AMlistPutF64(
329
+ doc: *mut AMdoc,
330
+ obj_id: *const AMobjId,
331
+ pos: usize,
332
+ insert: bool,
333
+ value: f64,
334
+ ) -> *mut AMresult {
335
+ let doc = to_doc_mut!(doc);
336
+ let obj_id = to_obj_id!(obj_id);
337
+ let (pos, insert) = adjust!(pos, insert, doc.length(obj_id));
338
+ to_result(if insert {
339
+ doc.insert(obj_id, pos, value)
340
+ } else {
341
+ doc.put(obj_id, pos, value)
342
+ })
343
+ }
344
+
345
+ /// \memberof AMdoc
346
+ /// \brief Puts a signed integer value into an item within a list object.
347
+ ///
348
+ /// \param[in] doc A pointer to an `AMdoc` struct.
349
+ /// \param[in] obj_id A pointer to an `AMobjId` struct or `AM_ROOT`.
350
+ /// \param[in] pos The position of an item within the list object identified by
351
+ /// \p obj_id or `SIZE_MAX` to indicate its last item if
352
+ /// \p insert `== false` or one past its last item if
353
+ /// \p insert `== true`.
354
+ /// \param[in] insert A flag for inserting a new item for \p value before
355
+ /// \p pos instead of putting \p value into the item at
356
+ /// \p pos.
357
+ /// \param[in] value A 64-bit signed integer.
358
+ /// \return A pointer to an `AMresult` struct with an `AM_VAL_TYPE_VOID` item.
359
+ /// \pre \p doc `!= NULL`
360
+ /// \pre `0 <=` \p pos `<= AMobjSize(`\p obj_id `)` or \p pos `== SIZE_MAX`
361
+ /// \warning The returned `AMresult` struct pointer must be passed to
362
+ /// `AMresultFree()` in order to avoid a memory leak.
363
+ /// \internal
364
+ ///
365
+ /// # Safety
366
+ /// doc must be a valid pointer to an AMdoc
367
+ /// obj_id must be a valid pointer to an AMobjId or std::ptr::null()
368
+ #[no_mangle]
369
+ pub unsafe extern "C" fn AMlistPutInt(
370
+ doc: *mut AMdoc,
371
+ obj_id: *const AMobjId,
372
+ pos: usize,
373
+ insert: bool,
374
+ value: i64,
375
+ ) -> *mut AMresult {
376
+ let doc = to_doc_mut!(doc);
377
+ let obj_id = to_obj_id!(obj_id);
378
+ let (pos, insert) = adjust!(pos, insert, doc.length(obj_id));
379
+ to_result(if insert {
380
+ doc.insert(obj_id, pos, value)
381
+ } else {
382
+ doc.put(obj_id, pos, value)
383
+ })
384
+ }
385
+
386
+ /// \memberof AMdoc
387
+ /// \brief Puts a null value into an item within a list object.
388
+ ///
389
+ /// \param[in] doc A pointer to an `AMdoc` struct.
390
+ /// \param[in] obj_id A pointer to an `AMobjId` struct or `AM_ROOT`.
391
+ /// \param[in] pos The position of an item within the list object identified by
392
+ /// \p obj_id or `SIZE_MAX` to indicate its last item if
393
+ /// \p insert `== false` or one past its last item if
394
+ /// \p insert `== true`.
395
+ /// \param[in] insert A flag for inserting a new item for \p value before
396
+ /// \p pos instead of putting \p value into the item at
397
+ /// \p pos.
398
+ /// \return A pointer to an `AMresult` struct with an `AM_VAL_TYPE_VOID` item.
399
+ /// \pre \p doc `!= NULL`
400
+ /// \pre `0 <=` \p pos `<= AMobjSize(`\p obj_id `)` or \p pos `== SIZE_MAX`
401
+ /// \warning The returned `AMresult` struct pointer must be passed to
402
+ /// `AMresultFree()` in order to avoid a memory leak.
403
+ /// \internal
404
+ ///
405
+ /// # Safety
406
+ /// doc must be a valid pointer to an AMdoc
407
+ /// obj_id must be a valid pointer to an AMobjId or std::ptr::null()
408
+ #[no_mangle]
409
+ pub unsafe extern "C" fn AMlistPutNull(
410
+ doc: *mut AMdoc,
411
+ obj_id: *const AMobjId,
412
+ pos: usize,
413
+ insert: bool,
414
+ ) -> *mut AMresult {
415
+ let doc = to_doc_mut!(doc);
416
+ let obj_id = to_obj_id!(obj_id);
417
+ let (pos, insert) = adjust!(pos, insert, doc.length(obj_id));
418
+ to_result(if insert {
419
+ doc.insert(obj_id, pos, ())
420
+ } else {
421
+ doc.put(obj_id, pos, ())
422
+ })
423
+ }
424
+
425
+ /// \memberof AMdoc
426
+ /// \brief Puts an empty object value into an item within a list object.
427
+ ///
428
+ /// \param[in] doc A pointer to an `AMdoc` struct.
429
+ /// \param[in] obj_id A pointer to an `AMobjId` struct or `AM_ROOT`.
430
+ /// \param[in] pos The position of an item within the list object identified by
431
+ /// \p obj_id or `SIZE_MAX` to indicate its last item if
432
+ /// \p insert `== false` or one past its last item if
433
+ /// \p insert `== true`.
434
+ /// \param[in] insert A flag for inserting a new item for \p value before
435
+ /// \p pos instead of putting \p value into the item at
436
+ /// \p pos.
437
+ /// \param[in] obj_type An `AMobjIdType` enum tag.
438
+ /// \return A pointer to an `AMresult` struct with an `AM_VAL_TYPE_OBJ_TYPE` item.
439
+ /// \pre \p doc `!= NULL`
440
+ /// \pre `0 <=` \p pos `<= AMobjSize(`\p obj_id `)` or \p pos `== SIZE_MAX`
441
+ /// \warning The returned `AMresult` struct pointer must be passed to
442
+ /// `AMresultFree()` in order to avoid a memory leak.
443
+ /// \internal
444
+ ///
445
+ /// # Safety
446
+ /// doc must be a valid pointer to an AMdoc
447
+ /// obj_id must be a valid pointer to an AMobjId or std::ptr::null()
448
+ #[no_mangle]
449
+ pub unsafe extern "C" fn AMlistPutObject(
450
+ doc: *mut AMdoc,
451
+ obj_id: *const AMobjId,
452
+ pos: usize,
453
+ insert: bool,
454
+ obj_type: AMobjType,
455
+ ) -> *mut AMresult {
456
+ let doc = to_doc_mut!(doc);
457
+ let obj_id = to_obj_id!(obj_id);
458
+ let (pos, insert) = adjust!(pos, insert, doc.length(obj_id));
459
+ let obj_type = to_obj_type!(obj_type);
460
+ to_result(if insert {
461
+ (doc.insert_object(obj_id, pos, obj_type), pos, obj_type)
462
+ } else {
463
+ (doc.put_object(obj_id, pos, obj_type), pos, obj_type)
464
+ })
465
+ }
466
+
467
+ /// \memberof AMdoc
468
+ /// \brief Puts a UTF-8 string value into an item within a list object.
469
+ ///
470
+ /// \param[in] doc A pointer to an `AMdoc` struct.
471
+ /// \param[in] obj_id A pointer to an `AMobjId` struct or `AM_ROOT`.
472
+ /// \param[in] pos The position of an item within the list object identified by
473
+ /// \p obj_id or `SIZE_MAX` to indicate its last item if
474
+ /// \p insert `== false` or one past its last item if
475
+ /// \p insert `== true`.
476
+ /// \param[in] insert A flag for inserting a new item for \p value before
477
+ /// \p pos instead of putting \p value into the item at
478
+ /// \p pos.
479
+ /// \param[in] value A UTF-8 string view as an `AMbyteSpan` struct.
480
+ /// \return A pointer to an `AMresult` struct with an `AM_VAL_TYPE_VOID` item.
481
+ /// \pre \p doc `!= NULL`
482
+ /// \pre `0 <=` \p pos `<= AMobjSize(`\p obj_id `)` or \p pos `== SIZE_MAX`
483
+ /// \pre \p value.src `!= NULL`
484
+ /// \pre `0 <` \p value.count `<= sizeof(`\p value.src `)`
485
+ /// \warning The returned `AMresult` struct pointer must be passed to
486
+ /// `AMresultFree()` in order to avoid a memory leak.
487
+ /// \internal
488
+ ///
489
+ /// # Safety
490
+ /// doc must be a valid pointer to an AMdoc
491
+ /// obj_id must be a valid pointer to an AMobjId or std::ptr::null()
492
+ /// value.src must be a byte array of length >= value.count
493
+ #[no_mangle]
494
+ pub unsafe extern "C" fn AMlistPutStr(
495
+ doc: *mut AMdoc,
496
+ obj_id: *const AMobjId,
497
+ pos: usize,
498
+ insert: bool,
499
+ value: AMbyteSpan,
500
+ ) -> *mut AMresult {
501
+ let doc = to_doc_mut!(doc);
502
+ let obj_id = to_obj_id!(obj_id);
503
+ let (pos, insert) = adjust!(pos, insert, doc.length(obj_id));
504
+ let value = to_str!(value);
505
+ to_result(if insert {
506
+ doc.insert(obj_id, pos, value)
507
+ } else {
508
+ doc.put(obj_id, pos, value)
509
+ })
510
+ }
511
+
512
+ /// \memberof AMdoc
513
+ /// \brief Puts a *nix timestamp (milliseconds) value into an item within a
514
+ /// list object.
515
+ ///
516
+ /// \param[in] doc A pointer to an `AMdoc` struct.
517
+ /// \param[in] obj_id A pointer to an `AMobjId` struct or `AM_ROOT`.
518
+ /// \param[in] pos The position of an item within the list object identified by
519
+ /// \p obj_id or `SIZE_MAX` to indicate its last item if
520
+ /// \p insert `== false` or one past its last item if
521
+ /// \p insert `== true`.
522
+ /// \param[in] insert A flag for inserting a new item for \p value before
523
+ /// \p pos instead of putting \p value into the item at
524
+ /// \p pos.
525
+ /// \param[in] value A 64-bit signed integer.
526
+ /// \return A pointer to an `AMresult` struct with an `AM_VAL_TYPE_VOID` item.
527
+ /// \pre \p doc `!= NULL`
528
+ /// \pre `0 <=` \p pos `<= AMobjSize(`\p obj_id `)` or \p pos `== SIZE_MAX`
529
+ /// \warning The returned `AMresult` struct pointer must be passed to
530
+ /// `AMresultFree()` in order to avoid a memory leak.
531
+ /// \internal
532
+ ///
533
+ /// # Safety
534
+ /// doc must be a valid pointer to an AMdoc
535
+ /// obj_id must be a valid pointer to an AMobjId or std::ptr::null()
536
+ #[no_mangle]
537
+ pub unsafe extern "C" fn AMlistPutTimestamp(
538
+ doc: *mut AMdoc,
539
+ obj_id: *const AMobjId,
540
+ pos: usize,
541
+ insert: bool,
542
+ value: i64,
543
+ ) -> *mut AMresult {
544
+ let doc = to_doc_mut!(doc);
545
+ let obj_id = to_obj_id!(obj_id);
546
+ let (pos, insert) = adjust!(pos, insert, doc.length(obj_id));
547
+ let value = am::ScalarValue::Timestamp(value);
548
+ to_result(if insert {
549
+ doc.insert(obj_id, pos, value)
550
+ } else {
551
+ doc.put(obj_id, pos, value)
552
+ })
553
+ }
554
+
555
+ /// \memberof AMdoc
556
+ /// \brief Puts an unsigned integer value into an item within a list object.
557
+ ///
558
+ /// \param[in] doc A pointer to an `AMdoc` struct.
559
+ /// \param[in] obj_id A pointer to an `AMobjId` struct or `AM_ROOT`.
560
+ /// \param[in] pos The position of an item within the list object identified by
561
+ /// \p obj_id or `SIZE_MAX` to indicate its last item if
562
+ /// \p insert `== false` or one past its last item if
563
+ /// \p insert `== true`.
564
+ /// \param[in] insert A flag for inserting a new item for \p value before
565
+ /// \p pos instead of putting \p value into the item at
566
+ /// \p pos.
567
+ /// \param[in] value A 64-bit unsigned integer.
568
+ /// \return A pointer to an `AMresult` struct with an `AM_VAL_TYPE_VOID` item.
569
+ /// \pre \p doc `!= NULL`
570
+ /// \pre `0 <=` \p pos `<= AMobjSize(`\p obj_id `)` or \p pos `== SIZE_MAX`
571
+ /// \warning The returned `AMresult` struct pointer must be passed to
572
+ /// `AMresultFree()` in order to avoid a memory leak.
573
+ /// \internal
574
+ ///
575
+ /// # Safety
576
+ /// doc must be a valid pointer to an AMdoc
577
+ /// obj_id must be a valid pointer to an AMobjId or std::ptr::null()
578
+ #[no_mangle]
579
+ pub unsafe extern "C" fn AMlistPutUint(
580
+ doc: *mut AMdoc,
581
+ obj_id: *const AMobjId,
582
+ pos: usize,
583
+ insert: bool,
584
+ value: u64,
585
+ ) -> *mut AMresult {
586
+ let doc = to_doc_mut!(doc);
587
+ let obj_id = to_obj_id!(obj_id);
588
+ let (pos, insert) = adjust!(pos, insert, doc.length(obj_id));
589
+ to_result(if insert {
590
+ doc.insert(obj_id, pos, value)
591
+ } else {
592
+ doc.put(obj_id, pos, value)
593
+ })
594
+ }
595
+
596
+ /// \memberof AMdoc
597
+ /// \brief Gets the current or historical items in the list object within the
598
+ /// given range.
599
+ ///
600
+ /// \param[in] doc A pointer to an `AMdoc` struct.
601
+ /// \param[in] obj_id A pointer to an `AMobjId` struct or `AM_ROOT`.
602
+ /// \param[in] begin The first pos in a range of indices.
603
+ /// \param[in] end At least one past the last pos in a range of indices.
604
+ /// \param[in] heads A pointer to an `AMitems` struct with `AM_VAL_TYPE_CHANGE_HASH`
605
+ /// items to select historical items or `NULL` to select
606
+ /// current items.
607
+ /// \return A pointer to an `AMresult` struct with an `AMitems` struct.
608
+ /// \pre \p doc `!= NULL`
609
+ /// \pre \p begin `<=` \p end `<= SIZE_MAX`
610
+ /// \warning The returned `AMresult` struct pointer must be passed to
611
+ /// `AMresultFree()` in order to avoid a memory leak.
612
+ /// \internal
613
+ ///
614
+ /// # Safety
615
+ /// doc must be a valid pointer to an AMdoc
616
+ /// obj_id must be a valid pointer to an AMobjId or std::ptr::null()
617
+ /// heads must be a valid pointer to an AMitems or std::ptr::null()
618
+ #[no_mangle]
619
+ pub unsafe extern "C" fn AMlistRange(
620
+ doc: *const AMdoc,
621
+ obj_id: *const AMobjId,
622
+ begin: usize,
623
+ end: usize,
624
+ heads: *const AMitems,
625
+ ) -> *mut AMresult {
626
+ let doc = to_doc!(doc);
627
+ let obj_id = to_obj_id!(obj_id);
628
+ let range = to_range!(begin, end);
629
+ match heads.as_ref() {
630
+ None => to_result(doc.list_range(obj_id, range)),
631
+ Some(heads) => match <Vec<am::ChangeHash>>::try_from(heads) {
632
+ Ok(heads) => to_result(doc.list_range_at(obj_id, range, &heads)),
633
+ Err(e) => AMresult::error(&e.to_string()).into(),
634
+ },
635
+ }
636
+ }