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,401 @@
1
+ use automerge as am;
2
+
3
+ use std::ffi::c_void;
4
+ use std::marker::PhantomData;
5
+ use std::mem::size_of;
6
+
7
+ use crate::item::AMitem;
8
+ use crate::result::AMresult;
9
+
10
+ #[repr(C)]
11
+ struct Detail {
12
+ len: usize,
13
+ offset: isize,
14
+ ptr: *const c_void,
15
+ }
16
+
17
+ /// \note cbindgen won't propagate the value of a `std::mem::size_of<T>()` call
18
+ /// (https://github.com/eqrion/cbindgen/issues/252) but it will
19
+ /// propagate the name of a constant initialized from it so if the
20
+ /// constant's name is a symbolic representation of the value it can be
21
+ /// converted into a number by post-processing the header it generated.
22
+ pub const USIZE_USIZE_USIZE_: usize = size_of::<Detail>();
23
+
24
+ impl Detail {
25
+ fn new(items: &[AMitem], offset: isize) -> Self {
26
+ Self {
27
+ len: items.len(),
28
+ offset,
29
+ ptr: items.as_ptr() as *mut c_void,
30
+ }
31
+ }
32
+
33
+ fn advance(&mut self, n: isize) {
34
+ if n == 0 {
35
+ return;
36
+ }
37
+ let len = self.len as isize;
38
+ self.offset = if self.offset < 0 {
39
+ // It's reversed.
40
+ let unclipped = self.offset.checked_sub(n).unwrap_or(isize::MIN);
41
+ if unclipped >= 0 {
42
+ // Clip it to the forward stop.
43
+ len
44
+ } else {
45
+ std::cmp::min(std::cmp::max(-(len + 1), unclipped), -1)
46
+ }
47
+ } else {
48
+ let unclipped = self.offset.checked_add(n).unwrap_or(isize::MAX);
49
+ if unclipped < 0 {
50
+ // Clip it to the reverse stop.
51
+ -(len + 1)
52
+ } else {
53
+ std::cmp::max(0, std::cmp::min(unclipped, len))
54
+ }
55
+ }
56
+ }
57
+
58
+ fn get_index(&self) -> usize {
59
+ (self.offset
60
+ + if self.offset < 0 {
61
+ self.len as isize
62
+ } else {
63
+ 0
64
+ }) as usize
65
+ }
66
+
67
+ fn next(&mut self, n: isize) -> Option<&mut AMitem> {
68
+ if self.is_stopped() {
69
+ return None;
70
+ }
71
+ let slice: &mut [AMitem] =
72
+ unsafe { std::slice::from_raw_parts_mut(self.ptr as *mut AMitem, self.len) };
73
+ let value = &mut slice[self.get_index()];
74
+ self.advance(n);
75
+ Some(value)
76
+ }
77
+
78
+ fn is_stopped(&self) -> bool {
79
+ let len = self.len as isize;
80
+ self.offset < -len || self.offset == len
81
+ }
82
+
83
+ fn prev(&mut self, n: isize) -> Option<&mut AMitem> {
84
+ self.advance(-n);
85
+ if self.is_stopped() {
86
+ return None;
87
+ }
88
+ let slice: &mut [AMitem] =
89
+ unsafe { std::slice::from_raw_parts_mut(self.ptr as *mut AMitem, self.len) };
90
+ Some(&mut slice[self.get_index()])
91
+ }
92
+
93
+ fn reversed(&self) -> Self {
94
+ Self {
95
+ len: self.len,
96
+ offset: -(self.offset + 1),
97
+ ptr: self.ptr,
98
+ }
99
+ }
100
+
101
+ fn rewound(&self) -> Self {
102
+ Self {
103
+ len: self.len,
104
+ offset: if self.offset < 0 { -1 } else { 0 },
105
+ ptr: self.ptr,
106
+ }
107
+ }
108
+ }
109
+
110
+ impl From<Detail> for [u8; USIZE_USIZE_USIZE_] {
111
+ fn from(detail: Detail) -> Self {
112
+ unsafe {
113
+ std::slice::from_raw_parts((&detail as *const Detail) as *const u8, USIZE_USIZE_USIZE_)
114
+ .try_into()
115
+ .unwrap()
116
+ }
117
+ }
118
+ }
119
+
120
+ /// \struct AMitems
121
+ /// \installed_headerfile
122
+ /// \brief A random-access iterator over a sequence of `AMitem` structs.
123
+ #[repr(C)]
124
+ #[derive(Eq, PartialEq)]
125
+ pub struct AMitems<'a> {
126
+ /// An implementation detail that is intentionally opaque.
127
+ /// \warning Modifying \p detail will cause undefined behavior.
128
+ /// \note The actual size of \p detail will vary by platform, this is just
129
+ /// the one for the platform this documentation was built on.
130
+ detail: [u8; USIZE_USIZE_USIZE_],
131
+ phantom: PhantomData<&'a mut AMresult>,
132
+ }
133
+
134
+ impl AMitems<'_> {
135
+ pub fn new(items: &[AMitem]) -> Self {
136
+ Self {
137
+ detail: Detail::new(items, 0).into(),
138
+ phantom: PhantomData,
139
+ }
140
+ }
141
+
142
+ fn advance(&mut self, n: isize) {
143
+ let detail = unsafe { &mut *(self.detail.as_mut_ptr() as *mut Detail) };
144
+ detail.advance(n);
145
+ }
146
+
147
+ fn len(&self) -> usize {
148
+ let detail = unsafe { &*(self.detail.as_ptr() as *const Detail) };
149
+ detail.len
150
+ }
151
+
152
+ fn next(&mut self, n: isize) -> Option<&mut AMitem> {
153
+ let detail = unsafe { &mut *(self.detail.as_mut_ptr() as *mut Detail) };
154
+ detail.next(n)
155
+ }
156
+
157
+ fn prev(&mut self, n: isize) -> Option<&mut AMitem> {
158
+ let detail = unsafe { &mut *(self.detail.as_mut_ptr() as *mut Detail) };
159
+ detail.prev(n)
160
+ }
161
+
162
+ fn reversed(&self) -> Self {
163
+ let detail = unsafe { &*(self.detail.as_ptr() as *const Detail) };
164
+ Self {
165
+ detail: detail.reversed().into(),
166
+ phantom: PhantomData,
167
+ }
168
+ }
169
+
170
+ fn rewound(&self) -> Self {
171
+ let detail = unsafe { &*(self.detail.as_ptr() as *const Detail) };
172
+ Self {
173
+ detail: detail.rewound().into(),
174
+ phantom: PhantomData,
175
+ }
176
+ }
177
+ }
178
+
179
+ impl AsRef<[AMitem]> for AMitems<'_> {
180
+ fn as_ref(&self) -> &[AMitem] {
181
+ let detail = unsafe { &*(self.detail.as_ptr() as *const Detail) };
182
+ unsafe { std::slice::from_raw_parts(detail.ptr as *const AMitem, detail.len) }
183
+ }
184
+ }
185
+
186
+ impl Default for AMitems<'_> {
187
+ fn default() -> Self {
188
+ Self {
189
+ detail: [0; USIZE_USIZE_USIZE_],
190
+ phantom: PhantomData,
191
+ }
192
+ }
193
+ }
194
+
195
+ impl TryFrom<&AMitems<'_>> for Vec<am::Change> {
196
+ type Error = am::AutomergeError;
197
+
198
+ fn try_from(items: &AMitems<'_>) -> Result<Self, Self::Error> {
199
+ let mut changes = Vec::<am::Change>::with_capacity(items.len());
200
+ for item in items.as_ref().iter() {
201
+ match <&am::Change>::try_from(item.as_ref()) {
202
+ Ok(change) => {
203
+ changes.push(change.clone());
204
+ }
205
+ Err(e) => {
206
+ return Err(e);
207
+ }
208
+ }
209
+ }
210
+ Ok(changes)
211
+ }
212
+ }
213
+
214
+ impl TryFrom<&AMitems<'_>> for Vec<am::ChangeHash> {
215
+ type Error = am::AutomergeError;
216
+
217
+ fn try_from(items: &AMitems<'_>) -> Result<Self, Self::Error> {
218
+ let mut change_hashes = Vec::<am::ChangeHash>::with_capacity(items.len());
219
+ for item in items.as_ref().iter() {
220
+ match <&am::ChangeHash>::try_from(item.as_ref()) {
221
+ Ok(change_hash) => {
222
+ change_hashes.push(*change_hash);
223
+ }
224
+ Err(e) => {
225
+ return Err(e);
226
+ }
227
+ }
228
+ }
229
+ Ok(change_hashes)
230
+ }
231
+ }
232
+
233
+ impl TryFrom<&AMitems<'_>> for Vec<am::ScalarValue> {
234
+ type Error = am::AutomergeError;
235
+
236
+ fn try_from(items: &AMitems<'_>) -> Result<Self, Self::Error> {
237
+ let mut scalars = Vec::<am::ScalarValue>::with_capacity(items.len());
238
+ for item in items.as_ref().iter() {
239
+ match <&am::ScalarValue>::try_from(item.as_ref()) {
240
+ Ok(scalar) => {
241
+ scalars.push(scalar.clone());
242
+ }
243
+ Err(e) => {
244
+ return Err(e);
245
+ }
246
+ }
247
+ }
248
+ Ok(scalars)
249
+ }
250
+ }
251
+
252
+ /// \memberof AMitems
253
+ /// \brief Advances an iterator over a sequence of object items by at most
254
+ /// \p |n| positions where the sign of \p n is relative to the
255
+ /// iterator's direction.
256
+ ///
257
+ /// \param[in] items A pointer to an `AMitems` struct.
258
+ /// \param[in] n The direction (\p -n -> opposite, \p n -> same) and maximum
259
+ /// number of positions to advance.
260
+ /// \pre \p items `!= NULL`
261
+ /// \internal
262
+ ///
263
+ /// #Safety
264
+ /// items must be a valid pointer to an AMitems
265
+ #[no_mangle]
266
+ pub unsafe extern "C" fn AMitemsAdvance(items: *mut AMitems, n: isize) {
267
+ if let Some(items) = items.as_mut() {
268
+ items.advance(n);
269
+ };
270
+ }
271
+
272
+ /// \memberof AMitems
273
+ /// \brief Tests the equality of two sequences of object items underlying a
274
+ /// pair of iterators.
275
+ ///
276
+ /// \param[in] items1 A pointer to an `AMitems` struct.
277
+ /// \param[in] items2 A pointer to an `AMitems` struct.
278
+ /// \return `true` if \p items1 `==` \p items2 and `false` otherwise.
279
+ /// \pre \p items1 `!= NULL`
280
+ /// \pre \p items1 `!= NULL`
281
+ /// \post `!(`\p items1 `&&` \p items2 `) -> false`
282
+ /// \internal
283
+ ///
284
+ /// #Safety
285
+ /// items1 must be a valid pointer to an AMitems
286
+ /// items2 must be a valid pointer to an AMitems
287
+ #[no_mangle]
288
+ pub unsafe extern "C" fn AMitemsEqual(items1: *const AMitems, items2: *const AMitems) -> bool {
289
+ match (items1.as_ref(), items2.as_ref()) {
290
+ (Some(items1), Some(items2)) => items1.as_ref() == items2.as_ref(),
291
+ (None, None) | (None, Some(_)) | (Some(_), None) => false,
292
+ }
293
+ }
294
+
295
+ /// \memberof AMitems
296
+ /// \brief Gets the object item at the current position of an iterator over a
297
+ /// sequence of object items and then advances it by at most \p |n|
298
+ /// positions where the sign of \p n is relative to the iterator's
299
+ /// direction.
300
+ ///
301
+ /// \param[in] items A pointer to an `AMitems` struct.
302
+ /// \param[in] n The direction (\p -n -> opposite, \p n -> same) and maximum
303
+ /// number of positions to advance.
304
+ /// \return A pointer to an `AMitem` struct that's `NULL` when \p items
305
+ /// was previously advanced past its forward/reverse limit.
306
+ /// \pre \p items `!= NULL`
307
+ /// \internal
308
+ ///
309
+ /// #Safety
310
+ /// items must be a valid pointer to an AMitems
311
+ #[no_mangle]
312
+ pub unsafe extern "C" fn AMitemsNext(items: *mut AMitems, n: isize) -> *mut AMitem {
313
+ if let Some(items) = items.as_mut() {
314
+ if let Some(item) = items.next(n) {
315
+ return item;
316
+ }
317
+ }
318
+ std::ptr::null_mut()
319
+ }
320
+
321
+ /// \memberof AMitems
322
+ /// \brief Advances an iterator over a sequence of object items by at most
323
+ /// \p |n| positions where the sign of \p n is relative to the
324
+ /// iterator's direction and then gets the object item at its new
325
+ /// position.
326
+ ///
327
+ /// \param[in] items A pointer to an `AMitems` struct.
328
+ /// \param[in] n The direction (\p -n -> opposite, \p n -> same) and maximum
329
+ /// number of positions to advance.
330
+ /// \return A pointer to an `AMitem` struct that's `NULL` when \p items
331
+ /// is presently advanced past its forward/reverse limit.
332
+ /// \pre \p items `!= NULL`
333
+ /// \internal
334
+ ///
335
+ /// #Safety
336
+ /// items must be a valid pointer to an AMitems
337
+ #[no_mangle]
338
+ pub unsafe extern "C" fn AMitemsPrev(items: *mut AMitems, n: isize) -> *mut AMitem {
339
+ if let Some(items) = items.as_mut() {
340
+ if let Some(obj_item) = items.prev(n) {
341
+ return obj_item;
342
+ }
343
+ }
344
+ std::ptr::null_mut()
345
+ }
346
+
347
+ /// \memberof AMitems
348
+ /// \brief Gets the size of the sequence underlying an iterator.
349
+ ///
350
+ /// \param[in] items A pointer to an `AMitems` struct.
351
+ /// \return The count of items in \p items.
352
+ /// \pre \p items `!= NULL`
353
+ /// \internal
354
+ ///
355
+ /// #Safety
356
+ /// items must be a valid pointer to an AMitems
357
+ #[no_mangle]
358
+ pub unsafe extern "C" fn AMitemsSize(items: *const AMitems) -> usize {
359
+ if let Some(items) = items.as_ref() {
360
+ return items.len();
361
+ }
362
+ 0
363
+ }
364
+
365
+ /// \memberof AMitems
366
+ /// \brief Creates an iterator over the same sequence of items as the
367
+ /// given one but with the opposite position and direction.
368
+ ///
369
+ /// \param[in] items A pointer to an `AMitems` struct.
370
+ /// \return An `AMitems` struct
371
+ /// \pre \p items `!= NULL`
372
+ /// \internal
373
+ ///
374
+ /// #Safety
375
+ /// items must be a valid pointer to an AMitems
376
+ #[no_mangle]
377
+ pub unsafe extern "C" fn AMitemsReversed(items: *const AMitems) -> AMitems {
378
+ if let Some(items) = items.as_ref() {
379
+ return items.reversed();
380
+ }
381
+ Default::default()
382
+ }
383
+
384
+ /// \memberof AMitems
385
+ /// \brief Creates an iterator at the starting position over the same sequence
386
+ /// of items as the given one.
387
+ ///
388
+ /// \param[in] items A pointer to an `AMitems` struct.
389
+ /// \return An `AMitems` struct
390
+ /// \pre \p items `!= NULL`
391
+ /// \internal
392
+ ///
393
+ /// #Safety
394
+ /// items must be a valid pointer to an AMitems
395
+ #[no_mangle]
396
+ pub unsafe extern "C" fn AMitemsRewound(items: *const AMitems) -> AMitems {
397
+ if let Some(items) = items.as_ref() {
398
+ return items.rewound();
399
+ }
400
+ Default::default()
401
+ }
@@ -0,0 +1,11 @@
1
+ mod actor_id;
2
+ mod byte_span;
3
+ mod change;
4
+ mod cursor;
5
+ mod doc;
6
+ mod index;
7
+ mod item;
8
+ mod items;
9
+ mod obj;
10
+ mod result;
11
+ mod sync;
@@ -0,0 +1,216 @@
1
+ use automerge as am;
2
+ use std::any::type_name;
3
+ use std::cell::RefCell;
4
+ use std::ops::Deref;
5
+
6
+ use crate::actor_id::AMactorId;
7
+
8
+ macro_rules! to_obj_id {
9
+ ($handle:expr) => {{
10
+ match $handle.as_ref() {
11
+ Some(obj_id) => obj_id,
12
+ None => &automerge::ROOT,
13
+ }
14
+ }};
15
+ }
16
+
17
+ pub(crate) use to_obj_id;
18
+
19
+ macro_rules! to_obj_type {
20
+ ($c_obj_type:expr) => {{
21
+ let result: Result<am::ObjType, am::AutomergeError> = (&$c_obj_type).try_into();
22
+ match result {
23
+ Ok(obj_type) => obj_type,
24
+ Err(e) => return AMresult::error(&e.to_string()).into(),
25
+ }
26
+ }};
27
+ }
28
+
29
+ pub(crate) use to_obj_type;
30
+
31
+ /// \struct AMobjId
32
+ /// \installed_headerfile
33
+ /// \brief An object's unique identifier.
34
+ #[derive(Eq, PartialEq)]
35
+ pub struct AMobjId {
36
+ body: am::ObjId,
37
+ c_actor_id: RefCell<Option<AMactorId>>,
38
+ }
39
+
40
+ impl AMobjId {
41
+ pub fn new(obj_id: am::ObjId) -> Self {
42
+ Self {
43
+ body: obj_id,
44
+ c_actor_id: Default::default(),
45
+ }
46
+ }
47
+
48
+ fn actor_id(&self) -> *const AMactorId {
49
+ let mut c_actor_id = self.c_actor_id.borrow_mut();
50
+ match c_actor_id.as_mut() {
51
+ None => {
52
+ if let am::ObjId::Id(_, actor_id, _) = &self.body {
53
+ return c_actor_id.insert(AMactorId::new(actor_id));
54
+ }
55
+ }
56
+ Some(value) => {
57
+ return value;
58
+ }
59
+ }
60
+ std::ptr::null()
61
+ }
62
+ }
63
+
64
+ impl AsRef<am::ObjId> for AMobjId {
65
+ fn as_ref(&self) -> &am::ObjId {
66
+ &self.body
67
+ }
68
+ }
69
+
70
+ impl Deref for AMobjId {
71
+ type Target = am::ObjId;
72
+
73
+ fn deref(&self) -> &Self::Target {
74
+ &self.body
75
+ }
76
+ }
77
+
78
+ /// \memberof AMobjId
79
+ /// \brief Gets the actor identifier component of an object identifier.
80
+ ///
81
+ /// \param[in] obj_id A pointer to an `AMobjId` struct.
82
+ /// \return A pointer to an `AMactorId` struct or `NULL`.
83
+ /// \pre \p obj_id `!= NULL`
84
+ /// \internal
85
+ ///
86
+ /// # Safety
87
+ /// obj_id must be a valid pointer to an AMobjId
88
+ #[no_mangle]
89
+ pub unsafe extern "C" fn AMobjIdActorId(obj_id: *const AMobjId) -> *const AMactorId {
90
+ if let Some(obj_id) = obj_id.as_ref() {
91
+ return obj_id.actor_id();
92
+ };
93
+ std::ptr::null()
94
+ }
95
+
96
+ /// \memberof AMobjId
97
+ /// \brief Gets the counter component of an object identifier.
98
+ ///
99
+ /// \param[in] obj_id A pointer to an `AMobjId` struct.
100
+ /// \return A 64-bit unsigned integer.
101
+ /// \pre \p obj_id `!= NULL`
102
+ /// \internal
103
+ ///
104
+ /// # Safety
105
+ /// obj_id must be a valid pointer to an AMobjId
106
+ #[no_mangle]
107
+ pub unsafe extern "C" fn AMobjIdCounter(obj_id: *const AMobjId) -> u64 {
108
+ if let Some(obj_id) = obj_id.as_ref() {
109
+ match obj_id.as_ref() {
110
+ am::ObjId::Id(counter, _, _) => *counter,
111
+ am::ObjId::Root => 0,
112
+ }
113
+ } else {
114
+ u64::MAX
115
+ }
116
+ }
117
+
118
+ /// \memberof AMobjId
119
+ /// \brief Tests the equality of two object identifiers.
120
+ ///
121
+ /// \param[in] obj_id1 A pointer to an `AMobjId` struct.
122
+ /// \param[in] obj_id2 A pointer to an `AMobjId` struct.
123
+ /// \return `true` if \p obj_id1 `==` \p obj_id2 and `false` otherwise.
124
+ /// \pre \p obj_id1 `!= NULL`
125
+ /// \pre \p obj_id1 `!= NULL`
126
+ /// \post `!(`\p obj_id1 `&&` \p obj_id2 `) -> false`
127
+ /// \internal
128
+ ///
129
+ /// #Safety
130
+ /// obj_id1 must be a valid AMobjId pointer
131
+ /// obj_id2 must be a valid AMobjId pointer
132
+ #[no_mangle]
133
+ pub unsafe extern "C" fn AMobjIdEqual(obj_id1: *const AMobjId, obj_id2: *const AMobjId) -> bool {
134
+ match (obj_id1.as_ref(), obj_id2.as_ref()) {
135
+ (Some(obj_id1), Some(obj_id2)) => obj_id1 == obj_id2,
136
+ (None, None) | (None, Some(_)) | (Some(_), None) => false,
137
+ }
138
+ }
139
+
140
+ /// \memberof AMobjId
141
+ /// \brief Gets the index component of an object identifier.
142
+ ///
143
+ /// \param[in] obj_id A pointer to an `AMobjId` struct.
144
+ /// \return A 64-bit unsigned integer.
145
+ /// \pre \p obj_id `!= NULL`
146
+ /// \internal
147
+ ///
148
+ /// # Safety
149
+ /// obj_id must be a valid pointer to an AMobjId
150
+ #[no_mangle]
151
+ pub unsafe extern "C" fn AMobjIdIndex(obj_id: *const AMobjId) -> usize {
152
+ use am::ObjId::*;
153
+
154
+ if let Some(obj_id) = obj_id.as_ref() {
155
+ match obj_id.as_ref() {
156
+ Id(_, _, index) => *index,
157
+ Root => 0,
158
+ }
159
+ } else {
160
+ usize::MAX
161
+ }
162
+ }
163
+
164
+ /// \ingroup enumerations
165
+ /// \enum AMobjType
166
+ /// \installed_headerfile
167
+ /// \brief The type of an object.
168
+ #[derive(Eq, PartialEq)]
169
+ #[repr(C)]
170
+ pub enum AMobjType {
171
+ /// The default tag, not a type signifier.
172
+ Default = 0,
173
+ /// A list.
174
+ List = 1,
175
+ /// A key-value map.
176
+ Map,
177
+ /// A list of Unicode graphemes.
178
+ Text,
179
+ }
180
+
181
+ impl Default for AMobjType {
182
+ fn default() -> Self {
183
+ Self::Default
184
+ }
185
+ }
186
+
187
+ impl From<&am::ObjType> for AMobjType {
188
+ fn from(o: &am::ObjType) -> Self {
189
+ use am::ObjType::*;
190
+
191
+ match o {
192
+ List => Self::List,
193
+ Map | Table => Self::Map,
194
+ Text => Self::Text,
195
+ }
196
+ }
197
+ }
198
+
199
+ impl TryFrom<&AMobjType> for am::ObjType {
200
+ type Error = am::AutomergeError;
201
+
202
+ fn try_from(c_obj_type: &AMobjType) -> Result<Self, Self::Error> {
203
+ use am::AutomergeError::InvalidValueType;
204
+ use AMobjType::*;
205
+
206
+ match c_obj_type {
207
+ List => Ok(Self::List),
208
+ Map => Ok(Self::Map),
209
+ Text => Ok(Self::Text),
210
+ _ => Err(InvalidValueType {
211
+ expected: type_name::<Self>().to_string(),
212
+ unexpected: type_name::<u8>().to_string(),
213
+ }),
214
+ }
215
+ }
216
+ }