diff options
author | Luis Ontanon <luis.ontanon@gmail.com> | 2006-02-19 21:51:34 +0000 |
---|---|---|
committer | Luis Ontanon <luis.ontanon@gmail.com> | 2006-02-19 21:51:34 +0000 |
commit | c3c7f8a0c3a9fdc2ffb7cc5d84b5c15a593c942d (patch) | |
tree | e3ca4a9a931f7b85df42b57da85befd12827facb /plugins/lua | |
parent | 97d857e20bd5365f244e3bbe7e2fb64110b4349d (diff) |
- Use lua 5.1
- Compress *_register() functions
svn path=/trunk/; revision=17354
Diffstat (limited to 'plugins/lua')
-rw-r--r-- | plugins/lua/lua_dumper.c | 20 | ||||
-rw-r--r-- | plugins/lua/lua_gui.c | 11 | ||||
-rw-r--r-- | plugins/lua/lua_pinfo.c | 33 | ||||
-rw-r--r-- | plugins/lua/lua_proto.c | 69 | ||||
-rw-r--r-- | plugins/lua/lua_tap.c | 17 | ||||
-rw-r--r-- | plugins/lua/lua_tree.c | 42 | ||||
-rw-r--r-- | plugins/lua/lua_tvb.c | 38 | ||||
-rw-r--r-- | plugins/lua/packet-lua.c | 10 | ||||
-rw-r--r-- | plugins/lua/packet-lua.h | 42 |
9 files changed, 72 insertions, 210 deletions
diff --git a/plugins/lua/lua_dumper.c b/plugins/lua/lua_dumper.c index 0e29a15112..af351935ad 100644 --- a/plugins/lua/lua_dumper.c +++ b/plugins/lua/lua_dumper.c @@ -111,13 +111,8 @@ static int PseudoHeader_nettl(lua_State* L) { luaL_error(L,"not implemented"); r static int PseudoHeader_k12(lua_State* L) { luaL_error(L,"not implemented"); return 0; } #endif -static luaL_reg PseudoHeader_meta[] = { - {0,0} -}; - int PseudoHeader_register(lua_State* L) { luaL_newmetatable(L, PSEUDOHEADER); - luaL_openlib(L, NULL, PseudoHeader_meta, 0); lua_pushstring(L, "PH_MTP2"); lua_pushcfunction(L, PseudoHeader_mtp2); @@ -321,24 +316,11 @@ static const luaL_reg Dumper_methods[] = static const luaL_reg Dumper_meta[] = { - {"__index", Dumper_new}, {0, 0} }; int Dumper_register(lua_State* L) { - dumper_encaps = g_hash_table_new(g_direct_hash,g_direct_equal); - - luaL_openlib(L, DUMPER, Dumper_methods, 0); - luaL_newmetatable(L, DUMPER); - luaL_openlib(L, 0, Dumper_meta, 0); - lua_pushliteral(L, "__index"); - lua_pushvalue(L, -3); - lua_rawset(L, -3); - lua_pushliteral(L, "__metatable"); - lua_pushvalue(L, -3); - lua_rawset(L, -3); - lua_pop(L, 1); - + REGISTER_FULL_CLASS(DUMPER, Dumper_methods, Dumper_meta) return 1; } diff --git a/plugins/lua/lua_gui.c b/plugins/lua/lua_gui.c index 8f3a2683f5..5380f4ee46 100644 --- a/plugins/lua/lua_gui.c +++ b/plugins/lua/lua_gui.c @@ -362,16 +362,7 @@ int TextWindow_register(lua_State* L) { ops = funnel_get_funnel_ops(); - luaL_openlib(L, TEXT_WINDOW, TextWindow_methods, 0); - luaL_newmetatable(L, TEXT_WINDOW); - luaL_openlib(L, 0, TextWindow_meta, 0); - lua_pushliteral(L, "__index"); - lua_pushvalue(L, -3); - lua_rawset(L, -3); - lua_pushliteral(L, "__metatable"); - lua_pushvalue(L, -3); - lua_rawset(L, -3); - lua_pop(L, 1); + REGISTER_FULL_CLASS(TEXT_WINDOW, TextWindow_methods, TextWindow_meta); return 1; } diff --git a/plugins/lua/lua_pinfo.c b/plugins/lua/lua_pinfo.c index 5601bd82b2..4edee21531 100644 --- a/plugins/lua/lua_pinfo.c +++ b/plugins/lua/lua_pinfo.c @@ -300,17 +300,7 @@ static const luaL_reg Address_meta[] = { int Address_register(lua_State *L) { - luaL_openlib(L, ADDRESS, Address_methods, 0); - luaL_newmetatable(L, ADDRESS); - luaL_openlib(L, 0, Address_meta, 0); - lua_pushliteral(L, "__index"); - lua_pushvalue(L, -3); - lua_rawset(L, -3); - lua_pushliteral(L, "__metatable"); - lua_pushvalue(L, -3); - lua_rawset(L, -3); - lua_pop(L, 1); - + REGISTER_FULL_CLASS(ADDRESS, Address_methods, Address_meta); return 1; } @@ -469,17 +459,7 @@ static const luaL_reg Column_meta[] = { int Column_register(lua_State *L) { - luaL_openlib(L, COLUMN, Column_methods, 0); - luaL_newmetatable(L, COLUMN); - luaL_openlib(L, 0, Column_meta, 0); - lua_pushliteral(L, "__index"); - lua_pushvalue(L, -3); - lua_rawset(L, -3); - lua_pushliteral(L, "__metatable"); - lua_pushvalue(L, -3); - lua_rawset(L, -3); - lua_pop(L, 1); - + REGISTER_FULL_CLASS(COLUMN, Column_methods, Column_methods); return 1; } @@ -560,9 +540,7 @@ static const luaL_reg Columns_meta[] = { int Columns_register(lua_State *L) { - luaL_newmetatable(L, COLUMNS); - luaL_openlib(L, NULL, Columns_meta, 0); - + REGISTER_META(COLUMNS,Columns_meta); return 1; } @@ -823,11 +801,8 @@ static const luaL_reg Pinfo_meta[] = { }; int Pinfo_register(lua_State* L) { - luaL_newmetatable(L, PINFO); - luaL_openlib(L, NULL, Pinfo_meta, 0); - + REGISTER_META(PINFO,Pinfo_meta); outstanding_stuff = g_ptr_array_new(); - return 1; } diff --git a/plugins/lua/lua_proto.c b/plugins/lua/lua_proto.c index 31da270b10..aaa73bf813 100644 --- a/plugins/lua/lua_proto.c +++ b/plugins/lua/lua_proto.c @@ -119,17 +119,7 @@ static const luaL_reg Pref_meta[] = { static int Pref_register(lua_State* L) { - luaL_openlib(L, PREF, Pref_methods, 0); - luaL_newmetatable(L, PREF); - luaL_openlib(L, 0, Pref_meta, 0); - lua_pushliteral(L, "__index"); - lua_pushvalue(L, -3); - lua_rawset(L, -3); - lua_pushliteral(L, "__metatable"); - lua_pushvalue(L, -3); - lua_rawset(L, -3); - lua_pop(L, 1); - + REGISTER_FULL_CLASS(PREF, Pref_methods, Pref_meta); return 1; } @@ -238,9 +228,7 @@ static const luaL_reg Prefs_meta[] = { }; static int Prefs_register(lua_State* L) { - luaL_newmetatable(L, PREFS); - luaL_openlib(L, NULL, Prefs_meta, 0); - + REGISTER_META(PREFS, Prefs_meta); return 1; } @@ -579,16 +567,7 @@ int ProtoField_register(lua_State* L) { const eth_ft_types_t* ts; const struct base_display_string_t* b; - luaL_openlib(L, PROTO_FIELD, ProtoField_methods, 0); - luaL_newmetatable(L, PROTO_FIELD); - luaL_openlib(L, 0, ProtoField_meta, 0); - lua_pushliteral(L, "__index"); - lua_pushvalue(L, -3); - lua_rawset(L, -3); - lua_pushliteral(L, "__metatable"); - lua_pushvalue(L, -3); - lua_rawset(L, -3); - lua_pop(L, 1); +REGISTER_FULL_CLASS(PROTO_FIELD, ProtoField_methods, ProtoField_meta); /* add a global FT_* variable for each FT_ type */ for (ts = ftenums; ts->str; ts++) { @@ -711,17 +690,7 @@ static const luaL_reg ProtoFieldArray_meta[] = { }; int ProtoFieldArray_register(lua_State* L) { - luaL_openlib(L, PROTO_FIELD_ARRAY, ProtoFieldArray_methods, 0); - luaL_newmetatable(L, PROTO_FIELD_ARRAY); - luaL_openlib(L, 0, ProtoFieldArray_meta, 0); - lua_pushliteral(L, "__index"); - lua_pushvalue(L, -3); - lua_rawset(L, -3); - lua_pushliteral(L, "__metatable"); - lua_pushvalue(L, -3); - lua_rawset(L, -3); - lua_pop(L, 1); - + REGISTER_FULL_CLASS(PROTO_FIELD_ARRAY, ProtoFieldArray_methods, ProtoFieldArray_meta); return 1; } @@ -968,9 +937,9 @@ static const luaL_reg Proto_meta[] = { }; int Proto_register(lua_State* L) { - luaL_newmetatable(L, PROTO); - luaL_openlib(L, NULL, Proto_meta, 0); - + + REGISTER_META(PROTO, Proto_meta); + lua_pushstring(L, "register_postdissector"); lua_pushcfunction(L, Proto_register_postdissector); lua_settable(L, LUA_GLOBALSINDEX); @@ -1046,17 +1015,7 @@ static const luaL_reg Dissector_meta[] = { }; int Dissector_register(lua_State* L) { - luaL_openlib(L, DISSECTOR, Dissector_methods, 0); - luaL_newmetatable(L, DISSECTOR); - luaL_openlib(L, 0, Dissector_meta, 0); - lua_pushliteral(L, "__index"); - lua_pushvalue(L, -3); - lua_rawset(L, -3); - lua_pushliteral(L, "__metatable"); - lua_pushvalue(L, -3); - lua_rawset(L, -3); - lua_pop(L, 1); - + REGISTER_FULL_CLASS(DISSECTOR, Dissector_methods, Dissector_meta); return 1; } @@ -1310,17 +1269,7 @@ static const luaL_reg DissectorTable_meta[] = { }; int DissectorTable_register(lua_State* L) { - luaL_openlib(L, DISSECTOR_TABLE, DissectorTable_methods, 0); - luaL_newmetatable(L, DISSECTOR_TABLE); - luaL_openlib(L, 0, DissectorTable_meta, 0); - lua_pushliteral(L, "__index"); - lua_pushvalue(L, -3); - lua_rawset(L, -3); - lua_pushliteral(L, "__metatable"); - lua_pushvalue(L, -3); - lua_rawset(L, -3); - lua_pop(L, 1); - + REGISTER_FULL_CLASS(DISSECTOR_TABLE, DissectorTable_methods, DissectorTable_meta); return 1; } diff --git a/plugins/lua/lua_tap.c b/plugins/lua/lua_tap.c index 1f8dcbb895..a1cef0f71f 100644 --- a/plugins/lua/lua_tap.c +++ b/plugins/lua/lua_tap.c @@ -201,9 +201,8 @@ int Field_register(lua_State* L) { wanted_fields = g_ptr_array_new(); - luaL_newmetatable(L, FIELD); - luaL_openlib(L, 0, Field_meta, 0); - + REGISTER_META(FIELD, Field_meta); + lua_pushstring(L, "Field"); lua_pushcfunction(L, Field_get); lua_settable(L, LUA_GLOBALSINDEX); @@ -476,18 +475,12 @@ static const luaL_reg Tap_meta[] = { }; int Tap_register(lua_State* L) { - luaL_newmetatable(L, TAP); - luaL_openlib(L, 0, Tap_meta, 0); - - - lua_pushstring(L, "new_tap"); + REGISTER_META(TAP, Tap_meta); + + lua_pushstring(L, "Tap"); lua_pushcfunction(L, Tap_new); lua_settable(L, LUA_GLOBALSINDEX); - lua_pushstring(L, "remove_tap"); - lua_pushcfunction(L, Tap_remove); - lua_settable(L, LUA_GLOBALSINDEX); - return 1; } diff --git a/plugins/lua/lua_tree.c b/plugins/lua/lua_tree.c index f6fa3474a1..178c21a9f6 100644 --- a/plugins/lua/lua_tree.c +++ b/plugins/lua/lua_tree.c @@ -110,17 +110,7 @@ static const luaL_reg SubTree_meta[] = { }; int SubTree_register(lua_State* L) { - luaL_openlib(L, SUBTREE, SubTree_methods, 0); - luaL_newmetatable(L, SUBTREE); - luaL_openlib(L, 0, SubTree_meta, 0); - lua_pushliteral(L, "__index"); - lua_pushvalue(L, -3); - lua_rawset(L, -3); - lua_pushliteral(L, "__metatable"); - lua_pushvalue(L, -3); - lua_rawset(L, -3); - lua_pop(L, 1); - + REGISTER_FULL_CLASS(SUBTREE, SubTree_methods, SubTree_meta); return 1; } @@ -289,17 +279,7 @@ static const luaL_reg ProtoTree_meta[] = { }; int ProtoTree_register(lua_State* L) { - luaL_openlib(L, PROTO_TREE, ProtoTree_methods, 0); - luaL_newmetatable(L, PROTO_TREE); - luaL_openlib(L, 0, ProtoTree_meta, 0); - lua_pushliteral(L, "__index"); - lua_pushvalue(L, -3); - lua_rawset(L, -3); - lua_pushliteral(L, "__metatable"); - lua_pushvalue(L, -3); - lua_rawset(L, -3); - lua_pop(L, 1); - + REGISTER_FULL_CLASS(PROTO_TREE, ProtoTree_methods, ProtoTree_meta); return 1; } @@ -479,21 +459,11 @@ static const luaL_reg ProtoItem_meta[] = { int ProtoItem_register(lua_State *L) { - const struct _expert_severity* s; - - luaL_openlib(L, ITEM, ProtoItem_methods, 0); - luaL_newmetatable(L, ITEM); - luaL_openlib(L, 0, ProtoItem_meta, 0); - lua_pushliteral(L, "__index"); - lua_pushvalue(L, -3); - lua_rawset(L, -3); - lua_pushliteral(L, "__metatable"); - lua_pushvalue(L, -3); - lua_rawset(L, -3); - lua_pop(L, 1); - + const struct _expert_severity* s; + + REGISTER_FULL_CLASS(ITEM, ProtoItem_methods, ProtoItem_meta); outstanding_stuff = g_ptr_array_new(); - + for(s = severities; s->str; s++) { lua_pushstring(L, s->str); lua_pushnumber(L, s->val); diff --git a/plugins/lua/lua_tvb.c b/plugins/lua/lua_tvb.c index dab2468119..9fab0db625 100644 --- a/plugins/lua/lua_tvb.c +++ b/plugins/lua/lua_tvb.c @@ -253,17 +253,7 @@ static const luaL_reg ByteArray_meta[] = { }; int ByteArray_register(lua_State* L) { - luaL_openlib(L, BYTE_ARRAY, ByteArray_methods, 0); - luaL_newmetatable(L, BYTE_ARRAY); - luaL_openlib(L, 0, ByteArray_meta, 0); - lua_pushliteral(L, "__index"); - lua_pushvalue(L, -3); - lua_rawset(L, -3); - lua_pushliteral(L, "__metatable"); - lua_pushvalue(L, -3); - lua_rawset(L, -3); - lua_pop(L, 1); - + REGISTER_FULL_CLASS(BYTE_ARRAY, ByteArray_methods, ByteArray_methods); return 1; } @@ -411,17 +401,7 @@ static const luaL_reg Tvb_meta[] = { }; int Tvb_register(lua_State* L) { - luaL_openlib(L, TVB, Tvb_methods, 0); - luaL_newmetatable(L, TVB); - luaL_openlib(L, 0, Tvb_meta, 0); - lua_pushliteral(L, "__index"); - lua_pushvalue(L, -3); - lua_rawset(L, -3); - lua_pushliteral(L, "__metatable"); - lua_pushvalue(L, -3); - lua_rawset(L, -3); - lua_pop(L, 1); - + REGISTER_FULL_CLASS(TVB, Tvb_methods, Tvb_meta); return 1; } @@ -727,19 +707,7 @@ static const luaL_reg TvbRange_meta[] = { }; int TvbRange_register(lua_State* L) { - outstanding_stuff = g_ptr_array_new(); - - luaL_openlib(L, TVB_RANGE, TvbRange_methods, 0); - luaL_newmetatable(L, TVB_RANGE); - luaL_openlib(L, 0, TvbRange_meta, 0); - lua_pushliteral(L, "__index"); - lua_pushvalue(L, -3); - lua_rawset(L, -3); - lua_pushliteral(L, "__metatable"); - lua_pushvalue(L, -3); - lua_rawset(L, -3); - lua_pop(L, 1); - + REGISTER_FULL_CLASS(TVB_RANGE, TvbRange_methods, TvbRange_meta); return 1; } diff --git a/plugins/lua/packet-lua.c b/plugins/lua/packet-lua.c index 2839a55832..051182d999 100644 --- a/plugins/lua/packet-lua.c +++ b/plugins/lua/packet-lua.c @@ -307,15 +307,7 @@ void register_lua(void) { G_LOG_LEVEL_DEBUG, ops ? ops->logger : basic_logger, NULL); - /* initialize the lua machine */ - - L = lua_open(); - - /* load lua's standard library */ - luaopen_base(L); - luaopen_table(L); - luaopen_io(L); - luaopen_string(L); + INIT_LUA(L); /* load ethereal's API */ ProtoField_register(L); diff --git a/plugins/lua/packet-lua.h b/plugins/lua/packet-lua.h index 151b89570d..ac25ff932a 100644 --- a/plugins/lua/packet-lua.h +++ b/plugins/lua/packet-lua.h @@ -211,6 +211,48 @@ C shift##C(lua_State* L,int i) { \ } \ } + +#ifdef HAVE_LUA_5_1 + +#define REGISTER_FULL_CLASS(CN,methods,meta) { \ + luaL_register (L, CN, methods); \ + luaL_newmetatable (L, CN); \ + luaL_register (L, NULL, meta); \ + lua_pushliteral(L, "__index"); \ + lua_pushvalue(L, -3); \ + lua_rawset(L, -3); \ + lua_pushliteral(L, "__metatable"); \ + lua_pushvalue(L, -3); \ + lua_rawset(L, -3); \ + lua_pop(L, 1); \ +} + +#define REGISTER_META(CN,meta) luaL_newmetatable (L, CN); luaL_register (L, NULL, meta); + +#define INIT_LUA(L) L = luaL_newstate(); luaL_openlibs(L); + +#else /* Lua 5.0 */ + +#define REGISTER_FULL_CLASS(CN,methods,meta) { \ + luaL_openlib(L, CN, methods, 0); \ + luaL_newmetatable(L, CN); \ + luaL_openlib(L, 0, meta, 0); \ + lua_pushliteral(L, "__index"); \ + lua_pushvalue(L, -3); \ + lua_rawset(L, -3); \ + lua_pushliteral(L, "__metatable"); \ + lua_pushvalue(L, -3); \ + lua_rawset(L, -3); \ + lua_pop(L, 1); \ +} + +#define REGISTER_META(CN,meta) luaL_newmetatable (L, CN); luaL_openlib (L, NULL, meta, 0); + +#define INIT_LUA(L) L = lua_open(); luaopen_base(L); luaopen_table(L); luaopen_io(L); luaopen_string(L); + +#endif + + extern packet_info* lua_pinfo; extern proto_tree* lua_tree; extern tvbuff_t* lua_tvb; |