#ifndef automerge_h #define automerge_h /* Warning, this file is autogenerated by cbindgen. Don't modify this manually. */ #include #include 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 */