183 lines
5 KiB
C
183 lines
5 KiB
C
#ifndef automerge_h
|
|
#define automerge_h
|
|
|
|
/* Warning, this file is autogenerated by cbindgen. Don't modify this manually. */
|
|
|
|
#include <stdint.h>
|
|
#include <stdbool.h>
|
|
|
|
typedef struct Backend Backend;
|
|
|
|
typedef struct SyncState SyncState;
|
|
|
|
/**
|
|
* # Safety
|
|
* This must me called with a valid backend pointer
|
|
*/
|
|
intptr_t automerge_apply_changes(Backend *backend);
|
|
|
|
/**
|
|
* # Safety
|
|
* This must me called with a valid backend pointer
|
|
* request must be a valid pointer pointing to a cstring
|
|
*/
|
|
intptr_t automerge_apply_local_change(Backend *backend, const char *request);
|
|
|
|
/**
|
|
* # Safety
|
|
* This must me called with a valid backend pointer
|
|
*/
|
|
Backend *automerge_clone(Backend *backend);
|
|
|
|
/**
|
|
* # Safety
|
|
* This must me called with a valid pointer to a change and the correct len
|
|
*/
|
|
intptr_t automerge_decode_change(Backend *backend, uintptr_t len, const uint8_t *change);
|
|
|
|
/**
|
|
* # Safety
|
|
* `encoded_state_[ptr|len]` must be the address & length of a byte array
|
|
* Returns an opaque pointer to a SyncState
|
|
* panics (segfault?) if the buffer was invalid
|
|
*/
|
|
SyncState *automerge_decode_sync_state(const uint8_t *encoded_state_ptr, uintptr_t encoded_state_len);
|
|
|
|
/**
|
|
* # Safety
|
|
* This must me called with a valid pointer a json string of a change
|
|
*/
|
|
intptr_t automerge_encode_change(Backend *backend, const char *change);
|
|
|
|
/**
|
|
* # Safety
|
|
* Must be called with a valid backend pointer
|
|
* sync_state must be a valid pointer to a SyncState
|
|
* Returns an `isize` indicating the length of the binary message
|
|
* (-1 if there was an error)
|
|
*/
|
|
intptr_t automerge_encode_sync_state(Backend *backend, SyncState *sync_state);
|
|
|
|
/**
|
|
* # Safety
|
|
* This must me called with a valid backend pointer
|
|
*/
|
|
const char *automerge_error(Backend *backend);
|
|
|
|
/**
|
|
* # Safety
|
|
* This must me called with a valid backend pointer
|
|
*/
|
|
void automerge_free(Backend *backend);
|
|
|
|
/**
|
|
* # Safety
|
|
* Must be called with a valid backend pointer
|
|
* sync_state must be a valid pointer to a SyncState
|
|
* Returns an `isize` indicating the length of the binary message
|
|
* (-1 if there was an error, 0 if there is no message)
|
|
*/
|
|
intptr_t automerge_generate_sync_message(Backend *backend, SyncState *sync_state);
|
|
|
|
/**
|
|
* # Safety
|
|
* This must me called with a valid backend pointer
|
|
* binary must be a valid pointer to len bytes
|
|
*/
|
|
intptr_t automerge_get_changes(Backend *backend, uintptr_t len, const uint8_t *binary);
|
|
|
|
/**
|
|
* # Safety
|
|
* This must me called with a valid backend pointer
|
|
*/
|
|
intptr_t automerge_get_changes_for_actor(Backend *backend, const char *actor);
|
|
|
|
/**
|
|
* # Safety
|
|
* This must me called with a valid pointer a json string of a change
|
|
*/
|
|
intptr_t automerge_get_heads(Backend *backend);
|
|
|
|
/**
|
|
* # Safety
|
|
* This must me called with a valid pointer to a backend
|
|
* the automerge api changed to return a change and a patch
|
|
* this C api was not designed to returned mixed values so i borrowed the
|
|
* get_last_local_change call from the javascript api to solve the same problem
|
|
*/
|
|
intptr_t automerge_get_last_local_change(Backend *backend);
|
|
|
|
/**
|
|
* # Safety
|
|
* This must me called with a valid backend pointer
|
|
* binary must be a valid pointer to len bytes
|
|
*/
|
|
intptr_t automerge_get_missing_deps(Backend *backend, uintptr_t len, const uint8_t *binary);
|
|
|
|
/**
|
|
* # Safety
|
|
* This must me called with a valid backend pointer
|
|
*/
|
|
intptr_t automerge_get_patch(Backend *backend);
|
|
|
|
Backend *automerge_init(void);
|
|
|
|
/**
|
|
* # Safety
|
|
* data pointer must be a valid pointer to len bytes
|
|
*/
|
|
Backend *automerge_load(uintptr_t len, const uint8_t *data);
|
|
|
|
/**
|
|
* # Safety
|
|
* This must me called with a valid backend pointer
|
|
*/
|
|
intptr_t automerge_load_changes(Backend *backend);
|
|
|
|
/**
|
|
* # Safety
|
|
*
|
|
* This must me called with a valid backend pointer
|
|
* the buffer must be a valid pointer pointing to at least as much space as was
|
|
* required by the previous binary result call
|
|
*/
|
|
intptr_t automerge_read_binary(Backend *backend, uint8_t *buffer);
|
|
|
|
/**
|
|
* # Safety
|
|
* This must me called with a valid backend pointer
|
|
* and buffer must be a valid pointer of at least the number of bytes returned by the previous
|
|
* call that generated a json result
|
|
*/
|
|
intptr_t automerge_read_json(Backend *backend, char *buffer);
|
|
|
|
/**
|
|
* # Safety
|
|
* Must be called with a valid backend pointer
|
|
* sync_state must be a valid pointer to a SyncState
|
|
* `encoded_msg_[ptr|len]` must be the address & length of a byte array
|
|
*/
|
|
intptr_t automerge_receive_sync_message(Backend *backend, SyncState *sync_state, const uint8_t *encoded_msg_ptr, uintptr_t encoded_msg_len);
|
|
|
|
/**
|
|
* # Safety
|
|
* This must me called with a valid backend pointer
|
|
*/
|
|
intptr_t automerge_save(Backend *backend);
|
|
|
|
/**
|
|
* # Safety
|
|
* sync_state must be a valid pointer to a SyncState
|
|
*/
|
|
void automerge_sync_state_free(SyncState *sync_state);
|
|
|
|
SyncState *automerge_sync_state_init(void);
|
|
|
|
/**
|
|
* # Safety
|
|
* This must me called with a valid backend pointer
|
|
* change must point to a valid memory location with at least len bytes
|
|
*/
|
|
void automerge_write_change(Backend *backend, uintptr_t len, const uint8_t *change);
|
|
|
|
#endif /* automerge_h */
|