summaryrefslogtreecommitdiff
path: root/protocols/Tox/libtox/src/toxcore/tox.h
diff options
context:
space:
mode:
authorGeorge Hazan <george.hazan@gmail.com>2025-02-02 14:40:34 +0300
committerGeorge Hazan <george.hazan@gmail.com>2025-02-02 14:40:34 +0300
commit29b658000f364d4d33a9eff4ac4eb51d9cbf638e (patch)
tree33c2361796449df67afbb545a8ac571e96d47d3d /protocols/Tox/libtox/src/toxcore/tox.h
parent8b85a1d4242aadcdcb682a90059061cc72a868c0 (diff)
libtox: update to 0.2.20
Diffstat (limited to 'protocols/Tox/libtox/src/toxcore/tox.h')
-rw-r--r--protocols/Tox/libtox/src/toxcore/tox.h1247
1 files changed, 694 insertions, 553 deletions
diff --git a/protocols/Tox/libtox/src/toxcore/tox.h b/protocols/Tox/libtox/src/toxcore/tox.h
index fa887fc779..ebeed3b1f5 100644
--- a/protocols/Tox/libtox/src/toxcore/tox.h
+++ b/protocols/Tox/libtox/src/toxcore/tox.h
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: GPL-3.0-or-later
- * Copyright © 2016-2018 The TokTok team.
+ * Copyright © 2016-2024 The TokTok team.
* Copyright © 2013 Tox project.
*/
@@ -25,9 +25,8 @@
* could not perform any operation, because one of the required parameters was
* NULL. Some functions operate correctly or are defined as effectless on NULL.
*
- * Some functions additionally return a value outside their
- * return type domain, or a bool containing true on success and false on
- * failure.
+ * Some functions additionally return a value outside their return type domain,
+ * or a bool containing true on success and false on failure.
*
* All functions that take a Tox instance pointer will cause undefined behaviour
* when passed a NULL Tox pointer.
@@ -52,17 +51,9 @@
* event listeners, it needs to implement the dispatch functionality itself.
*
* The last argument to a callback is the user data pointer. It is passed from
- * tox_iterate to each callback in sequence.
- *
- * The user data pointer is never stored or dereferenced by any library code, so
- * can be any pointer, including NULL. Callbacks must all operate on the same
- * object type. In the apidsl code (tox.in.h), this is denoted with `any`. The
- * `any` in tox_iterate must be the same `any` as in all callbacks. In C,
- * lacking parametric polymorphism, this is a pointer to void.
- *
- * Old style callbacks that are registered together with a user data pointer
- * receive that pointer as argument when they are called. They can each have
- * their own user data pointer of their own type.
+ * tox_iterate to each callback in sequence. The user data pointer is never
+ * stored or dereferenced by any library code, so can be any pointer, including
+ * NULL.
*
* @section threading Threading implications
*
@@ -157,7 +148,7 @@ uint32_t tox_version_minor(void);
* Incremented when bugfixes are applied without changing any functionality or
* API or ABI.
*/
-#define TOX_VERSION_PATCH 18
+#define TOX_VERSION_PATCH 20
uint32_t tox_version_patch(void);
@@ -206,7 +197,7 @@ bool tox_version_is_compatible(uint32_t major, uint32_t minor, uint32_t patch);
*
* The values of these are not part of the ABI. Prefer to use the function
* versions of them for code that should remain compatible with future versions
- * of toxcore.
+ * of the Tox library.
*/
/**
@@ -468,12 +459,12 @@ typedef enum Tox_Log_Level {
TOX_LOG_LEVEL_INFO,
/**
- * Warnings about events_alloc inconsistency or logic errors.
+ * Warnings about internal inconsistency or logic errors.
*/
TOX_LOG_LEVEL_WARNING,
/**
- * Severe unexpected errors caused by external or events_alloc inconsistency.
+ * Severe unexpected errors caused by external or internal inconsistency.
*/
TOX_LOG_LEVEL_ERROR,
@@ -482,7 +473,7 @@ typedef enum Tox_Log_Level {
const char *tox_log_level_to_string(Tox_Log_Level value);
/**
- * @brief This event is triggered when the toxcore library logs an events_alloc message.
+ * @brief This event is triggered when Tox logs an internal message.
*
* This is mostly useful for debugging. This callback can be called from any
* function, not just tox_iterate. This means the user data lifetime must at
@@ -506,15 +497,6 @@ typedef void tox_log_cb(Tox *tox, Tox_Log_Level level, const char *file, uint32_
const char *message, void *user_data);
/**
- * @brief Operating system functions used by Tox.
- *
- * This struct is opaque and generally shouldn't be used in clients, but in
- * combination with tox_private.h, it allows tests to inject non-IO (hermetic)
- * versions of low level network, RNG, and time keeping functions.
- */
-typedef struct Tox_System Tox_System;
-
-/**
* @brief This struct contains all the startup options for Tox.
*
* You must tox_options_new to allocate an object of this type.
@@ -546,10 +528,11 @@ struct Tox_Options {
* Enable the use of UDP communication when available.
*
* Setting this to false will force Tox to use TCP only. Communications will
- * need to be relayed through a TCP relay node, potentially slowing them down.
+ * need to be relayed through a TCP relay node, potentially slowing them
+ * down.
*
- * If a proxy is enabled, UDP will be disabled if either toxcore or the
- * proxy don't support proxying UDP messages.
+ * If a proxy is enabled, UDP will be disabled if either the Tox library or
+ * the proxy don't support proxying UDP messages.
*/
bool udp_enabled;
@@ -576,10 +559,11 @@ struct Tox_Options {
* The IP address or DNS name of the proxy to be used.
*
* If used, this must be non-NULL and be a valid DNS name. The name must not
- * exceed TOX_MAX_HOSTNAME_LENGTH characters, and be in a NUL-terminated C string
- * format (TOX_MAX_HOSTNAME_LENGTH includes the NUL byte).
+ * exceed TOX_MAX_HOSTNAME_LENGTH characters, and be in a NUL-terminated C
+ * string format (TOX_MAX_HOSTNAME_LENGTH includes the NUL byte).
*
- * This member is ignored (it can be NULL) if proxy_type is TOX_PROXY_TYPE_NONE.
+ * This member is ignored (it can be NULL) if proxy_type is
+ * TOX_PROXY_TYPE_NONE.
*
* The data pointed at by this member is owned by the user, so must
* outlive the options object.
@@ -603,8 +587,8 @@ struct Tox_Options {
* If either start_port or end_port is 0 while the other is non-zero, the
* non-zero port will be the only port in the range.
*
- * Having start_port > end_port will yield the same behavior as if start_port
- * and end_port were swapped.
+ * Having start_port > end_port will yield the same behavior as if
+ * start_port and end_port were swapped.
*/
uint16_t start_port;
@@ -627,7 +611,7 @@ struct Tox_Options {
uint16_t tcp_port;
/**
- * Enables or disables UDP hole-punching in toxcore. (Default: enabled).
+ * Enables or disables UDP hole-punching. (Default: enabled).
*/
bool hole_punching_enabled;
@@ -639,8 +623,8 @@ struct Tox_Options {
/**
* The savedata.
*
- * The data pointed at by this member is owned by the user, so must
- * outlive the options object.
+ * The data pointed at by this member is owned by the user, so must outlive
+ * the options object.
*/
const uint8_t *savedata_data;
@@ -650,7 +634,7 @@ struct Tox_Options {
size_t savedata_length;
/**
- * Logging callback for the new tox instance.
+ * Logging callback for the new Tox instance.
*/
tox_log_cb *log_callback;
@@ -673,14 +657,9 @@ struct Tox_Options {
bool experimental_thread_safety;
/**
- * Low level operating system functionality such as send/recv, random
- * number generation, and memory allocation.
- */
- const Tox_System *operating_system;
-
- /**
- * Enable saving DHT-based group chats to Tox save data (via `tox_get_savedata`).
- * This format will change in the future, so don't rely on it.
+ * Enable saving DHT-based group chats to Tox save data (via
+ * `tox_get_savedata`). This format will change in the future, so don't rely
+ * on it.
*
* As an alternative, clients can save the group chat ID in client-owned
* savedata. Then, when the client starts, it can use `tox_group_join`
@@ -759,10 +738,6 @@ bool tox_options_get_experimental_thread_safety(const Tox_Options *options);
void tox_options_set_experimental_thread_safety(Tox_Options *options, bool experimental_thread_safety);
-const Tox_System *tox_options_get_operating_system(const Tox_Options *options);
-
-void tox_options_set_operating_system(Tox_Options *options, const Tox_System *operating_system);
-
bool tox_options_get_experimental_groups_persistence(const Tox_Options *options);
void tox_options_set_experimental_groups_persistence(Tox_Options *options, bool experimental_groups_persistence);
@@ -837,15 +812,16 @@ typedef enum Tox_Err_New {
TOX_ERR_NEW_NULL,
/**
- * The function was unable to allocate enough memory to store the events_alloc
- * structures for the Tox object.
+ * The function was unable to allocate enough memory to store the
+ * internal structures for the Tox object.
*/
TOX_ERR_NEW_MALLOC,
/**
* The function was unable to bind to a port. This may mean that all ports
* have already been bound, e.g. by other Tox instances, or it may mean
- * a permission error. You may be able to gather more information from errno.
+ * a permission error. You may be able to gather more information from
+ * errno.
*/
TOX_ERR_NEW_PORT_ALLOC,
@@ -913,7 +889,7 @@ Tox *tox_new(const Tox_Options *options, Tox_Err_New *error);
void tox_kill(Tox *tox);
/**
- * @brief Calculates the number of bytes required to store the tox instance with
+ * @brief Calculates the number of bytes required to store the Tox instance with
* tox_get_savedata.
*
* This function cannot fail. The result is always greater than 0.
@@ -923,11 +899,12 @@ void tox_kill(Tox *tox);
size_t tox_get_savedata_size(const Tox *tox);
/**
- * @brief Store all information associated with the tox instance to a byte array.
+ * @brief Store all information associated with the Tox instance to a byte
+ * array.
*
- * @param savedata A memory region large enough to store the tox instance
- * data. Call tox_get_savedata_size to find the number of bytes required. If this parameter
- * is NULL, this function has no effect.
+ * @param savedata A memory region large enough to store the Tox instance
+ * data. Call tox_get_savedata_size to find the number of bytes required. If
+ * this parameter is NULL, this function has no effect.
*/
void tox_get_savedata(const Tox *tox, uint8_t savedata[]);
@@ -1065,14 +1042,16 @@ typedef void tox_self_connection_status_cb(Tox *tox, Tox_Connection connection_s
void tox_callback_self_connection_status(Tox *tox, tox_self_connection_status_cb *callback);
/**
- * @brief Return the time in milliseconds before `tox_iterate()` should be called again
- * for optimal performance.
+ * @brief Return the time in milliseconds before `tox_iterate()` should be
+ * called again for optimal performance.
*/
uint32_t tox_iteration_interval(const Tox *tox);
/**
- * @brief The main loop that needs to be run in intervals of `tox_iteration_interval()`
- * milliseconds.
+ * @brief The main loop that needs to be run in intervals of
+ * `tox_iteration_interval()` milliseconds.
+ * @param user_data Any pointer a client wishes the Tox instance to pass into
+ * the event callbacks, including NULL.
*/
void tox_iterate(Tox *tox, void *user_data);
@@ -1172,7 +1151,8 @@ const char *tox_err_set_info_to_string(Tox_Err_Set_Info value);
bool tox_self_set_name(Tox *tox, const uint8_t name[], size_t length, Tox_Err_Set_Info *error);
/**
- * @brief Return the length of the current nickname as passed to tox_self_set_name.
+ * @brief Return the length of the current nickname as passed to
+ * tox_self_set_name.
*
* If no nickname was set before calling this function, the name is empty,
* and this function returns 0.
@@ -1206,7 +1186,8 @@ bool tox_self_set_status_message(
Tox *tox, const uint8_t status_message[], size_t length, Tox_Err_Set_Info *error);
/**
- * @brief Return the length of the current status message as passed to tox_self_set_status_message.
+ * @brief Return the length of the current status message as passed to
+ * tox_self_set_status_message.
*
* If no status message was set before calling this function, the status
* is empty, and this function returns 0.
@@ -1216,13 +1197,14 @@ bool tox_self_set_status_message(
size_t tox_self_get_status_message_size(const Tox *tox);
/**
- * @brief Write the status message set by tox_self_set_status_message to a byte array.
+ * @brief Write the status message set by tox_self_set_status_message to a byte
+ * array.
*
* If no status message was set before calling this function, the status is
* empty, and this function has no effect.
*
- * Call tox_self_get_status_message_size to find out how much memory to allocate for
- * the result.
+ * Call tox_self_get_status_message_size to find out how much memory to allocate
+ * for the result.
*
* @param status_message A valid memory location large enough to hold the
* status message. If this parameter is NULL, the function has no effect.
@@ -1279,8 +1261,8 @@ typedef enum Tox_Err_Friend_Add {
TOX_ERR_FRIEND_ADD_OWN_KEY,
/**
- * A friend request has already been sent, or the address belongs to a friend
- * that is already on the friend list.
+ * A friend request has already been sent, or the address belongs to a
+ * friend that is already on the friend list.
*/
TOX_ERR_FRIEND_ADD_ALREADY_SENT,
@@ -1360,7 +1342,8 @@ typedef enum Tox_Err_Friend_Delete {
TOX_ERR_FRIEND_DELETE_OK,
/**
- * There was no friend with the given friend number. No friends were deleted.
+ * There was no friend with the given friend number. No friends were
+ * deleted.
*/
TOX_ERR_FRIEND_DELETE_FRIEND_NOT_FOUND,
@@ -1411,14 +1394,15 @@ const char *tox_err_friend_by_public_key_to_string(Tox_Err_Friend_By_Public_Key
/**
* @brief Return the friend number associated with that Public Key.
*
- * @return the friend number on success, an unspecified value on failure.
* @param public_key A byte array containing the Public Key.
+ *
+ * @return the friend number on success, an unspecified value on failure.
*/
Tox_Friend_Number tox_friend_by_public_key(const Tox *tox, const uint8_t public_key[TOX_PUBLIC_KEY_SIZE], Tox_Err_Friend_By_Public_Key *error);
/**
- * @brief Checks if a friend with the given friend number exists and returns true if
- * it does.
+ * @brief Checks if a friend with the given friend number exists and returns
+ * true if it does.
*/
bool tox_friend_exists(const Tox *tox, Tox_Friend_Number friend_number);
@@ -1433,7 +1417,8 @@ size_t tox_self_get_friend_list_size(const Tox *tox);
/**
* @brief Copy a list of valid friend numbers into an array.
*
- * Call tox_self_get_friend_list_size to determine the number of elements to allocate.
+ * Call tox_self_get_friend_list_size to determine the number of elements to
+ * allocate.
*
* @param friend_list A memory region with enough space to hold the friend
* list. If this parameter is NULL, this function has no effect.
@@ -1457,7 +1442,8 @@ typedef enum Tox_Err_Friend_Get_Public_Key {
const char *tox_err_friend_get_public_key_to_string(Tox_Err_Friend_Get_Public_Key value);
/**
- * @brief Copies the Public Key associated with a given friend number to a byte array.
+ * @brief Copies the Public Key associated with a given friend number to a byte
+ * array.
*
* @param friend_number The friend number you want the Public Key of.
* @param public_key A memory region of at least TOX_PUBLIC_KEY_SIZE bytes. If
@@ -1486,8 +1472,8 @@ typedef enum Tox_Err_Friend_Get_Last_Online {
const char *tox_err_friend_get_last_online_to_string(Tox_Err_Friend_Get_Last_Online value);
/**
- * @brief Return a unix-time timestamp of the last time the friend associated with a given
- * friend number was seen online.
+ * @brief Return a unix-time timestamp of the last time the friend associated
+ * with a given friend number was seen online.
*
* This function will return UINT64_MAX on error.
*
@@ -1514,8 +1500,9 @@ typedef enum Tox_Err_Friend_Query {
/**
* The pointer parameter for storing the query result (name, message) was
- * NULL. Unlike the `_self_` variants of these functions, which have no effect
- * when a parameter is NULL, these functions return an error in that case.
+ * NULL. Unlike the `_self_` variants of these functions, which have no
+ * effect when a parameter is NULL, these functions return an error in that
+ * case.
*/
TOX_ERR_FRIEND_QUERY_NULL,
@@ -1540,8 +1527,8 @@ size_t tox_friend_get_name_size(
const Tox *tox, Tox_Friend_Number friend_number, Tox_Err_Friend_Query *error);
/**
- * @brief Write the name of the friend designated by the given friend number to a byte
- * array.
+ * @brief Write the name of the friend designated by the given friend number to
+ * a byte array.
*
* Call tox_friend_get_name_size to determine the allocation size for the `name`
* parameter.
@@ -1579,22 +1566,23 @@ void tox_callback_friend_name(Tox *tox, tox_friend_name_cb *callback);
/**
* @brief Return the length of the friend's status message.
*
- * If the friend number isinvalid, the return value is SIZE_MAX.
+ * If the friend number is invalid, the return value is SIZE_MAX.
*/
size_t tox_friend_get_status_message_size(
const Tox *tox, Tox_Friend_Number friend_number, Tox_Err_Friend_Query *error);
/**
- * @brief Write the status message of the friend designated by the given friend number to a byte
- * array.
+ * @brief Write the status message of the friend designated by the given friend
+ * number to a byte array.
*
- * Call tox_friend_get_status_message_size to determine the allocation size for the `status_message`
- * parameter.
+ * Call tox_friend_get_status_message_size to determine the allocation size for
+ * the `status_message` parameter.
*
- * The data written to `status_message` is equal to the data received by the last
- * `friend_status_message` callback.
+ * The data written to `status_message` is equal to the data received by the
+ * last `friend_status_message` callback.
*
- * @param status_message A valid memory region large enough to store the friend's status message.
+ * @param status_message A valid memory region large enough to store the
+ * friend's status message.
*/
bool tox_friend_get_status_message(
const Tox *tox, Tox_Friend_Number friend_number, uint8_t status_message[],
@@ -1604,7 +1592,8 @@ bool tox_friend_get_status_message(
* @param friend_number The friend number of the friend whose status message
* changed.
* @param message A byte array containing the same data as
- * tox_friend_get_status_message would write to its `status_message` parameter.
+ * tox_friend_get_status_message would write to its `status_message`
+ * parameter.
* @param length A value equal to the return value of
* tox_friend_get_status_message_size.
*/
@@ -1814,7 +1803,8 @@ typedef uint32_t Tox_Friend_Message_Id;
* then reassemble the fragments. Messages may not be empty.
*
* The return value of this function is the message ID. If a read receipt is
- * received, the triggered `friend_read_receipt` event will be passed this message ID.
+ * received, the triggered `friend_read_receipt` event will be passed this
+ * message ID.
*
* Message IDs are unique per friend. The first message ID is 0. Message IDs are
* incremented by 1 each time a message is sent. If UINT32_MAX messages were
@@ -1831,7 +1821,8 @@ Tox_Friend_Message_Id tox_friend_send_message(
const uint8_t message[], size_t length, Tox_Err_Friend_Send_Message *error);
/**
- * @param friend_number The friend number of the friend who received the message.
+ * @param friend_number The friend number of the friend who received the
+ * message.
* @param message_id The message ID as returned from tox_friend_send_message
* corresponding to the message sent.
*/
@@ -1875,6 +1866,7 @@ void tox_callback_friend_request(Tox *tox, tox_friend_request_cb *callback);
/**
* @param friend_number The friend number of the friend who sent the message.
+ * @param type The type of the message (normal, action, ...).
* @param message The message data they sent.
* @param length The size of the message byte array.
*/
@@ -1906,10 +1898,10 @@ typedef uint32_t Tox_File_Number;
* primarily for validating cached avatars. This use is highly recommended to
* avoid unnecessary avatar updates.
*
- * If hash is NULL or data is NULL while length is not 0 the function returns false,
- * otherwise it returns true.
+ * If hash is NULL or data is NULL while length is not 0 the function returns
+ * false, otherwise it returns true.
*
- * This function is a wrapper to events_alloc message-digest functions.
+ * This function is a wrapper to internal message-digest functions.
*
* @param hash A valid memory location the hash data. It must be at least
* TOX_HASH_LENGTH bytes in size.
@@ -1923,17 +1915,17 @@ bool tox_hash(uint8_t hash[TOX_HASH_LENGTH], const uint8_t data[], size_t length
/**
* @brief A list of pre-defined file kinds.
*
- * Toxcore itself does not behave differently for different file kinds. These
- * are a hint to the client telling it what use the sender intended for the
- * file. The `kind` parameter in the send function and recv callback are
+ * The Tox library itself does not behave differently for different file kinds.
+ * These are a hint to the client telling it what use the sender intended for
+ * the file. The `kind` parameter in the send function and recv callback are
* `uint32_t`, not Tox_File_Kind, because clients can invent their own file
* kind. Unknown file kinds should be treated as TOX_FILE_KIND_DATA.
*/
enum Tox_File_Kind {
/**
- * Arbitrary file data. Clients can choose to handle it based on the file name
- * or magic or any other way they choose.
+ * Arbitrary file data. Clients can choose to handle it based on the file
+ * name or magic or any other way they choose.
*/
TOX_FILE_KIND_DATA,
@@ -1941,21 +1933,21 @@ enum Tox_File_Kind {
* Avatar file_id. This consists of tox_hash(image).
* Avatar data. This consists of the image data.
*
- * Avatars can be sent at any time the client wishes. Generally, a client will
- * send the avatar to a friend when that friend comes online, and to all
- * friends when the avatar changed. A client can save some traffic by
- * remembering which friend received the updated avatar already and only send
- * it if the friend has an out of date avatar.
+ * Avatars can be sent at any time the client wishes. Generally, a client
+ * will send the avatar to a friend when that friend comes online, and to
+ * all friends when the avatar changed. A client can save some traffic by
+ * remembering which friend received the updated avatar already and only
+ * send it if the friend has an out of date avatar.
*
* Clients who receive avatar send requests can reject it (by sending
* TOX_FILE_CONTROL_CANCEL before any other controls), or accept it (by
- * sending TOX_FILE_CONTROL_RESUME). The file_id of length TOX_HASH_LENGTH bytes
- * (same length as TOX_FILE_ID_LENGTH) will contain the hash. A client can compare
- * this hash with a saved hash and send TOX_FILE_CONTROL_CANCEL to terminate the avatar
- * transfer if it matches.
+ * sending TOX_FILE_CONTROL_RESUME). The file_id of length TOX_HASH_LENGTH
+ * bytes (same length as TOX_FILE_ID_LENGTH) will contain the hash. A client
+ * can compare this hash with a saved hash and send TOX_FILE_CONTROL_CANCEL
+ * to terminate the avatar transfer if it matches.
*
- * When file_size is set to 0 in the transfer request it means that the client
- * has no avatar.
+ * When file_size is set to 0 in the transfer request it means that the
+ * client has no avatar.
*/
TOX_FILE_KIND_AVATAR,
@@ -1964,16 +1956,17 @@ enum Tox_File_Kind {
typedef enum Tox_File_Control {
/**
- * Sent by the receiving side to accept a file send request. Also sent after a
- * TOX_FILE_CONTROL_PAUSE command to continue sending or receiving.
+ * Sent by the receiving side to accept a file send request. Also sent after
+ * a TOX_FILE_CONTROL_PAUSE command to continue sending or receiving.
*/
TOX_FILE_CONTROL_RESUME,
/**
* Sent by clients to pause the file transfer. The initial state of a file
- * transfer is always paused on the receiving side and running on the sending
- * side. If both the sending and receiving side pause the transfer, then both
- * need to send TOX_FILE_CONTROL_RESUME for the transfer to resume.
+ * transfer is always paused on the receiving side and running on the
+ * sending side. If both the sending and receiving side pause the transfer,
+ * then both need to send TOX_FILE_CONTROL_RESUME for the transfer to
+ * resume.
*/
TOX_FILE_CONTROL_PAUSE,
@@ -2005,7 +1998,8 @@ typedef enum Tox_Err_File_Control {
TOX_ERR_FILE_CONTROL_FRIEND_NOT_CONNECTED,
/**
- * No file transfer with the given file number was found for the given friend.
+ * No file transfer with the given file number was found for the given
+ * friend.
*/
TOX_ERR_FILE_CONTROL_NOT_FOUND,
@@ -2089,7 +2083,8 @@ typedef enum Tox_Err_File_Seek {
TOX_ERR_FILE_SEEK_FRIEND_NOT_CONNECTED,
/**
- * No file transfer with the given file number was found for the given friend.
+ * No file transfer with the given file number was found for the given
+ * friend.
*/
TOX_ERR_FILE_SEEK_NOT_FOUND,
@@ -2113,7 +2108,8 @@ typedef enum Tox_Err_File_Seek {
const char *tox_err_file_seek_to_string(Tox_Err_File_Seek value);
/**
- * @brief Sends a file seek control command to a friend for a given file transfer.
+ * @brief Sends a file seek control command to a friend for a given file
+ * transfer.
*
* This function can only be called to resume a file transfer right before
* TOX_FILE_CONTROL_RESUME is sent.
@@ -2144,7 +2140,8 @@ typedef enum Tox_Err_File_Get {
TOX_ERR_FILE_GET_FRIEND_NOT_FOUND,
/**
- * No file transfer with the given file number was found for the given friend.
+ * No file transfer with the given file number was found for the given
+ * friend.
*/
TOX_ERR_FILE_GET_NOT_FOUND,
@@ -2158,8 +2155,8 @@ const char *tox_err_file_get_to_string(Tox_Err_File_Get value);
* @param friend_number The friend number of the friend the file is being
* transferred to or received from.
* @param file_number The friend-specific identifier for the file transfer.
- * @param file_id A memory region of at least TOX_FILE_ID_LENGTH bytes. If
- * this parameter is NULL, this function has no effect.
+ * @param file_id A memory region of at least TOX_FILE_ID_LENGTH bytes. If this
+ * parameter is NULL, this function has no effect.
*
* @return true on success.
*/
@@ -2202,8 +2199,8 @@ typedef enum Tox_Err_File_Send {
TOX_ERR_FILE_SEND_NAME_TOO_LONG,
/**
- * Too many ongoing transfers. The maximum number of concurrent file transfers
- * is 256 per friend per direction (sending and receiving).
+ * Too many ongoing transfers. The maximum number of concurrent file
+ * transfers is 256 per friend per direction (sending and receiving).
*/
TOX_ERR_FILE_SEND_TOO_MANY,
@@ -2214,8 +2211,8 @@ const char *tox_err_file_send_to_string(Tox_Err_File_Send value);
/**
* @brief Send a file transmission request.
*
- * Maximum filename length is TOX_MAX_FILENAME_LENGTH bytes. The filename
- * should generally just be a file name, not a path with directory names.
+ * Maximum filename length is TOX_MAX_FILENAME_LENGTH bytes. The filename should
+ * generally just be a file name, not a path with directory names.
*
* If a non-UINT64_MAX file size is provided, it can be used by both sides to
* determine the sending progress. File size can be set to UINT64_MAX for
@@ -2224,8 +2221,8 @@ const char *tox_err_file_send_to_string(Tox_Err_File_Send value);
* File transmission occurs in chunks, which are requested through the
* `file_chunk_request` event.
*
- * When a friend goes offline, all file transfers associated with the friend are
- * purged from core.
+ * When a friend goes offline, all file transfers associated with the friend get
+ * purged.
*
* If the file contents change during a transfer, the behaviour is unspecified
* in general. What will actually happen depends on the mode in which the file
@@ -2234,15 +2231,16 @@ const char *tox_err_file_send_to_string(Tox_Err_File_Send value);
* - If the file size was increased
* - and sending mode was streaming (file_size = UINT64_MAX), the behaviour
* will be as expected.
- * - and sending mode was file (file_size != UINT64_MAX), the file_chunk_request
- * callback will receive length = 0 when Core thinks the file transfer has
- * finished. If the client remembers the file size as it was when sending the
- * request, it will terminate the transfer normally. If the client re-reads the
- * size, it will think the friend cancelled the transfer.
+ * - and sending mode was file (file_size != UINT64_MAX), the
+ * file_chunk_request callback will receive length = 0 when Tox thinks the
+ * file transfer has finished. If the client remembers the file size as it
+ * was when sending the request, it will terminate the transfer normally. If
+ * the client re-reads the size, it will think the friend cancelled the
+ * transfer.
* - If the file size was decreased
* - and sending mode was streaming, the behaviour is as expected.
* - and sending mode was file, the callback will return 0 at the new
- * (earlier) end-of-file, signalling to the friend that the transfer was
+ * (earlier) end-of-file, signaling to the friend that the transfer was
* cancelled.
* - If the file contents were modified
* - at a position before the current read, the two files (local and remote)
@@ -2255,19 +2253,20 @@ const char *tox_err_file_send_to_string(Tox_Err_File_Send value);
* @param friend_number The friend number of the friend the file send request
* should be sent to.
* @param kind The meaning of the file to be sent.
- * @param file_size Size in bytes of the file the client wants to send, UINT64_MAX if
- * unknown or streaming.
- * @param file_id A file identifier of length TOX_FILE_ID_LENGTH that can be used to
- * uniquely identify file transfers across core restarts. If NULL, a random one will
- * be generated by core. It can then be obtained by using `tox_file_get_file_id()`.
+ * @param file_size Size in bytes of the file the client wants to send,
+ * UINT64_MAX if unknown or streaming.
+ * @param file_id A file identifier of length TOX_FILE_ID_LENGTH that can be
+ * used to uniquely identify file transfers across Tox restarts. If NULL, a
+ * random one will be generated by the library. It can then be obtained by
+ * using `tox_file_get_file_id()`.
* @param filename Name of the file. Does not need to be the actual name. This
* name will be sent along with the file send request.
* @param filename_length Size in bytes of the filename.
*
* @return A file number used as an identifier in subsequent callbacks. This
* number is per friend. File numbers are reused after a transfer terminates.
- * On failure, this function returns an unspecified value. Any pattern in file numbers
- * should not be relied on.
+ * On failure, this function returns an unspecified value. Any pattern in file
+ * numbers should not be relied on.
*/
Tox_File_Number tox_file_send(
Tox *tox, Tox_Friend_Number friend_number, uint32_t kind, uint64_t file_size,
@@ -2297,20 +2296,23 @@ typedef enum Tox_Err_File_Send_Chunk {
TOX_ERR_FILE_SEND_CHUNK_FRIEND_NOT_CONNECTED,
/**
- * No file transfer with the given file number was found for the given friend.
+ * No file transfer with the given file number was found for the given
+ * friend.
*/
TOX_ERR_FILE_SEND_CHUNK_NOT_FOUND,
/**
* File transfer was found but isn't in a transferring state: (paused, done,
- * broken, etc...) (happens only when not called from the request chunk callback).
+ * broken, etc...) (happens only when not called from the request chunk
+ * callback).
*/
TOX_ERR_FILE_SEND_CHUNK_NOT_TRANSFERRING,
/**
- * Attempted to send more or less data than requested. The requested data size is
- * adjusted according to maximum transmission unit and the expected end of
- * the file. Trying to send less or more than requested will return this error.
+ * Attempted to send more or less data than requested. The requested data
+ * size is adjusted according to maximum transmission unit and the expected
+ * end of the file. Trying to send less or more than requested will return
+ * this error.
*/
TOX_ERR_FILE_SEND_CHUNK_INVALID_LENGTH,
@@ -2334,10 +2336,11 @@ const char *tox_err_file_send_chunk_to_string(Tox_Err_File_Send_Chunk value);
* This function is called in response to the `file_chunk_request` callback. The
* length parameter should be equal to the one received though the callback.
* If it is zero, the transfer is assumed complete. For files with known size,
- * Core will know that the transfer is complete after the last byte has been
+ * Tox will know that the transfer is complete after the last byte has been
* received, so it is not necessary (though not harmful) to send a zero-length
- * chunk to terminate. For streams, core will know that the transfer is finished
- * if a chunk with length less than the length requested in the callback is sent.
+ * chunk to terminate. For streams, Tox will know that the transfer is finished
+ * if a chunk with length less than the length requested in the callback is
+ * sent.
*
* @param friend_number The friend number of the receiving friend for this file.
* @param file_number The file transfer identifier returned by tox_file_send.
@@ -2379,7 +2382,7 @@ typedef void tox_file_chunk_request_cb(
*
* Pass NULL to unset.
*
- * This event is triggered when Core is ready to send more file data.
+ * This event is triggered when Tox is ready to send more file data.
*/
void tox_callback_file_chunk_request(Tox *tox, tox_file_chunk_request_cb *callback);
@@ -2458,6 +2461,7 @@ void tox_callback_file_recv_chunk(Tox *tox, tox_file_recv_chunk_cb *callback);
typedef uint32_t Tox_Conference_Number;
typedef uint32_t Tox_Conference_Peer_Number;
+typedef uint32_t Tox_Conference_Offline_Peer_Number;
/**
* @brief Conference types for the conference_invite event.
@@ -2465,7 +2469,8 @@ typedef uint32_t Tox_Conference_Peer_Number;
typedef enum Tox_Conference_Type {
/**
- * Text-only conferences that must be accepted with the tox_conference_join function.
+ * Text-only conferences that must be accepted with the tox_conference_join
+ * function.
*/
TOX_CONFERENCE_TYPE_TEXT,
@@ -2502,7 +2507,8 @@ typedef void tox_conference_invite_cb(
void tox_callback_conference_invite(Tox *tox, tox_conference_invite_cb *callback);
/**
- * @param conference_number The conference number of the conference to which we have connected.
+ * @param conference_number The conference number of the conference to which we
+ * have connected.
*/
typedef void tox_conference_connected_cb(Tox *tox, Tox_Conference_Number conference_number, void *user_data);
@@ -2555,7 +2561,8 @@ typedef void tox_conference_title_cb(
*
* This event is triggered when a peer changes the conference title.
*
- * If peer_number == UINT32_MAX, then author is unknown (e.g. initial joining the conference).
+ * If peer_number == UINT32_MAX, then author is unknown (e.g. initial joining
+ * the conference).
*/
void tox_callback_conference_title(Tox *tox, tox_conference_title_cb *callback);
@@ -2640,7 +2647,8 @@ const char *tox_err_conference_delete_to_string(Tox_Err_Conference_Delete value)
/**
* @brief This function deletes a conference.
*
- * @param conference_number The conference number of the conference to be deleted.
+ * @param conference_number The conference number of the conference to be
+ * deleted.
*
* @return true on success.
*/
@@ -2682,7 +2690,7 @@ const char *tox_err_conference_peer_query_to_string(Tox_Err_Conference_Peer_Quer
* peer_number for the functions querying these peers. Return value is
* unspecified on failure.
*/
-Tox_Conference_Peer_Number tox_conference_peer_count(
+uint32_t tox_conference_peer_count(
const Tox *tox, Tox_Conference_Number conference_number, Tox_Err_Conference_Peer_Query *error);
/**
@@ -2697,7 +2705,8 @@ size_t tox_conference_peer_get_name_size(
/**
* @brief Copy the name of peer_number who is in conference_number to name.
*
- * Call tox_conference_peer_get_name_size to determine the allocation size for the `name` parameter.
+ * Call tox_conference_peer_get_name_size to determine the allocation size for
+ * the `name` parameter.
*
* @param name A valid memory region large enough to store the peer's name.
*
@@ -2708,7 +2717,8 @@ bool tox_conference_peer_get_name(
uint8_t name[], Tox_Err_Conference_Peer_Query *error);
/**
- * @brief Copy the public key of peer_number who is in conference_number to public_key.
+ * @brief Copy the public key of peer_number who is in conference_number to
+ * public_key.
*
* public_key must be TOX_PUBLIC_KEY_SIZE long.
*
@@ -2744,10 +2754,11 @@ uint32_t tox_conference_offline_peer_count(
*/
size_t tox_conference_offline_peer_get_name_size(
const Tox *tox, Tox_Conference_Number conference_number,
- Tox_Conference_Peer_Number offline_peer_number, Tox_Err_Conference_Peer_Query *error);
+ Tox_Conference_Offline_Peer_Number offline_peer_number, Tox_Err_Conference_Peer_Query *error);
/**
- * @brief Copy the name of offline_peer_number who is in conference_number to name.
+ * @brief Copy the name of offline_peer_number who is in conference_number to
+ * name.
*
* Call tox_conference_offline_peer_get_name_size to determine the allocation
* size for the `name` parameter.
@@ -2757,11 +2768,12 @@ size_t tox_conference_offline_peer_get_name_size(
* @return true on success.
*/
bool tox_conference_offline_peer_get_name(
- const Tox *tox, Tox_Conference_Number conference_number, Tox_Conference_Peer_Number offline_peer_number,
+ const Tox *tox, Tox_Conference_Number conference_number, Tox_Conference_Offline_Peer_Number offline_peer_number,
uint8_t name[], Tox_Err_Conference_Peer_Query *error);
/**
- * @brief Copy the public key of offline_peer_number who is in conference_number to public_key.
+ * @brief Copy the public key of offline_peer_number who is in conference_number
+ * to public_key.
*
* public_key must be TOX_PUBLIC_KEY_SIZE long.
*
@@ -2769,14 +2781,15 @@ bool tox_conference_offline_peer_get_name(
*/
bool tox_conference_offline_peer_get_public_key(
const Tox *tox, Tox_Conference_Number conference_number,
- Tox_Conference_Peer_Number offline_peer_number, uint8_t public_key[TOX_PUBLIC_KEY_SIZE], Tox_Err_Conference_Peer_Query *error);
+ Tox_Conference_Offline_Peer_Number offline_peer_number, uint8_t public_key[TOX_PUBLIC_KEY_SIZE], Tox_Err_Conference_Peer_Query *error);
/**
- * @brief Return a unix-time timestamp of the last time offline_peer_number was seen to be active.
+ * @brief Return a unix-time timestamp of the last time offline_peer_number was
+ * seen to be active.
*/
uint64_t tox_conference_offline_peer_get_last_active(
const Tox *tox, Tox_Conference_Number conference_number,
- Tox_Conference_Peer_Number offline_peer_number, Tox_Err_Conference_Peer_Query *error);
+ Tox_Conference_Offline_Peer_Number offline_peer_number, Tox_Err_Conference_Peer_Query *error);
typedef enum Tox_Err_Conference_Set_Max_Offline {
@@ -2831,7 +2844,8 @@ const char *tox_err_conference_invite_to_string(Tox_Err_Conference_Invite value)
* @brief Invites a friend to a conference.
*
* @param friend_number The friend number of the friend we want to invite.
- * @param conference_number The conference number of the conference we want to invite the friend to.
+ * @param conference_number The conference number of the conference we want to
+ * invite the friend to.
*
* @return true on success.
*/
@@ -2852,7 +2866,8 @@ typedef enum Tox_Err_Conference_Join {
TOX_ERR_CONFERENCE_JOIN_INVALID_LENGTH,
/**
- * The conference is not the expected type. This indicates an invalid cookie.
+ * The conference is not the expected type. This indicates an invalid
+ * cookie.
*/
TOX_ERR_CONFERENCE_JOIN_WRONG_TYPE,
@@ -2876,6 +2891,11 @@ typedef enum Tox_Err_Conference_Join {
*/
TOX_ERR_CONFERENCE_JOIN_FAIL_SEND,
+ /**
+ * The cookie passed was NULL.
+ */
+ TOX_ERR_CONFERENCE_JOIN_NULL,
+
} Tox_Err_Conference_Join;
const char *tox_err_conference_join_to_string(Tox_Err_Conference_Join value);
@@ -2887,7 +2907,7 @@ const char *tox_err_conference_join_to_string(Tox_Err_Conference_Join value);
* to it until a handshaking procedure has been completed. A
* `conference_connected` event will then occur for the conference. The client
* will then remain connected to the conference until the conference is deleted,
- * even across core restarts. Many operations on a conference will fail with a
+ * even across Tox restarts. Many operations on a conference will fail with a
* corresponding error if attempted on a conference to which the client is not
* yet connected.
*
@@ -2995,9 +3015,11 @@ size_t tox_conference_get_title_size(
const Tox *tox, Tox_Conference_Number conference_number, Tox_Err_Conference_Title *error);
/**
- * @brief Write the title designated by the given conference number to a byte array.
+ * @brief Write the title designated by the given conference number to a byte
+ * array.
*
- * Call tox_conference_get_title_size to determine the allocation size for the `title` parameter.
+ * Call tox_conference_get_title_size to determine the allocation size for the
+ * `title` parameter.
*
* The data written to `title` is equal to the data received by the last
* `conference_title` callback.
@@ -3013,7 +3035,8 @@ bool tox_conference_get_title(
Tox_Err_Conference_Title *error);
/**
- * @brief Set the conference title and broadcast it to the rest of the conference.
+ * @brief Set the conference title and broadcast it to the rest of the
+ * conference.
*
* Title length cannot be longer than TOX_MAX_NAME_LENGTH.
*
@@ -3027,7 +3050,8 @@ bool tox_conference_set_title(
/**
* @brief Return the number of conferences in the Tox instance.
*
- * This should be used to determine how much memory to allocate for `tox_conference_get_chatlist`.
+ * This should be used to determine how much memory to allocate for
+ * `tox_conference_get_chatlist`.
*/
size_t tox_conference_get_chatlist_size(const Tox *tox);
@@ -3037,8 +3061,8 @@ size_t tox_conference_get_chatlist_size(const Tox *tox);
* Determine how much space to allocate for the array with the
* `tox_conference_get_chatlist_size` function.
*
- * Note that `tox_get_savedata` saves all connected conferences;
- * when toxcore is created from savedata in which conferences were saved, those
+ * Note that `tox_get_savedata` saves all connected conferences; when a Tox
+ * instance is created from savedata in which conferences were saved, those
* conferences will be connected at startup, and will be listed by
* `tox_conference_get_chatlist`.
*
@@ -3048,7 +3072,8 @@ size_t tox_conference_get_chatlist_size(const Tox *tox);
void tox_conference_get_chatlist(const Tox *tox, Tox_Conference_Number chatlist[]);
/**
- * @brief Returns the type of conference (Tox_Conference_Type) that conference_number is.
+ * @brief Returns the type of conference (Tox_Conference_Type) that
+ * conference_number is.
*
* Return value is unspecified on failure.
*/
@@ -3123,10 +3148,12 @@ Tox_Conference_Number tox_conference_by_id(
*
* If uid is NULL, this function has no effect.
*
- * @param uid A memory region large enough to store TOX_CONFERENCE_UID_SIZE bytes.
+ * @param uid A memory region large enough to store TOX_CONFERENCE_UID_SIZE
+ * bytes.
*
* @return true on success.
- * @deprecated use tox_conference_get_id instead (exactly the same function, just renamed).
+ * @deprecated use tox_conference_get_id instead (exactly the same function,
+ * just renamed).
*/
bool tox_conference_get_uid(
const Tox *tox, Tox_Conference_Number conference_number, uint8_t uid[TOX_CONFERENCE_UID_SIZE]);
@@ -3155,10 +3182,12 @@ const char *tox_err_conference_by_uid_to_string(Tox_Err_Conference_By_Uid value)
/**
* @brief Return the conference number associated with the specified uid.
*
- * @param uid A byte array containing the conference id (TOX_CONFERENCE_UID_SIZE).
+ * @param uid A byte array containing the conference id
+ * (TOX_CONFERENCE_UID_SIZE).
*
* @return the conference number on success, an unspecified value on failure.
- * @deprecated use tox_conference_by_id instead (exactly the same function, just renamed).
+ * @deprecated use tox_conference_by_id instead (exactly the same function,
+ * just renamed).
*/
Tox_Conference_Number tox_conference_by_uid(
const Tox *tox, const uint8_t uid[TOX_CONFERENCE_UID_SIZE], Tox_Err_Conference_By_Uid *error);
@@ -3192,8 +3221,9 @@ typedef enum Tox_Err_Friend_Custom_Packet {
TOX_ERR_FRIEND_CUSTOM_PACKET_FRIEND_NOT_CONNECTED,
/**
- * The first byte of data was not in the specified range for the packet type.
- * This range is 192-254 for lossy, and 69, 160-191 for lossless packets.
+ * The first byte of data was not one of the permitted values;
+ * for lossy packets the first byte must be in the range 192-254,
+ * and for lossless packets it must be either 69 or in the range 160-191.
*/
TOX_ERR_FRIEND_CUSTOM_PACKET_INVALID,
@@ -3244,7 +3274,7 @@ bool tox_friend_send_lossy_packet(
/**
* @brief Send a custom lossless packet to a friend.
*
- * The first byte of data must be in the range 69, 160-191. Maximum length of a
+ * The first byte of data must be either 69 or in the range 160-191. Maximum length of a
* custom packet is TOX_MAX_CUSTOM_PACKET_SIZE.
*
* Lossless packet behaviour is comparable to TCP (reliability, arrive in order)
@@ -3263,6 +3293,9 @@ bool tox_friend_send_lossless_packet(
Tox_Err_Friend_Custom_Packet *error);
/**
+ * tox_callback_friend_lossy_packet is the compatibility function to
+ * set the callback for all packet IDs except those reserved for ToxAV.
+ *
* @param friend_number The friend number of the friend who sent a lossy packet.
* @param data A byte array containing the received packet data.
* @param length The length of the packet data byte array.
@@ -3322,7 +3355,8 @@ const char *tox_err_get_port_to_string(Tox_Err_Get_Port value);
* @brief Writes the temporary DHT public key of this instance to a byte array.
*
* This can be used in combination with an externally accessible IP address and
- * the bound port (from tox_self_get_udp_port) to run a temporary bootstrap node.
+ * the bound port (from tox_self_get_udp_port) to run a temporary bootstrap
+ * node.
*
* Be aware that every time a new instance is created, the DHT public key
* changes, meaning this cannot be used to run a permanent bootstrap node.
@@ -3435,22 +3469,24 @@ uint32_t tox_group_peer_public_key_size(void);
typedef enum Tox_Group_Privacy_State {
/**
- * The group is considered to be public. Anyone may join the group using the Chat ID.
+ * The group is considered to be public. Anyone may join the group using
+ * the Chat ID.
*
- * If the group is in this state, even if the Chat ID is never explicitly shared
- * with someone outside of the group, information including the Chat ID, IP addresses,
- * and peer ID's (but not Tox ID's) is visible to anyone with access to a node
- * storing a DHT entry for the given group.
+ * If the group is in this state, even if the Chat ID is never explicitly
+ * shared with someone outside of the group, information including the Chat
+ * ID, IP addresses, and peer ID's (but not Tox ID's) is visible to anyone
+ * with access to a node storing a DHT entry for the given group.
*/
TOX_GROUP_PRIVACY_STATE_PUBLIC,
/**
- * The group is considered to be private. The only way to join the group is by having
- * someone in your contact list send you an invite.
+ * The group is considered to be private. The only way to join the group is
+ * by having someone in your contact list send you an invite.
*
- * If the group is in this state, no group information (mentioned above) is present in the DHT;
- * the DHT is not used for any purpose at all. If a public group is set to private,
- * all DHT information related to the group will expire shortly.
+ * If the group is in this state, no group information (mentioned above) is
+ * present in the DHT; the DHT is not used for any purpose at all. If a
+ * public group is set to private, all DHT information related to the group
+ * will expire shortly.
*/
TOX_GROUP_PRIVACY_STATE_PRIVATE,
@@ -3460,16 +3496,20 @@ const char *tox_group_privacy_state_to_string(Tox_Group_Privacy_State value);
/**
* Represents the state of the group topic lock.
+ *
+ * The default is enabled.
*/
typedef enum Tox_Group_Topic_Lock {
/**
- * The topic lock is enabled. Only peers with the founder and moderator roles may set the topic.
+ * The topic lock is enabled. Only peers with the founder and moderator
+ * roles may set the topic.
*/
TOX_GROUP_TOPIC_LOCK_ENABLED,
/**
- * The topic lock is disabled. All peers except those with the observer role may set the topic.
+ * The topic lock is disabled. All peers except those with the observer role
+ * may set the topic.
*/
TOX_GROUP_TOPIC_LOCK_DISABLED,
@@ -3478,8 +3518,9 @@ typedef enum Tox_Group_Topic_Lock {
const char *tox_group_topic_lock_to_string(Tox_Group_Topic_Lock value);
/**
- * Represents the group voice state, which determines which Group Roles have permission to speak
- * in the group chat. The voice state does not have any effect private messages or topic setting.
+ * Represents the group voice state, which determines which Group Roles have
+ * permission to speak in the group chat. The voice state does not have any
+ * effect private messages or topic setting.
*/
typedef enum Tox_Group_Voice_State {
/**
@@ -3503,14 +3544,15 @@ const char *tox_group_voice_state_to_string(Tox_Group_Voice_State value);
/**
* Represents group roles.
*
- * Roles are hierarchical in that each role has a set of privileges plus all the privileges
- * of the roles below it.
+ * Roles are hierarchical in that each role has a set of privileges plus all the
+ * privileges of the roles below it.
*/
typedef enum Tox_Group_Role {
/**
- * May kick all other peers as well as set their role to anything (except founder).
- * Founders may also set the group password, toggle the privacy state, and set the peer limit.
+ * May kick all other peers as well as set their role to anything (except
+ * founder). Founders may also set the group password, toggle the privacy
+ * state, and set the peer limit.
*/
TOX_GROUP_ROLE_FOUNDER,
@@ -3526,7 +3568,8 @@ typedef enum Tox_Group_Role {
TOX_GROUP_ROLE_USER,
/**
- * May observe the group and ignore peers; may not communicate with other peers or with the group.
+ * May observe the group and ignore peers; may not communicate with other
+ * peers or with the group.
*/
TOX_GROUP_ROLE_OBSERVER,
@@ -3548,7 +3591,8 @@ typedef enum Tox_Err_Group_New {
TOX_ERR_GROUP_NEW_OK,
/**
- * name exceeds TOX_MAX_NAME_LENGTH or group_name exceeded TOX_GROUP_MAX_GROUP_NAME_LENGTH.
+ * name exceeds TOX_MAX_NAME_LENGTH or group_name exceeded
+ * TOX_GROUP_MAX_GROUP_NAME_LENGTH.
*/
TOX_ERR_GROUP_NEW_TOO_LONG,
@@ -3563,13 +3607,14 @@ typedef enum Tox_Err_Group_New {
TOX_ERR_GROUP_NEW_INIT,
/**
- * The group state failed to initialize. This usually indicates that something went wrong
- * related to cryptographic signing.
+ * The group state failed to initialize. This usually indicates that
+ * something went wrong related to cryptographic signing.
*/
TOX_ERR_GROUP_NEW_STATE,
/**
- * The group failed to announce to the DHT. This indicates a network related error.
+ * The group failed to announce to the DHT. This indicates a network related
+ * error.
*/
TOX_ERR_GROUP_NEW_ANNOUNCE,
@@ -3584,18 +3629,19 @@ const char *tox_err_group_new_to_string(Tox_Err_Group_New value);
*
* The caller of this function has Founder role privileges.
*
- * The client should initiate its peer list with self info after calling this function, as
- * the peer_join callback will not be triggered.
+ * The client should initiate its peer list with self info after calling this
+ * function, as the peer_join callback will not be triggered.
*
- * @param privacy_state The privacy state of the group. If this is set to TOX_GROUP_PRIVACY_STATE_PUBLIC,
- * the group will attempt to announce itself to the DHT and anyone with the Chat ID may join.
- * Otherwise a friend invite will be required to join the group.
+ * @param privacy_state The privacy state of the group. If this is set to
+ * TOX_GROUP_PRIVACY_STATE_PUBLIC, the group will attempt to announce itself
+ * to the DHT and anyone with the Chat ID may join. Otherwise a friend invite
+ * will be required to join the group.
* @param group_name The name of the group. The name must be non-NULL.
- * @param group_name_length The length of the group name. This must be greater than zero and no larger than
- * TOX_GROUP_MAX_GROUP_NAME_LENGTH.
+ * @param group_name_length The length of the group name. This must be greater
+ * than zero and no larger than TOX_GROUP_MAX_GROUP_NAME_LENGTH.
* @param name The name of the peer creating the group.
- * @param name_length The length of the peer's name. This must be greater than zero and no larger
- * than TOX_MAX_NAME_LENGTH.
+ * @param name_length The length of the peer's name. This must be greater than
+ * zero and no larger than TOX_MAX_NAME_LENGTH.
*
* @return group_number on success, UINT32_MAX on failure.
*/
@@ -3617,8 +3663,9 @@ typedef enum Tox_Err_Group_Join {
TOX_ERR_GROUP_JOIN_INIT,
/**
- * The chat_id pointer is set to NULL or a group with chat_id already exists. This usually
- * happens if the client attempts to create multiple sessions for the same group.
+ * The chat_id pointer is set to NULL or a group with chat_id already
+ * exists. This usually happens if the client attempts to create multiple
+ * sessions for the same group.
*/
TOX_ERR_GROUP_JOIN_BAD_CHAT_ID,
@@ -3633,7 +3680,8 @@ typedef enum Tox_Err_Group_Join {
TOX_ERR_GROUP_JOIN_TOO_LONG,
/**
- * Failed to set password. This usually occurs if the password exceeds TOX_GROUP_MAX_PASSWORD_SIZE.
+ * Failed to set password. This usually occurs if the password exceeds
+ * TOX_GROUP_MAX_PASSWORD_SIZE.
*/
TOX_ERR_GROUP_JOIN_PASSWORD,
@@ -3649,17 +3697,20 @@ const char *tox_err_group_join_to_string(Tox_Err_Group_Join value);
/**
* Joins a group chat with specified Chat ID.
*
- * This function creates a new group chat object, adds it to the chats array, and sends
- * a DHT announcement to find peers in the group associated with chat_id. Once a peer has been
- * found a join attempt will be initiated.
- *
- * @param chat_id The Chat ID of the group you wish to join. This must be TOX_GROUP_CHAT_ID_SIZE bytes.
- * @param password The password required to join the group. Set to NULL if no password is required.
- * @param password_length The length of the password. If length is equal to zero,
- * the password parameter is ignored. length must be no larger than TOX_GROUP_MAX_PASSWORD_SIZE.
+ * This function creates a new group chat object, adds it to the chats array,
+ * and sends a DHT announcement to find peers in the group associated with
+ * chat_id. Once a peer has been found a join attempt will be initiated.
+ *
+ * @param chat_id The Chat ID of the group you wish to join. This must be
+ * TOX_GROUP_CHAT_ID_SIZE bytes.
+ * @param password The password required to join the group. Set to NULL if no
+ * password is required.
+ * @param password_length The length of the password. If length is equal to
+ * zero, the password parameter is ignored. length must be no larger than
+ * TOX_GROUP_MAX_PASSWORD_SIZE.
* @param name The name of the peer joining the group.
- * @param name_length The length of the peer's name. This must be greater than zero and no larger
- * than TOX_MAX_NAME_LENGTH.
+ * @param name_length The length of the peer's name. This must be greater than
+ * zero and no larger than TOX_MAX_NAME_LENGTH.
*
* @return group_number on success, UINT32_MAX on failure.
*/
@@ -3686,8 +3737,8 @@ typedef enum Tox_Err_Group_Is_Connected {
const char *tox_err_group_is_connected_to_string(Tox_Err_Group_Is_Connected value);
/**
- * Returns true if the group chat is currently connected or attempting to connect to other peers
- * in the group.
+ * Returns true if the group chat is currently connected or attempting to
+ * connect to other peers in the group.
*
* @param group_number The group number of the designated group.
*/
@@ -3714,7 +3765,8 @@ typedef enum Tox_Err_Group_Disconnect {
const char *tox_err_group_disconnect_to_string(Tox_Err_Group_Disconnect value);
/**
- * Disconnects from a group chat while retaining the group state and credentials.
+ * Disconnects from a group chat while retaining the group state and
+ * credentials.
*
* Returns true if we successfully disconnect from the group.
*
@@ -3746,8 +3798,9 @@ const char *tox_err_group_reconnect_to_string(Tox_Err_Group_Reconnect value);
/**
* Reconnects to a group.
*
- * This function disconnects from all peers in the group, then attempts to reconnect with the group.
- * The caller's state is not changed (i.e. name, status, role, chat public key etc.).
+ * This function disconnects from all peers in the group, then attempts to
+ * reconnect with the group. The caller's state is not changed (i.e. name,
+ * status, role, chat public key etc.).
*
* @param group_number The group number of the group we wish to reconnect to.
*
@@ -3783,14 +3836,16 @@ const char *tox_err_group_leave_to_string(Tox_Err_Group_Leave value);
/**
* Leaves a group.
*
- * This function sends a parting packet containing a custom (non-obligatory) message to all
- * peers in a group, and deletes the group from the chat array. All group state information is permanently
- * lost, including keys and role credentials.
+ * This function sends a parting packet containing a custom (non-obligatory)
+ * message to all peers in a group, and deletes the group from the chat array.
+ * All group state information is permanently lost, including keys and role
+ * credentials.
*
* @param group_number The group number of the group we wish to leave.
- * @param part_message The parting message to be sent to all the peers. Set to NULL if we do not wish to
- * send a parting message.
- * @param length The length of the parting message. Set to 0 if we do not wish to send a parting message.
+ * @param part_message The parting message to be sent to all the peers. Set to
+ * NULL if we do not wish to send a parting message.
+ * @param length The length of the parting message. Set to 0 if we do not wish
+ * to send a parting message.
*
* @return true if the group chat instance is successfully deleted.
*/
@@ -3859,10 +3914,11 @@ typedef enum Tox_Err_Group_Self_Name_Set {
const char *tox_err_group_self_name_set_to_string(Tox_Err_Group_Self_Name_Set value);
/**
- * Set the client's nickname for the group instance designated by the given group number.
+ * Set the client's nickname for the group instance designated by the given
+ * group number.
*
- * Nickname length cannot exceed TOX_MAX_NAME_LENGTH. If length is equal to zero or name is a NULL
- * pointer, the function call will fail.
+ * Nickname length cannot exceed TOX_MAX_NAME_LENGTH. If length is equal to
+ * zero or name is a NULL pointer, the function call will fail.
*
* @param name A byte array containing the new nickname.
* @param length The size of the name byte array.
@@ -3875,8 +3931,8 @@ bool tox_group_self_set_name(
Tox_Err_Group_Self_Name_Set *error);
/**
- * Return the length of the client's current nickname for the group instance designated
- * by group_number as passed to tox_group_self_set_name.
+ * Return the length of the client's current nickname for the group instance
+ * designated by group_number as passed to tox_group_self_set_name.
*
* If no nickname was set before calling this function, the name is empty,
* and this function returns 0.
@@ -3891,7 +3947,8 @@ size_t tox_group_self_get_name_size(const Tox *tox, Tox_Group_Number group_numbe
* If no nickname was set before calling this function, the name is empty,
* and this function has no effect.
*
- * Call tox_group_self_get_name_size to find out how much memory to allocate for the result.
+ * Call tox_group_self_get_name_size to find out how much memory to allocate for
+ * the result.
*
* @param name A valid memory location large enough to hold the nickname.
* If this parameter is NULL, the function has no effect.
@@ -3927,7 +3984,8 @@ typedef enum Tox_Err_Group_Self_Status_Set {
const char *tox_err_group_self_status_set_to_string(Tox_Err_Group_Self_Status_Set value);
/**
- * Set the client's status for the group instance. Status must be a Tox_User_Status.
+ * Set the client's status for the group instance. Status must be a
+ * Tox_User_Status.
*
* @return true on success.
*/
@@ -3953,13 +4011,16 @@ Tox_Group_Role tox_group_self_get_role(const Tox *tox, Tox_Group_Number group_nu
Tox_Group_Peer_Number tox_group_self_get_peer_id(const Tox *tox, Tox_Group_Number group_number, Tox_Err_Group_Self_Query *error);
/**
- * Write the client's group public key designated by the given group number to a byte array.
+ * Write the client's group public key designated by the given group number to
+ * a byte array.
*
- * This key will be permanently tied to the client's identity for this particular group until
- * the client explicitly leaves the group. This key is the only way for other peers to reliably
- * identify the client across client restarts.
+ * This key will be permanently tied to the client's identity for this
+ * particular group until the client explicitly leaves the group. This key is
+ * the only way for other peers to reliably identify the client across client
+ * restarts.
*
- * `public_key` should have room for at least TOX_GROUP_PEER_PUBLIC_KEY_SIZE bytes.
+ * `public_key` should have room for at least TOX_GROUP_PEER_PUBLIC_KEY_SIZE
+ * bytes.
*
* @param public_key A valid memory region large enough to store the public key.
* If this parameter is NULL, this function call has no effect.
@@ -4000,8 +4061,8 @@ typedef enum Tox_Err_Group_Peer_Query {
const char *tox_err_group_peer_query_to_string(Tox_Err_Group_Peer_Query value);
/**
- * Return the length of the peer's name. If the group number or ID is invalid, the
- * return value is unspecified.
+ * Return the length of the peer's name. If the group number or ID is invalid,
+ * the return value is unspecified.
*
* @param group_number The group number of the group we wish to query.
* @param peer_id The ID of the peer whose name length we want to retrieve.
@@ -4016,7 +4077,8 @@ size_t tox_group_peer_get_name_size(const Tox *tox, Tox_Group_Number group_numbe
* Write the name of the peer designated by the given ID to a byte
* array.
*
- * Call tox_group_peer_get_name_size to determine the allocation size for the `name` parameter.
+ * Call tox_group_peer_get_name_size to determine the allocation size for the
+ * `name` parameter.
*
* The data written to `name` is equal to the data received by the last
* `group_peer_name` callback.
@@ -4045,8 +4107,8 @@ Tox_User_Status tox_group_peer_get_status(const Tox *tox, Tox_Group_Number group
Tox_Err_Group_Peer_Query *error);
/**
- * Return the peer's role (user/moderator/founder...). If the ID or group number is
- * invalid, the return value is unspecified.
+ * Return the peer's role (user/moderator/founder...). If the ID or group number
+ * is invalid, the return value is unspecified.
*
* @param group_number The group number of the group we wish to query.
* @param peer_id The ID of the peer whose role we wish to query.
@@ -4060,8 +4122,9 @@ Tox_Group_Role tox_group_peer_get_role(const Tox *tox, Tox_Group_Number group_nu
/**
* Return the type of connection we have established with a peer.
*
- * If `peer_id` designates ourself, the return value indicates whether we're capable
- * of making UDP connections with other peers, or are limited to TCP connections.
+ * If `peer_id` designates ourself, the return value indicates whether we're
+ * capable of making UDP connections with other peers, or are limited to TCP
+ * connections.
*
* @param group_number The group number of the group we wish to query.
* @param peer_id The ID of the peer whose connection status we wish to query.
@@ -4070,13 +4133,15 @@ Tox_Connection tox_group_peer_get_connection_status(const Tox *tox, Tox_Group_Nu
Tox_Err_Group_Peer_Query *error);
/**
- * Write the group public key with the designated peer_id for the designated group number to public_key.
+ * Write the group public key with the designated peer_id for the designated
+ * group number to public_key.
*
- * This key will be permanently tied to a particular peer until they explicitly leave the group and is
- * the only way to reliably identify the same peer across client restarts.
+ * This key will be permanently tied to a particular peer until they explicitly
+ * leave the group and is the only way to reliably identify the same peer across
+ * client restarts.
*
- * `public_key` should have room for at least TOX_GROUP_PEER_PUBLIC_KEY_SIZE bytes. If `public_key` is null
- * this function has no effect.
+ * `public_key` should have room for at least TOX_GROUP_PEER_PUBLIC_KEY_SIZE
+ * bytes. If `public_key` is NULL this function has no effect.
*
* @param group_number The group number of the group we wish to query.
* @param peer_id The ID of the peer whose public key we wish to retrieve.
@@ -4090,14 +4155,15 @@ bool tox_group_peer_get_public_key(
uint8_t public_key[TOX_PUBLIC_KEY_SIZE], Tox_Err_Group_Peer_Query *error);
/**
- * @param group_number The group number of the group the name change is intended for.
+ * @param group_number The group number of the group the name change is intended
+ * for.
* @param peer_id The ID of the peer who has changed their name.
* @param name The name data.
- * @param length The length of the name.
+ * @param name_length The length of the name.
*/
typedef void tox_group_peer_name_cb(
Tox *tox, Tox_Group_Number group_number, Tox_Group_Peer_Number peer_id,
- const uint8_t name[], size_t length, void *user_data);
+ const uint8_t name[], size_t name_length, void *user_data);
/**
* Set the callback for the `group_peer_name` event. Pass NULL to unset.
@@ -4107,7 +4173,8 @@ typedef void tox_group_peer_name_cb(
void tox_callback_group_peer_name(Tox *tox, tox_group_peer_name_cb *callback);
/**
- * @param group_number The group number of the group the status change is intended for.
+ * @param group_number The group number of the group the status change is
+ * intended for.
* @param peer_id The ID of the peer who has changed their status.
* @param status The new status of the peer.
*/
@@ -4130,21 +4197,21 @@ void tox_callback_group_peer_status(Tox *tox, tox_group_peer_status_cb *callback
/**
* General error codes for group state get and size functions.
*/
-typedef enum Tox_Err_Group_State_Queries {
+typedef enum Tox_Err_Group_State_Query {
/**
* The function returned successfully.
*/
- TOX_ERR_GROUP_STATE_QUERIES_OK,
+ TOX_ERR_GROUP_STATE_QUERY_OK,
/**
* The group number passed did not designate a valid group.
*/
- TOX_ERR_GROUP_STATE_QUERIES_GROUP_NOT_FOUND,
+ TOX_ERR_GROUP_STATE_QUERY_GROUP_NOT_FOUND,
-} Tox_Err_Group_State_Queries;
+} Tox_Err_Group_State_Query;
-const char *tox_err_group_state_queries_to_string(Tox_Err_Group_State_Queries value);
+const char *tox_err_group_state_query_to_string(Tox_Err_Group_State_Query value);
/**
* Error codes for group topic setting.
@@ -4172,7 +4239,8 @@ typedef enum Tox_Err_Group_Topic_Set {
TOX_ERR_GROUP_TOPIC_SET_PERMISSIONS,
/**
- * The packet could not be created. This error is usually related to cryptographic signing.
+ * The packet could not be created. This error is usually related to
+ * cryptographic signing.
*/
TOX_ERR_GROUP_TOPIC_SET_FAIL_CREATE,
@@ -4193,8 +4261,8 @@ const char *tox_err_group_topic_set_to_string(Tox_Err_Group_Topic_Set value);
/**
* Set the group topic and broadcast it to the rest of the group.
*
- * topic length cannot be longer than TOX_GROUP_MAX_TOPIC_LENGTH. If length is equal to zero or
- * topic is set to NULL, the topic will be unset.
+ * Topic length cannot be longer than TOX_GROUP_MAX_TOPIC_LENGTH. If the length
+ * is equal to zero or topic is set to NULL, the topic will be unset.
*
* @return true on success.
*/
@@ -4210,12 +4278,13 @@ bool tox_group_set_topic(
* The return value is equal to the `length` argument received by the last
* `group_topic` callback.
*/
-size_t tox_group_get_topic_size(const Tox *tox, Tox_Group_Number group_number, Tox_Err_Group_State_Queries *error);
+size_t tox_group_get_topic_size(const Tox *tox, Tox_Group_Number group_number, Tox_Err_Group_State_Query *error);
/**
* Write the topic designated by the given group number to a byte array.
*
- * Call tox_group_get_topic_size to determine the allocation size for the `topic` parameter.
+ * Call tox_group_get_topic_size to determine the allocation size for the
+ * `topic` parameter.
*
* The data written to `topic` is equal to the data received by the last
* `group_topic` callback.
@@ -4227,18 +4296,19 @@ size_t tox_group_get_topic_size(const Tox *tox, Tox_Group_Number group_number, T
*/
bool tox_group_get_topic(
const Tox *tox, Tox_Group_Number group_number,
- uint8_t topic[], Tox_Err_Group_State_Queries *error);
+ uint8_t topic[], Tox_Err_Group_State_Query *error);
/**
- * @param group_number The group number of the group the topic change is intended for.
- * @param peer_id The ID of the peer who changed the topic. If the peer who set the topic
- * is not present in our peer list this value will be set to 0.
+ * @param group_number The group number of the group the topic change is
+ * intended for.
+ * @param peer_id The ID of the peer who changed the topic. If the peer who set
+ * the topic is not present in our peer list this value will be set to 0.
* @param topic The topic data.
- * @param length The topic length.
+ * @param topic_length The topic length.
*/
typedef void tox_group_topic_cb(
Tox *tox, Tox_Group_Number group_number, Tox_Group_Peer_Number peer_id,
- const uint8_t topic[], size_t length,
+ const uint8_t topic[], size_t topic_length,
void *user_data);
/**
@@ -4252,12 +4322,14 @@ void tox_callback_group_topic(Tox *tox, tox_group_topic_cb *callback);
* Return the length of the group name. If the group number is invalid, the
* return value is unspecified.
*/
-size_t tox_group_get_name_size(const Tox *tox, Tox_Group_Number group_number, Tox_Err_Group_State_Queries *error);
+size_t tox_group_get_name_size(const Tox *tox, Tox_Group_Number group_number, Tox_Err_Group_State_Query *error);
/**
- * Write the name of the group designated by the given group number to a byte array.
+ * Write the name of the group designated by the given group number to a byte
+ * array.
*
- * Call tox_group_get_name_size to determine the allocation size for the `name` parameter.
+ * Call tox_group_get_name_size to determine the allocation size for the `name`
+ * parameter.
*
* @param name A valid memory region large enough to store the group name.
* If this parameter is NULL, this function call has no effect.
@@ -4266,7 +4338,7 @@ size_t tox_group_get_name_size(const Tox *tox, Tox_Group_Number group_number, To
*/
bool tox_group_get_name(
const Tox *tox, Tox_Group_Number group_number,
- uint8_t name[], Tox_Err_Group_State_Queries *error);
+ uint8_t name[], Tox_Err_Group_State_Query *error);
/**
* Write the Chat ID designated by the given group number to a byte array.
@@ -4280,7 +4352,7 @@ bool tox_group_get_name(
*/
bool tox_group_get_chat_id(
const Tox *tox, Tox_Group_Number group_number, uint8_t chat_id[TOX_GROUP_CHAT_ID_SIZE],
- Tox_Err_Group_State_Queries *error);
+ Tox_Err_Group_State_Query *error);
/**
* Return the number of groups in the Tox chats array.
@@ -4288,19 +4360,21 @@ bool tox_group_get_chat_id(
uint32_t tox_group_get_number_groups(const Tox *tox);
/**
- * Return the privacy state of the group designated by the given group number. If group number
- * is invalid, the return value is unspecified.
+ * Return the privacy state of the group designated by the given group number.
+ * If group number is invalid, the return value is unspecified.
*
* The value returned is equal to the data received by the last
* `group_privacy_state` callback.
*
- * @see the `Group chat founder controls` section for the respective set function.
+ * @see the `Group chat Founder controls` section for the respective set
+ * function.
*/
Tox_Group_Privacy_State tox_group_get_privacy_state(const Tox *tox, Tox_Group_Number group_number,
- Tox_Err_Group_State_Queries *error);
+ Tox_Err_Group_State_Query *error);
/**
- * @param group_number The group number of the group the privacy state is intended for.
+ * @param group_number The group number of the group the privacy state is
+ * intended for.
* @param privacy_state The new privacy state.
*/
typedef void tox_group_privacy_state_cb(Tox *tox, Tox_Group_Number group_number, Tox_Group_Privacy_State privacy_state,
@@ -4314,18 +4388,21 @@ typedef void tox_group_privacy_state_cb(Tox *tox, Tox_Group_Number group_number,
void tox_callback_group_privacy_state(Tox *tox, tox_group_privacy_state_cb *callback);
/**
- * Return the voice state of the group designated by the given group number. If group number
- * is invalid, the return value is unspecified.
+ * Return the voice state of the group designated by the given group number. If
+ * group number is invalid, the return value is unspecified.
*
- * The value returned is equal to the data received by the last `group_voice_state` callback.
+ * The value returned is equal to the data received by the last
+ * `group_voice_state` callback.
*
- * @see the `Group chat founder controls` section for the respective set function.
+ * @see the `Group chat Founder controls` section for the respective set
+ * function.
*/
Tox_Group_Voice_State tox_group_get_voice_state(const Tox *tox, Tox_Group_Number group_number,
- Tox_Err_Group_State_Queries *error);
+ Tox_Err_Group_State_Query *error);
/**
- * @param group_number The group number of the group the voice state change is intended for.
+ * @param group_number The group number of the group the voice state change is
+ * intended for.
* @param voice_state The new voice state.
*/
typedef void tox_group_voice_state_cb(Tox *tox, Tox_Group_Number group_number, Tox_Group_Voice_State voice_state,
@@ -4339,19 +4416,22 @@ typedef void tox_group_voice_state_cb(Tox *tox, Tox_Group_Number group_number, T
void tox_callback_group_voice_state(Tox *tox, tox_group_voice_state_cb *callback);
/**
- * Return the topic lock status of the group designated by the given group number. If group number
+ * Return the topic lock status of the group designated by the given group
+ * number. If group number
* is invalid, the return value is unspecified.
*
* The value returned is equal to the data received by the last
* `group_topic_lock` callback.
*
- * @see the `Group chat founder contols` section for the respective set function.
+ * @see the `Group chat Founder controls` section for the respective set
+ * function.
*/
Tox_Group_Topic_Lock tox_group_get_topic_lock(const Tox *tox, Tox_Group_Number group_number,
- Tox_Err_Group_State_Queries *error);
+ Tox_Err_Group_State_Query *error);
/**
- * @param group_number The group number of the group for which the topic lock has changed.
+ * @param group_number The group number of the group for which the topic lock
+ * has changed.
* @param topic_lock The new topic lock state.
*/
typedef void tox_group_topic_lock_cb(Tox *tox, Tox_Group_Number group_number, Tox_Group_Topic_Lock topic_lock, void *user_data);
@@ -4364,18 +4444,21 @@ typedef void tox_group_topic_lock_cb(Tox *tox, Tox_Group_Number group_number, To
void tox_callback_group_topic_lock(Tox *tox, tox_group_topic_lock_cb *callback);
/**
- * Return the maximum number of peers allowed for the group designated by the given group number.
- * If the group number is invalid, the return value is unspecified.
+ * Return the maximum number of peers allowed for the group designated by the
+ * given group number. If the group number is invalid, the return value is
+ * unspecified.
*
* The value returned is equal to the data received by the last
* `group_peer_limit` callback.
*
- * @see the `Group chat founder controls` section for the respective set function.
+ * @see the `Group chat Founder controls` section for the respective set
+ * function.
*/
-uint16_t tox_group_get_peer_limit(const Tox *tox, Tox_Group_Number group_number, Tox_Err_Group_State_Queries *error);
+uint16_t tox_group_get_peer_limit(const Tox *tox, Tox_Group_Number group_number, Tox_Err_Group_State_Query *error);
/**
- * @param group_number The group number of the group for which the peer limit has changed.
+ * @param group_number The group number of the group for which the peer limit
+ * has changed.
* @param peer_limit The new peer limit for the group.
*/
typedef void tox_group_peer_limit_cb(Tox *tox, Tox_Group_Number group_number, uint32_t peer_limit, void *user_data);
@@ -4383,7 +4466,8 @@ typedef void tox_group_peer_limit_cb(Tox *tox, Tox_Group_Number group_number, ui
/**
* Set the callback for the `group_peer_limit` event. Pass NULL to unset.
*
- * This event is triggered when the group founder changes the maximum peer limit.
+ * This event is triggered when the group founder changes the maximum peer
+ * limit.
*/
void tox_callback_group_peer_limit(Tox *tox, tox_group_peer_limit_cb *callback);
@@ -4391,35 +4475,39 @@ void tox_callback_group_peer_limit(Tox *tox, tox_group_peer_limit_cb *callback);
* Return the length of the group password. If the group number is invalid, the
* return value is unspecified.
*/
-size_t tox_group_get_password_size(const Tox *tox, Tox_Group_Number group_number, Tox_Err_Group_State_Queries *error);
+size_t tox_group_get_password_size(const Tox *tox, Tox_Group_Number group_number, Tox_Err_Group_State_Query *error);
/**
- * Write the password for the group designated by the given group number to a byte array.
+ * Write the password for the group designated by the given group number to a
+ * byte array.
*
- * Call tox_group_get_password_size to determine the allocation size for the `password` parameter.
+ * Call tox_group_get_password_size to determine the allocation size for the
+ * `password` parameter.
*
- * The data received is equal to the data received by the last
- * `group_password` callback.
+ * The data received is equal to the data received by the last `group_password`
+ * callback.
*
- * @see the `Group chat founder controls` section for the respective set function.
+ * @see the `Group chat Founder controls` section for the respective set
+ * function.
*
- * @param password A valid memory region large enough to store the group password.
- * If this parameter is NULL, this function call has no effect.
+ * @param password A valid memory region large enough to store the group
+ * password. If this parameter is NULL, this function call has no effect.
*
* @return true on success.
*/
bool tox_group_get_password(
const Tox *tox, Tox_Group_Number group_number, uint8_t password[],
- Tox_Err_Group_State_Queries *error);
+ Tox_Err_Group_State_Query *error);
/**
- * @param group_number The group number of the group for which the password has changed.
+ * @param group_number The group number of the group for which the password has
+ * changed.
* @param password The new group password.
- * @param length The length of the password.
+ * @param password_length The length of the password.
*/
typedef void tox_group_password_cb(
Tox *tox, Tox_Group_Number group_number,
- const uint8_t password[], size_t length,
+ const uint8_t password[], size_t password_length,
void *user_data);
/**
@@ -4453,7 +4541,7 @@ typedef enum Tox_Err_Group_Send_Message {
TOX_ERR_GROUP_SEND_MESSAGE_TOO_LONG,
/**
- * The message pointer is null or length is zero.
+ * The message pointer is NULL or length is zero.
*/
TOX_ERR_GROUP_SEND_MESSAGE_EMPTY,
@@ -4487,12 +4575,13 @@ const char *tox_err_group_send_message_to_string(Tox_Err_Group_Send_Message valu
* This function creates a group message packet and pushes it into the send
* queue.
*
- * The message length may not exceed TOX_GROUP_MAX_MESSAGE_LENGTH. Larger messages
- * must be split by the client and sent as separate messages. Other clients can
- * then reassemble the fragments. Messages may not be empty.
+ * The message length may not exceed TOX_GROUP_MAX_MESSAGE_LENGTH. Larger
+ * messages must be split by the client and sent as separate messages. Other
+ * clients can then reassemble the fragments. Messages may not be empty.
*
- * @param group_number The group number of the group the message is intended for.
- * @param type Message type (normal, action, ...).
+ * @param group_number The group number of the group the message is intended
+ * for.
+ * @param message_type Message type (normal, action, ...).
* @param message A non-NULL pointer to the first element of a byte array
* containing the message text.
* @param length Length of the message to be sent.
@@ -4501,7 +4590,7 @@ const char *tox_err_group_send_message_to_string(Tox_Err_Group_Send_Message valu
* returned message ID value will be undefined.
*/
Tox_Group_Message_Id tox_group_send_message(
- const Tox *tox, Tox_Group_Number group_number, Tox_Message_Type type,
+ const Tox *tox, Tox_Group_Number group_number, Tox_Message_Type message_type,
const uint8_t message[], size_t length,
Tox_Err_Group_Send_Message *error);
@@ -4528,11 +4617,16 @@ typedef enum Tox_Err_Group_Send_Private_Message {
TOX_ERR_GROUP_SEND_PRIVATE_MESSAGE_TOO_LONG,
/**
- * The message pointer is null or length is zero.
+ * The message pointer is NULL or length is zero.
*/
TOX_ERR_GROUP_SEND_PRIVATE_MESSAGE_EMPTY,
/**
+ * The message type is invalid.
+ */
+ TOX_ERR_GROUP_SEND_PRIVATE_MESSAGE_BAD_TYPE,
+
+ /**
* The caller does not have the required permissions to send group messages.
*/
TOX_ERR_GROUP_SEND_PRIVATE_MESSAGE_PERMISSIONS,
@@ -4547,11 +4641,6 @@ typedef enum Tox_Err_Group_Send_Private_Message {
*/
TOX_ERR_GROUP_SEND_PRIVATE_MESSAGE_DISCONNECTED,
- /**
- * The message type is invalid.
- */
- TOX_ERR_GROUP_SEND_PRIVATE_MESSAGE_BAD_TYPE,
-
} Tox_Err_Group_Send_Private_Message;
const char *tox_err_group_send_private_message_to_string(Tox_Err_Group_Send_Private_Message value);
@@ -4559,23 +4648,25 @@ const char *tox_err_group_send_private_message_to_string(Tox_Err_Group_Send_Priv
/**
* Send a text chat message to the specified peer in the specified group.
*
- * This function creates a group private message packet and pushes it into the send
- * queue.
+ * This function creates a group private message packet and pushes it into the
+ * send queue.
*
- * The message length may not exceed TOX_GROUP_MAX_MESSAGE_LENGTH. Larger messages
- * must be split by the client and sent as separate messages. Other clients can
- * then reassemble the fragments. Messages may not be empty.
+ * The message length may not exceed TOX_GROUP_MAX_MESSAGE_LENGTH. Larger
+ * messages must be split by the client and sent as separate messages. Other
+ * clients can then reassemble the fragments. Messages may not be empty.
*
- * @param group_number The group number of the group the message is intended for.
+ * @param group_number The group number of the group the message is intended
+ * for.
* @param peer_id The ID of the peer the message is intended for.
+ * @param message_type The type of message (normal, action, ...).
* @param message A non-NULL pointer to the first element of a byte array
* containing the message text.
* @param length Length of the message to be sent.
*
* @return true on success.
*/
-bool tox_group_send_private_message(
- const Tox *tox, Tox_Group_Number group_number, Tox_Group_Peer_Number peer_id, Tox_Message_Type type,
+Tox_Group_Message_Id tox_group_send_private_message(
+ const Tox *tox, Tox_Group_Number group_number, Tox_Group_Peer_Number peer_id, Tox_Message_Type message_type,
const uint8_t message[], size_t length,
Tox_Err_Group_Send_Private_Message *error);
@@ -4599,16 +4690,11 @@ typedef enum Tox_Err_Group_Send_Custom_Packet {
TOX_ERR_GROUP_SEND_CUSTOM_PACKET_TOO_LONG,
/**
- * The message pointer is null or length is zero.
+ * The message pointer is NULL or length is zero.
*/
TOX_ERR_GROUP_SEND_CUSTOM_PACKET_EMPTY,
/**
- * The caller does not have the required permissions to send group messages.
- */
- TOX_ERR_GROUP_SEND_CUSTOM_PACKET_PERMISSIONS,
-
- /**
* The group is disconnected.
*/
TOX_ERR_GROUP_SEND_CUSTOM_PACKET_DISCONNECTED,
@@ -4626,15 +4712,17 @@ const char *tox_err_group_send_custom_packet_to_string(Tox_Err_Group_Send_Custom
/**
* Send a custom packet to the group.
*
- * If lossless is true the packet will be lossless. Lossless packet behaviour is comparable
- * to TCP (reliability, arrive in order) but with packets instead of a stream.
+ * If lossless is true the packet will be lossless. Lossless packet behaviour is
+ * comparable to TCP (reliability, arrive in order) but with packets instead of
+ * a stream.
*
- * If lossless is false, the packet will be lossy. Lossy packets behave like UDP packets,
- * meaning they might never reach the other side or might arrive more than once (if someone
- * is messing with the connection) or might arrive in the wrong order.
+ * If lossless is false, the packet will be lossy. Lossy packets behave like UDP
+ * packets, meaning they might never reach the other side or might arrive more
+ * than once (if someone is messing with the connection) or might arrive in the
+ * wrong order.
*
- * Unless latency is an issue or message reliability is not important, it is recommended that you use
- * lossless packets.
+ * Unless latency is an issue or message reliability is not important, it is
+ * recommended that you use lossless packets.
*
* The message length may not exceed TOX_MAX_CUSTOM_PACKET_SIZE. Larger packets
* must be split by the client and sent as separate packets. Other clients can
@@ -4672,7 +4760,7 @@ typedef enum Tox_Err_Group_Send_Custom_Private_Packet {
TOX_ERR_GROUP_SEND_CUSTOM_PRIVATE_PACKET_TOO_LONG,
/**
- * The message pointer is null or length is zero.
+ * The message pointer is NULL or length is zero.
*/
TOX_ERR_GROUP_SEND_CUSTOM_PRIVATE_PACKET_EMPTY,
@@ -4682,11 +4770,6 @@ typedef enum Tox_Err_Group_Send_Custom_Private_Packet {
TOX_ERR_GROUP_SEND_CUSTOM_PRIVATE_PACKET_PEER_NOT_FOUND,
/**
- * The caller does not have the required permissions to send group messages.
- */
- TOX_ERR_GROUP_SEND_CUSTOM_PRIVATE_PACKET_PERMISSIONS,
-
- /**
* The packet failed to send.
*/
TOX_ERR_GROUP_SEND_CUSTOM_PRIVATE_PACKET_FAIL_SEND,
@@ -4703,15 +4786,17 @@ const char *tox_err_group_send_custom_private_packet_to_string(Tox_Err_Group_Sen
/**
* Send a custom private packet to a designated peer in the group.
*
- * If lossless is true the packet will be lossless. Lossless packet behaviour is comparable
- * to TCP (reliability, arrive in order) but with packets instead of a stream.
+ * If lossless is true the packet will be lossless. Lossless packet behaviour is
+ * comparable to TCP (reliability, arrive in order) but with packets instead of
+ * a stream.
*
- * If lossless is false, the packet will be lossy. Lossy packets behave like UDP packets,
- * meaning they might never reach the other side or might arrive more than once (if someone
- * is messing with the connection) or might arrive in the wrong order.
+ * If lossless is false, the packet will be lossy. Lossy packets behave like UDP
+ * packets, meaning they might never reach the other side or might arrive more
+ * than once (if someone is messing with the connection) or might arrive in the
+ * wrong order.
*
- * Unless latency is an issue or message reliability is not important, it is recommended that you use
- * lossless packets.
+ * Unless latency is an issue or message reliability is not important, it is
+ * recommended that you use lossless packets.
*
* The packet length may not exceed TOX_MAX_CUSTOM_PACKET_SIZE. Larger packets
* must be split by the client and sent as separate packets. Other clients can
@@ -4736,16 +4821,18 @@ bool tox_group_send_custom_private_packet(const Tox *tox, Tox_Group_Number group
******************************************************************************/
/**
- * @param group_number The group number of the group the message is intended for.
+ * @param group_number The group number of the group the message is intended
+ * for.
* @param peer_id The ID of the peer who sent the message.
- * @param type The type of message (normal, action, ...).
+ * @param message_type The type of message (normal, action, ...).
* @param message The message data.
- * @param message_id A pseudo message id that clients can use to uniquely identify this group message.
- * @param length The length of the message.
+ * @param message_length The length of the message.
+ * @param message_id A pseudo message id that clients can use to uniquely
+ * identify this group message.
*/
typedef void tox_group_message_cb(
- Tox *tox, Tox_Group_Number group_number, Tox_Group_Peer_Number peer_id, Tox_Message_Type type,
- const uint8_t message[], size_t length, Tox_Group_Message_Id message_id, void *user_data);
+ Tox *tox, Tox_Group_Number group_number, Tox_Group_Peer_Number peer_id, Tox_Message_Type message_type,
+ const uint8_t message[], size_t message_length, Tox_Group_Message_Id message_id, void *user_data);
/**
* Set the callback for the `group_message` event. Pass NULL to unset.
@@ -4755,14 +4842,18 @@ typedef void tox_group_message_cb(
void tox_callback_group_message(Tox *tox, tox_group_message_cb *callback);
/**
- * @param group_number The group number of the group the private message is intended for.
+ * @param group_number The group number of the group the private message is
+ * intended for.
* @param peer_id The ID of the peer who sent the private message.
+ * @param message_type The type of message (normal, action, ...).
* @param message The message data.
- * @param length The length of the message.
+ * @param message_length The length of the message.
+ * @param message_id A pseudo message id that clients can use to uniquely
+ * identify this group message.
*/
typedef void tox_group_private_message_cb(
- Tox *tox, Tox_Group_Number group_number, Tox_Group_Peer_Number peer_id, Tox_Message_Type type,
- const uint8_t message[], size_t length, void *user_data);
+ Tox *tox, Tox_Group_Number group_number, Tox_Group_Peer_Number peer_id, Tox_Message_Type message_type,
+ const uint8_t message[], size_t message_length, Tox_Group_Message_Id message_id, void *user_data);
/**
* Set the callback for the `group_private_message` event. Pass NULL to unset.
@@ -4775,11 +4866,11 @@ void tox_callback_group_private_message(Tox *tox, tox_group_private_message_cb *
* @param group_number The group number of the group the packet is intended for.
* @param peer_id The ID of the peer who sent the packet.
* @param data The packet data.
- * @param length The length of the data.
+ * @param data_length The length of the data.
*/
typedef void tox_group_custom_packet_cb(
Tox *tox, Tox_Group_Number group_number, Tox_Group_Peer_Number peer_id,
- const uint8_t data[], size_t length, void *user_data);
+ const uint8_t data[], size_t data_length, void *user_data);
/**
* Set the callback for the `group_custom_packet` event. Pass NULL to unset.
@@ -4792,14 +4883,15 @@ void tox_callback_group_custom_packet(Tox *tox, tox_group_custom_packet_cb *call
* @param group_number The group number of the group the packet is intended for.
* @param peer_id The ID of the peer who sent the packet.
* @param data The packet data.
- * @param length The length of the data.
+ * @param data_length The length of the data.
*/
typedef void tox_group_custom_private_packet_cb(
Tox *tox, Tox_Group_Number group_number, Tox_Group_Peer_Number peer_id,
- const uint8_t data[], size_t length, void *user_data);
+ const uint8_t data[], size_t data_length, void *user_data);
/**
- * Set the callback for the `group_custom_private_packet` event. Pass NULL to unset.
+ * Set the callback for the `group_custom_private_packet` event. Pass NULL to
+ * unset.
*
* This event is triggered when the client receives a custom private packet.
*/
@@ -4829,7 +4921,8 @@ typedef enum Tox_Err_Group_Invite_Friend {
TOX_ERR_GROUP_INVITE_FRIEND_FRIEND_NOT_FOUND,
/**
- * Creation of the invite packet failed. This indicates a network related error.
+ * Creation of the invite packet failed. This indicates a network related
+ * error.
*/
TOX_ERR_GROUP_INVITE_FRIEND_INVITE_FAIL,
@@ -4850,10 +4943,13 @@ const char *tox_err_group_invite_friend_to_string(Tox_Err_Group_Invite_Friend va
/**
* Invite a friend to a group.
*
- * This function creates an invite request packet and pushes it to the send queue.
+ * This function creates an invite request packet and pushes it to the send
+ * queue.
*
- * @param group_number The group number of the group the message is intended for.
- * @param friend_number The friend number of the friend the invite is intended for.
+ * @param group_number The group number of the group the message is intended
+ * for.
+ * @param friend_number The friend number of the friend the invite is intended
+ * for.
*
* @return true on success.
*/
@@ -4889,36 +4985,44 @@ typedef enum Tox_Err_Group_Invite_Accept {
TOX_ERR_GROUP_INVITE_ACCEPT_EMPTY,
/**
- * Failed to set password. This usually occurs if the password exceeds TOX_GROUP_MAX_PASSWORD_SIZE.
+ * Failed to set password. This usually occurs if the password exceeds
+ * TOX_GROUP_MAX_PASSWORD_SIZE.
*/
TOX_ERR_GROUP_INVITE_ACCEPT_PASSWORD,
/**
- * There was a core error when initiating the group.
+ * The friend number passed did not designate a valid friend.
*/
- TOX_ERR_GROUP_INVITE_ACCEPT_CORE,
+ TOX_ERR_GROUP_INVITE_ACCEPT_FRIEND_NOT_FOUND,
/**
* Packet failed to send.
*/
TOX_ERR_GROUP_INVITE_ACCEPT_FAIL_SEND,
+ /**
+ * Invite data or name is NULL.
+ */
+ TOX_ERR_GROUP_INVITE_ACCEPT_NULL,
+
} Tox_Err_Group_Invite_Accept;
const char *tox_err_group_invite_accept_to_string(Tox_Err_Group_Invite_Accept value);
/**
- * Accept an invite to a group chat that the client previously received from a friend. The invite
- * is only valid while the inviter is present in the group.
+ * Accept an invite to a group chat that the client previously received from a
+ * friend. The invite is only valid while the inviter is present in the group.
*
* @param invite_data The invite data received from the `group_invite` event.
* @param length The length of the invite data.
* @param name The name of the peer joining the group.
- * @param name_length The length of the peer's name. This must be greater than zero and no larger
- * than TOX_MAX_NAME_LENGTH.
- * @param password The password required to join the group. Set to NULL if no password is required.
- * @param password_length The length of the password. If password_length is equal to zero, the password
- * parameter will be ignored. password_length must be no larger than TOX_GROUP_MAX_PASSWORD_SIZE.
+ * @param name_length The length of the peer's name. This must be greater than
+ * zero and no larger than TOX_MAX_NAME_LENGTH.
+ * @param password The password required to join the group. Set to NULL if no
+ * password is required.
+ * @param password_length The length of the password. If password_length is
+ * equal to zero, the password parameter will be ignored. password_length
+ * must be no larger than TOX_GROUP_MAX_PASSWORD_SIZE.
*
* @return the group_number on success, UINT32_MAX on failure.
*/
@@ -4932,26 +5036,30 @@ Tox_Group_Number tox_group_invite_accept(
/**
* @param friend_number The friend number of the contact who sent the invite.
* @param invite_data The invite data.
- * @param length The length of invite_data.
+ * @param invite_data_length The length of invite_data.
+ * @param group_name The name of the group. In conferences, this is "title".
+ * @param group_name_length The length of the group name.
*/
typedef void tox_group_invite_cb(
Tox *tox, Tox_Friend_Number friend_number,
- const uint8_t invite_data[], size_t length,
+ const uint8_t invite_data[], size_t invite_data_length,
const uint8_t group_name[], size_t group_name_length,
void *user_data);
/**
* Set the callback for the `group_invite` event. Pass NULL to unset.
*
- * This event is triggered when the client receives a group invite from a friend. The client must store
- * invite_data which is used to join the group via tox_group_invite_accept.
+ * This event is triggered when the client receives a group invite from a
+ * friend. The client must store invite_data which is used to join the group
+ * via tox_group_invite_accept.
*/
void tox_callback_group_invite(Tox *tox, tox_group_invite_cb *callback);
/**
- * @param group_number The group number of the group in which a new peer has joined.
- * @param peer_id The permanent ID of the new peer. This id should not be relied on for
- * client behaviour and should be treated as a random value.
+ * @param group_number The group number of the group in which a new peer has
+ * joined.
+ * @param peer_id The permanent ID of the new peer. This id should not be relied
+ * on for client behaviour and should be treated as a random value.
*/
typedef void tox_group_peer_join_cb(Tox *tox, Tox_Group_Number group_number, Tox_Group_Peer_Number peer_id, void *user_data);
@@ -4963,7 +5071,8 @@ typedef void tox_group_peer_join_cb(Tox *tox, Tox_Group_Number group_number, Tox
void tox_callback_group_peer_join(Tox *tox, tox_group_peer_join_cb *callback);
/**
- * Represents peer exit events. These should be used with the `group_peer_exit` event.
+ * Represents peer exit events. These should be used with the `group_peer_exit`
+ * event.
*/
typedef enum Tox_Group_Exit_Type {
@@ -4983,8 +5092,9 @@ typedef enum Tox_Group_Exit_Type {
TOX_GROUP_EXIT_TYPE_DISCONNECTED,
/**
- * Your connection with all peers has been severed. This will occur when you are kicked from
- * a group, rejoin a group, or manually disconnect from a group.
+ * Your connection with all peers has been severed. This will occur when you
+ * are kicked from a group, rejoin a group, or manually disconnect from a
+ * group.
*/
TOX_GROUP_EXIT_TYPE_SELF_DISCONNECTED,
@@ -5004,8 +5114,8 @@ const char *tox_group_exit_type_to_string(Tox_Group_Exit_Type value);
/**
* @param group_number The group number of the group in which a peer has left.
- * @param peer_id The ID of the peer who left the group. This ID no longer designates a valid peer
- * and cannot be used for API calls.
+ * @param peer_id The ID of the peer who left the group. This ID no longer
+ * designates a valid peer and cannot be used for API calls.
* @param exit_type The type of exit event. One of Tox_Group_Exit_Type.
* @param name The nickname of the peer who left the group.
* @param name_length The length of the peer name.
@@ -5032,14 +5142,14 @@ typedef void tox_group_self_join_cb(Tox *tox, Tox_Group_Number group_number, voi
/**
* Set the callback for the `group_self_join` event. Pass NULL to unset.
*
- * This event is triggered when the client has successfully joined a group. Use this to initialize
- * any group information the client may need.
+ * This event is triggered when the client has successfully joined a group. Use
+ * this to initialize any group information the client may need.
*/
void tox_callback_group_self_join(Tox *tox, tox_group_self_join_cb *callback);
/**
- * Represents types of failed group join attempts. These are used in the tox_callback_group_rejected
- * callback when a peer fails to join a group.
+ * Represents types of failed group join attempts. These are used in the
+ * tox_callback_group_rejected callback when a peer fails to join a group.
*/
typedef enum Tox_Group_Join_Fail {
@@ -5054,8 +5164,8 @@ typedef enum Tox_Group_Join_Fail {
TOX_GROUP_JOIN_FAIL_INVALID_PASSWORD,
/**
- * The join attempt failed due to an unspecified error. This often occurs when the group is
- * not found in the DHT.
+ * The join attempt failed due to an unspecified error. This often occurs
+ * when the group is not found in the DHT.
*/
TOX_GROUP_JOIN_FAIL_UNKNOWN,
@@ -5064,7 +5174,8 @@ typedef enum Tox_Group_Join_Fail {
const char *tox_group_join_fail_to_string(Tox_Group_Join_Fail value);
/**
- * @param group_number The group number of the group for which the join has failed.
+ * @param group_number The group number of the group for which the join has
+ * failed.
* @param fail_type The type of group rejection.
*/
typedef void tox_group_join_fail_cb(Tox *tox, Tox_Group_Number group_number, Tox_Group_Join_Fail fail_type, void *user_data);
@@ -5078,289 +5189,306 @@ void tox_callback_group_join_fail(Tox *tox, tox_group_join_fail_cb *callback);
/*******************************************************************************
*
- * :: Group chat founder controls (these only work for the group founder)
+ * :: Group chat Founder controls
*
******************************************************************************/
-typedef enum Tox_Err_Group_Founder_Set_Password {
+typedef enum Tox_Err_Group_Set_Password {
/**
* The function returned successfully.
*/
- TOX_ERR_GROUP_FOUNDER_SET_PASSWORD_OK,
+ TOX_ERR_GROUP_SET_PASSWORD_OK,
/**
* The group number passed did not designate a valid group.
*/
- TOX_ERR_GROUP_FOUNDER_SET_PASSWORD_GROUP_NOT_FOUND,
+ TOX_ERR_GROUP_SET_PASSWORD_GROUP_NOT_FOUND,
/**
* The caller does not have the required permissions to set the password.
*/
- TOX_ERR_GROUP_FOUNDER_SET_PASSWORD_PERMISSIONS,
+ TOX_ERR_GROUP_SET_PASSWORD_PERMISSIONS,
/**
* Password length exceeded TOX_GROUP_MAX_PASSWORD_SIZE.
*/
- TOX_ERR_GROUP_FOUNDER_SET_PASSWORD_TOO_LONG,
+ TOX_ERR_GROUP_SET_PASSWORD_TOO_LONG,
/**
* The packet failed to send.
*/
- TOX_ERR_GROUP_FOUNDER_SET_PASSWORD_FAIL_SEND,
+ TOX_ERR_GROUP_SET_PASSWORD_FAIL_SEND,
/**
* The function failed to allocate enough memory for the operation.
*/
- TOX_ERR_GROUP_FOUNDER_SET_PASSWORD_MALLOC,
+ TOX_ERR_GROUP_SET_PASSWORD_MALLOC,
/**
* The group is disconnected.
*/
- TOX_ERR_GROUP_FOUNDER_SET_PASSWORD_DISCONNECTED,
+ TOX_ERR_GROUP_SET_PASSWORD_DISCONNECTED,
-} Tox_Err_Group_Founder_Set_Password;
+} Tox_Err_Group_Set_Password;
-const char *tox_err_group_founder_set_password_to_string(Tox_Err_Group_Founder_Set_Password value);
+const char *tox_err_group_set_password_to_string(Tox_Err_Group_Set_Password value);
/**
* Set or unset the group password.
*
- * This function sets the groups password, creates a new group shared state including the change,
- * and distributes it to the rest of the group.
+ * This function allows Founders to set or unset a group password. It will
+ * create a new group shared state including the change and distribute it to the
+ * rest of the group.
*
- * @param group_number The group number of the group for which we wish to set the password.
- * @param password The password we want to set. Set password to NULL to unset the password.
- * @param length The length of the password. length must be no longer than TOX_GROUP_MAX_PASSWORD_SIZE.
+ * @param group_number The group number of the group for which we wish to set
+ * the password.
+ * @param password The password we want to set. Set password to NULL to unset
+ * the password.
+ * @param length The length of the password. length must be no longer than
+ * TOX_GROUP_MAX_PASSWORD_SIZE.
*
* @return true on success.
*/
-bool tox_group_founder_set_password(
+bool tox_group_set_password(
Tox *tox, Tox_Group_Number group_number,
const uint8_t password[], size_t length,
- Tox_Err_Group_Founder_Set_Password *error);
+ Tox_Err_Group_Set_Password *error);
-typedef enum Tox_Err_Group_Founder_Set_Topic_Lock {
+typedef enum Tox_Err_Group_Set_Topic_Lock {
/**
* The function returned successfully.
*/
- TOX_ERR_GROUP_FOUNDER_SET_TOPIC_LOCK_OK,
+ TOX_ERR_GROUP_SET_TOPIC_LOCK_OK,
/**
* The group number passed did not designate a valid group.
*/
- TOX_ERR_GROUP_FOUNDER_SET_TOPIC_LOCK_GROUP_NOT_FOUND,
+ TOX_ERR_GROUP_SET_TOPIC_LOCK_GROUP_NOT_FOUND,
/**
* Tox_Group_Topic_Lock is an invalid type.
*/
- TOX_ERR_GROUP_FOUNDER_SET_TOPIC_LOCK_INVALID,
+ TOX_ERR_GROUP_SET_TOPIC_LOCK_INVALID,
/**
* The caller does not have the required permissions to set the topic lock.
*/
- TOX_ERR_GROUP_FOUNDER_SET_TOPIC_LOCK_PERMISSIONS,
+ TOX_ERR_GROUP_SET_TOPIC_LOCK_PERMISSIONS,
/**
- * The topic lock could not be set. This may occur due to an error related to
- * cryptographic signing of the new shared state.
+ * The topic lock could not be set. This may occur due to an error related
+ * to cryptographic signing of the new shared state.
*/
- TOX_ERR_GROUP_FOUNDER_SET_TOPIC_LOCK_FAIL_SET,
+ TOX_ERR_GROUP_SET_TOPIC_LOCK_FAIL_SET,
/**
* The packet failed to send.
*/
- TOX_ERR_GROUP_FOUNDER_SET_TOPIC_LOCK_FAIL_SEND,
+ TOX_ERR_GROUP_SET_TOPIC_LOCK_FAIL_SEND,
/**
* The group is disconnected.
*/
- TOX_ERR_GROUP_FOUNDER_SET_TOPIC_LOCK_DISCONNECTED,
+ TOX_ERR_GROUP_SET_TOPIC_LOCK_DISCONNECTED,
-} Tox_Err_Group_Founder_Set_Topic_Lock;
+} Tox_Err_Group_Set_Topic_Lock;
-const char *tox_err_group_founder_set_topic_lock_to_string(Tox_Err_Group_Founder_Set_Topic_Lock value);
+const char *tox_err_group_set_topic_lock_to_string(Tox_Err_Group_Set_Topic_Lock value);
/**
* Set the group topic lock state.
*
- * This function sets the group's topic lock state to enabled or disabled, creates a new shared
- * state including the change, and distributes it to the rest of the group.
+ * This function allows Founders to enable or disable the group's topic lock. It
+ * will create a new shared state including the change and distribute it to the
+ * rest of the group.
*
- * When the topic lock is enabled, only the group founder and moderators may set the topic.
- * When disabled, all peers except those with the observer role may set the topic.
+ * When the topic lock is enabled, only the group founder and moderators may set
+ * the topic. When disabled, all peers except those with the observer role may
+ * set the topic.
*
- * @param group_number The group number of the group for which we wish to change the topic lock state.
+ * @param group_number The group number of the group for which we wish to change
+ * the topic lock state.
* @param topic_lock The state we wish to set the topic lock to.
*
* @return true on success.
*/
-bool tox_group_founder_set_topic_lock(Tox *tox, Tox_Group_Number group_number, Tox_Group_Topic_Lock topic_lock,
- Tox_Err_Group_Founder_Set_Topic_Lock *error);
+bool tox_group_set_topic_lock(Tox *tox, Tox_Group_Number group_number, Tox_Group_Topic_Lock topic_lock,
+ Tox_Err_Group_Set_Topic_Lock *error);
-typedef enum Tox_Err_Group_Founder_Set_Voice_State {
+typedef enum Tox_Err_Group_Set_Voice_State {
/**
* The function returned successfully.
*/
- TOX_ERR_GROUP_FOUNDER_SET_VOICE_STATE_OK,
+ TOX_ERR_GROUP_SET_VOICE_STATE_OK,
/**
* The group number passed did not designate a valid group.
*/
- TOX_ERR_GROUP_FOUNDER_SET_VOICE_STATE_GROUP_NOT_FOUND,
+ TOX_ERR_GROUP_SET_VOICE_STATE_GROUP_NOT_FOUND,
/**
- * The caller does not have the required permissions to set the privacy state.
+ * The caller does not have the required permissions to set the privacy
+ * state.
*/
- TOX_ERR_GROUP_FOUNDER_SET_VOICE_STATE_PERMISSIONS,
+ TOX_ERR_GROUP_SET_VOICE_STATE_PERMISSIONS,
/**
- * The voice state could not be set. This may occur due to an error related to
- * cryptographic signing of the new shared state.
+ * The voice state could not be set. This may occur due to an error related
+ * to cryptographic signing of the new shared state.
*/
- TOX_ERR_GROUP_FOUNDER_SET_VOICE_STATE_FAIL_SET,
+ TOX_ERR_GROUP_SET_VOICE_STATE_FAIL_SET,
/**
* The packet failed to send.
*/
- TOX_ERR_GROUP_FOUNDER_SET_VOICE_STATE_FAIL_SEND,
+ TOX_ERR_GROUP_SET_VOICE_STATE_FAIL_SEND,
/**
* The group is disconnected.
*/
- TOX_ERR_GROUP_FOUNDER_SET_VOICE_STATE_DISCONNECTED,
+ TOX_ERR_GROUP_SET_VOICE_STATE_DISCONNECTED,
-} Tox_Err_Group_Founder_Set_Voice_State;
+} Tox_Err_Group_Set_Voice_State;
-const char *tox_err_group_founder_set_voice_state_to_string(Tox_Err_Group_Founder_Set_Voice_State value);
+const char *tox_err_group_set_voice_state_to_string(Tox_Err_Group_Set_Voice_State value);
/**
* Set the group voice state.
*
- * This function sets the group's voice state, creates a new group shared state
- * including the change, and distributes it to the rest of the group.
+ * This function allows Founders to set the group's voice state. It will create
+ * a new group shared state including the change and distribute it to the rest
+ * of the group.
*
- * If an attempt is made to set the voice state to the same state that the group is already
- * in, the function call will be successful and no action will be taken.
+ * If an attempt is made to set the voice state to the same state that the group
+ * is already in, the function call will be successful and no action will be
+ * taken.
*
- * @param group_number The group number of the group for which we wish to change the voice state.
+ * @param group_number The group number of the group for which we wish to change
+ * the voice state.
* @param voice_state The voice state we wish to set the group to.
*
* @return true on success.
*/
-bool tox_group_founder_set_voice_state(Tox *tox, Tox_Group_Number group_number, Tox_Group_Voice_State voice_state,
- Tox_Err_Group_Founder_Set_Voice_State *error);
+bool tox_group_set_voice_state(Tox *tox, Tox_Group_Number group_number, Tox_Group_Voice_State voice_state,
+ Tox_Err_Group_Set_Voice_State *error);
-typedef enum Tox_Err_Group_Founder_Set_Privacy_State {
+typedef enum Tox_Err_Group_Set_Privacy_State {
/**
* The function returned successfully.
*/
- TOX_ERR_GROUP_FOUNDER_SET_PRIVACY_STATE_OK,
+ TOX_ERR_GROUP_SET_PRIVACY_STATE_OK,
/**
* The group number passed did not designate a valid group.
*/
- TOX_ERR_GROUP_FOUNDER_SET_PRIVACY_STATE_GROUP_NOT_FOUND,
+ TOX_ERR_GROUP_SET_PRIVACY_STATE_GROUP_NOT_FOUND,
/**
- * The caller does not have the required permissions to set the privacy state.
+ * The caller does not have the required permissions to set the privacy
+ * state.
*/
- TOX_ERR_GROUP_FOUNDER_SET_PRIVACY_STATE_PERMISSIONS,
+ TOX_ERR_GROUP_SET_PRIVACY_STATE_PERMISSIONS,
/**
- * The privacy state could not be set. This may occur due to an error related to
- * cryptographic signing of the new shared state.
+ * The privacy state could not be set. This may occur due to an error
+ * related to cryptographic signing of the new shared state.
*/
- TOX_ERR_GROUP_FOUNDER_SET_PRIVACY_STATE_FAIL_SET,
+ TOX_ERR_GROUP_SET_PRIVACY_STATE_FAIL_SET,
/**
* The packet failed to send.
*/
- TOX_ERR_GROUP_FOUNDER_SET_PRIVACY_STATE_FAIL_SEND,
+ TOX_ERR_GROUP_SET_PRIVACY_STATE_FAIL_SEND,
/**
* The group is disconnected.
*/
- TOX_ERR_GROUP_FOUNDER_SET_PRIVACY_STATE_DISCONNECTED,
+ TOX_ERR_GROUP_SET_PRIVACY_STATE_DISCONNECTED,
-} Tox_Err_Group_Founder_Set_Privacy_State;
+} Tox_Err_Group_Set_Privacy_State;
-const char *tox_err_group_founder_set_privacy_state_to_string(Tox_Err_Group_Founder_Set_Privacy_State value);
+const char *tox_err_group_set_privacy_state_to_string(Tox_Err_Group_Set_Privacy_State value);
/**
* Set the group privacy state.
*
- * This function sets the group's privacy state, creates a new group shared state
- * including the change, and distributes it to the rest of the group.
+ * This function allows Founders to set the group's privacy state. It will
+ * create a new group shared state including the change and distribute it to the
+ * rest of the group.
*
- * If an attempt is made to set the privacy state to the same state that the group is already
- * in, the function call will be successful and no action will be taken.
+ * If an attempt is made to set the privacy state to the same state that the
+ * group is already in, the function call will be successful and no action will
+ * be taken.
*
- * @param group_number The group number of the group for which we wish to change the privacy state.
+ * @param group_number The group number of the group for which we wish to change
+ * the privacy state.
* @param privacy_state The privacy state we wish to set the group to.
*
* @return true on success.
*/
-bool tox_group_founder_set_privacy_state(Tox *tox, Tox_Group_Number group_number, Tox_Group_Privacy_State privacy_state,
- Tox_Err_Group_Founder_Set_Privacy_State *error);
+bool tox_group_set_privacy_state(Tox *tox, Tox_Group_Number group_number, Tox_Group_Privacy_State privacy_state,
+ Tox_Err_Group_Set_Privacy_State *error);
-typedef enum Tox_Err_Group_Founder_Set_Peer_Limit {
+typedef enum Tox_Err_Group_Set_Peer_Limit {
/**
* The function returned successfully.
*/
- TOX_ERR_GROUP_FOUNDER_SET_PEER_LIMIT_OK,
+ TOX_ERR_GROUP_SET_PEER_LIMIT_OK,
/**
* The group number passed did not designate a valid group.
*/
- TOX_ERR_GROUP_FOUNDER_SET_PEER_LIMIT_GROUP_NOT_FOUND,
+ TOX_ERR_GROUP_SET_PEER_LIMIT_GROUP_NOT_FOUND,
/**
* The caller does not have the required permissions to set the peer limit.
*/
- TOX_ERR_GROUP_FOUNDER_SET_PEER_LIMIT_PERMISSIONS,
+ TOX_ERR_GROUP_SET_PEER_LIMIT_PERMISSIONS,
/**
- * The peer limit could not be set. This may occur due to an error related to
- * cryptographic signing of the new shared state.
+ * The peer limit could not be set. This may occur due to an error related
+ * to cryptographic signing of the new shared state.
*/
- TOX_ERR_GROUP_FOUNDER_SET_PEER_LIMIT_FAIL_SET,
+ TOX_ERR_GROUP_SET_PEER_LIMIT_FAIL_SET,
/**
* The packet failed to send.
*/
- TOX_ERR_GROUP_FOUNDER_SET_PEER_LIMIT_FAIL_SEND,
+ TOX_ERR_GROUP_SET_PEER_LIMIT_FAIL_SEND,
/**
* The group is disconnected.
*/
- TOX_ERR_GROUP_FOUNDER_SET_PEER_LIMIT_DISCONNECTED,
+ TOX_ERR_GROUP_SET_PEER_LIMIT_DISCONNECTED,
-} Tox_Err_Group_Founder_Set_Peer_Limit;
+} Tox_Err_Group_Set_Peer_Limit;
-const char *tox_err_group_founder_set_peer_limit_to_string(Tox_Err_Group_Founder_Set_Peer_Limit value);
+const char *tox_err_group_set_peer_limit_to_string(Tox_Err_Group_Set_Peer_Limit value);
/**
* Set the group peer limit.
*
- * This function sets a limit for the number of peers who may be in the group, creates a new
- * group shared state including the change, and distributes it to the rest of the group.
+ * This function allows Founders to set a limit for the number of peers who may
+ * be in the group. It will create a new group shared state including the change
+ * and distribute it to the rest of the group.
*
- * @param group_number The group number of the group for which we wish to set the peer limit.
+ * @param group_number The group number of the group for which we wish to set
+ * the peer limit.
* @param peer_limit The maximum number of peers to allow in the group.
*
* @return true on success.
*/
-bool tox_group_founder_set_peer_limit(Tox *tox, Tox_Group_Number group_number, uint16_t peer_limit,
- Tox_Err_Group_Founder_Set_Peer_Limit *error);
+bool tox_group_set_peer_limit(Tox *tox, Tox_Group_Number group_number, uint16_t peer_limit,
+ Tox_Err_Group_Set_Peer_Limit *error);
/*******************************************************************************
*
- * :: Group chat moderation
+ * :: Group chat moderation controls
*
******************************************************************************/
@@ -5393,7 +5521,8 @@ const char *tox_err_group_set_ignore_to_string(Tox_Err_Group_Set_Ignore value);
/**
* Ignore or unignore a peer.
*
- * @param group_number The group number of the group in which you wish to ignore a peer.
+ * @param group_number The group number of the group in which you wish to ignore
+ * a peer.
* @param peer_id The ID of the peer who shall be ignored or unignored.
* @param ignore True to ignore the peer, false to unignore the peer.
*
@@ -5402,123 +5531,134 @@ const char *tox_err_group_set_ignore_to_string(Tox_Err_Group_Set_Ignore value);
bool tox_group_set_ignore(Tox *tox, Tox_Group_Number group_number, Tox_Group_Peer_Number peer_id, bool ignore,
Tox_Err_Group_Set_Ignore *error);
-typedef enum Tox_Err_Group_Mod_Set_Role {
+typedef enum Tox_Err_Group_Set_Role {
/**
* The function returned successfully.
*/
- TOX_ERR_GROUP_MOD_SET_ROLE_OK,
+ TOX_ERR_GROUP_SET_ROLE_OK,
/**
* The group number passed did not designate a valid group.
*/
- TOX_ERR_GROUP_MOD_SET_ROLE_GROUP_NOT_FOUND,
+ TOX_ERR_GROUP_SET_ROLE_GROUP_NOT_FOUND,
/**
- * The ID passed did not designate a valid peer. Note: you cannot set your own role.
+ * The ID passed did not designate a valid peer. Note: you cannot set your
+ * own role.
*/
- TOX_ERR_GROUP_MOD_SET_ROLE_PEER_NOT_FOUND,
+ TOX_ERR_GROUP_SET_ROLE_PEER_NOT_FOUND,
/**
* The caller does not have the required permissions for this action.
*/
- TOX_ERR_GROUP_MOD_SET_ROLE_PERMISSIONS,
+ TOX_ERR_GROUP_SET_ROLE_PERMISSIONS,
/**
- * The role assignment is invalid. This will occur if you try to set a peer's role to
- * the role they already have.
+ * The role assignment is invalid. This will occur if you try to set a
+ * peer's role to the role they already have.
*/
- TOX_ERR_GROUP_MOD_SET_ROLE_ASSIGNMENT,
+ TOX_ERR_GROUP_SET_ROLE_ASSIGNMENT,
/**
- * The role was not successfully set. This may occur if the packet failed to send, or
- * if the role limit has been reached.
+ * The role was not successfully set. This may occur if the packet failed to
+ * send, or if the role limit has been reached.
*/
- TOX_ERR_GROUP_MOD_SET_ROLE_FAIL_ACTION,
+ TOX_ERR_GROUP_SET_ROLE_FAIL_ACTION,
/**
* The caller attempted to set their own role.
*/
- TOX_ERR_GROUP_MOD_SET_ROLE_SELF,
+ TOX_ERR_GROUP_SET_ROLE_SELF,
-} Tox_Err_Group_Mod_Set_Role;
+} Tox_Err_Group_Set_Role;
-const char *tox_err_group_mod_set_role_to_string(Tox_Err_Group_Mod_Set_Role value);
+const char *tox_err_group_set_role_to_string(Tox_Err_Group_Set_Role value);
/**
* Set a peer's role.
*
- * This function will first remove the peer's previous role and then assign them a new role.
- * It will also send a packet to the rest of the group, requesting that they perform
- * the role reassignment. Note: peers cannot be set to the founder role.
+ * This function will first remove the peer's previous role and then assign them
+ * a new role. It will also send a packet to the rest of the group, requesting
+ * that they perform the role reassignment.
*
- * @param group_number The group number of the group the in which you wish set the peer's role.
+ * Only Founders may promote peers to the Moderator role, and only Founders and
+ * Moderators may set peers to the Observer or User role. Moderators may not set
+ * the role of other Moderators or the Founder. Peers may not be promoted to the
+ * Founder role.
+ *
+ * @param group_number The group number of the group the in which you wish set
+ * the peer's role.
* @param peer_id The ID of the peer whose role you wish to set.
* @param role The role you wish to set the peer to.
*
* @return true on success.
*/
-bool tox_group_mod_set_role(Tox *tox, Tox_Group_Number group_number, Tox_Group_Peer_Number peer_id, Tox_Group_Role role,
- Tox_Err_Group_Mod_Set_Role *error);
+bool tox_group_set_role(Tox *tox, Tox_Group_Number group_number, Tox_Group_Peer_Number peer_id, Tox_Group_Role role,
+ Tox_Err_Group_Set_Role *error);
-typedef enum Tox_Err_Group_Mod_Kick_Peer {
+typedef enum Tox_Err_Group_Kick_Peer {
/**
* The function returned successfully.
*/
- TOX_ERR_GROUP_MOD_KICK_PEER_OK,
+ TOX_ERR_GROUP_KICK_PEER_OK,
/**
* The group number passed did not designate a valid group.
*/
- TOX_ERR_GROUP_MOD_KICK_PEER_GROUP_NOT_FOUND,
+ TOX_ERR_GROUP_KICK_PEER_GROUP_NOT_FOUND,
/**
* The ID passed did not designate a valid peer.
*/
- TOX_ERR_GROUP_MOD_KICK_PEER_PEER_NOT_FOUND,
+ TOX_ERR_GROUP_KICK_PEER_PEER_NOT_FOUND,
/**
* The caller does not have the required permissions for this action.
*/
- TOX_ERR_GROUP_MOD_KICK_PEER_PERMISSIONS,
+ TOX_ERR_GROUP_KICK_PEER_PERMISSIONS,
/**
* The peer could not be kicked from the group.
*/
- TOX_ERR_GROUP_MOD_KICK_PEER_FAIL_ACTION,
+ TOX_ERR_GROUP_KICK_PEER_FAIL_ACTION,
/**
* The packet failed to send.
*/
- TOX_ERR_GROUP_MOD_KICK_PEER_FAIL_SEND,
+ TOX_ERR_GROUP_KICK_PEER_FAIL_SEND,
/**
* The caller attempted to set their own role.
*/
- TOX_ERR_GROUP_MOD_KICK_PEER_SELF,
+ TOX_ERR_GROUP_KICK_PEER_SELF,
-} Tox_Err_Group_Mod_Kick_Peer;
+} Tox_Err_Group_Kick_Peer;
-const char *tox_err_group_mod_kick_peer_to_string(Tox_Err_Group_Mod_Kick_Peer value);
+const char *tox_err_group_kick_peer_to_string(Tox_Err_Group_Kick_Peer value);
/**
* Kick a peer.
*
- * This function will remove a peer from the caller's peer list and send a packet to all
- * group members requesting them to do the same. Note: This function will not trigger
- * the `group_peer_exit` event for the caller.
+ * This function allows peers with the Founder or Moderator role to silently
+ * instruct all other peers in the group to remove a particular peer from their
+ * peer list.
+ *
+ * Note: This function will not trigger the `group_peer_exit` event for the
+ * caller.
*
* @param group_number The group number of the group the action is intended for.
* @param peer_id The ID of the peer who will be kicked.
*
* @return true on success.
*/
-bool tox_group_mod_kick_peer(const Tox *tox, Tox_Group_Number group_number, Tox_Group_Peer_Number peer_id,
- Tox_Err_Group_Mod_Kick_Peer *error);
+bool tox_group_kick_peer(const Tox *tox, Tox_Group_Number group_number, Tox_Group_Peer_Number peer_id,
+ Tox_Err_Group_Kick_Peer *error);
/**
- * Represents moderation events. These should be used with the `group_moderation` event.
+ * Represents moderation events. These should be used with the
+ * `group_moderation` event.
*/
typedef enum Tox_Group_Mod_Event {
@@ -5559,12 +5699,13 @@ typedef void tox_group_moderation_cb(
/**
* Set the callback for the `group_moderation` event. Pass NULL to unset.
*
- * This event is triggered when a moderator or founder executes a moderation event, with
- * the exception of the peer who initiates the event. It is also triggered when the
- * observer and moderator lists are silently modified (this may occur during group syncing).
+ * This event is triggered when a moderator or founder executes a moderation
+ * event, with the exception of the peer who initiates the event. It is also
+ * triggered when the observer and moderator lists are silently modified (this
+ * may occur during group syncing).
*
- * If either peer id does not designate a valid peer in the group chat, the client should
- * manually update all peer roles.
+ * If either peer id does not designate a valid peer in the group chat, the
+ * client should manually update all peer roles.
*/
void tox_callback_group_moderation(Tox *tox, tox_group_moderation_cb *callback);