diff options
Diffstat (limited to 'core/src/xmake/string/lastof.c')
| -rw-r--r-- | core/src/xmake/string/lastof.c | 52 |
1 files changed, 28 insertions, 24 deletions
diff --git a/core/src/xmake/string/lastof.c b/core/src/xmake/string/lastof.c index 8e6f42300..8785e3987 100644 --- a/core/src/xmake/string/lastof.c +++ b/core/src/xmake/string/lastof.c @@ -22,8 +22,8 @@ /* ////////////////////////////////////////////////////////////////////////////////////// * trace */ -#define TB_TRACE_MODULE_NAME "string_lastof" -#define TB_TRACE_MODULE_DEBUG (0) +#define TB_TRACE_MODULE_NAME "string_lastof" +#define TB_TRACE_MODULE_DEBUG (0) /* ////////////////////////////////////////////////////////////////////////////////////// * includes @@ -33,16 +33,14 @@ /* ////////////////////////////////////////////////////////////////////////////////////// * private implementation */ -static tb_void_t xm_string_lastof_str(lua_State* lua, tb_char_t const* cstr, tb_size_t nstr, tb_char_t const* csubstr, tb_size_t nsubstr) -{ +static tb_void_t xm_string_lastof_str( + lua_State *lua, tb_char_t const *cstr, tb_size_t nstr, tb_char_t const *csubstr, tb_size_t nsubstr) { // find it - tb_char_t const* curr = tb_null; - tb_char_t const* next = cstr; - do - { + tb_char_t const *curr = tb_null; + tb_char_t const *next = cstr; + do { next = tb_strstr(next, csubstr); // faster than tb_strnstr() - if (next) - { + if (next) { curr = next; next += nsubstr; } @@ -50,14 +48,19 @@ static tb_void_t xm_string_lastof_str(lua_State* lua, tb_char_t const* cstr, tb_ } while (!next); // found? - if (curr) lua_pushinteger(lua, curr - cstr + 1); - else lua_pushnil(lua); + if (curr) { + lua_pushinteger(lua, curr - cstr + 1); + } else { + lua_pushnil(lua); + } } -static tb_void_t xm_string_lastof_chr(lua_State* lua, tb_char_t const* cstr, tb_size_t nstr, tb_char_t ch) -{ - tb_char_t const* pos = tb_strrchr(cstr, ch); // faster than tb_strnrchr() - if (pos) lua_pushinteger(lua, pos - cstr + 1); - else lua_pushnil(lua); +static tb_void_t xm_string_lastof_chr(lua_State *lua, tb_char_t const *cstr, tb_size_t nstr, tb_char_t ch) { + tb_char_t const *pos = tb_strrchr(cstr, ch); // faster than tb_strnrchr() + if (pos) { + lua_pushinteger(lua, pos - cstr + 1); + } else { + lua_pushnil(lua); + } } /* ////////////////////////////////////////////////////////////////////////////////////// @@ -69,22 +72,23 @@ static tb_void_t xm_string_lastof_chr(lua_State* lua, tb_char_t const* cstr, tb_ * @param str the string * @param substr the substring */ -tb_int_t xm_string_lastof(lua_State* lua) -{ - // check +tb_int_t xm_string_lastof(lua_State *lua) { tb_assert_and_check_return_val(lua, 0); // get string size_t nstr = 0; - tb_char_t const* cstr = luaL_checklstring(lua, 1, &nstr); + tb_char_t const *cstr = luaL_checklstring(lua, 1, &nstr); // get substring size_t nsubstr = 0; - tb_char_t const* csubstr = luaL_checklstring(lua, 2, &nsubstr); + tb_char_t const *csubstr = luaL_checklstring(lua, 2, &nsubstr); // lastof it lua_newtable(lua); - if (nsubstr == 1) xm_string_lastof_chr(lua, cstr, (tb_size_t)nstr, csubstr[0]); - else xm_string_lastof_str(lua, cstr, (tb_size_t)nstr, csubstr, nsubstr); + if (nsubstr == 1) { + xm_string_lastof_chr(lua, cstr, (tb_size_t)nstr, csubstr[0]); + } else { + xm_string_lastof_str(lua, cstr, (tb_size_t)nstr, csubstr, nsubstr); + } return 1; } |
