Fix M*LIB usage (#2762)

* Fix M*LIB usage
* Fix oplist definition of SubGhzFrequencyAnalyzerLogItem
* Fix oplist definition of M_CSTR_DUP_OPLIST
* Remove dependency of furi_string_utf8_decode to the internal definition of string_unicode_t
* Replace obsolete macro M_IF_DEFAULT1 to M_DEFAULT_ARGS

Co-authored-by: hedger <hedger@users.noreply.github.com>
Co-authored-by: あく <alleteam@gmail.com>
This commit is contained in:
PpHd 2023-06-27 12:50:09 +02:00 committed by GitHub
parent 75354ec5ba
commit 0a5508a8a1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 37 additions and 37 deletions

View File

@ -27,7 +27,12 @@ TUPLE_DEF2(
(rssi_max, uint8_t)) (rssi_max, uint8_t))
/* Register globally the oplist */ /* Register globally the oplist */
#define M_OPL_SubGhzFrequencyAnalyzerLogItem_t() \ #define M_OPL_SubGhzFrequencyAnalyzerLogItem_t() \
TUPLE_OPLIST(SubGhzFrequencyAnalyzerLogItem, M_POD_OPLIST, M_DEFAULT_OPLIST, M_DEFAULT_OPLIST) TUPLE_OPLIST( \
SubGhzFrequencyAnalyzerLogItem, \
M_DEFAULT_OPLIST, \
M_DEFAULT_OPLIST, \
M_DEFAULT_OPLIST, \
M_DEFAULT_OPLIST)
/* Define the array, register the oplist and define further algorithms on it */ /* Define the array, register the oplist and define further algorithms on it */
ARRAY_DEF(SubGhzFrequencyAnalyzerLogItemArray, SubGhzFrequencyAnalyzerLogItem_t) ARRAY_DEF(SubGhzFrequencyAnalyzerLogItemArray, SubGhzFrequencyAnalyzerLogItem_t)

View File

@ -296,7 +296,9 @@ static FuriStringUTF8State state_to_furi_state(m_str1ng_utf8_state_e state) {
} }
void furi_string_utf8_decode(char c, FuriStringUTF8State* state, FuriStringUnicodeValue* unicode) { void furi_string_utf8_decode(char c, FuriStringUTF8State* state, FuriStringUnicodeValue* unicode) {
string_unicode_t m_u = *unicode;
m_str1ng_utf8_state_e m_state = furi_state_to_state(*state); m_str1ng_utf8_state_e m_state = furi_state_to_state(*state);
m_str1ng_utf8_decode(c, &m_state, unicode); m_str1ng_utf8_decode(c, &m_state, &m_u);
*state = state_to_furi_state(m_state); *state = state_to_furi_state(m_state);
*unicode = m_u;
} }

View File

@ -633,20 +633,17 @@ void furi_string_utf8_decode(char c, FuriStringUTF8State* state, FuriStringUnico
* @brief Search for a string (or C string) in a string * @brief Search for a string (or C string) in a string
* (string, [c]string[, start=0]) * (string, [c]string[, start=0])
*/ */
#define furi_string_search(v, ...) \ #define furi_string_search(...) \
M_APPLY( \ M_APPLY( \
FURI_STRING_SELECT3, \ FURI_STRING_SELECT3, \
furi_string_search, \ furi_string_search, \
furi_string_search_str, \ furi_string_search_str, \
v, \ M_DEFAULT_ARGS(3, (0), __VA_ARGS__))
M_IF_DEFAULT1(0, __VA_ARGS__))
/** /**
* @brief Search for a C string in a string * @brief Search for a C string in a string
* (string, cstring[, start=0]) * (string, cstring[, start=0])
*/ */
#define furi_string_search_str(v, ...) \ #define furi_string_search_str(...) furi_string_search_str(M_DEFAULT_ARGS(3, (0), __VA_ARGS__))
M_APPLY(furi_string_search_str, v, M_IF_DEFAULT1(0, __VA_ARGS__))
/** /**
* @brief Test if the string starts with the given string (or C string). * @brief Test if the string starts with the given string (or C string).
@ -672,41 +669,36 @@ void furi_string_utf8_decode(char c, FuriStringUTF8State* state, FuriStringUnico
* @brief Trim a string from the given set of characters (default is " \n\r\t"). * @brief Trim a string from the given set of characters (default is " \n\r\t").
* (string[, set=" \n\r\t"]) * (string[, set=" \n\r\t"])
*/ */
#define furi_string_trim(...) M_APPLY(furi_string_trim, M_IF_DEFAULT1(" \n\r\t", __VA_ARGS__)) #define furi_string_trim(...) furi_string_trim(M_DEFAULT_ARGS(2, (" \n\r\t"), __VA_ARGS__))
/** /**
* @brief Search for a character in a string. * @brief Search for a character in a string.
* (string, character[, start=0]) * (string, character[, start=0])
*/ */
#define furi_string_search_char(v, ...) \ #define furi_string_search_char(...) furi_string_search_char(M_DEFAULT_ARGS(3, (0), __VA_ARGS__))
M_APPLY(furi_string_search_char, v, M_IF_DEFAULT1(0, __VA_ARGS__))
/** /**
* @brief Reverse Search for a character in a string. * @brief Reverse Search for a character in a string.
* (string, character[, start=0]) * (string, character[, start=0])
*/ */
#define furi_string_search_rchar(v, ...) \ #define furi_string_search_rchar(...) furi_string_search_rchar(M_DEFAULT_ARGS(3, (0), __VA_ARGS__))
M_APPLY(furi_string_search_rchar, v, M_IF_DEFAULT1(0, __VA_ARGS__))
/** /**
* @brief Replace a string to another string (or C string to another C string) in a string. * @brief Replace a string to another string (or C string to another C string) in a string.
* (string, [c]string, [c]string[, start=0]) * (string, [c]string, [c]string[, start=0])
*/ */
#define furi_string_replace(a, b, ...) \ #define furi_string_replace(...) \
M_APPLY( \ M_APPLY( \
FURI_STRING_SELECT4, \ FURI_STRING_SELECT4, \
furi_string_replace, \ furi_string_replace, \
furi_string_replace_str, \ furi_string_replace_str, \
a, \ M_DEFAULT_ARGS(4, (0), __VA_ARGS__))
b, \
M_IF_DEFAULT1(0, __VA_ARGS__))
/** /**
* @brief Replace a C string to another C string in a string. * @brief Replace a C string to another C string in a string.
* (string, cstring, cstring[, start=0]) * (string, cstring, cstring[, start=0])
*/ */
#define furi_string_replace_str(a, b, ...) \ #define furi_string_replace_str(...) furi_string_replace_str(M_DEFAULT_ARGS(4, (0), __VA_ARGS__))
M_APPLY(furi_string_replace_str, a, b, M_IF_DEFAULT1(0, __VA_ARGS__))
/** /**
* @brief INIT OPLIST for FuriString. * @brief INIT OPLIST for FuriString.
@ -743,4 +735,4 @@ void furi_string_utf8_decode(char c, FuriStringUTF8State* state, FuriStringUnico
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif

View File

@ -2,15 +2,16 @@
#include <m-core.h> #include <m-core.h>
#define M_INIT_DUP(a) ((a) = strdup("")) #define M_INIT_DUP(a) ((a) = strdup(""))
#define M_SET_DUP(a, b) (M_CHECK_DEFAULT_TYPE(a), free((void*)a), (a) = strdup(b)) #define M_INIT_SET_DUP(a, b) ((a) = strdup(b))
#define M_SET_DUP(a, b) (free((void*)a), (a) = strdup(b))
#define M_CLEAR_DUP(a) (free((void*)a)) #define M_CLEAR_DUP(a) (free((void*)a))
#define M_CSTR_DUP_OPLIST \ #define M_CSTR_DUP_OPLIST \
(INIT(M_INIT_DUP), \ (INIT(M_INIT_DUP), \
INIT_SET(M_SET_DUP), \ INIT_SET(M_INIT_SET_DUP), \
SET(M_SET_DUP), \ SET(M_SET_DUP), \
CLEAR(M_CLEAR_DUP), \ CLEAR(M_CLEAR_DUP), \
HASH(m_core_cstr_hash), \ HASH(m_core_cstr_hash), \
EQUAL(M_CSTR_EQUAL), \ EQUAL(M_CSTR_EQUAL), \
CMP(strcmp), \ CMP(strcmp), \
TYPE(const char*)) TYPE(const char*))