automerge/automerge-c/automerge.h
2021-05-24 13:15:20 -07:00

189 lines
5.1 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
* `backend` and `other` must be valid pointers to Backends
*/
intptr_t automerge_get_changes_added(Backend *backend, Backend *other);
/**
* # 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 */