Move internal function / macros with the m_string prefix to the internal m_str1ng prefix
This commit is contained in:
1 parent
22674f2b46
commit
d7909f7312
1 file changed
+41
-33
+41
-33
@@ -1457,11 +1457,11 @@ string_in_serial(string_t v, m_serial_read_t serial)
|
||||
|
||||
/* State of the UTF8 decoding machine state */
|
||||
typedef enum {
|
||||
M_STRING_UTF8_STARTING = 0,
|
||||
M_STRING_UTF8_DECODING_1 = 8,
|
||||
M_STRING_UTF8_DECODING_2 = 16,
|
||||
M_STRING_UTF8_DOCODING_3 = 24,
|
||||
M_STRING_UTF8_ERROR = 32
|
||||
M_STR1NG_UTF8_STARTING = 0,
|
||||
M_STR1NG_UTF8_DECODING_1 = 8,
|
||||
M_STR1NG_UTF8_DECODING_2 = 16,
|
||||
M_STR1NG_UTF8_DOCODING_3 = 24,
|
||||
M_STR1NG_UTF8_ERROR = 32
|
||||
} m_str1ng_utf8_state_e;
|
||||
|
||||
/* An unicode value */
|
||||
@@ -1490,7 +1490,7 @@ typedef unsigned int string_unicode_t;
|
||||
*/
|
||||
|
||||
/* The use of a string enables the compiler/linker to factorize it. */
|
||||
#define M_STRING_UTF8_STATE_TAB \
|
||||
#define M_STR1NG_UTF8_STATE_TAB \
|
||||
"\000\040\010\020\030\040\040\040" \
|
||||
"\040\000\040\040\040\040\040\040" \
|
||||
"\040\010\040\040\040\040\040\040" \
|
||||
@@ -1508,10 +1508,10 @@ m_str1ng_utf8_decode(char c, m_str1ng_utf8_state_e *state,
|
||||
string_unicode_t *unicode)
|
||||
{
|
||||
const unsigned int type = m_core_clz32((unsigned char)~c) - (unsigned) (sizeof(uint32_t) - 1) * CHAR_BIT;
|
||||
const string_unicode_t mask1 = (UINT_MAX - (string_unicode_t)(*state != M_STRING_UTF8_STARTING) + 1);
|
||||
const string_unicode_t mask1 = (UINT_MAX - (string_unicode_t)(*state != M_STR1NG_UTF8_STARTING) + 1);
|
||||
const string_unicode_t mask2 = (0xFFU >> type);
|
||||
*unicode = ((*unicode << 6) & mask1) | ((unsigned int) c & mask2);
|
||||
*state = (m_str1ng_utf8_state_e) M_STRING_UTF8_STATE_TAB[(unsigned int) *state + type];
|
||||
*state = (m_str1ng_utf8_state_e) M_STR1NG_UTF8_STATE_TAB[(unsigned int) *state + type];
|
||||
}
|
||||
|
||||
/* Check if the given array of characters is a valid UTF8 stream */
|
||||
@@ -1519,12 +1519,12 @@ m_str1ng_utf8_decode(char c, m_str1ng_utf8_state_e *state,
|
||||
static inline bool
|
||||
m_str1ng_utf8_valid_str_p(const char str[])
|
||||
{
|
||||
m_str1ng_utf8_state_e s = M_STRING_UTF8_STARTING;
|
||||
m_str1ng_utf8_state_e s = M_STR1NG_UTF8_STARTING;
|
||||
string_unicode_t u = 0;
|
||||
while (*str) {
|
||||
m_str1ng_utf8_decode(*str, &s, &u);
|
||||
if ((s == M_STRING_UTF8_ERROR)
|
||||
||(s == M_STRING_UTF8_STARTING
|
||||
if ((s == M_STR1NG_UTF8_ERROR)
|
||||
||(s == M_STR1NG_UTF8_STARTING
|
||||
&&(u > 0x10FFFF /* out of range */
|
||||
||(u >= 0xD800 && u <= 0xDFFF) /* surrogate halves */)))
|
||||
return false;
|
||||
@@ -1540,12 +1540,12 @@ static inline size_t
|
||||
m_str1ng_utf8_length(const char str[])
|
||||
{
|
||||
size_t size = 0;
|
||||
m_str1ng_utf8_state_e s = M_STRING_UTF8_STARTING;
|
||||
m_str1ng_utf8_state_e s = M_STR1NG_UTF8_STARTING;
|
||||
string_unicode_t u = 0;
|
||||
while (*str) {
|
||||
m_str1ng_utf8_decode(*str, &s, &u);
|
||||
if (M_UNLIKELY (s == M_STRING_UTF8_ERROR)) return SIZE_MAX;
|
||||
size += (s == M_STRING_UTF8_STARTING);
|
||||
if (M_UNLIKELY (s == M_STR1NG_UTF8_ERROR)) return SIZE_MAX;
|
||||
size += (s == M_STR1NG_UTF8_STARTING);
|
||||
str++;
|
||||
}
|
||||
return size;
|
||||
@@ -1628,15 +1628,15 @@ string_end_p (string_it_t it)
|
||||
M_ASSERT (it != NULL);
|
||||
if (M_UNLIKELY (*it->ptr == 0))
|
||||
return true;
|
||||
m_str1ng_utf8_state_e state = M_STRING_UTF8_STARTING;
|
||||
m_str1ng_utf8_state_e state = M_STR1NG_UTF8_STARTING;
|
||||
string_unicode_t u = 0;
|
||||
const char *str = it->ptr;
|
||||
do {
|
||||
m_str1ng_utf8_decode(*str, &state, &u);
|
||||
str++;
|
||||
} while (state != M_STRING_UTF8_STARTING && state != M_STRING_UTF8_ERROR && *str != 0);
|
||||
} while (state != M_STR1NG_UTF8_STARTING && state != M_STR1NG_UTF8_ERROR && *str != 0);
|
||||
it->next_ptr = str;
|
||||
it->u = M_UNLIKELY (state == M_STRING_UTF8_ERROR) ? STRING_UNICODE_ERROR : u;
|
||||
it->u = M_UNLIKELY (state == M_STR1NG_UTF8_ERROR) ? STRING_UNICODE_ERROR : u;
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -1805,10 +1805,10 @@ namespace m_lib {
|
||||
In C11 mode, it uses the fact that string_init_set is overloaded to handle both
|
||||
C string and string. */
|
||||
#if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L)
|
||||
#define M_STRING_INIT_WITH(v, ...) \
|
||||
#define M_STR1NG_INIT_WITH(v, ...) \
|
||||
M_IF_NARGS_EQ1(__VA_ARGS__)(string_init_set, string_init_printf)(v, __VA_ARGS__)
|
||||
#else
|
||||
#define M_STRING_INIT_WITH(v, ...) \
|
||||
#define M_STR1NG_INIT_WITH(v, ...) \
|
||||
M_IF_NARGS_EQ1(__VA_ARGS__)(string_init_set_str, string_init_printf)(v, __VA_ARGS__)
|
||||
#endif
|
||||
|
||||
@@ -1825,7 +1825,7 @@ namespace m_lib {
|
||||
/* Define the OPLIST of a STRING */
|
||||
#define STRING_OPLIST \
|
||||
(INIT(string_init),INIT_SET(string_init_set), SET(string_set), \
|
||||
INIT_WITH(M_STRING_INIT_WITH), \
|
||||
INIT_WITH(M_STR1NG_INIT_WITH), \
|
||||
INIT_MOVE(string_init_move), MOVE(string_move), \
|
||||
SWAP(string_swap), RESET(string_reset), \
|
||||
EMPTY_P(string_empty_p), \
|
||||
@@ -1851,7 +1851,11 @@ namespace m_lib {
|
||||
#define M_OPL_string_t() STRING_OPLIST
|
||||
|
||||
|
||||
/* Macro encapsulation to give a default value of 0 for start offset */
|
||||
/***********************************************************************/
|
||||
/* */
|
||||
/* Macro encapsulation to give a default value of 0 for start offset */
|
||||
/* */
|
||||
/***********************************************************************/
|
||||
|
||||
/* Search for a character in a string (string, character[, start=0]) */
|
||||
#define string_search_char(v, ...) \
|
||||
@@ -1899,13 +1903,13 @@ namespace m_lib {
|
||||
/* Select either the string function or the str function depending on
|
||||
the b operade to the function.
|
||||
func1 is the string function / func2 is the str function. */
|
||||
# define M_STRING_SELECT2(func1,func2,a,b) \
|
||||
# define M_STR1NG_SELECT2(func1,func2,a,b) \
|
||||
_Generic((b)+0, \
|
||||
char*: func2, \
|
||||
const char *: func2, \
|
||||
default : func1 \
|
||||
)(a,b)
|
||||
# define M_STRING_SELECT3(func1,func2,a,b,c) \
|
||||
# define M_STR1NG_SELECT3(func1,func2,a,b,c) \
|
||||
_Generic((b)+0, \
|
||||
char*: func2, \
|
||||
const char *: func2, \
|
||||
@@ -1913,30 +1917,36 @@ namespace m_lib {
|
||||
)(a,b,c)
|
||||
|
||||
/* Init & Set the string a to the string (or C string) b (constructor) */
|
||||
#define string_init_set(a,b) M_STRING_SELECT2(string_init_set, string_init_set_str, a, b)
|
||||
#define string_init_set(a,b) M_STR1NG_SELECT2(string_init_set, string_init_set_str, a, b)
|
||||
|
||||
/* Set the string a to the string (or C string) b */
|
||||
#define string_set(a,b) M_STRING_SELECT2(string_set, string_set_str, a, b)
|
||||
#define string_set(a,b) M_STR1NG_SELECT2(string_set, string_set_str, a, b)
|
||||
|
||||
/* Concatene the string (or C string) b to the string a */
|
||||
#define string_cat(a,b) M_STRING_SELECT2(string_cat, string_cat_str, a, b)
|
||||
#define string_cat(a,b) M_STR1NG_SELECT2(string_cat, string_cat_str, a, b)
|
||||
|
||||
/* Compare the string a to the string (or C string) b and return the sort order */
|
||||
#define string_cmp(a,b) M_STRING_SELECT2(string_cmp, string_cmp_str, a, b)
|
||||
#define string_cmp(a,b) M_STR1NG_SELECT2(string_cmp, string_cmp_str, a, b)
|
||||
|
||||
/* Compare for equality the string a to the string (or C string) b */
|
||||
#define string_equal_p(a,b) M_STRING_SELECT2(string_equal_p, string_equal_str_p, a, b)
|
||||
#define string_equal_p(a,b) M_STR1NG_SELECT2(string_equal_p, string_equal_str_p, a, b)
|
||||
|
||||
/* strcoll the string a to the string (or C string) b */
|
||||
#define string_strcoll(a,b) M_STRING_SELECT2(string_strcoll, string_strcoll_str, a, b)
|
||||
#define string_strcoll(a,b) M_STR1NG_SELECT2(string_strcoll, string_strcoll_str, a, b)
|
||||
|
||||
#undef string_search
|
||||
/* Search for a string in a string (or C string) (string, string[, start=0]) */
|
||||
#define string_search(v, ...) \
|
||||
M_APPLY(M_STRING_SELECT3, string_search, string_search_str, \
|
||||
M_APPLY(M_STR1NG_SELECT3, string_search, string_search_str, \
|
||||
v, M_IF_DEFAULT1(0, __VA_ARGS__))
|
||||
#endif
|
||||
|
||||
/**************** Override m-core default macros to add support of string_t ******/
|
||||
|
||||
/***********************************************************************/
|
||||
/* */
|
||||
/* Override m-core default macros to integrate string_t in core */
|
||||
/* */
|
||||
/***********************************************************************/
|
||||
|
||||
/* Internal Macro: Provide GET_STR method to default type */
|
||||
#undef M_GET_STR_METHOD_FOR_DEFAULT_TYPE
|
||||
@@ -1957,8 +1967,6 @@ namespace m_lib {
|
||||
, string_srcptr: string_get_cstr(M_AS_TYPE(string_srcptr,x)) \
|
||||
, default: x )
|
||||
|
||||
#endif
|
||||
|
||||
/* Internal Macro: Provide GET_STR method to enum type */
|
||||
#undef M_GET_STR_METHOD_FOR_ENUM_TYPE
|
||||
#define M_GET_STR_METHOD_FOR_ENUM_TYPE GET_STR(M_ENUM_GET_STR)
|
||||
|
||||
Reference in new issue
Block a user