src/event_buffer.c

changeset 40
11810d219ddb
parent 37
b7351b503b4b
child 41
fce1995f0db8
equal deleted inserted replaced
39:a0a7f7ebca3f 40:11810d219ddb
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;

mercurial