Furi string container. More...
#include <stdbool.h>
#include <stdint.h>
#include <stddef.h>
#include <stdarg.h>
#include <m-core.h>
Go to the source code of this file.
Macros | |
#define | FURI_STRING_FAILURE ((size_t) - 1) |
Furi string failure constant. | |
#define | FURI_STRING_SELECT1(func1, func2, a) |
Select either the string function or the str function depending on the b operand to the function. | |
#define | FURI_STRING_SELECT2(func1, func2, a, b) |
Select for 2 arguments. | |
#define | FURI_STRING_SELECT3(func1, func2, a, b, c) |
Select for 3 arguments. | |
#define | FURI_STRING_SELECT4(func1, func2, a, b, c, d) |
Select for 4 arguments. | |
#define | furi_string_alloc_set(a) |
Allocate new FuriString and set it content to string (or C string). | |
#define | furi_string_set(a, b) |
Set the string content to string (or C string). | |
#define | furi_string_cmp(a, b) |
Compare string with string (or C string) and return the sort order. | |
#define | furi_string_cmpi(a, b) |
Compare string with string (or C string) (case insensitive according to the current locale) and return the sort order. | |
#define | furi_string_equal(a, b) |
Test if the string is equal to the string (or C string). | |
#define | furi_string_replace_all(a, b, c) |
Replace all occurrences of string into string (or C string to another C string) in a string. | |
#define | furi_string_search(...) |
Search for a string (or C string) in a string. | |
#define | furi_string_search_str(...) |
Search for a C string in a string. | |
#define | furi_string_start_with(a, b) |
Test if the string starts with the given string (or C string). | |
#define | furi_string_end_with(a, b) |
Test if the string ends with the given string (or C string). | |
#define | furi_string_end_withi(a, b) |
Test if the string ends with the given string (or C string) (case insensitive according to the current locale). | |
#define | furi_string_cat(a, b) |
Append a string (or C string) to the string. | |
#define | furi_string_trim(...) |
Trim a string from the given set of characters (default is " \n\r\t"). | |
#define | furi_string_search_char(...) |
Search for a character in a string. | |
#define | furi_string_search_rchar(...) |
Reverse Search for a character in a string. | |
#define | furi_string_replace(...) |
Replace a string to another string (or C string to another C string) in a string. | |
#define | furi_string_replace_str(...) |
Replace a C string to another C string in a string. | |
#define | F_STR_INIT(a) |
INIT OPLIST for FuriString. | |
#define | F_STR_INIT_SET(a, b) |
INIT SET OPLIST for FuriString. | |
#define | F_STR_INIT_MOVE(a, b) |
INIT MOVE OPLIST for FuriString. | |
#define | FURI_STRING_OPLIST |
OPLIST for FuriString. | |
Typedefs | |
typedef struct FuriString | FuriString |
Furi string primitive. | |
typedef unsigned int | FuriStringUnicodeValue |
An unicode value. | |
Enumerations | |
enum | FuriStringUTF8State { FuriStringUTF8StateStarting , FuriStringUTF8StateDecoding1 , FuriStringUTF8StateDecoding2 , FuriStringUTF8StateDecoding3 , FuriStringUTF8StateError } |
State of the UTF8 decoding machine state. | |
Functions | |
FuriString * | furi_string_alloc (void) |
Allocate new FuriString. | |
FuriString * | furi_string_alloc_set (const FuriString *source) |
Allocate new FuriString and set it to string. | |
FuriString * | furi_string_alloc_set_str (const char cstr_source[]) |
Allocate new FuriString and set it to C string. | |
FuriString * | furi_string_alloc_printf (const char format[],...) _ATTRIBUTE((__format__(__printf__ |
Allocate new FuriString and printf to it. | |
FuriString FuriString * | furi_string_alloc_vprintf (const char format[], va_list args) |
Allocate new FuriString and printf to it. | |
FuriString * | furi_string_alloc_move (FuriString *source) |
Allocate new FuriString and move source string content to it. | |
void | furi_string_free (FuriString *string) |
Free FuriString. | |
void | furi_string_reserve (FuriString *string, size_t size) |
Reserve memory for string. | |
void | furi_string_reset (FuriString *string) |
Reset string. | |
void | furi_string_swap (FuriString *string_1, FuriString *string_2) |
Swap two strings. | |
void | furi_string_move (FuriString *string_1, FuriString *string_2) |
Move string_2 content to string_1. | |
size_t | furi_string_hash (const FuriString *string) |
Compute a hash for the string. | |
size_t | furi_string_size (const FuriString *string) |
Get string size (usually length, but not for UTF-8) | |
bool | furi_string_empty (const FuriString *string) |
Check that string is empty or not. | |
char | furi_string_get_char (const FuriString *string, size_t index) |
Get the character at the given index. | |
const char * | furi_string_get_cstr (const FuriString *string) |
Return the string view a classic C string. | |
void | furi_string_set (FuriString *string, FuriString *source) |
Set the string to the other string. | |
void | furi_string_set_str (FuriString *string, const char source[]) |
Set the string to the other C string. | |
void | furi_string_set_strn (FuriString *string, const char source[], size_t length) |
Set the string to the n first characters of the C string. | |
void | furi_string_set_char (FuriString *string, size_t index, const char c) |
Set the character at the given index. | |
void | furi_string_set_n (FuriString *string, const FuriString *source, size_t offset, size_t length) |
Set the string to the n first characters of other one. | |
int | furi_string_printf (FuriString *string, const char format[],...) _ATTRIBUTE((__format__(__printf__ |
Format in the string the given printf format. | |
int int | furi_string_vprintf (FuriString *string, const char format[], va_list args) |
Format in the string the given printf format. | |
void | furi_string_push_back (FuriString *string, char c) |
Append a character to the string. | |
void | furi_string_cat (FuriString *string_1, const FuriString *string_2) |
Append a string to the string. | |
void | furi_string_cat_str (FuriString *string_1, const char cstring_2[]) |
Append a C string to the string. | |
int | furi_string_cat_printf (FuriString *string, const char format[],...) _ATTRIBUTE((__format__(__printf__ |
Append to the string the formatted string of the given printf format. | |
int int | furi_string_cat_vprintf (FuriString *string, const char format[], va_list args) |
Append to the string the formatted string of the given printf format. | |
int | furi_string_cmp (const FuriString *string_1, const FuriString *string_2) |
Compare two strings and return the sort order. | |
int | furi_string_cmp_str (const FuriString *string_1, const char cstring_2[]) |
Compare string with C string and return the sort order. | |
int | furi_string_cmpi (const FuriString *string_1, const FuriString *string_2) |
Compare two strings (case insensitive according to the current locale) and return the sort order. | |
int | furi_string_cmpi_str (const FuriString *string_1, const char cstring_2[]) |
Compare string with C string (case insensitive according to the current locale) and return the sort order. | |
size_t | furi_string_search (const FuriString *string, const FuriString *needle, size_t start) |
Search the first occurrence of the needle in the string from the position start. | |
size_t | furi_string_search_str (const FuriString *string, const char needle[], size_t start) |
Search the first occurrence of the needle in the string from the position start. | |
size_t | furi_string_search_char (const FuriString *string, char c, size_t start) |
Search for the position of the character c from the position start (include) in the string. | |
size_t | furi_string_search_rchar (const FuriString *string, char c, size_t start) |
Reverse search for the position of the character c from the position start (include) in the string. | |
bool | furi_string_equal (const FuriString *string_1, const FuriString *string_2) |
Test if two strings are equal. | |
bool | furi_string_equal_str (const FuriString *string_1, const char cstring_2[]) |
Test if the string is equal to the C string. | |
void | furi_string_replace_at (FuriString *string, size_t pos, size_t len, const char replace[]) |
Replace in the string the sub-string at position 'pos' for 'len' bytes into the C string 'replace'. | |
size_t | furi_string_replace (FuriString *string, FuriString *needle, FuriString *replace, size_t start) |
Replace a string 'needle' to string 'replace' in a string from 'start' position. | |
size_t | furi_string_replace_str (FuriString *string, const char needle[], const char replace[], size_t start) |
Replace a C string 'needle' to C string 'replace' in a string from 'start' position. | |
void | furi_string_replace_all (FuriString *string, const FuriString *needle, const FuriString *replace) |
Replace all occurrences of 'needle' string into 'replace' string. | |
void | furi_string_replace_all_str (FuriString *string, const char needle[], const char replace[]) |
Replace all occurrences of 'needle' C string into 'replace' C string. | |
bool | furi_string_start_with (const FuriString *string, const FuriString *start) |
Test if the string starts with the given string. | |
bool | furi_string_start_with_str (const FuriString *string, const char start[]) |
Test if the string starts with the given C string. | |
bool | furi_string_end_with (const FuriString *string, const FuriString *end) |
Test if the string ends with the given string. | |
bool | furi_string_end_withi (const FuriString *string, const FuriString *end) |
Test if the string ends with the given string (case insensitive according to the current locale). | |
bool | furi_string_end_with_str (const FuriString *string, const char end[]) |
Test if the string ends with the given C string. | |
bool | furi_string_end_withi_str (const FuriString *string, const char end[]) |
Test if the string ends with the given C string (case insensitive according to the current locale). | |
void | furi_string_left (FuriString *string, size_t index) |
Trim the string left to the first 'index' bytes. | |
void | furi_string_right (FuriString *string, size_t index) |
Trim the string right from the 'index' position to the last position. | |
void | furi_string_mid (FuriString *string, size_t index, size_t size) |
Trim the string from position index to size bytes. | |
void | furi_string_trim (FuriString *string, const char chars[]) |
Trim a string from the given set of characters (default is " \n\r\t"). | |
size_t | furi_string_utf8_length (FuriString *string) |
Compute the length in UTF8 characters in the string. | |
void | furi_string_utf8_push (FuriString *string, FuriStringUnicodeValue unicode) |
Push unicode into string, encoding it in UTF8. | |
void | furi_string_utf8_decode (char c, FuriStringUTF8State *state, FuriStringUnicodeValue *unicode) |
Main generic UTF8 decoder. | |
Furi string container.
And various method to manipulate strings
#define F_STR_INIT | ( | a | ) |
INIT OPLIST for FuriString.
#define F_STR_INIT_MOVE | ( | a, | |
b ) |
INIT MOVE OPLIST for FuriString.
#define F_STR_INIT_SET | ( | a, | |
b ) |
INIT SET OPLIST for FuriString.
#define furi_string_alloc_set | ( | a | ) |
Allocate new FuriString and set it content to string (or C string).
([c]string)
#define furi_string_cat | ( | a, | |
b ) |
Append a string (or C string) to the string.
(string, [c]string)
#define furi_string_cmp | ( | a, | |
b ) |
Compare string with string (or C string) and return the sort order.
Note: doesn't work with UTF-8 strings. (string, [c]string)
#define furi_string_cmpi | ( | a, | |
b ) |
Compare string with string (or C string) (case insensitive according to the current locale) and return the sort order.
Note: doesn't work with UTF-8 strings. (string, [c]string)
#define furi_string_end_with | ( | a, | |
b ) |
Test if the string ends with the given string (or C string).
(string, [c]string)
#define furi_string_end_withi | ( | a, | |
b ) |
Test if the string ends with the given string (or C string) (case insensitive according to the current locale).
(string, [c]string)
#define furi_string_equal | ( | a, | |
b ) |
Test if the string is equal to the string (or C string).
(string, [c]string)
#define FURI_STRING_OPLIST |
OPLIST for FuriString.
#define furi_string_replace | ( | ... | ) |
Replace a string to another string (or C string to another C string) in a string.
(string, [c]string, [c]string[, start=0])
#define furi_string_replace_all | ( | a, | |
b, | |||
c ) |
Replace all occurrences of string into string (or C string to another C string) in a string.
(string, [c]string, [c]string)
#define furi_string_replace_str | ( | ... | ) |
Replace a C string to another C string in a string.
(string, cstring, cstring[, start=0])
#define furi_string_search | ( | ... | ) |
Search for a string (or C string) in a string.
(string, [c]string[, start=0])
#define furi_string_search_char | ( | ... | ) |
Search for a character in a string.
(string, character[, start=0])
#define furi_string_search_rchar | ( | ... | ) |
Reverse Search for a character in a string.
(string, character[, start=0])
#define furi_string_search_str | ( | ... | ) |
Search for a C string in a string.
(string, cstring[, start=0])
#define FURI_STRING_SELECT1 | ( | func1, | |
func2, | |||
a ) |
Select either the string function or the str function depending on the b operand to the function.
func1 is the string function / func2 is the str function. Select for 1 argument
#define FURI_STRING_SELECT2 | ( | func1, | |
func2, | |||
a, | |||
b ) |
Select for 2 arguments.
#define FURI_STRING_SELECT3 | ( | func1, | |
func2, | |||
a, | |||
b, | |||
c ) |
Select for 3 arguments.
#define FURI_STRING_SELECT4 | ( | func1, | |
func2, | |||
a, | |||
b, | |||
c, | |||
d ) |
Select for 4 arguments.
#define furi_string_set | ( | a, | |
b ) |
Set the string content to string (or C string).
(string, [c]string)
#define furi_string_start_with | ( | a, | |
b ) |
Test if the string starts with the given string (or C string).
(string, [c]string)
#define furi_string_trim | ( | ... | ) |
Trim a string from the given set of characters (default is " \n\r\t").
(string[, set=" \n\r\t"])
FuriString * furi_string_alloc | ( | void | ) |
Allocate new FuriString.
FuriString * furi_string_alloc_move | ( | FuriString * | source | ) |
Allocate new FuriString and move source string content to it.
Allocate the string, set it to the other one, and destroy the other one.
source | The source FuriString instance |
FuriString * furi_string_alloc_printf | ( | const char | format[], |
... ) |
Allocate new FuriString and printf to it.
Initialize and set a string to the given formatted value.
format | The printf format | |
[in] | ... | args to format |
FuriString * furi_string_alloc_set | ( | const FuriString * | source | ) |
Allocate new FuriString and set it to string.
Allocate & Set the string a to the string.
source | The source FuriString instance |
FuriString * furi_string_alloc_set_str | ( | const char | cstr_source[] | ) |
Allocate new FuriString and set it to C string.
Allocate & Set the string a to the C string.
cstr_source | The C-string instance |
FuriString FuriString * furi_string_alloc_vprintf | ( | const char | format[], |
va_list | args ) |
Allocate new FuriString and printf to it.
Initialize and set a string to the given formatted value.
format | The printf format |
args | The format arguments |
void furi_string_cat | ( | FuriString * | string_1, |
const FuriString * | string_2 ) |
Append a string to the string.
Concatenate the string with the other string.
string_1 | The string 1 |
string_2 | The string 2 |
int furi_string_cat_printf | ( | FuriString * | string, |
const char | format[], | ||
... ) |
Append to the string the formatted string of the given printf format.
string | The string | |
format | The format | |
[in] | ... | The args |
void furi_string_cat_str | ( | FuriString * | string_1, |
const char | cstring_2[] ) |
Append a C string to the string.
Concatenate the string with the C string.
string_1 | The string 1 |
cstring_2 | The cstring 2 |
int int furi_string_cat_vprintf | ( | FuriString * | string, |
const char | format[], | ||
va_list | args ) |
Append to the string the formatted string of the given printf format.
string | The FuriString instance |
format | The format |
args | The arguments |
int furi_string_cmp | ( | const FuriString * | string_1, |
const FuriString * | string_2 ) |
Compare two strings and return the sort order.
string_1 | The string 1 |
string_2 | The string 2 |
int furi_string_cmp_str | ( | const FuriString * | string_1, |
const char | cstring_2[] ) |
Compare string with C string and return the sort order.
string_1 | The string 1 |
cstring_2 | The cstring 2 |
int furi_string_cmpi | ( | const FuriString * | string_1, |
const FuriString * | string_2 ) |
Compare two strings (case insensitive according to the current locale) and return the sort order.
Note: doesn't work with UTF-8 strings.
string_1 | The string 1 |
string_2 | The string 2 |
int furi_string_cmpi_str | ( | const FuriString * | string_1, |
const char | cstring_2[] ) |
Compare string with C string (case insensitive according to the current locale) and return the sort order.
Note: doesn't work with UTF-8 strings.
string_1 | The string 1 |
cstring_2 | The cstring 2 |
bool furi_string_empty | ( | const FuriString * | string | ) |
Check that string is empty or not.
string | The FuriString instance |
bool furi_string_end_with | ( | const FuriString * | string, |
const FuriString * | end ) |
Test if the string ends with the given string.
string | The FuriString instance |
end | The end |
bool furi_string_end_with_str | ( | const FuriString * | string, |
const char | end[] ) |
Test if the string ends with the given C string.
string | The FuriString instance |
end | The end |
bool furi_string_end_withi | ( | const FuriString * | string, |
const FuriString * | end ) |
Test if the string ends with the given string (case insensitive according to the current locale).
string | The FuriString instance |
end | The end |
bool furi_string_end_withi_str | ( | const FuriString * | string, |
const char | end[] ) |
Test if the string ends with the given C string (case insensitive according to the current locale).
string | The FuriString instance |
end | The end |
bool furi_string_equal | ( | const FuriString * | string_1, |
const FuriString * | string_2 ) |
Test if two strings are equal.
string_1 | The string 1 |
string_2 | The string 2 |
bool furi_string_equal_str | ( | const FuriString * | string_1, |
const char | cstring_2[] ) |
Test if the string is equal to the C string.
string_1 | The string 1 |
cstring_2 | The cstring 2 |
void furi_string_free | ( | FuriString * | string | ) |
Free FuriString.
string | The FuriString instance to free |
char furi_string_get_char | ( | const FuriString * | string, |
size_t | index ) |
Get the character at the given index.
Return the selected character of the string.
string | The FuriString instance |
index | The index |
const char * furi_string_get_cstr | ( | const FuriString * | string | ) |
Return the string view a classic C string.
string | The FuriString instance |
size_t furi_string_hash | ( | const FuriString * | string | ) |
Compute a hash for the string.
string | The FuriString instance |
void furi_string_left | ( | FuriString * | string, |
size_t | index ) |
Trim the string left to the first 'index' bytes.
string | The FuriString instance |
index | The index |
void furi_string_mid | ( | FuriString * | string, |
size_t | index, | ||
size_t | size ) |
Trim the string from position index to size bytes.
See also furi_string_set_n.
string | The FuriString instance |
index | The index |
size | The size |
void furi_string_move | ( | FuriString * | string_1, |
FuriString * | string_2 ) |
Move string_2 content to string_1.
Set the string to the other one, and destroy the other one.
string_1 | The FuriString instance 1 |
string_2 | The FuriString instance 2 |
int furi_string_printf | ( | FuriString * | string, |
const char | format[], | ||
... ) |
Format in the string the given printf format.
string | The string | |
format | The format | |
[in] | ... | The args |
void furi_string_push_back | ( | FuriString * | string, |
char | c ) |
Append a character to the string.
string | The FuriString instance |
c | The character |
size_t furi_string_replace | ( | FuriString * | string, |
FuriString * | needle, | ||
FuriString * | replace, | ||
size_t | start ) |
Replace a string 'needle' to string 'replace' in a string from 'start' position.
string | The string |
needle | The needle |
replace | The replace |
start | The start (By default, start is zero) |
void furi_string_replace_all | ( | FuriString * | string, |
const FuriString * | needle, | ||
const FuriString * | replace ) |
Replace all occurrences of 'needle' string into 'replace' string.
string | The string |
needle | The needle |
replace | The replace |
void furi_string_replace_all_str | ( | FuriString * | string, |
const char | needle[], | ||
const char | replace[] ) |
Replace all occurrences of 'needle' C string into 'replace' C string.
string | The string |
needle | The needle |
replace | The replace |
void furi_string_replace_at | ( | FuriString * | string, |
size_t | pos, | ||
size_t | len, | ||
const char | replace[] ) |
Replace in the string the sub-string at position 'pos' for 'len' bytes into the C string 'replace'.
string | The string |
pos | The position |
len | The length |
replace | The replace |
size_t furi_string_replace_str | ( | FuriString * | string, |
const char | needle[], | ||
const char | replace[], | ||
size_t | start ) |
Replace a C string 'needle' to C string 'replace' in a string from 'start' position.
string | The string |
needle | The needle |
replace | The replace |
start | The start (By default, start is zero) |
void furi_string_reserve | ( | FuriString * | string, |
size_t | size ) |
Reserve memory for string.
Modify the string capacity to be able to handle at least 'alloc' characters (including final null char).
string | The FuriString instance |
size | The size to reserve |
void furi_string_reset | ( | FuriString * | string | ) |
Reset string.
Make the string empty.
string | The FuriString instance |
void furi_string_right | ( | FuriString * | string, |
size_t | index ) |
Trim the string right from the 'index' position to the last position.
string | The FuriString instance |
index | The index |
size_t furi_string_search | ( | const FuriString * | string, |
const FuriString * | needle, | ||
size_t | start ) |
Search the first occurrence of the needle in the string from the position start.
string | The FuriString instance |
needle | The needle |
start | The start (By default, start is zero) |
size_t furi_string_search_char | ( | const FuriString * | string, |
char | c, | ||
size_t | start ) |
Search for the position of the character c from the position start (include) in the string.
string | The FuriString instance |
c | The character |
start | The start (By default, start is zero) |
size_t furi_string_search_rchar | ( | const FuriString * | string, |
char | c, | ||
size_t | start ) |
Reverse search for the position of the character c from the position start (include) in the string.
string | The FuriString instance |
c | The character |
start | The start (By default, start is zero) |
size_t furi_string_search_str | ( | const FuriString * | string, |
const char | needle[], | ||
size_t | start ) |
Search the first occurrence of the needle in the string from the position start.
string | The FuriString instance |
needle | The needle |
start | The start (By default, start is zero) |
void furi_string_set | ( | FuriString * | string, |
FuriString * | source ) |
Set the string to the other string.
Set the string to the source string.
string | The FuriString instance |
source | The source |
void furi_string_set_char | ( | FuriString * | string, |
size_t | index, | ||
const char | c ) |
Set the character at the given index.
string | The FuriString instance |
index | The index |
c | The character |
void furi_string_set_n | ( | FuriString * | string, |
const FuriString * | source, | ||
size_t | offset, | ||
size_t | length ) |
Set the string to the n first characters of other one.
string | The FuriString instance |
source | The source |
offset | The offset |
length | The length |
void furi_string_set_str | ( | FuriString * | string, |
const char | source[] ) |
Set the string to the other C string.
Set the string to the source C string.
string | The FuriString instance |
source | The source |
void furi_string_set_strn | ( | FuriString * | string, |
const char | source[], | ||
size_t | length ) |
Set the string to the n first characters of the C string.
string | The FuriString instance |
source | The source |
length | The length |
size_t furi_string_size | ( | const FuriString * | string | ) |
Get string size (usually length, but not for UTF-8)
string | The FuriString instance |
bool furi_string_start_with | ( | const FuriString * | string, |
const FuriString * | start ) |
Test if the string starts with the given string.
string | The FuriString instance |
start | The FuriString instance |
bool furi_string_start_with_str | ( | const FuriString * | string, |
const char | start[] ) |
Test if the string starts with the given C string.
string | The FuriString instance |
start | The start |
void furi_string_swap | ( | FuriString * | string_1, |
FuriString * | string_2 ) |
Swap two strings.
Swap the two strings string_1 and string_2.
string_1 | The FuriString instance 1 |
string_2 | The FuriString instance 2 |
void furi_string_trim | ( | FuriString * | string, |
const char | chars[] ) |
Trim a string from the given set of characters (default is " \n\r\t").
string | The FuriString instance |
chars | The characters |
void furi_string_utf8_decode | ( | char | c, |
FuriStringUTF8State * | state, | ||
FuriStringUnicodeValue * | unicode ) |
Main generic UTF8 decoder.
It takes a character, and the previous state and the previous value of the unicode value. It updates the state and the decoded unicode value. A decoded unicode encoded value is valid only when the state is FuriStringUTF8StateStarting.
c | The character |
state | The state |
unicode | The unicode |
size_t furi_string_utf8_length | ( | FuriString * | string | ) |
Compute the length in UTF8 characters in the string.
string | The FuriString instance |
void furi_string_utf8_push | ( | FuriString * | string, |
FuriStringUnicodeValue | unicode ) |
Push unicode into string, encoding it in UTF8.
string | The string |
unicode | The unicode |
int int furi_string_vprintf | ( | FuriString * | string, |
const char | format[], | ||
va_list | args ) |
Format in the string the given printf format.
string | The FuriString instance |
format | The format |
args | The arguments |