Thu, 06 Sep 2007 23:43:45 -0400
Quick compilation-fixes.
26
a117895e867c
Added event_buffer object + 'add' functionality
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
1 | /* LuaEvent - Copyright (C) 2007 Thomas Harning <harningt@gmail.com> |
a117895e867c
Added event_buffer object + 'add' functionality
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
2 | * Licensed as LGPL - See doc/COPYING for details */ |
a117895e867c
Added event_buffer object + 'add' functionality
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
3 | |
a117895e867c
Added event_buffer object + 'add' functionality
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
4 | #include "event_buffer.h" |
a117895e867c
Added event_buffer object + 'add' functionality
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
5 | #include <lauxlib.h> |
a117895e867c
Added event_buffer object + 'add' functionality
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
6 | |
a117895e867c
Added event_buffer object + 'add' functionality
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
7 | #define EVENT_BUFFER_MT "EVENT_BUFFER_MT" |
a117895e867c
Added event_buffer object + 'add' functionality
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
8 | |
a117895e867c
Added event_buffer object + 'add' functionality
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
9 | #define BUFFER_ADD_CHECK_INPUT_FIRST 1 |
a117895e867c
Added event_buffer object + 'add' functionality
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
10 | |
a117895e867c
Added event_buffer object + 'add' functionality
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
11 | static le_buffer* event_buffer_get(lua_State* L, int idx) { |
a117895e867c
Added event_buffer object + 'add' functionality
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
12 | return (le_buffer*)luaL_checkudata(L, idx, EVENT_BUFFER_MT); |
a117895e867c
Added event_buffer object + 'add' functionality
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
13 | } |
28
f7b864b661f4
Quick compilation-fixes.
Thomas Harning Jr <harningt@gmail.com>
parents:
27
diff
changeset
|
14 | static le_buffer* event_buffer_check(lua_State* L, int idx) { |
27
0d82e4f49a56
Updated changelog. event_buffer learned `get_data`,`length`,`drain`,`close`,`new`
Thomas Harning Jr <harningt@gmail.com>
parents:
26
diff
changeset
|
15 | le_buffer* buf = (le_buffer*)luaL_checkudata(L, idx, EVENT_BUFFER_MT); |
0d82e4f49a56
Updated changelog. event_buffer learned `get_data`,`length`,`drain`,`close`,`new`
Thomas Harning Jr <harningt@gmail.com>
parents:
26
diff
changeset
|
16 | if(!buf->buffer) |
0d82e4f49a56
Updated changelog. event_buffer learned `get_data`,`length`,`drain`,`close`,`new`
Thomas Harning Jr <harningt@gmail.com>
parents:
26
diff
changeset
|
17 | luaL_argerror(L, idx, "Attempt to use closed event_buffer object"); |
0d82e4f49a56
Updated changelog. event_buffer learned `get_data`,`length`,`drain`,`close`,`new`
Thomas Harning Jr <harningt@gmail.com>
parents:
26
diff
changeset
|
18 | return buf; |
0d82e4f49a56
Updated changelog. event_buffer learned `get_data`,`length`,`drain`,`close`,`new`
Thomas Harning Jr <harningt@gmail.com>
parents:
26
diff
changeset
|
19 | } |
26
a117895e867c
Added event_buffer object + 'add' functionality
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
20 | static int is_event_buffer(lua_State* L, int idx) { |
a117895e867c
Added event_buffer object + 'add' functionality
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
21 | int ret; |
a117895e867c
Added event_buffer object + 'add' functionality
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
22 | lua_getmetatable(L, idx); |
a117895e867c
Added event_buffer object + 'add' functionality
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
23 | luaL_getmetatable(L, EVENT_BUFFER_MT); |
a117895e867c
Added event_buffer object + 'add' functionality
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
24 | ret = lua_rawequal(L, -2, -1); |
a117895e867c
Added event_buffer object + 'add' functionality
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
25 | lua_pop(L, 2); |
a117895e867c
Added event_buffer object + 'add' functionality
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
26 | return ret; |
a117895e867c
Added event_buffer object + 'add' functionality
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
27 | } |
a117895e867c
Added event_buffer object + 'add' functionality
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
28 | |
27
0d82e4f49a56
Updated changelog. event_buffer learned `get_data`,`length`,`drain`,`close`,`new`
Thomas Harning Jr <harningt@gmail.com>
parents:
26
diff
changeset
|
29 | /* TODO: Use lightuserdata mapping to locate hanging object instances */ |
0d82e4f49a56
Updated changelog. event_buffer learned `get_data`,`length`,`drain`,`close`,`new`
Thomas Harning Jr <harningt@gmail.com>
parents:
26
diff
changeset
|
30 | static int event_buffer_push(lua_State* L, struct evbuffer* buffer) { |
0d82e4f49a56
Updated changelog. event_buffer learned `get_data`,`length`,`drain`,`close`,`new`
Thomas Harning Jr <harningt@gmail.com>
parents:
26
diff
changeset
|
31 | le_buffer *buf = (le_buffer*)lua_newuserdata(L, sizeof(le_buffer)); |
0d82e4f49a56
Updated changelog. event_buffer learned `get_data`,`length`,`drain`,`close`,`new`
Thomas Harning Jr <harningt@gmail.com>
parents:
26
diff
changeset
|
32 | buf->buffer = buffer; |
0d82e4f49a56
Updated changelog. event_buffer learned `get_data`,`length`,`drain`,`close`,`new`
Thomas Harning Jr <harningt@gmail.com>
parents:
26
diff
changeset
|
33 | luaL_getmetatable(L, EVENT_BUFFER_MT); |
0d82e4f49a56
Updated changelog. event_buffer learned `get_data`,`length`,`drain`,`close`,`new`
Thomas Harning Jr <harningt@gmail.com>
parents:
26
diff
changeset
|
34 | lua_setmetatable(L, -2); |
0d82e4f49a56
Updated changelog. event_buffer learned `get_data`,`length`,`drain`,`close`,`new`
Thomas Harning Jr <harningt@gmail.com>
parents:
26
diff
changeset
|
35 | return 1; |
0d82e4f49a56
Updated changelog. event_buffer learned `get_data`,`length`,`drain`,`close`,`new`
Thomas Harning Jr <harningt@gmail.com>
parents:
26
diff
changeset
|
36 | } |
0d82e4f49a56
Updated changelog. event_buffer learned `get_data`,`length`,`drain`,`close`,`new`
Thomas Harning Jr <harningt@gmail.com>
parents:
26
diff
changeset
|
37 | |
0d82e4f49a56
Updated changelog. event_buffer learned `get_data`,`length`,`drain`,`close`,`new`
Thomas Harning Jr <harningt@gmail.com>
parents:
26
diff
changeset
|
38 | static int event_buffer_push_new(lua_State* L) { |
0d82e4f49a56
Updated changelog. event_buffer learned `get_data`,`length`,`drain`,`close`,`new`
Thomas Harning Jr <harningt@gmail.com>
parents:
26
diff
changeset
|
39 | return event_buffer_push(L, evbuffer_new()); |
0d82e4f49a56
Updated changelog. event_buffer learned `get_data`,`length`,`drain`,`close`,`new`
Thomas Harning Jr <harningt@gmail.com>
parents:
26
diff
changeset
|
40 | } |
0d82e4f49a56
Updated changelog. event_buffer learned `get_data`,`length`,`drain`,`close`,`new`
Thomas Harning Jr <harningt@gmail.com>
parents:
26
diff
changeset
|
41 | |
0d82e4f49a56
Updated changelog. event_buffer learned `get_data`,`length`,`drain`,`close`,`new`
Thomas Harning Jr <harningt@gmail.com>
parents:
26
diff
changeset
|
42 | static int event_buffer_gc(lua_State* L) { |
0d82e4f49a56
Updated changelog. event_buffer learned `get_data`,`length`,`drain`,`close`,`new`
Thomas Harning Jr <harningt@gmail.com>
parents:
26
diff
changeset
|
43 | le_buffer* buf = event_buffer_get(L, 1); |
0d82e4f49a56
Updated changelog. event_buffer learned `get_data`,`length`,`drain`,`close`,`new`
Thomas Harning Jr <harningt@gmail.com>
parents:
26
diff
changeset
|
44 | if(buf->buffer) { |
0d82e4f49a56
Updated changelog. event_buffer learned `get_data`,`length`,`drain`,`close`,`new`
Thomas Harning Jr <harningt@gmail.com>
parents:
26
diff
changeset
|
45 | evbuffer_free(buf->buffer); |
0d82e4f49a56
Updated changelog. event_buffer learned `get_data`,`length`,`drain`,`close`,`new`
Thomas Harning Jr <harningt@gmail.com>
parents:
26
diff
changeset
|
46 | buf->buffer = NULL; |
0d82e4f49a56
Updated changelog. event_buffer learned `get_data`,`length`,`drain`,`close`,`new`
Thomas Harning Jr <harningt@gmail.com>
parents:
26
diff
changeset
|
47 | } |
0d82e4f49a56
Updated changelog. event_buffer learned `get_data`,`length`,`drain`,`close`,`new`
Thomas Harning Jr <harningt@gmail.com>
parents:
26
diff
changeset
|
48 | return 0; |
0d82e4f49a56
Updated changelog. event_buffer learned `get_data`,`length`,`drain`,`close`,`new`
Thomas Harning Jr <harningt@gmail.com>
parents:
26
diff
changeset
|
49 | } |
0d82e4f49a56
Updated changelog. event_buffer learned `get_data`,`length`,`drain`,`close`,`new`
Thomas Harning Jr <harningt@gmail.com>
parents:
26
diff
changeset
|
50 | |
26
a117895e867c
Added event_buffer object + 'add' functionality
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
51 | /* LUA: buffer:add(...) |
a117895e867c
Added event_buffer object + 'add' functionality
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
52 | progressively adds items to the buffer |
a117895e867c
Added event_buffer object + 'add' functionality
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
53 | if arg[*] is string, treat as a string:format call |
a117895e867c
Added event_buffer object + 'add' functionality
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
54 | if arg[*] is a buffer, perform event_add_buffer |
a117895e867c
Added event_buffer object + 'add' functionality
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
55 | returns number of bytes added |
a117895e867c
Added event_buffer object + 'add' functionality
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
56 | */ |
27
0d82e4f49a56
Updated changelog. event_buffer learned `get_data`,`length`,`drain`,`close`,`new`
Thomas Harning Jr <harningt@gmail.com>
parents:
26
diff
changeset
|
57 | static int event_buffer_add(lua_State* L) { |
0d82e4f49a56
Updated changelog. event_buffer learned `get_data`,`length`,`drain`,`close`,`new`
Thomas Harning Jr <harningt@gmail.com>
parents:
26
diff
changeset
|
58 | le_buffer* buf = event_buffer_check(L, 1); |
26
a117895e867c
Added event_buffer object + 'add' functionality
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
59 | struct evbuffer* buffer = buf->buffer; |
a117895e867c
Added event_buffer object + 'add' functionality
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
60 | int oldLength = EVBUFFER_LENGTH(buffer); |
28
f7b864b661f4
Quick compilation-fixes.
Thomas Harning Jr <harningt@gmail.com>
parents:
27
diff
changeset
|
61 | int last = lua_gettop(L); |
26
a117895e867c
Added event_buffer object + 'add' functionality
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
62 | int i; |
a117895e867c
Added event_buffer object + 'add' functionality
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
63 | for(i = 2; i <= last; i++) { |
a117895e867c
Added event_buffer object + 'add' functionality
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
64 | if(!lua_isstring(L, i) && !is_event_buffer(L, i)) |
a117895e867c
Added event_buffer object + 'add' functionality
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
65 | luaL_argerror(L, i, "Argument is not a string or buffer object"); |
a117895e867c
Added event_buffer object + 'add' functionality
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
66 | /* Optionally perform checks and data loading separately to avoid overfilling the buffer */ |
a117895e867c
Added event_buffer object + 'add' functionality
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
67 | #if BUFFER_ADD_CHECK_INPUT_FIRST |
a117895e867c
Added event_buffer object + 'add' functionality
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
68 | } |
a117895e867c
Added event_buffer object + 'add' functionality
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
69 | for(i = 2; i <= last; i++) { |
a117895e867c
Added event_buffer object + 'add' functionality
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
70 | #endif |
a117895e867c
Added event_buffer object + 'add' functionality
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
71 | if(lua_isstring(L, i)) { |
a117895e867c
Added event_buffer object + 'add' functionality
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
72 | size_t len; |
a117895e867c
Added event_buffer object + 'add' functionality
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
73 | const char* data = lua_tolstring(L, i, &len); |
a117895e867c
Added event_buffer object + 'add' functionality
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
74 | if(0 != evbuffer_add(buffer, data, len)) |
a117895e867c
Added event_buffer object + 'add' functionality
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
75 | luaL_error(L, "Failed to add data to the buffer"); |
a117895e867c
Added event_buffer object + 'add' functionality
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
76 | } else { |
27
0d82e4f49a56
Updated changelog. event_buffer learned `get_data`,`length`,`drain`,`close`,`new`
Thomas Harning Jr <harningt@gmail.com>
parents:
26
diff
changeset
|
77 | le_buffer* buf2 = event_buffer_check(L, i); |
26
a117895e867c
Added event_buffer object + 'add' functionality
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
78 | if(0 != evbuffer_add_buffer(buffer, buf2->buffer)) |
a117895e867c
Added event_buffer object + 'add' functionality
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
79 | luaL_error(L, "Failed to move buffer-data to the buffer"); |
a117895e867c
Added event_buffer object + 'add' functionality
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
80 | } |
a117895e867c
Added event_buffer object + 'add' functionality
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
81 | } |
a117895e867c
Added event_buffer object + 'add' functionality
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
82 | lua_pushinteger(L, EVBUFFER_LENGTH(buffer) - oldLength); |
a117895e867c
Added event_buffer object + 'add' functionality
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
83 | return 1; |
a117895e867c
Added event_buffer object + 'add' functionality
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
84 | } |
a117895e867c
Added event_buffer object + 'add' functionality
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
85 | |
27
0d82e4f49a56
Updated changelog. event_buffer learned `get_data`,`length`,`drain`,`close`,`new`
Thomas Harning Jr <harningt@gmail.com>
parents:
26
diff
changeset
|
86 | static int event_buffer_get_length(lua_State* L) { |
0d82e4f49a56
Updated changelog. event_buffer learned `get_data`,`length`,`drain`,`close`,`new`
Thomas Harning Jr <harningt@gmail.com>
parents:
26
diff
changeset
|
87 | le_buffer* buf = event_buffer_check(L, 1); |
0d82e4f49a56
Updated changelog. event_buffer learned `get_data`,`length`,`drain`,`close`,`new`
Thomas Harning Jr <harningt@gmail.com>
parents:
26
diff
changeset
|
88 | lua_pushinteger(L, EVBUFFER_LENGTH(buf->buffer)); |
0d82e4f49a56
Updated changelog. event_buffer learned `get_data`,`length`,`drain`,`close`,`new`
Thomas Harning Jr <harningt@gmail.com>
parents:
26
diff
changeset
|
89 | return 1; |
0d82e4f49a56
Updated changelog. event_buffer learned `get_data`,`length`,`drain`,`close`,`new`
Thomas Harning Jr <harningt@gmail.com>
parents:
26
diff
changeset
|
90 | } |
0d82e4f49a56
Updated changelog. event_buffer learned `get_data`,`length`,`drain`,`close`,`new`
Thomas Harning Jr <harningt@gmail.com>
parents:
26
diff
changeset
|
91 | |
0d82e4f49a56
Updated changelog. event_buffer learned `get_data`,`length`,`drain`,`close`,`new`
Thomas Harning Jr <harningt@gmail.com>
parents:
26
diff
changeset
|
92 | /* MAYBE: Could add caching */ |
0d82e4f49a56
Updated changelog. event_buffer learned `get_data`,`length`,`drain`,`close`,`new`
Thomas Harning Jr <harningt@gmail.com>
parents:
26
diff
changeset
|
93 | static int event_buffer_get_data(lua_State* L) { |
0d82e4f49a56
Updated changelog. event_buffer learned `get_data`,`length`,`drain`,`close`,`new`
Thomas Harning Jr <harningt@gmail.com>
parents:
26
diff
changeset
|
94 | le_buffer* buf = event_buffer_check(L, 1); |
28
f7b864b661f4
Quick compilation-fixes.
Thomas Harning Jr <harningt@gmail.com>
parents:
27
diff
changeset
|
95 | lua_pushlstring(L, (const char*)EVBUFFER_DATA(buf->buffer), EVBUFFER_LENGTH(buf->buffer)); |
27
0d82e4f49a56
Updated changelog. event_buffer learned `get_data`,`length`,`drain`,`close`,`new`
Thomas Harning Jr <harningt@gmail.com>
parents:
26
diff
changeset
|
96 | return 1; |
0d82e4f49a56
Updated changelog. event_buffer learned `get_data`,`length`,`drain`,`close`,`new`
Thomas Harning Jr <harningt@gmail.com>
parents:
26
diff
changeset
|
97 | } |
0d82e4f49a56
Updated changelog. event_buffer learned `get_data`,`length`,`drain`,`close`,`new`
Thomas Harning Jr <harningt@gmail.com>
parents:
26
diff
changeset
|
98 | |
0d82e4f49a56
Updated changelog. event_buffer learned `get_data`,`length`,`drain`,`close`,`new`
Thomas Harning Jr <harningt@gmail.com>
parents:
26
diff
changeset
|
99 | static int event_buffer_drain(lua_State* L) { |
0d82e4f49a56
Updated changelog. event_buffer learned `get_data`,`length`,`drain`,`close`,`new`
Thomas Harning Jr <harningt@gmail.com>
parents:
26
diff
changeset
|
100 | le_buffer* buf = event_buffer_check(L, 1); |
0d82e4f49a56
Updated changelog. event_buffer learned `get_data`,`length`,`drain`,`close`,`new`
Thomas Harning Jr <harningt@gmail.com>
parents:
26
diff
changeset
|
101 | size_t len = luaL_checkinteger(L, 2); |
0d82e4f49a56
Updated changelog. event_buffer learned `get_data`,`length`,`drain`,`close`,`new`
Thomas Harning Jr <harningt@gmail.com>
parents:
26
diff
changeset
|
102 | evbuffer_drain(buf->buffer, len); |
0d82e4f49a56
Updated changelog. event_buffer learned `get_data`,`length`,`drain`,`close`,`new`
Thomas Harning Jr <harningt@gmail.com>
parents:
26
diff
changeset
|
103 | return 0; |
0d82e4f49a56
Updated changelog. event_buffer learned `get_data`,`length`,`drain`,`close`,`new`
Thomas Harning Jr <harningt@gmail.com>
parents:
26
diff
changeset
|
104 | } |
0d82e4f49a56
Updated changelog. event_buffer learned `get_data`,`length`,`drain`,`close`,`new`
Thomas Harning Jr <harningt@gmail.com>
parents:
26
diff
changeset
|
105 | |
26
a117895e867c
Added event_buffer object + 'add' functionality
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
106 | static luaL_Reg buffer_funcs[] = { |
a117895e867c
Added event_buffer object + 'add' functionality
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
107 | {"add",event_buffer_add}, |
27
0d82e4f49a56
Updated changelog. event_buffer learned `get_data`,`length`,`drain`,`close`,`new`
Thomas Harning Jr <harningt@gmail.com>
parents:
26
diff
changeset
|
108 | {"length",event_buffer_get_length}, |
0d82e4f49a56
Updated changelog. event_buffer learned `get_data`,`length`,`drain`,`close`,`new`
Thomas Harning Jr <harningt@gmail.com>
parents:
26
diff
changeset
|
109 | {"get_data",event_buffer_get_data}, |
0d82e4f49a56
Updated changelog. event_buffer learned `get_data`,`length`,`drain`,`close`,`new`
Thomas Harning Jr <harningt@gmail.com>
parents:
26
diff
changeset
|
110 | {"drain",event_buffer_drain}, |
0d82e4f49a56
Updated changelog. event_buffer learned `get_data`,`length`,`drain`,`close`,`new`
Thomas Harning Jr <harningt@gmail.com>
parents:
26
diff
changeset
|
111 | {"close",event_buffer_gc}, |
26
a117895e867c
Added event_buffer object + 'add' functionality
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
112 | {NULL, NULL} |
a117895e867c
Added event_buffer object + 'add' functionality
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
113 | }; |
28
f7b864b661f4
Quick compilation-fixes.
Thomas Harning Jr <harningt@gmail.com>
parents:
27
diff
changeset
|
114 | static luaL_Reg funcs[] = { |
27
0d82e4f49a56
Updated changelog. event_buffer learned `get_data`,`length`,`drain`,`close`,`new`
Thomas Harning Jr <harningt@gmail.com>
parents:
26
diff
changeset
|
115 | {"new",event_buffer_push_new}, |
26
a117895e867c
Added event_buffer object + 'add' functionality
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
116 | {NULL, NULL} |
a117895e867c
Added event_buffer object + 'add' functionality
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
117 | }; |
a117895e867c
Added event_buffer object + 'add' functionality
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
118 | |
a117895e867c
Added event_buffer object + 'add' functionality
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
119 | int event_buffer_register(lua_State* L) { |
a117895e867c
Added event_buffer object + 'add' functionality
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
120 | luaL_newmetatable(L, EVENT_BUFFER_MT); |
27
0d82e4f49a56
Updated changelog. event_buffer learned `get_data`,`length`,`drain`,`close`,`new`
Thomas Harning Jr <harningt@gmail.com>
parents:
26
diff
changeset
|
121 | lua_pushcfunction(L, event_buffer_gc); |
0d82e4f49a56
Updated changelog. event_buffer learned `get_data`,`length`,`drain`,`close`,`new`
Thomas Harning Jr <harningt@gmail.com>
parents:
26
diff
changeset
|
122 | lua_setfield(L, -2, "__gc"); |
26
a117895e867c
Added event_buffer object + 'add' functionality
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
123 | lua_newtable(L); |
a117895e867c
Added event_buffer object + 'add' functionality
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
124 | luaL_register(L, NULL, buffer_funcs); |
a117895e867c
Added event_buffer object + 'add' functionality
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
125 | lua_setfield(L, -2, "__index"); |
a117895e867c
Added event_buffer object + 'add' functionality
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
126 | lua_pop(L, 1); |
a117895e867c
Added event_buffer object + 'add' functionality
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
127 | |
a117895e867c
Added event_buffer object + 'add' functionality
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
128 | luaL_register(L, "luaevent.core.buffer", funcs); |
a117895e867c
Added event_buffer object + 'add' functionality
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
129 | return 0; |
a117895e867c
Added event_buffer object + 'add' functionality
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
130 | } |