diff --git a/src/msg.nobj.lua b/src/msg.nobj.lua index a13a87b..efca3bf 100644 --- a/src/msg.nobj.lua +++ b/src/msg.nobj.lua @@ -28,10 +28,10 @@ object "zmq_msg_t" { typedef struct zmq_msg_t { - void *content; - unsigned char flags; - unsigned char vsm_size; - unsigned char vsm_data [30]; /* that '30' is from 'MAX_VSM_SIZE' */ + void *content; + unsigned char flags; + unsigned char vsm_size; + unsigned char vsm_data [30]; /* that '30' is from 'MAX_VSM_SIZE' */ } zmq_msg_t; typedef void (zmq_free_fn) (void *data, void *hint); diff --git a/src/pre_generated-zmq.nobj.c b/src/pre_generated-zmq.nobj.c index af09aee..9302a0e 100644 --- a/src/pre_generated-zmq.nobj.c +++ b/src/pre_generated-zmq.nobj.c @@ -28,9 +28,11 @@ #ifdef _MSC_VER -/* define some types that we need. */ +/* define some standard types missing on Windows. */ typedef __int32 int32_t; +typedef __int64 int64_t; typedef unsigned __int32 uint32_t; +typedef unsigned __int64 uint64_t; typedef int bool; #define FUNC_UNUSED @@ -153,27 +155,27 @@ typedef struct ffi_export_symbol { #define obj_type_id_zmq_msg_t 0 #define obj_type_zmq_msg_t_check(L, _index) \ - (zmq_msg_t *)obj_simple_udata_luacheck(L, _index, &(obj_type_zmq_msg_t)) + (zmq_msg_t *)obj_simple_udata_luacheck(L, _index, &(obj_type_zmq_msg_t)) #define obj_type_zmq_msg_t_delete(L, _index, flags) \ - (zmq_msg_t *)obj_simple_udata_luadelete(L, _index, &(obj_type_zmq_msg_t), flags) + (zmq_msg_t *)obj_simple_udata_luadelete(L, _index, &(obj_type_zmq_msg_t), flags) #define obj_type_zmq_msg_t_push(L, obj, flags) \ - obj_simple_udata_luapush(L, obj, sizeof(zmq_msg_t), &(obj_type_zmq_msg_t)) + obj_simple_udata_luapush(L, obj, sizeof(zmq_msg_t), &(obj_type_zmq_msg_t)) #define obj_type_id_ZMQ_Socket 1 #define obj_type_ZMQ_Socket_check(L, _index) \ - obj_udata_luacheck(L, _index, &(obj_type_ZMQ_Socket)) + obj_udata_luacheck(L, _index, &(obj_type_ZMQ_Socket)) #define obj_type_ZMQ_Socket_delete(L, _index, flags) \ - obj_udata_luadelete(L, _index, &(obj_type_ZMQ_Socket), flags) + obj_udata_luadelete(L, _index, &(obj_type_ZMQ_Socket), flags) #define obj_type_ZMQ_Socket_push(L, obj, flags) \ - obj_udata_luapush_weak(L, (void *)obj, &(obj_type_ZMQ_Socket), flags) + obj_udata_luapush_weak(L, (void *)obj, &(obj_type_ZMQ_Socket), flags) #define obj_type_id_ZMQ_Ctx 2 #define obj_type_ZMQ_Ctx_check(L, _index) \ - obj_udata_luacheck(L, _index, &(obj_type_ZMQ_Ctx)) + obj_udata_luacheck(L, _index, &(obj_type_ZMQ_Ctx)) #define obj_type_ZMQ_Ctx_delete(L, _index, flags) \ - obj_udata_luadelete(L, _index, &(obj_type_ZMQ_Ctx), flags) + obj_udata_luadelete(L, _index, &(obj_type_ZMQ_Ctx), flags) #define obj_type_ZMQ_Ctx_push(L, obj, flags) \ - obj_udata_luapush_weak(L, (void *)obj, &(obj_type_ZMQ_Ctx), flags) + obj_udata_luapush_weak(L, (void *)obj, &(obj_type_ZMQ_Ctx), flags) @@ -509,7 +511,6 @@ static void obj_type_register_constants(lua_State *L, const obj_const *constants } static void obj_type_register_package(lua_State *L, const reg_sub_module *type_reg) { - obj_type *type = type_reg->type; const luaL_reg *reg_list = type_reg->pub_funcs; /* create public functions table. */ @@ -529,7 +530,8 @@ static void obj_type_register(lua_State *L, const reg_sub_module *type_reg, int const obj_base *base = type_reg->bases; if(type_reg->is_package == 1) { - return obj_type_register_package(L, type_reg); + obj_type_register_package(L, type_reg); + return; } /* create public functions table. */ @@ -822,10 +824,10 @@ static const char zmq_ffi_lua_code[] = "-- try loading luajit's ffi\n" "\n" "typedef struct zmq_msg_t\n" "{\n" -" void *content;\n" -" unsigned char flags;\n" -" unsigned char vsm_size;\n" -" unsigned char vsm_data [30]; /* that '30' is from 'MAX_VSM_SIZE' */\n" +" void *content;\n" +" unsigned char flags;\n" +" unsigned char vsm_size;\n" +" unsigned char vsm_data [30]; /* that '30' is from 'MAX_VSM_SIZE' */\n" "} zmq_msg_t;\n" "\n" "typedef void (zmq_free_fn) (void *data, void *hint);\n" @@ -971,7 +973,10 @@ static const char zmq_ffi_lua_code[] = "-- try loading luajit's ffi\n" "local zmq_pub = _M\n" "\n" "\n" -"local C = ffi.load(\"zmq\",false)\n" +"local os_lib_table = {\n" +" [\"Windows\"] = \"libzmq\",\n" +"}\n" +"local C = ffi.load(os_lib_table[ffi.os] or \"zmq\")\n" "\n" "local OBJ_UDATA_CTX_SHOULD_FREE = (OBJ_UDATA_LAST_FLAG * 2)\n" "\n" @@ -1681,8 +1686,8 @@ static int zmq_msg_t__init_data__meth(lua_State *L) { static int zmq_msg_t__delete__meth(lua_State *L) { int this_flags = 0; zmq_msg_t * this = obj_type_zmq_msg_t_delete(L,1,&(this_flags)); - if(!(this_flags & OBJ_UDATA_FLAG_OWN)) { return 0; } ZMQ_Error rc_zmq_msg_close = 0; + if(!(this_flags & OBJ_UDATA_FLAG_OWN)) { return 0; } rc_zmq_msg_close = zmq_msg_close(this); /* check for error. */ if((0 != rc_zmq_msg_close)) { @@ -1828,8 +1833,8 @@ static int zmq_msg_t____tostring__meth(lua_State *L) { static int ZMQ_Socket__close__meth(lua_State *L) { int this_flags = 0; ZMQ_Socket * this = obj_type_ZMQ_Socket_delete(L,1,&(this_flags)); - if(!(this_flags & OBJ_UDATA_FLAG_OWN)) { return 0; } ZMQ_Error rc_zmq_close = 0; + if(!(this_flags & OBJ_UDATA_FLAG_OWN)) { return 0; } rc_zmq_close = zmq_close(this); /* check for error. */ if((0 != rc_zmq_close)) { @@ -1883,7 +1888,9 @@ static int ZMQ_Socket__setopt__meth(lua_State *L) { size_t val_len; const void *val; +#if VERSION_2_1 socket_t fd_val; +#endif int int_val; uint32_t uint32_val; uint64_t uint64_val; @@ -1894,11 +1901,13 @@ static int ZMQ_Socket__setopt__meth(lua_State *L) { } switch(opt_types[opt]) { +#if VERSION_2_1 case OPT_TYPE_FD: fd_val = luaL_checklong(L, 3); val = &fd_val; val_len = sizeof(fd_val); break; +#endif case OPT_TYPE_INT: int_val = luaL_checklong(L, 3); val = &int_val; @@ -1946,7 +1955,9 @@ static int ZMQ_Socket__getopt__meth(lua_State *L) { ZMQ_Error err = 0; size_t val_len; +#if VERSION_2_1 socket_t fd_val; +#endif int int_val; uint32_t uint32_val; uint64_t uint64_val; @@ -1961,6 +1972,7 @@ static int ZMQ_Socket__getopt__meth(lua_State *L) { } switch(opt_types[opt]) { +#if VERSION_2_1 case OPT_TYPE_FD: val_len = sizeof(fd_val); err = zmq_getsockopt(this, opt, &fd_val, &val_len); @@ -1969,6 +1981,7 @@ static int ZMQ_Socket__getopt__meth(lua_State *L) { return 1; } break; +#endif case OPT_TYPE_INT: val_len = sizeof(int_val); err = zmq_getsockopt(this, opt, &int_val, &val_len); @@ -2459,7 +2472,7 @@ static void create_object_instance_cache(lua_State *L) { lua_rawset(L, LUA_REGISTRYINDEX); /* create reference to weak table. */ } -int luaopen_zmq(lua_State *L) { +LUALIB_API int luaopen_zmq(lua_State *L) { const reg_sub_module *reg = reg_sub_modules; const luaL_Reg *submodules = submodule_libs; int priv_table = -1; diff --git a/src/socket.nobj.lua b/src/socket.nobj.lua index 453f5b2..4e14f76 100644 --- a/src/socket.nobj.lua +++ b/src/socket.nobj.lua @@ -134,7 +134,9 @@ end size_t val_len; const void *val; +#if VERSION_2_1 socket_t fd_val; +#endif int int_val; uint32_t uint32_val; uint64_t uint64_val; @@ -145,11 +147,13 @@ end } switch(opt_types[${opt}]) { +#if VERSION_2_1 case OPT_TYPE_FD: fd_val = luaL_checklong(L, ${val::idx}); val = &fd_val; val_len = sizeof(fd_val); break; +#endif case OPT_TYPE_INT: int_val = luaL_checklong(L, ${val::idx}); val = &int_val; @@ -205,7 +209,9 @@ local tmp_val_len = ffi.new('size_t[1]', 4) c_source[[ size_t val_len; +#if VERSION_2_1 socket_t fd_val; +#endif int int_val; uint32_t uint32_val; uint64_t uint64_val; @@ -220,6 +226,7 @@ local tmp_val_len = ffi.new('size_t[1]', 4) } switch(opt_types[${opt}]) { +#if VERSION_2_1 case OPT_TYPE_FD: val_len = sizeof(fd_val); ${err} = zmq_getsockopt(${this}, ${opt}, &fd_val, &val_len); @@ -228,6 +235,7 @@ local tmp_val_len = ffi.new('size_t[1]', 4) return 1; } break; +#endif case OPT_TYPE_INT: val_len = sizeof(int_val); ${err} = zmq_getsockopt(${this}, ${opt}, &int_val, &val_len); diff --git a/zmq.nobj.lua b/zmq.nobj.lua index a55f990..d1af84a 100644 --- a/zmq.nobj.lua +++ b/zmq.nobj.lua @@ -11,7 +11,10 @@ luajit_ffi = true, sys_include "string.h", include "zmq.h", -ffi_load "zmq", +ffi_load { +"zmq", -- default lib name. +Windows = "libzmq", -- lib name for on windows. +}, c_source[[ #define OBJ_UDATA_CTX_SHOULD_FREE (OBJ_UDATA_LAST_FLAG << 1)