Fixed some issues with compiling bindings on Windows.

pull/10/head
Robert G. Jakabosky 15 years ago
parent d8839be4bd
commit 399258202d

@ -28,9 +28,11 @@
#ifdef _MSC_VER #ifdef _MSC_VER
/* define some types that we need. */ /* define some standard types missing on Windows. */
typedef __int32 int32_t; typedef __int32 int32_t;
typedef __int64 int64_t;
typedef unsigned __int32 uint32_t; typedef unsigned __int32 uint32_t;
typedef unsigned __int64 uint64_t;
typedef int bool; typedef int bool;
#define FUNC_UNUSED #define FUNC_UNUSED
@ -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) { 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; const luaL_reg *reg_list = type_reg->pub_funcs;
/* create public functions table. */ /* 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; const obj_base *base = type_reg->bases;
if(type_reg->is_package == 1) { 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. */ /* create public functions table. */
@ -971,7 +973,10 @@ static const char zmq_ffi_lua_code[] = "-- try loading luajit's ffi\n"
"local zmq_pub = _M\n" "local zmq_pub = _M\n"
"\n" "\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" "\n"
"local OBJ_UDATA_CTX_SHOULD_FREE = (OBJ_UDATA_LAST_FLAG * 2)\n" "local OBJ_UDATA_CTX_SHOULD_FREE = (OBJ_UDATA_LAST_FLAG * 2)\n"
"\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) { static int zmq_msg_t__delete__meth(lua_State *L) {
int this_flags = 0; int this_flags = 0;
zmq_msg_t * this = obj_type_zmq_msg_t_delete(L,1,&(this_flags)); 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; ZMQ_Error rc_zmq_msg_close = 0;
if(!(this_flags & OBJ_UDATA_FLAG_OWN)) { return 0; }
rc_zmq_msg_close = zmq_msg_close(this); rc_zmq_msg_close = zmq_msg_close(this);
/* check for error. */ /* check for error. */
if((0 != rc_zmq_msg_close)) { 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) { static int ZMQ_Socket__close__meth(lua_State *L) {
int this_flags = 0; int this_flags = 0;
ZMQ_Socket * this = obj_type_ZMQ_Socket_delete(L,1,&(this_flags)); 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; ZMQ_Error rc_zmq_close = 0;
if(!(this_flags & OBJ_UDATA_FLAG_OWN)) { return 0; }
rc_zmq_close = zmq_close(this); rc_zmq_close = zmq_close(this);
/* check for error. */ /* check for error. */
if((0 != rc_zmq_close)) { if((0 != rc_zmq_close)) {
@ -1883,7 +1888,9 @@ static int ZMQ_Socket__setopt__meth(lua_State *L) {
size_t val_len; size_t val_len;
const void *val; const void *val;
#if VERSION_2_1
socket_t fd_val; socket_t fd_val;
#endif
int int_val; int int_val;
uint32_t uint32_val; uint32_t uint32_val;
uint64_t uint64_val; uint64_t uint64_val;
@ -1894,11 +1901,13 @@ static int ZMQ_Socket__setopt__meth(lua_State *L) {
} }
switch(opt_types[opt]) { switch(opt_types[opt]) {
#if VERSION_2_1
case OPT_TYPE_FD: case OPT_TYPE_FD:
fd_val = luaL_checklong(L, 3); fd_val = luaL_checklong(L, 3);
val = &fd_val; val = &fd_val;
val_len = sizeof(fd_val); val_len = sizeof(fd_val);
break; break;
#endif
case OPT_TYPE_INT: case OPT_TYPE_INT:
int_val = luaL_checklong(L, 3); int_val = luaL_checklong(L, 3);
val = &int_val; val = &int_val;
@ -1946,7 +1955,9 @@ static int ZMQ_Socket__getopt__meth(lua_State *L) {
ZMQ_Error err = 0; ZMQ_Error err = 0;
size_t val_len; size_t val_len;
#if VERSION_2_1
socket_t fd_val; socket_t fd_val;
#endif
int int_val; int int_val;
uint32_t uint32_val; uint32_t uint32_val;
uint64_t uint64_val; uint64_t uint64_val;
@ -1961,6 +1972,7 @@ static int ZMQ_Socket__getopt__meth(lua_State *L) {
} }
switch(opt_types[opt]) { switch(opt_types[opt]) {
#if VERSION_2_1
case OPT_TYPE_FD: case OPT_TYPE_FD:
val_len = sizeof(fd_val); val_len = sizeof(fd_val);
err = zmq_getsockopt(this, opt, &fd_val, &val_len); err = zmq_getsockopt(this, opt, &fd_val, &val_len);
@ -1969,6 +1981,7 @@ static int ZMQ_Socket__getopt__meth(lua_State *L) {
return 1; return 1;
} }
break; break;
#endif
case OPT_TYPE_INT: case OPT_TYPE_INT:
val_len = sizeof(int_val); val_len = sizeof(int_val);
err = zmq_getsockopt(this, opt, &int_val, &val_len); 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. */ 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 reg_sub_module *reg = reg_sub_modules;
const luaL_Reg *submodules = submodule_libs; const luaL_Reg *submodules = submodule_libs;
int priv_table = -1; int priv_table = -1;

@ -134,7 +134,9 @@ end
size_t val_len; size_t val_len;
const void *val; const void *val;
#if VERSION_2_1
socket_t fd_val; socket_t fd_val;
#endif
int int_val; int int_val;
uint32_t uint32_val; uint32_t uint32_val;
uint64_t uint64_val; uint64_t uint64_val;
@ -145,11 +147,13 @@ end
} }
switch(opt_types[${opt}]) { switch(opt_types[${opt}]) {
#if VERSION_2_1
case OPT_TYPE_FD: case OPT_TYPE_FD:
fd_val = luaL_checklong(L, ${val::idx}); fd_val = luaL_checklong(L, ${val::idx});
val = &fd_val; val = &fd_val;
val_len = sizeof(fd_val); val_len = sizeof(fd_val);
break; break;
#endif
case OPT_TYPE_INT: case OPT_TYPE_INT:
int_val = luaL_checklong(L, ${val::idx}); int_val = luaL_checklong(L, ${val::idx});
val = &int_val; val = &int_val;
@ -205,7 +209,9 @@ local tmp_val_len = ffi.new('size_t[1]', 4)
c_source[[ c_source[[
size_t val_len; size_t val_len;
#if VERSION_2_1
socket_t fd_val; socket_t fd_val;
#endif
int int_val; int int_val;
uint32_t uint32_val; uint32_t uint32_val;
uint64_t uint64_val; uint64_t uint64_val;
@ -220,6 +226,7 @@ local tmp_val_len = ffi.new('size_t[1]', 4)
} }
switch(opt_types[${opt}]) { switch(opt_types[${opt}]) {
#if VERSION_2_1
case OPT_TYPE_FD: case OPT_TYPE_FD:
val_len = sizeof(fd_val); val_len = sizeof(fd_val);
${err} = zmq_getsockopt(${this}, ${opt}, &fd_val, &val_len); ${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; return 1;
} }
break; break;
#endif
case OPT_TYPE_INT: case OPT_TYPE_INT:
val_len = sizeof(int_val); val_len = sizeof(int_val);
${err} = zmq_getsockopt(${this}, ${opt}, &int_val, &val_len); ${err} = zmq_getsockopt(${this}, ${opt}, &int_val, &val_len);

@ -11,7 +11,10 @@ luajit_ffi = true,
sys_include "string.h", sys_include "string.h",
include "zmq.h", include "zmq.h",
ffi_load "zmq", ffi_load {
"zmq", -- default lib name.
Windows = "libzmq", -- lib name for on windows.
},
c_source[[ c_source[[
#define OBJ_UDATA_CTX_SHOULD_FREE (OBJ_UDATA_LAST_FLAG << 1) #define OBJ_UDATA_CTX_SHOULD_FREE (OBJ_UDATA_LAST_FLAG << 1)

Loading…
Cancel
Save