luaL_openlib, luaL_findstring,
1 luaL_openlib
// lauxlib.h ÆÄÀÏ¿¡ Á¤ÀÇ
typedef struct luaL_reg {
const char *name;
lua_CFunction func;
} luaL_reg;
void luaL_openlib (lua_State *L, const char *libname, const luaL_reg *l, int nup);
ÆÐŰÁö(ÇÔ¼öÀÇ ¹À½)¸¦ µî·ÏÇÒ ¶§ »ç¿ëÇÏ´Â ÇÔ¼ö´Ù. ÀμöÀÇ ¿ªÇÒÀº ´ÙÀ½°ú °°´Ù.
- L : ·ç¾Æ ½ºÅ×ÀÌÆ® °´Ã¼
- libname : ÆÐŰÁöÀÇ À̸§
- l : µî·ÏÇÒ ÇÔ¼öµéÀÇ À̸§, Æ÷ÀÎÅÍ ¹è¿. ¹è¿ÀÇ ¸¶Áö¸· Ç׸ñÀº {NULL,NULL}ÀÇ ÇüÅÂÀ̾î¾ß ÇÑ´Ù.
- nup : °¢°¢ÀÇ ÇÔ¼ö°¡ °¡Áú upvalueÀÇ °¹¼ö
libname ¹®ÀÚ¿ÀÌ NULLÀÌ ¾Æ´Ñ °æ¿ì¿¡´Â ÇØ´çÇÏ´Â À̸§ÀÇ Àü¿ª Å×À̺íÀÌ »ý¼ºµÇ°í(ÀÌ¹Ì °°Àº À̸§ÀÇ Å×À̺íÀÌ Á¸ÀçÇÑ´Ù¸é ±×°ÍÀ» ÀÌ¿ëÇÑ´Ù), ±× Å×ÀÌºí ¾È¿¡ ¸ðµç ÇÔ¼öµéÀÌ µî·ÏµÈ´Ù. libname ¹®ÀÚ¿ÀÌ NULLÀÏ °æ¿ì¿¡´Â, Å×À̺íÀ» »ý¼ºÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó, ½ºÅÃÀÇ ¸Ç À§¿¡, ÇÔ¼öµéÀ» Áý¾î³ÖÀ» Å×À̺íÀÌ ÀÖ´Â °ÍÀ¸·Î °£ÁÖÇÑ´Ù.
»ç¿ë¹ý ¿¹Á¦¸¦ º¸ÀÚ.
static const struct luaL_reg arraylib[] = {
{"new", newarray},
{"set", setarray},
{"get", getarray},
{"size", getsize},
{NULL, NULL}
};
lua_openlib(L, "array", arraylib, 0);
a = array.new()
print(a);
print(array.size(a));
for i=1,1000 do
array.set(a, i, 1/i);
end
print(array.get(a, 10));
2 luaL_findstring
int luaL_findstring (const char *st, const char *const lst[]);
¹®ÀÚ¿ÀÇ ¹è¿ lst¿¡¼ ƯÁ¤ ¹®ÀÚ¿ st¸¦ ã¾Æ¼, ¹è¿ À妽º¸¦ ¹ÝȯÇÏ´Â ÇÔ¼ö´Ù. lst ¹®ÀÚ¿ ¹è¿Àº NULL ¹®ÀÚ¿·Î ³¡³ª¾ß ÇÑ´Ù. ¹®ÀÚ¿À» ãÀ» ¼ö ¾ø¾ú´Ù¸é -1À» ¹ÝȯÇÑ´Ù. ±×³É ÇÔ¼ö ÀÚü¸¦ º¸´Â °ÍÀÌ Â÷¶ó¸® ÀÌÇØ°¡ ºü¸¦ µí.
int luaL_findstring (const char *name, const char *const list[])
{
int i;
for (i=0; list[i]; i++)
if (strcmp(list[i], name) == 0)
return i;
return -1; /* name not found */
}
SeriousMoin v1 (koMoinMoin 1.0a4 Modified)