lua-users home
lua-l archive

Re: How to locate the implementation of a specific function, e.g. string.byte?

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]


Hi Sunshilong:
On Sat, Oct 10, 2020 at 9:47 AM 孙世龙 sunshilong <sunshilong369@gmail.com> wrote:
> How to locate the implementation of a specific function, e.g. string.byte?
> I hope to dig deep in the related code snippet.
> I would be grateful to have some help with this question.
Source code is pretty easy to follow. Normally functions are
registered in src/l*lib.c. You can start by grepping for
luaL_setfuncs, which is the function most normally used to register
them, and find things like ( in 5.4.0 sources )
src/lstrlib.c
1786: luaL_setfuncs(L, stringmetamethods, 0);
Then you can go there and see:
 1761 static const luaL_Reg strlib[] = {
 1762 {"byte", str_byte},
 1763 {"char", str_char},
And from these is just a matter of searching for it:
 176 static int str_byte (lua_State *L) {
 177 size_t l;
 178 const char *s = luaL_checklstring(L, 1, &l);
This method works generally for me when I'm curious on how a lib
function is done.
Francisco Olarte.

AltStyle によって変換されたページ (->オリジナル) /