Fix exporting of zmq.poller C functions for FFI bindings.

pull/47/merge
Robert G. Jakabosky 14 years ago
parent b2aec4654e
commit 36fa3226ef

@ -272,10 +272,10 @@ void poller_remove_item(ZMQ_Poller *poller, int idx);
constructor "new" {
var_in{ "unsigned int", "length", is_optional = true, default = 10 },
c_method_call "void" "poller_init" { "unsigned int", "length" },
c_export_method_call "void" "poller_init" { "unsigned int", "length" },
},
destructor "close" {
c_method_call "void" "poller_cleanup" {},
c_export_method_call "void" "poller_cleanup" {},
},
method "add" {
var_in{ "<any>", "sock" },
@ -310,7 +310,7 @@ void poller_remove_item(ZMQ_Poller *poller, int idx);
else
error("expected number or ZMQ_Socket")
end
${idx} = C.poller_get_free_item(${this})
${idx} = Cmod.poller_get_free_item(${this})
local item = ${this}.items[${idx}]
item.socket = sock
item.fd = fd
@ -358,11 +358,11 @@ void poller_remove_item(ZMQ_Poller *poller, int idx);
if sock_type == 'cdata' then
sock = obj_type_ZMQ_Socket_check(${sock})
-- find sock in items list.
${idx} = C.poller_find_sock_item(${this}, sock)
${idx} = Cmod.poller_find_sock_item(${this}, sock)
elseif sock_type == 'number' then
fd = ${sock}
-- find fd in items list.
${idx} = C.poller_find_fd_item(${this}, fd);
${idx} = Cmod.poller_find_fd_item(${this}, fd);
else
error("expected number or ZMQ_Socket")
end
@ -372,7 +372,7 @@ void poller_remove_item(ZMQ_Poller *poller, int idx);
item.fd = fd
item.events = ${events}
else
C.poller_remove_item(${this}, ${idx})
Cmod.poller_remove_item(${this}, ${idx})
end
]],
},
@ -407,26 +407,24 @@ void poller_remove_item(ZMQ_Poller *poller, int idx);
if sock_type == 'cdata' then
sock = obj_type_ZMQ_Socket_check(${sock})
-- find sock in items list.
${idx} = C.poller_find_sock_item(${this}, sock)
${idx} = Cmod.poller_find_sock_item(${this}, sock)
elseif sock_type == 'number' then
fd = ${sock}
-- find fd in items list.
${idx} = C.poller_find_fd_item(${this}, fd);
${idx} = Cmod.poller_find_fd_item(${this}, fd);
else
error("expected number or ZMQ_Socket")
end
if ${idx} >= 0 then
C.poller_remove_item(${this}, ${idx})
Cmod.poller_remove_item(${this}, ${idx})
end
]],
},
method "poll" {
var_in{ "long", "timeout" },
var_out{ "int", "count" },
var_out{ "ZMQ_Error", "err" },
-- poll for events
c_export_method_call { "ZMQ_Error", "err>2" } "poller_poll" { "long", "timeout" },
c_source[[
/* poll for events */
${err} = poller_poll(${this}, ${timeout});
if(${err} > 0) {
${this}->next = 0;
${count} = ${err};
@ -436,8 +434,6 @@ void poller_remove_item(ZMQ_Poller *poller, int idx);
}
]],
ffi_source[[
-- poll for events
${err} = C.poller_poll(${this}, ${timeout})
if(${err} > 0) then
${this}.next = 0
${count} = ${err}
@ -448,7 +444,7 @@ void poller_remove_item(ZMQ_Poller *poller, int idx);
]],
},
method "next_revents_idx" {
c_method_call { "int", "idx>1" } "poller_next_revents" { "int", "&revents>2" },
c_export_method_call { "int", "idx>1" } "poller_next_revents" { "int", "&revents>2" },
},
method "count" {
var_out{ "int", "count" },

@ -351,6 +351,7 @@ static const char *nobj_lua_Reader(lua_State *L, void *data, size_t *size) {
nobj_reader_state *state = (nobj_reader_state *)data;
const char *ptr;
(void)L;
ptr = state->ffi_init_code[state->offset];
if(ptr != NULL) {
*size = strlen(ptr);
@ -523,7 +524,7 @@ static FUNC_UNUSED void *obj_udata_luacheck(lua_State *L, int _index, obj_type *
static FUNC_UNUSED void *obj_udata_luaoptional(lua_State *L, int _index, obj_type *type) {
void *obj = NULL;
if(lua_isnil(L, _index)) {
if(lua_gettop(L) < _index) {
return obj;
}
obj_udata_luacheck_internal(L, _index, &(obj), type, 1);
@ -731,7 +732,7 @@ static FUNC_UNUSED void * obj_simple_udata_luacheck(lua_State *L, int _index, ob
}
static FUNC_UNUSED void * obj_simple_udata_luaoptional(lua_State *L, int _index, obj_type *type) {
if(lua_isnil(L, _index)) {
if(lua_gettop(L) < _index) {
return NULL;
}
return obj_simple_udata_luacheck(L, _index, type);
@ -1398,6 +1399,8 @@ static const char *zmq_ffi_lua_code[] = { "local ffi=require\"ffi\"\n"
"\n"
"void poller_cleanup(ZMQ_Poller *);\n"
"\n"
"ZMQ_Error poller_poll(ZMQ_Poller *, long);\n"
"\n"
"int poller_next_revents(ZMQ_Poller *, int*);\n"
"\n"
"ZMQ_Error zmq_term(ZMQ_Ctx *);\n"
@ -1612,8 +1615,8 @@ static const char *zmq_ffi_lua_code[] = { "local ffi=require\"ffi\"\n"
"\n"
" function obj_type_ZMQ_Ctx_check(ptr)\n"
" -- if ptr is nil or is the correct type, then just return it.\n"
" if not ptr or ffi.istype(obj_ctype, ptr) then return ptr end\n"
" -- check if it is a compatible type.\n", /* ----- CUT ----- */
" if not ptr or ffi.istype(obj_ctype, ptr) then return ptr end\n", /* ----- CUT ----- */
" -- check if it is a compatible type.\n"
" local ctype = tostring(ffi.typeof(ptr))\n"
" local bcaster = _obj_subs.ZMQ_Ctx[ctype]\n"
" if bcaster then\n"
@ -2207,8 +2210,8 @@ static const char *zmq_ffi_lua_code[] = { "local ffi=require\"ffi\"\n"
"end\n"
"end\n"
"end\n"
"\n"
"-- method: set_affinity\n", /* ----- CUT ----- */
"\n", /* ----- CUT ----- */
"-- method: set_affinity\n"
"if (_M.VERSION_2_0 or _M.VERSION_3_0) then\n"
"function _meth.ZMQ_Socket.set_affinity(self, value2)\n"
" \n"
@ -2905,7 +2908,7 @@ static const char *zmq_ffi_lua_code[] = { "local ffi=require\"ffi\"\n"
"function _pub.ZMQ_Poller.new(length1)\n"
" length1 = length1 or 10\n"
" local self = ffi.new(\"ZMQ_Poller\")\n"
" C.poller_init(self, length1)\n"
" Cmod.poller_init(self, length1)\n"
" return obj_type_ZMQ_Poller_push(self)\n"
"end\n"
"register_default_constructor(_pub,\"ZMQ_Poller\",_pub.ZMQ_Poller.new)\n"
@ -2914,7 +2917,7 @@ static const char *zmq_ffi_lua_code[] = { "local ffi=require\"ffi\"\n"
"function _meth.ZMQ_Poller.close(self)\n"
" local self = obj_type_ZMQ_Poller_delete(self)\n"
" if not self then return end\n"
" C.poller_cleanup(self)\n"
" Cmod.poller_cleanup(self)\n"
" return \n"
"end\n"
"_priv.ZMQ_Poller.__gc = _meth.ZMQ_Poller.close\n"
@ -2933,7 +2936,7 @@ static const char *zmq_ffi_lua_code[] = { "local ffi=require\"ffi\"\n"
" else\n"
" error(\"expected number or ZMQ_Socket\")\n"
" end\n"
" idx1 = C.poller_get_free_item(self)\n"
" idx1 = Cmod.poller_get_free_item(self)\n"
" local item = self.items[idx1]\n"
" item.socket = sock\n"
" item.fd = fd\n"
@ -2952,11 +2955,11 @@ static const char *zmq_ffi_lua_code[] = { "local ffi=require\"ffi\"\n"
" if sock_type == 'cdata' then\n"
" sock = obj_type_ZMQ_Socket_check(sock2)\n"
" -- find sock in items list.\n"
" idx1 = C.poller_find_sock_item(self, sock)\n"
" idx1 = Cmod.poller_find_sock_item(self, sock)\n"
" elseif sock_type == 'number' then\n"
" fd = sock2\n"
" -- find fd in items list.\n"
" idx1 = C.poller_find_fd_item(self, fd);\n"
" idx1 = Cmod.poller_find_fd_item(self, fd);\n"
" else\n"
" error(\"expected number or ZMQ_Socket\")\n"
" end\n"
@ -2966,7 +2969,7 @@ static const char *zmq_ffi_lua_code[] = { "local ffi=require\"ffi\"\n"
" item.fd = fd\n"
" item.events = events3\n"
" else\n"
" C.poller_remove_item(self, idx1)\n"
" Cmod.poller_remove_item(self, idx1)\n"
" end\n"
"\n"
" return idx1\n"
@ -2981,16 +2984,16 @@ static const char *zmq_ffi_lua_code[] = { "local ffi=require\"ffi\"\n"
" if sock_type == 'cdata' then\n"
" sock = obj_type_ZMQ_Socket_check(sock2)\n"
" -- find sock in items list.\n"
" idx1 = C.poller_find_sock_item(self, sock)\n"
" idx1 = Cmod.poller_find_sock_item(self, sock)\n"
" elseif sock_type == 'number' then\n"
" fd = sock2\n"
" -- find fd in items list.\n"
" idx1 = C.poller_find_fd_item(self, fd);\n"
" idx1 = Cmod.poller_find_fd_item(self, fd);\n"
" else\n"
" error(\"expected number or ZMQ_Socket\")\n"
" end\n"
" if idx1 >= 0 then\n"
" C.poller_remove_item(self, idx1)\n"
" Cmod.poller_remove_item(self, idx1)\n"
" end\n"
"\n"
" return idx1\n"
@ -3002,8 +3005,7 @@ static const char *zmq_ffi_lua_code[] = { "local ffi=require\"ffi\"\n"
" \n"
" local count1 = 0\n"
" local err2 = 0\n"
" -- poll for events\n"
" err2 = C.poller_poll(self, timeout2)\n"
" err2 = Cmod.poller_poll(self, timeout2)\n"
" if(err2 > 0) then\n"
" self.next = 0\n"
" count1 = err2\n"
@ -3025,7 +3027,7 @@ static const char *zmq_ffi_lua_code[] = { "local ffi=require\"ffi\"\n"
" \n"
" local idx1 = 0\n"
" local revents2 = next_revents_idx_revents_tmp\n"
" idx1 = C.poller_next_revents(self, revents2)\n"
" idx1 = Cmod.poller_next_revents(self, revents2)\n"
" return idx1, revents2[0]\n"
"end\n"
"end\n"
@ -5509,7 +5511,6 @@ static int ZMQ_Poller__poll__meth(lua_State *L) {
long timeout2 = luaL_checkinteger(L,2);
int count1 = 0;
ZMQ_Error err2 = 0;
/* poll for events */
err2 = poller_poll(this1, timeout2);
if(err2 > 0) {
this1->next = 0;

Loading…
Cancel
Save