Commit graph

918 commits

Author SHA1 Message Date
Jason Kankiewicz
825342cbb1 Remove reflexive struct reference from a Doxygen
variable declaration.
2022-08-07 08:07:00 -07:00
Jason Kankiewicz
04d0175113 Add missing past-the-end checks to the unit tests
for `AMmapRange()`.
2022-08-06 16:20:35 -07:00
Jason Kankiewicz
14bd8fbe97 Port the WASM API's basic unit tests to C.
Weave the original TypeScript code into the C ports of the WASM API's
sync tests.
Fix misnomers in the WASM API's basic and sync unit tests.
Fix misspellings in the WASM API's basic and sync unit tests.
2022-08-06 16:18:59 -07:00
Jason Kankiewicz
d48e366272 Fix some documentation content bugs.
Fix some documentation formatting bugs.
2022-08-06 15:56:21 -07:00
Jason Kankiewicz
4217019cbc Expose automerge::AutoCommit::get_all() as AMlistGetAll() and AMmapGetAll().
Add symbolic last index specification to `AMlist{Delete,Get,Increment}()`.
Add symbolic last index specification to `AMlistPut{Bool,Bytes,Counter,
F64,Int,Null,Object,Str,Timestamp,Uint}()`.
Prevent `doc::utils::to_str(NULL)` from segfaulting.
Fix some documentation content bugs.
Fix some documentation formatting bugs.
2022-08-06 15:47:53 -07:00
Jason Kankiewicz
eeb75f74f4 Fix AMstrsCmp().
Fix some documentation content bugs.
Fix some documentation formatting bugs.
2022-08-06 15:07:48 -07:00
Jason Kankiewicz
a22afdd70d Expose automerge::AutoCommit::get_change_by_hash()
as `AMgetChangeByHash()`.
Add the `AM_CHANGE_HASH_SIZE` macro define constant for
`AMgetChangeByHash()`.
Replace the literal `32` with the `automerge::types::HASH_SIZE` constant.
Expose `automerge::AutoCommit::splice()` as `AMsplice()`.
Add the `automerge::error::AutomergeError::InvalidValueType` variant for
`AMsplice()`.
Add push functionality to `AMspliceText()`.
Fix some documentation content bugs.
Fix some documentation formatting bugs.
2022-08-06 15:04:46 -07:00
Orion Henry
5e8f4caed6
Merge pull request #392 from rf-/rf-fix-export-default-syntax
Fix TypeScript syntax error in `automerge-wasm` definitions
2022-08-03 11:01:11 -05:00
Orion Henry
5c6f375f99
Merge pull request #410 from jkankiewicz/add_range_functions_to_C_API
Add range functions to C API
2022-08-03 10:47:44 -05:00
Jason Kankiewicz
3a556c5991 Expose Autocommit::fork_at().
Rename `AMdup()` to `AMclone()` to match the WASM API.
Rename `AMgetActor()` to `AMgetActorId()` to match the WASM API.
Rename `AMsetActor()` to `AMsetActorId()` to match the WASM API.
2022-08-01 07:02:30 -07:00
Orion Henry
1bc5fbb81e
Merge pull request #413 from jkankiewicz/remove_original_C_API_files
Remove original C API files
2022-07-29 16:06:45 -05:00
Jason Kankiewicz
69de8187a5 Update the build system with the added and
renamed source files.
Defer `BTreeMap` creation until necessary for  `AMresult::Changes`.
Add `AMvalueEqual()` to enable direct comparison of two `AMvalue` structs regardless of their respective variants.
2022-07-25 01:41:52 -07:00
Jason Kankiewicz
877744d40b Add equality comparison to the AM* types from
which it was missing.
Add equality comparison to `automerge::sync::message`.
Defer `std::ffi::CString` creation until necessary.
2022-07-25 01:33:50 -07:00
Jason Kankiewicz
14b55c4a73 Fix a bug with the iterators when they pass their
initial positions in reverse.
Rename `AMstrings` to `AMstrs` for consistency with the `AMvalue.str`
field.
2022-07-25 01:23:26 -07:00
Jason Kankiewicz
23fbb4917a Replace _INCLUDED with _H as the suffix for
include guards in C headers like the one generated by cbindgen.
2022-07-25 01:04:35 -07:00
Jason Kankiewicz
877dbbfce8 Simplify the unit tests with AMresultStack et.
al.
2022-07-25 01:00:50 -07:00
Jason Kankiewicz
a22bcb916b Promoted ResultStack/StackNode from the
quickstart example up to the library as `AMresultStack` so that it can
appear in the README.md and be used to simplify the unit tests.
Promoted `free_results()` to `AMfreeStack()` and `push()` to `AMpush()`.
Added `AMpop()` because no stack should be without one.
2022-07-25 00:50:40 -07:00
Jason Kankiewicz
42ab1639db Add heads argument to AMmapGet() to expose
`automerge::AutoCommit::get_at()`.
Add `AMmapRange()` to expose `automerge::AutoCommit::map_range()` and
`automerge::AutoCommit::map_range_at()`.
Add `AMmapItems` for `AMlistRange()`.
Add `AMmapItem` for `AMmapItems`.
2022-07-25 00:11:00 -07:00
Jason Kankiewicz
eba18d1ad6 Add heads argument to AMlistGet() to expose
`automerge::AutoCommit::get_at()`.
Add `AMlistRange()` to expose `automerge::AutoCommit::list_range()` and
`automerge::AutoCommit::list_range_at()`.
Add `AMlistItems` for `AMlistRange()`.
Add `AMlistItem` for `AMlistItems`.
2022-07-24 22:41:32 -07:00
Jason Kankiewicz
ee68645f31 Add AMfork() to expose `automerge::AutoCommit::
fork()`.
Add `AMobjValues()` to expose `automerge::AutoCommit::values()` and
`automerge::AutoCommit::values_at()`.
Add `AMobjIdActorId()`, `AMobjIdCounter()`, and `AMobjIdIndex()` to expose `automerge::ObjId::Id` fields.
Change `AMactorId` to reference an `automerge::ActorId` instead of
owning one for `AMobjIdActorId()`.
Add `AMactorIdCmp()` for `AMobjIdActorId()` comparison.
Add `AMobjItems` for `AMobjValues()`.
Add `AMobjItem` for `AMobjItems`.
Add `AMobjIdEqual()` for property comparison.
Rename `to_doc!()` to `to_doc_mut!()` and `to_doc_const!()` to `to_doc!()`
for consistency with the Rust standard library.
2022-07-24 22:23:54 -07:00
Jason Kankiewicz
cc19a37f01 Remove the makefile for the original C
API to prevent confusion.
2022-07-23 08:48:19 -07:00
Jason Kankiewicz
15c9adf965 Remove the obsolete test suite for the original
C API to prevent confusion.
2022-07-23 08:47:21 -07:00
Jason Kankiewicz
52a558ee4d Cease writing a pristine copy of the generated
header file into the root of the C API's source directory to prevent
confusion.
2022-07-23 08:44:41 -07:00
Alex Good
668b7b86ca Add license for unicode-idents
`unicode-idents` distributes some data tables from unicode.org which
require an additional license. This doesn't affect our licensing because
we don't distribute the data files - just the generated code. Explicitly
allow the Unicode-DFS-2016 license for unicode-idents.
2022-07-18 10:50:32 +01:00
Alex Good
d71a734e49 Add OpIds to enforce ordering of Op::succ and Op::pred
The ordering of opids in the successor and predecessors of an op is
relevant when encoding because inconsistent ordering changes the
hashgraph. This means we must maintain the invariant that opids are
encoded in ascending lamport order. We have been maintaining this
invariant in the encoding implementation - however, this is not ideal
because it requires allocating for every op in the change when we commit
a transaction.

Add `types::OpIds` and use it in place of `Vec<OpId>` for `Op::succ` and
`Op::pred`. `OpIds` maintains the invariant that the IDs it contains
must be ordered with respect to some comparator function - which is
always `OpSetMetadata::lamport_cmp`. Remove the sorting of opids in
SuccEncoder::append.
2022-07-17 20:58:47 +01:00
Andrew Jeffery
97575d3a90
Merge pull request #408 from jeffa5/automerge-description
publish: Add description to automerge crate
2022-07-14 19:01:09 +01:00
Andrew Jeffery
359376b3db publish: Add description to automerge crate
Came up as a warning in a dry-run publish.
2022-07-14 18:33:00 +01:00
Andrew Jeffery
5452aa4e4d
Merge pull request #406 from jeffa5/docs-ci
ci: Rename docs script to rust-docs and build cmake docs in CI
2022-07-13 19:47:42 +01:00
Andrew Jeffery
8c93d498b3 ci: Rename docs script to rust-docs and build cmake docs in CI 2022-07-13 18:25:25 +01:00
Adel Salakh
f14a61e581 Sort successors in SuccEncoder
Makes SuccEncoder sort successors in Lamport clock order.
Such an ordering is expected by automerge js when loading documents,
otherwise some documents fail to load with a "operation IDs are not in
ascending order" error.
2022-07-13 11:25:12 +01:00
Andrew Jeffery
65c478981c
Merge pull request #403 from jeffa5/parents-error
Change parents to return result if objid is not an object
2022-07-12 21:19:31 +01:00
Andrew Jeffery
75fb4f0f0c
Merge pull request #404 from jeffa5/trim-deps
Clean up automerge dependencies
2022-07-12 19:26:48 +01:00
Andrew Jeffery
be439892a4 Clean up automerge dependencies 2022-07-12 19:09:47 +01:00
Andrew Jeffery
6ea5982c16 Change parents to return result if objid is not an object
There is easy confusion when calling parents with the id of a scalar,
wanting it to get the parent object first but that is not implemented.
To get the parent object of a scalar id would mean searching every
object for the OpId which may get too expensive when lots of objects are
around, this may be reconsidered later but the result would still be
useful to indicate when the id doesn't exist in the document vs has no
parents.
2022-07-12 18:36:47 +01:00
Andrew Jeffery
0cd515526d
Merge pull request #402 from jeffa5/fix-cmake-docs
Don't build tests for docs
2022-07-12 10:17:43 +01:00
Andrew Jeffery
246ed4afab Test building docs on PRs 2022-07-12 10:12:07 +01:00
Andrew Jeffery
0a86a4d92c Don't build tests for docs
The test `CMakeLists.txt` brings in cmocka but we don't actually need to
build the tests to get the docs. This just makes the cmake docs script
tell cmake not to build docs.
2022-07-12 09:59:03 +01:00
Andrew Jeffery
1d3263c002
Merge pull request #397 from jeffa5/edit-trace-improvements
Fixup js edit-trace script and documentation bits
2022-07-07 09:47:43 +01:00
Andrew Jeffery
7e8cbf510a Add links to projects 2022-07-07 09:40:18 +01:00
Andrew Jeffery
c49ba5ea98 Fixup js edit-trace script and documentation bits 2022-07-07 09:25:45 +01:00
Andrew Jeffery
fe4071316d Add docs workflow status badge to README 2022-07-07 09:24:57 +01:00
Orion Henry
1a6f56f7e6
Merge pull request #393 from jkankiewicz/add_AMkeys_to_C_API
Add AMkeys() to the C API
2022-06-21 20:24:44 +02:00
Orion Henry
d5ca0947c0 minor update on js wrapper 2022-06-21 13:40:15 -04:00
Jason Kankiewicz
e5a8b67b11 Added AMspliceText().
Added `AMtext()`.
Replaced `*mut` function arguments with `*const`
function arguments where possible.
Added "out" directions to the documentation for
out function parameters.
2022-06-20 23:15:25 -07:00
Jason Kankiewicz
aeb8db556c Added "out" directions to the documentation for
out function parameters.
2022-06-20 23:11:03 -07:00
Jason Kankiewicz
eb462cb228 Made free_results() reset the stack pointer. 2022-06-20 15:55:31 -07:00
Jason Kankiewicz
0cbacaebb6 Simplified the AMstrings struct to directly
reference `std::ffi::CString` values.
Switched the `AMresult` struct to store a `Vec<CString>` instead of a
`Vec<String>`.
2022-06-20 14:35:30 -07:00
Jason Kankiewicz
bf4988dcca Fixed AM{change_hashes,changes,haves,strings}Prev(). 2022-06-20 13:50:05 -07:00
Jason Kankiewicz
770c064978 Made cosmetic changes to the quickstart example. 2022-06-20 13:45:32 -07:00
Jason Kankiewicz
db0333fc5a Added AM_ROOT usage to the documentation.
Renamed the `value` argument of `AM{list,map}PutBytes()` to `src` for
consistency with standard `memcpy()`.
2022-06-20 02:16:33 -07:00