int luaopen_icu_ufile(lua_State *L) { int IDX_UFILE_META, IDX_UFILE_LIB, IDX_USTRING_META, IDX_USTRING_POOL; const luaL_Reg* lib_entry; static const luaL_Reg null_entry = {NULL,NULL}; icu4lua_requireustringlib(L); icu4lua_pushustringmetatable(L); IDX_USTRING_META = lua_gettop(L); icu4lua_pushustringpool(L); IDX_USTRING_POOL = lua_gettop(L); luaL_newmetatable(L, "UFILE*"); luaL_register(L, NULL, icu_ufile_meta); IDX_UFILE_META = lua_gettop(L); luaL_register(L, "icu.ufile", &null_entry); IDX_UFILE_LIB = lua_gettop(L); for (lib_entry = icu_ufile_lib; lib_entry->name; lib_entry++) { lua_pushvalue(L, IDX_UFILE_META); lua_pushvalue(L, IDX_USTRING_META); lua_pushvalue(L, IDX_USTRING_POOL); lua_pushnil(L); lua_pushcclosure(L, lib_entry->func, 4); lua_setfield(L, IDX_UFILE_LIB, lib_entry->name); } lua_pushvalue(L, IDX_UFILE_LIB); lua_setfield(L, IDX_UFILE_META, "__index"); lua_settop(L, IDX_UFILE_LIB); return 1; }
int luaopen_icu_collator(lua_State *L) { int IDX_COLLATOR_META, IDX_COLLATOR_LIB, IDX_USTRING_META, IDX_USTRING_POOL; const luaL_Reg* lib_entry; const luaL_Reg null_entry = {NULL,NULL}; const collatorConstant* lib_constant; icu4lua_requireustringlib(L); luaL_newmetatable(L, "icu.collator"); #if LUA_VERSION_NUM >= 502 luaL_setfuncs(L, icu_collator_meta, 0); #else luaL_register(L, NULL, icu_collator_meta); #endif IDX_COLLATOR_META = lua_gettop(L); icu4lua_pushustringmetatable(L); IDX_USTRING_META = lua_gettop(L); icu4lua_pushustringpool(L); IDX_USTRING_POOL = lua_gettop(L); #if LUA_VERSION_NUM >= 502 lua_newtable(L); IDX_COLLATOR_LIB = lua_gettop(L); lua_pushvalue(L, IDX_COLLATOR_META); lua_pushvalue(L, IDX_USTRING_META); lua_pushvalue(L, IDX_USTRING_POOL); luaL_setfuncs(L, icu_collator_lib, 3); #else luaL_register(L, "icu.collator", &null_entry); IDX_COLLATOR_LIB = lua_gettop(L); for (lib_entry = icu_collator_lib; lib_entry->name; lib_entry++) { lua_pushstring(L, lib_entry->name); lua_pushvalue(L, IDX_COLLATOR_META); lua_pushvalue(L, IDX_USTRING_META); lua_pushvalue(L, IDX_USTRING_POOL); lua_pushcclosure(L, lib_entry->func, 3); lua_rawset(L, IDX_COLLATOR_LIB); } #endif for (lib_constant = icu_collator_lib_constants; lib_constant->name; lib_constant++) { lua_pushstring(L, lib_constant->name); lua_pushnumber(L, lib_constant->value); lua_rawset(L, IDX_COLLATOR_LIB); } lua_pushvalue(L, IDX_COLLATOR_LIB); lua_setfield(L, IDX_COLLATOR_META, "__index"); lua_settop(L, IDX_COLLATOR_LIB); return 1; }
int luaopen_icu_normalizer(lua_State *L) { int IDX_NORMALIZER_LIB, IDX_USTRING_META, IDX_USTRING_POOL; static const luaL_Reg null_entry = {NULL,NULL}; const luaL_Reg* lib_entry; const normalizer_constant* lib_constant; icu4lua_requireustringlib(L); icu4lua_pushustringmetatable(L); IDX_USTRING_META = lua_gettop(L); icu4lua_pushustringpool(L); IDX_USTRING_POOL = lua_gettop(L); #if LUA_VERSION_NUM >= 502 lua_newtable(L); IDX_NORMALIZER_LIB = lua_gettop(L); lua_pushvalue(L, IDX_USTRING_META); lua_pushvalue(L, IDX_USTRING_POOL); luaL_setfuncs(L, icu_normalizer_lib, 2); #else luaL_register(L, "icu.normalizer", &null_entry); IDX_NORMALIZER_LIB = lua_gettop(L); for (lib_entry = icu_normalizer_lib; lib_entry->name; lib_entry++) { lua_pushvalue(L, IDX_USTRING_META); lua_pushvalue(L, IDX_USTRING_POOL); lua_pushcclosure(L, lib_entry->func, 2); lua_setfield(L, IDX_NORMALIZER_LIB, lib_entry->name); } #endif for (lib_constant = normalizer_constants; lib_constant->name; lib_constant++) { lua_pushnumber(L, lib_constant->value); lua_setfield(L, IDX_NORMALIZER_LIB, lib_constant->name); } lua_settop(L, IDX_NORMALIZER_LIB); return 1; }