2010-07-27 02:05:41 -07:00
|
|
|
#ifndef EINA_USTRBUF_H
|
|
|
|
#define EINA_USTRBUF_H
|
|
|
|
|
|
|
|
#include <stddef.h>
|
|
|
|
|
|
|
|
#include "eina_types.h"
|
|
|
|
#include "eina_unicode.h"
|
|
|
|
|
2011-04-07 06:17:25 -07:00
|
|
|
/**
|
|
|
|
* @addtogroup Eina_Unicode_String_Buffer_Group Unicode String Buffer
|
|
|
|
*
|
2018-07-09 18:55:10 -07:00
|
|
|
* @brief These functions provide unicode string buffer management.
|
2011-04-07 06:17:25 -07:00
|
|
|
*
|
2018-07-09 18:55:10 -07:00
|
|
|
* The Unicode String Buffer data type is designed to be a mutable
|
|
|
|
* string, allowing the appending, prepending or insertion of a string
|
|
|
|
* to a buffer.
|
2011-04-07 06:17:25 -07:00
|
|
|
*/
|
|
|
|
|
2010-07-27 02:05:41 -07:00
|
|
|
/**
|
|
|
|
* @addtogroup Eina_Data_Types_Group Data Types
|
|
|
|
*
|
|
|
|
* @{
|
|
|
|
*/
|
2010-08-16 23:58:26 -07:00
|
|
|
|
2010-07-27 02:05:41 -07:00
|
|
|
/**
|
2010-08-16 23:58:26 -07:00
|
|
|
* @defgroup Eina_Unicode_String_Buffer_Group Unicode String Buffer
|
2010-07-27 02:05:41 -07:00
|
|
|
*
|
|
|
|
* @{
|
|
|
|
*/
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @typedef Eina_UStrbuf
|
2018-07-09 18:55:10 -07:00
|
|
|
* Type for a unicode string buffer.
|
2010-07-27 02:05:41 -07:00
|
|
|
*/
|
|
|
|
typedef struct _Eina_Strbuf Eina_UStrbuf;
|
|
|
|
|
|
|
|
/**
|
2018-07-09 18:55:10 -07:00
|
|
|
* @brief Creates a new unicode string buffer.
|
2010-07-27 02:05:41 -07:00
|
|
|
*
|
2018-07-09 18:55:10 -07:00
|
|
|
* @return Newly allocated string buffer instance, or @c NULL on error.
|
2010-07-27 02:05:41 -07:00
|
|
|
*
|
2018-07-09 18:55:10 -07:00
|
|
|
* This function creates a new string buffer. To free the resources, use
|
|
|
|
* eina_ustrbuf_free().
|
2010-07-27 02:05:41 -07:00
|
|
|
*
|
|
|
|
* @see eina_ustrbuf_free()
|
|
|
|
* @see eina_ustrbuf_append()
|
|
|
|
* @see eina_ustrbuf_string_get()
|
|
|
|
*/
|
|
|
|
EAPI Eina_UStrbuf *eina_ustrbuf_new(void) EINA_MALLOC EINA_WARN_UNUSED_RESULT;
|
|
|
|
|
2011-09-06 03:58:53 -07:00
|
|
|
/**
|
2018-07-09 18:55:10 -07:00
|
|
|
* @brief Creates a new string buffer using the passed string.
|
2011-09-06 03:58:53 -07:00
|
|
|
*
|
2018-07-13 02:23:27 -07:00
|
|
|
* @param[in] str The string to manage.
|
2018-07-09 18:55:10 -07:00
|
|
|
* @return Newly allocated string buffer instance, or @c NULL on error.
|
2011-09-06 03:58:53 -07:00
|
|
|
*
|
2018-07-09 18:55:10 -07:00
|
|
|
* This function creates a new unicode string buffer. The passed string
|
|
|
|
* is used directly as the buffer, it's effectively the inverse of
|
|
|
|
* eina_ustrbuf_string_steal(). The passed string must be malloc'd.
|
|
|
|
* To free the resources, use eina_ustrbuf_free().
|
2011-09-06 03:58:53 -07:00
|
|
|
*
|
|
|
|
* @see eina_ustrbuf_free()
|
|
|
|
* @see eina_ustrbuf_append()
|
|
|
|
* @see eina_ustrbuf_string_get()
|
2018-07-09 18:55:10 -07:00
|
|
|
*
|
2011-09-06 03:58:53 -07:00
|
|
|
* @since 1.1.0
|
|
|
|
*/
|
2011-12-08 05:10:57 -08:00
|
|
|
EAPI Eina_UStrbuf *eina_ustrbuf_manage_new(Eina_Unicode *str) EINA_MALLOC EINA_WARN_UNUSED_RESULT;
|
|
|
|
|
|
|
|
/**
|
2018-07-09 18:55:10 -07:00
|
|
|
* @brief Creates a new string buffer using the passed string.
|
2011-12-08 05:10:57 -08:00
|
|
|
*
|
2018-07-13 02:23:27 -07:00
|
|
|
* @param[in] str The string to manage.
|
|
|
|
* @param[in] length The length of the string.
|
2018-07-09 18:55:10 -07:00
|
|
|
* @return Newly allocated string buffer instance, or @c NULL on error.
|
2011-12-08 05:10:57 -08:00
|
|
|
*
|
2018-07-09 18:55:10 -07:00
|
|
|
* This function creates a new string buffer. The passed string is used
|
|
|
|
* directly as the buffer, it's effectively the inverse of
|
|
|
|
* eina_ustrbuf_string_steal(). The passed string must be malloc'd. To
|
|
|
|
* free the resources, use eina_ustrbuf_free().
|
2011-12-08 05:10:57 -08:00
|
|
|
*
|
|
|
|
* @see eina_ustrbuf_manage_new()
|
2018-07-09 18:55:10 -07:00
|
|
|
*
|
2011-12-08 05:10:57 -08:00
|
|
|
* @since 1.2.0
|
|
|
|
*/
|
|
|
|
EAPI Eina_UStrbuf *eina_ustrbuf_manage_new_length(Eina_Unicode *str, size_t length) EINA_MALLOC EINA_WARN_UNUSED_RESULT;
|
2011-09-06 03:58:53 -07:00
|
|
|
|
2010-07-27 02:05:41 -07:00
|
|
|
/**
|
2017-02-19 22:18:21 -08:00
|
|
|
* @brief Frees a string buffer.
|
2010-07-27 02:05:41 -07:00
|
|
|
*
|
2018-07-13 02:23:27 -07:00
|
|
|
* @param[in,out] buf The string buffer to free.
|
2010-07-27 02:05:41 -07:00
|
|
|
*
|
|
|
|
* This function frees the memory of @p buf. @p buf must have been
|
|
|
|
* created by eina_ustrbuf_new().
|
|
|
|
*/
|
2010-10-22 23:41:45 -07:00
|
|
|
EAPI void eina_ustrbuf_free(Eina_UStrbuf *buf) EINA_ARG_NONNULL(1);
|
2010-08-16 23:58:26 -07:00
|
|
|
|
2010-07-27 02:05:41 -07:00
|
|
|
/**
|
2017-02-19 22:18:21 -08:00
|
|
|
* @brief Resets a string buffer.
|
2010-07-27 02:05:41 -07:00
|
|
|
*
|
2018-07-13 02:23:27 -07:00
|
|
|
* @param[in,out] buf The string buffer.
|
2010-07-27 02:05:41 -07:00
|
|
|
*
|
2018-07-09 18:55:10 -07:00
|
|
|
* This function resets @p buf: the buffer len is set to 0, and the
|
|
|
|
* string data is set to '\\0'. No memory is freed.
|
2010-07-27 02:05:41 -07:00
|
|
|
*/
|
2010-10-22 23:41:45 -07:00
|
|
|
EAPI void eina_ustrbuf_reset(Eina_UStrbuf *buf) EINA_ARG_NONNULL(1);
|
2010-07-27 02:05:41 -07:00
|
|
|
|
|
|
|
/**
|
2017-02-19 22:18:21 -08:00
|
|
|
* @brief Appends a string to a buffer, reallocating as necessary.
|
2010-07-27 02:05:41 -07:00
|
|
|
*
|
2018-07-13 02:23:27 -07:00
|
|
|
* @param[in,out] buf The string buffer.
|
|
|
|
* @param[in] str The string to append.
|
2018-07-09 18:55:10 -07:00
|
|
|
* @return #EINA_TRUE on success, #EINA_FALSE on failure such as if
|
|
|
|
* @p str could not be appended.
|
2010-07-27 02:05:41 -07:00
|
|
|
*
|
|
|
|
* This function appends @p str to @p buf. It computes the length of
|
|
|
|
* @p str, so is slightly slower than eina_ustrbuf_append_length(). If
|
2018-07-09 18:55:10 -07:00
|
|
|
* the length is known beforehand, consider using that variant.
|
2010-07-27 02:05:41 -07:00
|
|
|
*
|
|
|
|
* @see eina_ustrbuf_append()
|
|
|
|
* @see eina_ustrbuf_append_length()
|
|
|
|
*/
|
2010-10-22 23:41:45 -07:00
|
|
|
EAPI Eina_Bool eina_ustrbuf_append(Eina_UStrbuf *buf, const Eina_Unicode *str) EINA_ARG_NONNULL(1, 2);
|
2010-08-16 23:58:26 -07:00
|
|
|
|
2010-07-27 02:05:41 -07:00
|
|
|
/**
|
2017-02-19 22:18:21 -08:00
|
|
|
* @brief Appends an escaped string to a buffer, reallocating as necessary.
|
2010-07-27 02:05:41 -07:00
|
|
|
*
|
2018-07-13 02:23:27 -07:00
|
|
|
* @param[in,out] buf The string buffer.
|
|
|
|
* @param[in] str The string to append.
|
2018-07-09 18:55:10 -07:00
|
|
|
* @return #EINA_TRUE on success, #EINA_FALSE if @p str could not be appended.
|
2010-07-27 02:05:41 -07:00
|
|
|
*
|
2018-07-09 18:55:10 -07:00
|
|
|
* This function appends the escaped string @p str to @p buf.
|
2010-07-27 02:05:41 -07:00
|
|
|
*/
|
2010-10-22 23:41:45 -07:00
|
|
|
EAPI Eina_Bool eina_ustrbuf_append_escaped(Eina_UStrbuf *buf, const Eina_Unicode *str) EINA_ARG_NONNULL(1, 2);
|
2010-08-16 23:58:26 -07:00
|
|
|
|
2010-07-27 02:05:41 -07:00
|
|
|
/**
|
2017-02-19 22:18:21 -08:00
|
|
|
* @brief Appends a string to a buffer, reallocating as necessary,
|
2010-07-27 02:05:41 -07:00
|
|
|
* limited by the given length.
|
|
|
|
*
|
2018-07-13 02:23:27 -07:00
|
|
|
* @param[in,out] buf The string buffer.
|
|
|
|
* @param[in] str The string to append.
|
|
|
|
* @param[in] maxlen The maximum number of characters to append.
|
2018-07-09 18:55:10 -07:00
|
|
|
* @return #EINA_TRUE on success, #EINA_FALSE if @p str could not be appended.
|
2010-07-27 02:05:41 -07:00
|
|
|
*
|
|
|
|
* This function appends at most @p maxlen characters of @p str to
|
2017-11-12 19:04:59 -08:00
|
|
|
* @p buf. It can't append more than the length of @p str. It
|
2010-07-27 02:05:41 -07:00
|
|
|
* computes the length of @p str, so is slightly slower than
|
|
|
|
* eina_ustrbuf_append_length(). If the length is known beforehand,
|
|
|
|
* consider using that variant (@p maxlen should then be checked so
|
2018-07-09 18:55:10 -07:00
|
|
|
* that it is greater than the size of @p str).
|
2010-07-27 02:05:41 -07:00
|
|
|
*
|
|
|
|
* @see eina_ustrbuf_append()
|
|
|
|
* @see eina_ustrbuf_append_length()
|
|
|
|
*/
|
2010-10-22 23:41:45 -07:00
|
|
|
EAPI Eina_Bool eina_ustrbuf_append_n(Eina_UStrbuf *buf, const Eina_Unicode *str, size_t maxlen) EINA_ARG_NONNULL(1, 2);
|
2010-08-16 23:58:26 -07:00
|
|
|
|
2010-07-27 02:05:41 -07:00
|
|
|
/**
|
2018-07-09 18:55:10 -07:00
|
|
|
* @brief Appends a string of exact length to a buffer, reallocating as
|
|
|
|
* necessary.
|
2010-07-27 02:05:41 -07:00
|
|
|
*
|
2018-07-13 02:23:27 -07:00
|
|
|
* @param[in,out] buf The string buffer.
|
|
|
|
* @param[in] str The string to append.
|
|
|
|
* @param[in] length The exact length to use.
|
2018-07-09 18:55:10 -07:00
|
|
|
* @return #EINA_TRUE on success, #EINA_FALSE if @p str could not be appended.
|
2010-07-27 02:05:41 -07:00
|
|
|
*
|
|
|
|
* This function appends @p str to @p buf. @p str must be of size at
|
|
|
|
* most @p length. It is slightly faster than eina_ustrbuf_append() as
|
|
|
|
* it does not compute the size of @p str. It is useful when dealing
|
2018-07-12 00:27:15 -07:00
|
|
|
* with strings of known size, such as eina_stringshare.
|
2010-07-27 02:05:41 -07:00
|
|
|
*
|
|
|
|
* @see eina_stringshare_length()
|
|
|
|
* @see eina_ustrbuf_append()
|
|
|
|
* @see eina_ustrbuf_append_n()
|
|
|
|
*/
|
2010-10-22 23:41:45 -07:00
|
|
|
EAPI Eina_Bool eina_ustrbuf_append_length(Eina_UStrbuf *buf, const Eina_Unicode *str, size_t length) EINA_ARG_NONNULL(1, 2);
|
2010-07-27 02:05:41 -07:00
|
|
|
|
2016-08-12 14:55:37 -07:00
|
|
|
/**
|
2017-02-19 22:18:21 -08:00
|
|
|
* @brief Appends a slice to a buffer, reallocating as necessary.
|
2016-08-12 14:55:37 -07:00
|
|
|
*
|
2018-07-13 02:23:27 -07:00
|
|
|
* @param[in,out] buf The string buffer.
|
|
|
|
* @param[in] slice The slice to append.
|
2018-07-09 18:55:10 -07:00
|
|
|
* @return #EINA_TRUE on success, #EINA_FALSE if @p slice could not be appended.
|
2016-08-12 14:55:37 -07:00
|
|
|
*
|
2018-07-09 18:55:10 -07:00
|
|
|
* This function appends @p slice to @p buf.
|
2017-02-15 02:13:36 -08:00
|
|
|
*
|
|
|
|
* @since 1.19.0
|
2016-08-12 14:55:37 -07:00
|
|
|
*/
|
|
|
|
EAPI Eina_Bool eina_ustrbuf_append_slice(Eina_UStrbuf *buf, const Eina_Slice slice) EINA_ARG_NONNULL(1);
|
|
|
|
|
2010-07-27 02:05:41 -07:00
|
|
|
/**
|
2017-02-19 22:18:21 -08:00
|
|
|
* @brief Appends a character to a string buffer, reallocating as
|
2010-07-27 02:05:41 -07:00
|
|
|
* necessary.
|
|
|
|
*
|
2018-07-13 02:23:27 -07:00
|
|
|
* @param[in,out] buf The string buffer.
|
|
|
|
* @param[in] c The char to append.
|
2018-07-09 18:55:10 -07:00
|
|
|
* @return #EINA_TRUE on success, #EINA_FALSE if @p c could not be appended.
|
2010-07-27 02:05:41 -07:00
|
|
|
*
|
2018-07-09 18:55:10 -07:00
|
|
|
* This function appends @p c to @p buf.
|
2010-07-27 02:05:41 -07:00
|
|
|
*/
|
2010-10-22 23:41:45 -07:00
|
|
|
EAPI Eina_Bool eina_ustrbuf_append_char(Eina_UStrbuf *buf, Eina_Unicode c) EINA_ARG_NONNULL(1);
|
2010-07-27 02:05:41 -07:00
|
|
|
|
|
|
|
/**
|
2017-02-19 22:18:21 -08:00
|
|
|
* @brief Inserts a string to a buffer, reallocating as necessary.
|
2010-07-27 02:05:41 -07:00
|
|
|
*
|
2018-07-13 02:23:27 -07:00
|
|
|
* @param[in,out] buf The string buffer.
|
|
|
|
* @param[in] str The string to insert.
|
|
|
|
* @param[in] pos The position to insert the string.
|
2018-07-09 18:55:10 -07:00
|
|
|
* @return #EINA_TRUE on success, #EINA_FALSE if @p str could not be inserted.
|
2010-07-27 02:05:41 -07:00
|
|
|
*
|
|
|
|
* This function inserts @p str to @p buf at position @p pos. It
|
|
|
|
* computes the length of @p str, so is slightly slower than
|
|
|
|
* eina_ustrbuf_insert_length(). If the length is known beforehand,
|
2018-07-09 18:55:10 -07:00
|
|
|
* consider using that variant.
|
2010-07-27 02:05:41 -07:00
|
|
|
*/
|
2010-10-22 23:41:45 -07:00
|
|
|
EAPI Eina_Bool eina_ustrbuf_insert(Eina_UStrbuf *buf, const Eina_Unicode *str, size_t pos) EINA_ARG_NONNULL(1, 2);
|
2010-08-16 23:58:26 -07:00
|
|
|
|
2010-07-27 02:05:41 -07:00
|
|
|
/**
|
2017-02-19 22:18:21 -08:00
|
|
|
* @brief Inserts an escaped string to a buffer, reallocating as
|
2010-07-27 02:05:41 -07:00
|
|
|
* necessary.
|
|
|
|
*
|
2018-07-13 02:23:27 -07:00
|
|
|
* @param[in,out] buf The string buffer.
|
|
|
|
* @param[in] str The string to insert.
|
|
|
|
* @param[in] pos The position to insert the string.
|
2018-07-09 18:55:10 -07:00
|
|
|
* @return #EINA_TRUE on success, #EINA_FALSE if @p str could not be inserted.
|
2010-07-27 02:05:41 -07:00
|
|
|
*
|
|
|
|
* This function inserts the escaped string @p str to @p buf at
|
2018-07-09 18:55:10 -07:00
|
|
|
* position @p pos.
|
2010-07-27 02:05:41 -07:00
|
|
|
*/
|
2010-10-22 23:41:45 -07:00
|
|
|
EAPI Eina_Bool eina_ustrbuf_insert_escaped(Eina_UStrbuf *buf, const Eina_Unicode *str, size_t pos) EINA_ARG_NONNULL(1, 2);
|
2010-08-16 23:58:26 -07:00
|
|
|
|
2010-07-27 02:05:41 -07:00
|
|
|
/**
|
2017-02-19 22:18:21 -08:00
|
|
|
* @brief Inserts a string to a buffer, reallocating as necessary. Limited by maxlen.
|
2010-07-27 02:05:41 -07:00
|
|
|
*
|
2018-07-13 02:23:27 -07:00
|
|
|
* @param[in,out] buf The string buffer.
|
|
|
|
* @param[in] str The string to insert.
|
|
|
|
* @param[in] maxlen The maximum number of chars to insert.
|
|
|
|
* @param[in] pos The position to insert the string.
|
2018-07-09 18:55:10 -07:00
|
|
|
* @return #EINA_TRUE on success, #EINA_FALSE if @p str could not be inserted.
|
2010-07-27 02:05:41 -07:00
|
|
|
*
|
2018-07-09 18:55:10 -07:00
|
|
|
* This function inserts @p str into @p buf at position @p pos, with at
|
|
|
|
* most @p maxlen bytes. The number of inserted characters cannot be
|
2010-07-27 02:05:41 -07:00
|
|
|
* greater than the length of @p str. It computes the length of
|
|
|
|
* @p str, so is slightly slower than eina_ustrbuf_insert_length(). If the
|
|
|
|
* length is known beforehand, consider using that variant (@p maxlen
|
|
|
|
* should then be checked so that it is greater than the size of
|
2018-07-09 18:55:10 -07:00
|
|
|
* @p str).
|
2010-07-27 02:05:41 -07:00
|
|
|
*/
|
2010-10-22 23:41:45 -07:00
|
|
|
EAPI Eina_Bool eina_ustrbuf_insert_n(Eina_UStrbuf *buf, const Eina_Unicode *str, size_t maxlen, size_t pos) EINA_ARG_NONNULL(1, 2);
|
2010-08-16 23:58:26 -07:00
|
|
|
|
2010-07-27 02:05:41 -07:00
|
|
|
/**
|
2017-02-19 22:18:21 -08:00
|
|
|
* @brief Inserts a string of exact length to a buffer, reallocating as necessary.
|
2010-07-27 02:05:41 -07:00
|
|
|
*
|
2018-07-13 02:23:27 -07:00
|
|
|
* @param[in,out] buf The string buffer.
|
|
|
|
* @param[in] str The string to insert.
|
|
|
|
* @param[in] length The exact length to use.
|
|
|
|
* @param[in] pos The position to insert the string.
|
2018-07-09 18:55:10 -07:00
|
|
|
* @return #EINA_TRUE on success, #EINA_FALSE if @p str could not be inserted.
|
2010-07-27 02:05:41 -07:00
|
|
|
*
|
2018-07-09 18:55:10 -07:00
|
|
|
* This function inserts @p str into @p buf. @p str must be no longer
|
|
|
|
* than @p length. It is slightly faster than eina_ustrbuf_insert() as
|
2010-07-27 02:05:41 -07:00
|
|
|
* it does not compute the size of @p str. It is useful when dealing
|
2018-07-09 18:55:10 -07:00
|
|
|
* with strings of known size, such as eina_stringshare.
|
2010-07-27 02:05:41 -07:00
|
|
|
*
|
|
|
|
* @see eina_stringshare_length()
|
|
|
|
* @see eina_ustrbuf_insert()
|
|
|
|
* @see eina_ustrbuf_insert_n()
|
|
|
|
*/
|
2010-10-22 23:41:45 -07:00
|
|
|
EAPI Eina_Bool eina_ustrbuf_insert_length(Eina_UStrbuf *buf, const Eina_Unicode *str, size_t length, size_t pos) EINA_ARG_NONNULL(1, 2);
|
2010-08-16 23:58:26 -07:00
|
|
|
|
2016-08-12 14:55:37 -07:00
|
|
|
/**
|
2017-02-19 22:18:21 -08:00
|
|
|
* @brief Inserts a slice to a buffer, reallocating as necessary.
|
2016-08-12 14:55:37 -07:00
|
|
|
*
|
2018-07-13 02:23:27 -07:00
|
|
|
* @param[in,out] buf The string buffer.
|
|
|
|
* @param[in] slice The slice to insert.
|
|
|
|
* @param[in] pos The position to insert the string.
|
2018-07-09 18:55:10 -07:00
|
|
|
* @return #EINA_TRUE on success, #EINA_FALSE if @p slice could not be inserted.
|
2016-08-12 14:55:37 -07:00
|
|
|
*
|
2018-07-09 18:55:10 -07:00
|
|
|
* This function inserts @p slice to @p buf at position @p pos.
|
2017-02-15 02:13:36 -08:00
|
|
|
*
|
|
|
|
* @since 1.19.0
|
2016-08-12 14:55:37 -07:00
|
|
|
*/
|
|
|
|
EAPI Eina_Bool eina_ustrbuf_insert_slice(Eina_UStrbuf *buf, const Eina_Slice slice, size_t pos) EINA_ARG_NONNULL(1);
|
|
|
|
|
2010-07-27 02:05:41 -07:00
|
|
|
/**
|
2017-02-19 22:18:21 -08:00
|
|
|
* @brief Inserts a character to a string buffer, reallocating as
|
2010-07-27 02:05:41 -07:00
|
|
|
* necessary.
|
|
|
|
*
|
2018-07-13 02:23:27 -07:00
|
|
|
* @param[in,out] buf The string buffer.
|
|
|
|
* @param[in] c The char to insert.
|
|
|
|
* @param[in] pos The position to insert the char.
|
2018-07-09 18:55:10 -07:00
|
|
|
* @return #EINA_TRUE on success, #EINA_FALSE if @p c could not be inserted.
|
2010-07-27 02:05:41 -07:00
|
|
|
*
|
2018-07-09 18:55:10 -07:00
|
|
|
* This function inserts @p c to @p buf at position @p pos.
|
2010-07-27 02:05:41 -07:00
|
|
|
*/
|
2010-10-22 23:41:45 -07:00
|
|
|
EAPI Eina_Bool eina_ustrbuf_insert_char(Eina_UStrbuf *buf, Eina_Unicode c, size_t pos) EINA_ARG_NONNULL(1);
|
2010-07-27 02:05:41 -07:00
|
|
|
|
|
|
|
/**
|
|
|
|
* @def eina_ustrbuf_prepend(buf, str)
|
2018-07-09 18:55:10 -07:00
|
|
|
* @brief Prepends a string to the given buffer.
|
2010-07-27 02:05:41 -07:00
|
|
|
*
|
2018-07-13 02:23:27 -07:00
|
|
|
* @param[in,out] buf The string buffer.
|
|
|
|
* @param[in] str The string to prepend.
|
2018-07-09 18:55:10 -07:00
|
|
|
* @return #EINA_TRUE on success, #EINA_FALSE if @p str could not be prepended.
|
2010-07-27 02:05:41 -07:00
|
|
|
*
|
2018-07-09 18:55:10 -07:00
|
|
|
* This macro simply calls eina_ustrbuf_insert() with position 0.
|
2010-07-27 02:05:41 -07:00
|
|
|
*/
|
2018-07-09 18:55:10 -07:00
|
|
|
#define eina_ustrbuf_prepend(buf, str) eina_ustrbuf_insert(buf, str, 0)
|
2010-07-27 02:05:41 -07:00
|
|
|
|
|
|
|
/**
|
|
|
|
* @def eina_ustrbuf_prepend_escaped(buf, str)
|
2018-07-09 18:55:10 -07:00
|
|
|
* @brief Prepends an escaped string to the given buffer.
|
2010-07-27 02:05:41 -07:00
|
|
|
*
|
2018-07-13 02:23:27 -07:00
|
|
|
* @param[in,out] buf The string buffer.
|
|
|
|
* @param[in] str The string to prepend.
|
2018-07-09 18:55:10 -07:00
|
|
|
* @return #EINA_TRUE on success, #EINA_FALSE if @p str could not be prepended.
|
2010-07-27 02:05:41 -07:00
|
|
|
*
|
2018-07-09 18:55:10 -07:00
|
|
|
* This macro simply calls eina_ustrbuf_insert_escaped() with position 0.
|
2010-07-27 02:05:41 -07:00
|
|
|
*/
|
2018-07-09 18:55:10 -07:00
|
|
|
#define eina_ustrbuf_prepend_escaped(buf, str) eina_ustrbuf_insert_escaped(buf, str, 0)
|
2010-07-27 02:05:41 -07:00
|
|
|
|
|
|
|
/**
|
|
|
|
* @def eina_ustrbuf_prepend_n(buf, str)
|
2018-07-09 18:55:10 -07:00
|
|
|
* @brief Prepends an escaped string to the given buffer.
|
2010-07-27 02:05:41 -07:00
|
|
|
*
|
2018-07-13 02:23:27 -07:00
|
|
|
* @param[in,out] buf The string buffer.
|
|
|
|
* @param[in] str The string to prepend.
|
|
|
|
* @param[in] maxlen The maximum number of Eina_Unicode *s to prepend.
|
2018-07-09 18:55:10 -07:00
|
|
|
* @return #EINA_TRUE on success, #EINA_FALSE if @str could not be prepended.
|
2010-07-27 02:05:41 -07:00
|
|
|
*
|
2018-07-09 18:55:10 -07:00
|
|
|
* This macro simply calls eina_ustrbuf_insert_n() with position 0.
|
2010-07-27 02:05:41 -07:00
|
|
|
*/
|
2018-07-09 18:55:10 -07:00
|
|
|
#define eina_ustrbuf_prepend_n(buf, str, maxlen) eina_ustrbuf_insert_n(buf, str, maxlen, 0)
|
2010-07-27 02:05:41 -07:00
|
|
|
|
|
|
|
/**
|
|
|
|
* @def eina_ustrbuf_prepend_length(buf, str)
|
2018-07-09 18:55:10 -07:00
|
|
|
* @brief Prepends an escaped string to the given buffer.
|
2010-07-27 02:05:41 -07:00
|
|
|
*
|
2018-07-13 02:23:27 -07:00
|
|
|
* @param[in,out] buf The string buffer.
|
|
|
|
* @param[in] str The string to prepend.
|
|
|
|
* @param[in] length The exact length to use.
|
2018-07-09 18:55:10 -07:00
|
|
|
* @return #EINA_TRUE on success, #EINA_FALSE if @p str could not be prepended.
|
2010-07-27 02:05:41 -07:00
|
|
|
*
|
2018-07-09 18:55:10 -07:00
|
|
|
* This macro simply calls eina_ustrbuf_insert_length() with position 0.
|
2010-07-27 02:05:41 -07:00
|
|
|
*/
|
2010-08-12 23:36:33 -07:00
|
|
|
#define eina_ustrbuf_prepend_length(buf, str, length) eina_ustrbuf_insert_length(buf, str, length, 0)
|
2010-07-27 02:05:41 -07:00
|
|
|
|
|
|
|
/**
|
2011-06-12 00:58:55 -07:00
|
|
|
* @def eina_ustrbuf_prepend_char(buf, c)
|
2018-07-09 18:55:10 -07:00
|
|
|
* @brief Prepends a unicode character to the given buffer.
|
2010-07-27 02:05:41 -07:00
|
|
|
*
|
2018-07-13 02:23:27 -07:00
|
|
|
* @param[in,out] buf The string buffer.
|
|
|
|
* @param[in] c The Eina_Unicode character to prepend.
|
2018-07-09 18:55:10 -07:00
|
|
|
* @return #EINA_TRUE on success, #EINA_FALSE if @p c could not be prepended.
|
2010-07-27 02:05:41 -07:00
|
|
|
*
|
2018-07-09 18:55:10 -07:00
|
|
|
* This macro is calling eina_ustrbuf_insert_Eina_Unicode() at position 0.
|
2010-07-27 02:05:41 -07:00
|
|
|
*/
|
2011-06-12 00:58:55 -07:00
|
|
|
#define eina_ustrbuf_prepend_char(buf, c) eina_ustrbuf_insert_char(buf, c, 0)
|
2010-07-27 02:05:41 -07:00
|
|
|
|
|
|
|
/**
|
2018-07-09 18:55:10 -07:00
|
|
|
* @brief Removes a section of the given string buffer.
|
2010-07-27 02:05:41 -07:00
|
|
|
*
|
2018-07-13 02:23:27 -07:00
|
|
|
* @param[in,out] buf The string buffer to remove a slice.
|
|
|
|
* @param[in] start The initial (inclusive) slice position to start
|
2010-07-27 02:05:41 -07:00
|
|
|
* removing, in bytes.
|
2018-07-13 02:23:27 -07:00
|
|
|
* @param[in] end The final (non-inclusive) slice position to finish
|
2010-07-27 02:05:41 -07:00
|
|
|
* removing, in bytes.
|
|
|
|
* @return #EINA_TRUE on success, #EINA_FALSE on failure.
|
|
|
|
*
|
|
|
|
* This function removes a slice of @p buf, starting at @p start
|
|
|
|
* (inclusive) and ending at @p end (non-inclusive). Both values are
|
2018-07-09 18:55:10 -07:00
|
|
|
* in bytes.
|
2010-07-27 02:05:41 -07:00
|
|
|
*/
|
2010-07-27 19:37:05 -07:00
|
|
|
EAPI Eina_Bool
|
2010-08-12 23:36:33 -07:00
|
|
|
eina_ustrbuf_remove(Eina_UStrbuf *buf, size_t start, size_t end) EINA_ARG_NONNULL(1);
|
2010-08-16 23:58:26 -07:00
|
|
|
|
2010-07-27 02:05:41 -07:00
|
|
|
/**
|
2017-02-19 22:18:21 -08:00
|
|
|
* @brief Retrieves a pointer to the contents of a string buffer.
|
2010-07-27 02:05:41 -07:00
|
|
|
*
|
2018-07-13 02:23:27 -07:00
|
|
|
* @param[in] buf The string buffer.
|
2010-07-27 02:05:41 -07:00
|
|
|
* @return The current string in the string buffer.
|
|
|
|
*
|
|
|
|
* This function returns the string contained in @p buf. The returned
|
|
|
|
* value must not be modified and will no longer be valid if @p buf is
|
2018-07-09 18:55:10 -07:00
|
|
|
* modified. In other words, calling eina_ustrbuf_append() or similar
|
|
|
|
* functions will make this pointer invalid.
|
2010-07-27 02:05:41 -07:00
|
|
|
*
|
|
|
|
* @see eina_ustrbuf_string_steal()
|
|
|
|
*/
|
2010-07-27 19:37:05 -07:00
|
|
|
EAPI const Eina_Unicode *
|
2010-08-15 02:01:16 -07:00
|
|
|
eina_ustrbuf_string_get(const Eina_UStrbuf *buf) EINA_ARG_NONNULL(1) EINA_WARN_UNUSED_RESULT;
|
2010-08-16 23:58:26 -07:00
|
|
|
|
2010-07-27 02:05:41 -07:00
|
|
|
/**
|
2017-02-19 22:18:21 -08:00
|
|
|
* @brief Steals the contents of a string buffer.
|
2010-07-27 02:05:41 -07:00
|
|
|
*
|
2018-07-13 02:23:27 -07:00
|
|
|
* @param[in] buf The string buffer.
|
2018-07-09 18:55:10 -07:00
|
|
|
* @return The string that was contained in @p buf.
|
2010-07-27 02:05:41 -07:00
|
|
|
*
|
|
|
|
* This function returns the string contained in @p buf. @p buf is
|
|
|
|
* then initialized and does not own the returned string anymore. The
|
|
|
|
* caller must release the memory of the returned string by calling
|
2010-07-27 19:37:05 -07:00
|
|
|
* free().
|
2010-07-27 02:05:41 -07:00
|
|
|
*
|
|
|
|
* @see eina_ustrbuf_string_get()
|
|
|
|
*/
|
2010-07-27 19:37:05 -07:00
|
|
|
EAPI Eina_Unicode *
|
2010-08-12 23:36:33 -07:00
|
|
|
eina_ustrbuf_string_steal(Eina_UStrbuf *buf) EINA_MALLOC EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
|
2010-08-16 23:58:26 -07:00
|
|
|
|
2010-07-27 02:05:41 -07:00
|
|
|
/**
|
2017-02-19 22:18:21 -08:00
|
|
|
* @brief Frees the contents of a string buffer but not the buffer.
|
2010-07-27 02:05:41 -07:00
|
|
|
*
|
2018-07-13 02:23:27 -07:00
|
|
|
* @param[in,out] buf The string buffer.
|
2010-07-27 19:37:05 -07:00
|
|
|
*
|
2010-07-27 02:05:41 -07:00
|
|
|
* This function frees the string contained in @p buf without freeing
|
|
|
|
* @p buf.
|
|
|
|
*/
|
2010-07-27 19:37:05 -07:00
|
|
|
EAPI void
|
|
|
|
eina_ustrbuf_string_free(Eina_UStrbuf *buf) EINA_ARG_NONNULL(1);
|
2010-08-16 23:58:26 -07:00
|
|
|
|
2010-07-27 02:05:41 -07:00
|
|
|
/**
|
2018-07-09 18:55:10 -07:00
|
|
|
* @brief Retrieves the length of the string buffer's content.
|
2010-07-27 02:05:41 -07:00
|
|
|
*
|
2018-07-13 02:23:27 -07:00
|
|
|
* @param[in] buf The string buffer.
|
2010-07-27 02:05:41 -07:00
|
|
|
* @return The current length of the string, in bytes.
|
|
|
|
*
|
|
|
|
* This function returns the length of @p buf.
|
|
|
|
*/
|
2010-07-27 19:37:05 -07:00
|
|
|
EAPI size_t
|
2010-08-15 02:01:16 -07:00
|
|
|
eina_ustrbuf_length_get(const Eina_UStrbuf *buf) EINA_ARG_NONNULL(1) EINA_WARN_UNUSED_RESULT;
|
2010-08-16 23:58:26 -07:00
|
|
|
|
2016-08-12 14:55:37 -07:00
|
|
|
/**
|
2018-07-09 18:55:10 -07:00
|
|
|
* @brief Gets a read-only slice of the buffer contents.
|
2016-08-12 14:55:37 -07:00
|
|
|
*
|
2018-07-13 02:23:27 -07:00
|
|
|
* @param[in] buf The string buffer.
|
2017-02-19 22:18:21 -08:00
|
|
|
* @return A read-only slice for the current contents. It may become
|
2018-07-09 18:55:10 -07:00
|
|
|
* invalid as soon as @a buf is changed.
|
2016-08-12 14:55:37 -07:00
|
|
|
*
|
|
|
|
* @since 1.19
|
|
|
|
*/
|
|
|
|
EAPI Eina_Slice eina_ustrbuf_slice_get(const Eina_UStrbuf *buf) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
|
|
|
|
|
|
|
|
/**
|
2018-07-09 18:55:10 -07:00
|
|
|
* @brief Gets a read-write slice of the buffer contents.
|
2016-08-12 14:55:37 -07:00
|
|
|
*
|
2018-07-13 02:23:27 -07:00
|
|
|
* @param[in] buf The string buffer.
|
2017-02-19 22:18:21 -08:00
|
|
|
* @return A read-write slice for the current contents. It may become
|
2018-07-09 18:55:10 -07:00
|
|
|
* invalid as soon as the @p buf is changed, such as through calls like
|
|
|
|
* eina_ustrbuf_append() or eina_ustrbuf_remove().
|
2017-02-15 02:13:36 -08:00
|
|
|
*
|
|
|
|
* @since 1.19.0
|
2016-08-12 14:55:37 -07:00
|
|
|
*/
|
|
|
|
EAPI Eina_Rw_Slice eina_ustrbuf_rw_slice_get(const Eina_UStrbuf *buf) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
|
|
|
|
|
2017-01-06 03:18:32 -08:00
|
|
|
/**
|
2018-07-09 18:55:10 -07:00
|
|
|
* @brief Frees the buffer, returning its old contents.
|
2017-01-06 03:18:32 -08:00
|
|
|
*
|
2018-07-13 02:23:27 -07:00
|
|
|
* @param[in,out] buf The string buffer.
|
2018-07-09 18:55:10 -07:00
|
|
|
* @return The string contained by buf. The caller must release the
|
|
|
|
* memory of the returned string by calling free().
|
2017-01-06 03:18:32 -08:00
|
|
|
*
|
|
|
|
* @since 1.19
|
|
|
|
*/
|
|
|
|
EAPI Eina_Unicode* eina_ustrbuf_release(Eina_UStrbuf *buf) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
|
|
|
|
|
2010-07-27 02:05:41 -07:00
|
|
|
/**
|
|
|
|
* @}
|
|
|
|
*/
|
2010-08-16 23:58:26 -07:00
|
|
|
|
2010-07-27 02:05:41 -07:00
|
|
|
/**
|
|
|
|
* @}
|
|
|
|
*/
|
2010-08-16 23:58:26 -07:00
|
|
|
|
2010-07-27 02:05:41 -07:00
|
|
|
#endif /* EINA_STRBUF_H */
|