16 } |
16 } |
17 |
17 |
18 /* Obtains an le_buffer structure from a given index |
18 /* Obtains an le_buffer structure from a given index |
19 AND checks that it hadn't been prematurely freed |
19 AND checks that it hadn't been prematurely freed |
20 */ |
20 */ |
21 static le_buffer* event_buffer_check(lua_State* L, int idx) { |
21 le_buffer* event_buffer_check(lua_State* L, int idx) { |
22 le_buffer* buf = (le_buffer*)luaL_checkudata(L, idx, EVENT_BUFFER_MT); |
22 le_buffer* buf = (le_buffer*)luaL_checkudata(L, idx, EVENT_BUFFER_MT); |
23 if(!buf->buffer) |
23 if(!buf->buffer) |
24 luaL_argerror(L, idx, "Attempt to use closed event_buffer object"); |
24 luaL_argerror(L, idx, "Attempt to use closed event_buffer object"); |
25 return buf; |
25 return buf; |
26 } |
26 } |
27 |
27 |
28 /* Checks if the given index contains an le_buffer object */ |
28 /* Checks if the given index contains an le_buffer object */ |
29 static int is_event_buffer(lua_State* L, int idx) { |
29 int is_event_buffer(lua_State* L, int idx) { |
30 int ret; |
30 int ret; |
31 lua_getmetatable(L, idx); |
31 lua_getmetatable(L, idx); |
32 luaL_getmetatable(L, EVENT_BUFFER_MT); |
32 luaL_getmetatable(L, EVENT_BUFFER_MT); |
33 ret = lua_rawequal(L, -2, -1); |
33 ret = lua_rawequal(L, -2, -1); |
34 lua_pop(L, 2); |
34 lua_pop(L, 2); |
35 return ret; |
35 return ret; |
36 } |
36 } |
37 |
37 |
38 /* TODO: Use lightuserdata mapping to locate hanging object instances */ |
38 /* TODO: Use lightuserdata mapping to locate hanging object instances */ |
39 /* Pushes the specified evbuffer object onto the stack, attaching a metatable to it */ |
39 /* Pushes the specified evbuffer object onto the stack, attaching a metatable to it */ |
40 static int event_buffer_push(lua_State* L, struct evbuffer* buffer) { |
40 int event_buffer_push(lua_State* L, struct evbuffer* buffer) { |
41 le_buffer *buf = (le_buffer*)lua_newuserdata(L, sizeof(le_buffer)); |
41 le_buffer *buf = (le_buffer*)lua_newuserdata(L, sizeof(le_buffer)); |
42 buf->buffer = buffer; |
42 buf->buffer = buffer; |
43 luaL_getmetatable(L, EVENT_BUFFER_MT); |
43 luaL_getmetatable(L, EVENT_BUFFER_MT); |
44 lua_setmetatable(L, -2); |
44 lua_setmetatable(L, -2); |
45 return 1; |
45 return 1; |