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
/* 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
@ -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. */
@ -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;

@ -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);

@ -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)

Loading…
Cancel
Save