summaryrefslogtreecommitdiff
path: root/src/input/input.c
diff options
context:
space:
mode:
authorsanine-a <sanine.not@pm.me>2020-10-27 14:33:25 -0500
committersanine-a <sanine.not@pm.me>2020-10-27 14:33:25 -0500
commit3ef1112d085a101aa55d11ff894f1fb515d29c27 (patch)
tree32095f981cdfedbf6a8791b834f8ab5c82f8646e /src/input/input.c
parentacc262b019206d09ce0d297f7b185862fe432601 (diff)
add mesh lua functions and refactor lua type names
Diffstat (limited to 'src/input/input.c')
-rw-r--r--src/input/input.c272
1 files changed, 136 insertions, 136 deletions
diff --git a/src/input/input.c b/src/input/input.c
index aa472b4..a0ccbdc 100644
--- a/src/input/input.c
+++ b/src/input/input.c
@@ -30,144 +30,144 @@ void honey_setup_input(lua_State* L)
glfwSetCursorPosCallback(info->window, honey_glfw_mouse_movement_callback);
honey_lua_element key_elements[] = {
- { "unknown", HONEY_INT, { HONEY_KEY_UNKNOWN } },
- { "space", HONEY_INT, { HONEY_KEY_SPACE } },
- { "apostrophe", HONEY_INT, { HONEY_KEY_APOSTROPHE } },
- { "comma", HONEY_INT, { HONEY_KEY_COMMA } },
- { "minus", HONEY_INT, { HONEY_KEY_MINUS } },
- { "period", HONEY_INT, { HONEY_KEY_PERIOD } },
- { "slash", HONEY_INT, { HONEY_KEY_SLASH } },
- { "0", HONEY_INT, { HONEY_KEY_0 } },
- { "1", HONEY_INT, { HONEY_KEY_1 } },
- { "2", HONEY_INT, { HONEY_KEY_2 } },
- { "3", HONEY_INT, { HONEY_KEY_3 } },
- { "4", HONEY_INT, { HONEY_KEY_4 } },
- { "5", HONEY_INT, { HONEY_KEY_5 } },
- { "6", HONEY_INT, { HONEY_KEY_6 } },
- { "7", HONEY_INT, { HONEY_KEY_7 } },
- { "8", HONEY_INT, { HONEY_KEY_8 } },
- { "9", HONEY_INT, { HONEY_KEY_9 } },
- { "semicolon", HONEY_INT, { HONEY_KEY_SEMICOLON } },
- { "equal", HONEY_INT, { HONEY_KEY_EQUAL } },
- { "a", HONEY_INT, { HONEY_KEY_A } },
- { "b", HONEY_INT, { HONEY_KEY_B } },
- { "c", HONEY_INT, { HONEY_KEY_C } },
- { "d", HONEY_INT, { HONEY_KEY_D } },
- { "e", HONEY_INT, { HONEY_KEY_E } },
- { "f", HONEY_INT, { HONEY_KEY_F } },
- { "g", HONEY_INT, { HONEY_KEY_G } },
- { "h", HONEY_INT, { HONEY_KEY_H } },
- { "i", HONEY_INT, { HONEY_KEY_I } },
- { "j", HONEY_INT, { HONEY_KEY_J } },
- { "k", HONEY_INT, { HONEY_KEY_K } },
- { "l", HONEY_INT, { HONEY_KEY_L } },
- { "m", HONEY_INT, { HONEY_KEY_M } },
- { "n", HONEY_INT, { HONEY_KEY_N } },
- { "o", HONEY_INT, { HONEY_KEY_O } },
- { "p", HONEY_INT, { HONEY_KEY_P } },
- { "q", HONEY_INT, { HONEY_KEY_Q } },
- { "r", HONEY_INT, { HONEY_KEY_R } },
- { "s", HONEY_INT, { HONEY_KEY_S } },
- { "t", HONEY_INT, { HONEY_KEY_T } },
- { "u", HONEY_INT, { HONEY_KEY_U } },
- { "v", HONEY_INT, { HONEY_KEY_V } },
- { "w", HONEY_INT, { HONEY_KEY_W } },
- { "x", HONEY_INT, { HONEY_KEY_X } },
- { "y", HONEY_INT, { HONEY_KEY_Y } },
- { "z", HONEY_INT, { HONEY_KEY_Z } },
- { "left_bracket", HONEY_INT, { HONEY_KEY_LEFT_BRACKET } },
- { "backslash", HONEY_INT, { HONEY_KEY_BACKSLASH } },
- { "right_bracket", HONEY_INT, { HONEY_KEY_RIGHT_BRACKET } },
- { "grave_accent", HONEY_INT, { HONEY_KEY_GRAVE_ACCENT } },
- { "world_1", HONEY_INT, { HONEY_KEY_WORLD_1 } },
- { "world_2", HONEY_INT, { HONEY_KEY_WORLD_2 } },
- { "escape", HONEY_INT, { HONEY_KEY_ESCAPE } },
- { "enter", HONEY_INT, { HONEY_KEY_ENTER } },
- { "tab", HONEY_INT, { HONEY_KEY_TAB } },
- { "backspace", HONEY_INT, { HONEY_KEY_BACKSPACE } },
- { "insert", HONEY_INT, { HONEY_KEY_INSERT } },
- { "delete", HONEY_INT, { HONEY_KEY_DELETE } },
- { "right", HONEY_INT, { HONEY_KEY_RIGHT } },
- { "left", HONEY_INT, { HONEY_KEY_LEFT } },
- { "down", HONEY_INT, { HONEY_KEY_DOWN } },
- { "up", HONEY_INT, { HONEY_KEY_UP } },
- { "page_up", HONEY_INT, { HONEY_KEY_PAGE_UP } },
- { "page_down", HONEY_INT, { HONEY_KEY_PAGE_DOWN } },
- { "home", HONEY_INT, { HONEY_KEY_HOME } },
- { "end", HONEY_INT, { HONEY_KEY_END } },
- { "caps_lock", HONEY_INT, { HONEY_KEY_CAPS_LOCK } },
- { "scroll_lock", HONEY_INT, { HONEY_KEY_SCROLL_LOCK } },
- { "num_lock", HONEY_INT, { HONEY_KEY_NUM_LOCK } },
- { "print_screen", HONEY_INT, { HONEY_KEY_PRINT_SCREEN } },
- { "pause", HONEY_INT, { HONEY_KEY_PAUSE } },
- { "f1", HONEY_INT, { HONEY_KEY_F1 } },
- { "f2", HONEY_INT, { HONEY_KEY_F2 } },
- { "f3", HONEY_INT, { HONEY_KEY_F3 } },
- { "f4", HONEY_INT, { HONEY_KEY_F4 } },
- { "f5", HONEY_INT, { HONEY_KEY_F5 } },
- { "f6", HONEY_INT, { HONEY_KEY_F6 } },
- { "f7", HONEY_INT, { HONEY_KEY_F7 } },
- { "f8", HONEY_INT, { HONEY_KEY_F8 } },
- { "f9", HONEY_INT, { HONEY_KEY_F9 } },
- { "f10", HONEY_INT, { HONEY_KEY_F10 } },
- { "f11", HONEY_INT, { HONEY_KEY_F11 } },
- { "f12", HONEY_INT, { HONEY_KEY_F12 } },
- { "f13", HONEY_INT, { HONEY_KEY_F13 } },
- { "f14", HONEY_INT, { HONEY_KEY_F14 } },
- { "f15", HONEY_INT, { HONEY_KEY_F15 } },
- { "f16", HONEY_INT, { HONEY_KEY_F16 } },
- { "f17", HONEY_INT, { HONEY_KEY_F17 } },
- { "f18", HONEY_INT, { HONEY_KEY_F18 } },
- { "f19", HONEY_INT, { HONEY_KEY_F19 } },
- { "f20", HONEY_INT, { HONEY_KEY_F20 } },
- { "f21", HONEY_INT, { HONEY_KEY_F21 } },
- { "f22", HONEY_INT, { HONEY_KEY_F22 } },
- { "f23", HONEY_INT, { HONEY_KEY_F23 } },
- { "f24", HONEY_INT, { HONEY_KEY_F24 } },
- { "f25", HONEY_INT, { HONEY_KEY_F25 } },
- { "kp_0", HONEY_INT, { HONEY_KEY_KP_0 } },
- { "kp_1", HONEY_INT, { HONEY_KEY_KP_1 } },
- { "kp_2", HONEY_INT, { HONEY_KEY_KP_2 } },
- { "kp_3", HONEY_INT, { HONEY_KEY_KP_3 } },
- { "kp_4", HONEY_INT, { HONEY_KEY_KP_4 } },
- { "kp_5", HONEY_INT, { HONEY_KEY_KP_5 } },
- { "kp_6", HONEY_INT, { HONEY_KEY_KP_6 } },
- { "kp_7", HONEY_INT, { HONEY_KEY_KP_7 } },
- { "kp_8", HONEY_INT, { HONEY_KEY_KP_8 } },
- { "kp_9", HONEY_INT, { HONEY_KEY_KP_9 } },
- { "kp_decimal", HONEY_INT, { HONEY_KEY_KP_DECIMAL } },
- { "kp_divide", HONEY_INT, { HONEY_KEY_KP_DIVIDE } },
- { "kp_multiply", HONEY_INT, { HONEY_KEY_KP_MULTIPLY } },
- { "kp_subtract", HONEY_INT, { HONEY_KEY_KP_SUBTRACT } },
- { "kp_add", HONEY_INT, { HONEY_KEY_KP_ADD } },
- { "kp_enter", HONEY_INT, { HONEY_KEY_KP_ENTER } },
- { "kp_equal", HONEY_INT, { HONEY_KEY_KP_EQUAL } },
- { "left_shift", HONEY_INT, { HONEY_KEY_LEFT_SHIFT } },
- { "left_control", HONEY_INT, { HONEY_KEY_LEFT_CONTROL } },
- { "left_alt", HONEY_INT, { HONEY_KEY_LEFT_ALT } },
- { "left_super", HONEY_INT, { HONEY_KEY_LEFT_SUPER } },
- { "right_shift", HONEY_INT, { HONEY_KEY_RIGHT_SHIFT } },
- { "right_control", HONEY_INT, { HONEY_KEY_RIGHT_CONTROL } },
- { "right_alt", HONEY_INT, { HONEY_KEY_RIGHT_ALT } },
- { "right_super", HONEY_INT, { HONEY_KEY_RIGHT_SUPER } },
- { "menu", HONEY_INT, { HONEY_KEY_MENU } },
- { "is_down", HONEY_FUNC, { .function = honey_key_down } },
- { "bind", HONEY_FUNC, { .function = honey_key_bind } },
- { "unbind", HONEY_FUNC, { .function = honey_key_unbind } },
- { "unbind_all", HONEY_FUNC, { .function = honey_key_unbind_all } },
+ { "unknown", HONEY_INTEGER, { HONEY_KEY_UNKNOWN } },
+ { "space", HONEY_INTEGER, { HONEY_KEY_SPACE } },
+ { "apostrophe", HONEY_INTEGER, { HONEY_KEY_APOSTROPHE } },
+ { "comma", HONEY_INTEGER, { HONEY_KEY_COMMA } },
+ { "minus", HONEY_INTEGER, { HONEY_KEY_MINUS } },
+ { "period", HONEY_INTEGER, { HONEY_KEY_PERIOD } },
+ { "slash", HONEY_INTEGER, { HONEY_KEY_SLASH } },
+ { "0", HONEY_INTEGER, { HONEY_KEY_0 } },
+ { "1", HONEY_INTEGER, { HONEY_KEY_1 } },
+ { "2", HONEY_INTEGER, { HONEY_KEY_2 } },
+ { "3", HONEY_INTEGER, { HONEY_KEY_3 } },
+ { "4", HONEY_INTEGER, { HONEY_KEY_4 } },
+ { "5", HONEY_INTEGER, { HONEY_KEY_5 } },
+ { "6", HONEY_INTEGER, { HONEY_KEY_6 } },
+ { "7", HONEY_INTEGER, { HONEY_KEY_7 } },
+ { "8", HONEY_INTEGER, { HONEY_KEY_8 } },
+ { "9", HONEY_INTEGER, { HONEY_KEY_9 } },
+ { "semicolon", HONEY_INTEGER, { HONEY_KEY_SEMICOLON } },
+ { "equal", HONEY_INTEGER, { HONEY_KEY_EQUAL } },
+ { "a", HONEY_INTEGER, { HONEY_KEY_A } },
+ { "b", HONEY_INTEGER, { HONEY_KEY_B } },
+ { "c", HONEY_INTEGER, { HONEY_KEY_C } },
+ { "d", HONEY_INTEGER, { HONEY_KEY_D } },
+ { "e", HONEY_INTEGER, { HONEY_KEY_E } },
+ { "f", HONEY_INTEGER, { HONEY_KEY_F } },
+ { "g", HONEY_INTEGER, { HONEY_KEY_G } },
+ { "h", HONEY_INTEGER, { HONEY_KEY_H } },
+ { "i", HONEY_INTEGER, { HONEY_KEY_I } },
+ { "j", HONEY_INTEGER, { HONEY_KEY_J } },
+ { "k", HONEY_INTEGER, { HONEY_KEY_K } },
+ { "l", HONEY_INTEGER, { HONEY_KEY_L } },
+ { "m", HONEY_INTEGER, { HONEY_KEY_M } },
+ { "n", HONEY_INTEGER, { HONEY_KEY_N } },
+ { "o", HONEY_INTEGER, { HONEY_KEY_O } },
+ { "p", HONEY_INTEGER, { HONEY_KEY_P } },
+ { "q", HONEY_INTEGER, { HONEY_KEY_Q } },
+ { "r", HONEY_INTEGER, { HONEY_KEY_R } },
+ { "s", HONEY_INTEGER, { HONEY_KEY_S } },
+ { "t", HONEY_INTEGER, { HONEY_KEY_T } },
+ { "u", HONEY_INTEGER, { HONEY_KEY_U } },
+ { "v", HONEY_INTEGER, { HONEY_KEY_V } },
+ { "w", HONEY_INTEGER, { HONEY_KEY_W } },
+ { "x", HONEY_INTEGER, { HONEY_KEY_X } },
+ { "y", HONEY_INTEGER, { HONEY_KEY_Y } },
+ { "z", HONEY_INTEGER, { HONEY_KEY_Z } },
+ { "left_bracket", HONEY_INTEGER, { HONEY_KEY_LEFT_BRACKET } },
+ { "backslash", HONEY_INTEGER, { HONEY_KEY_BACKSLASH } },
+ { "right_bracket", HONEY_INTEGER, { HONEY_KEY_RIGHT_BRACKET } },
+ { "grave_accent", HONEY_INTEGER, { HONEY_KEY_GRAVE_ACCENT } },
+ { "world_1", HONEY_INTEGER, { HONEY_KEY_WORLD_1 } },
+ { "world_2", HONEY_INTEGER, { HONEY_KEY_WORLD_2 } },
+ { "escape", HONEY_INTEGER, { HONEY_KEY_ESCAPE } },
+ { "enter", HONEY_INTEGER, { HONEY_KEY_ENTER } },
+ { "tab", HONEY_INTEGER, { HONEY_KEY_TAB } },
+ { "backspace", HONEY_INTEGER, { HONEY_KEY_BACKSPACE } },
+ { "insert", HONEY_INTEGER, { HONEY_KEY_INSERT } },
+ { "delete", HONEY_INTEGER, { HONEY_KEY_DELETE } },
+ { "right", HONEY_INTEGER, { HONEY_KEY_RIGHT } },
+ { "left", HONEY_INTEGER, { HONEY_KEY_LEFT } },
+ { "down", HONEY_INTEGER, { HONEY_KEY_DOWN } },
+ { "up", HONEY_INTEGER, { HONEY_KEY_UP } },
+ { "page_up", HONEY_INTEGER, { HONEY_KEY_PAGE_UP } },
+ { "page_down", HONEY_INTEGER, { HONEY_KEY_PAGE_DOWN } },
+ { "home", HONEY_INTEGER, { HONEY_KEY_HOME } },
+ { "end", HONEY_INTEGER, { HONEY_KEY_END } },
+ { "caps_lock", HONEY_INTEGER, { HONEY_KEY_CAPS_LOCK } },
+ { "scroll_lock", HONEY_INTEGER, { HONEY_KEY_SCROLL_LOCK } },
+ { "num_lock", HONEY_INTEGER, { HONEY_KEY_NUM_LOCK } },
+ { "print_screen", HONEY_INTEGER, { HONEY_KEY_PRINT_SCREEN } },
+ { "pause", HONEY_INTEGER, { HONEY_KEY_PAUSE } },
+ { "f1", HONEY_INTEGER, { HONEY_KEY_F1 } },
+ { "f2", HONEY_INTEGER, { HONEY_KEY_F2 } },
+ { "f3", HONEY_INTEGER, { HONEY_KEY_F3 } },
+ { "f4", HONEY_INTEGER, { HONEY_KEY_F4 } },
+ { "f5", HONEY_INTEGER, { HONEY_KEY_F5 } },
+ { "f6", HONEY_INTEGER, { HONEY_KEY_F6 } },
+ { "f7", HONEY_INTEGER, { HONEY_KEY_F7 } },
+ { "f8", HONEY_INTEGER, { HONEY_KEY_F8 } },
+ { "f9", HONEY_INTEGER, { HONEY_KEY_F9 } },
+ { "f10", HONEY_INTEGER, { HONEY_KEY_F10 } },
+ { "f11", HONEY_INTEGER, { HONEY_KEY_F11 } },
+ { "f12", HONEY_INTEGER, { HONEY_KEY_F12 } },
+ { "f13", HONEY_INTEGER, { HONEY_KEY_F13 } },
+ { "f14", HONEY_INTEGER, { HONEY_KEY_F14 } },
+ { "f15", HONEY_INTEGER, { HONEY_KEY_F15 } },
+ { "f16", HONEY_INTEGER, { HONEY_KEY_F16 } },
+ { "f17", HONEY_INTEGER, { HONEY_KEY_F17 } },
+ { "f18", HONEY_INTEGER, { HONEY_KEY_F18 } },
+ { "f19", HONEY_INTEGER, { HONEY_KEY_F19 } },
+ { "f20", HONEY_INTEGER, { HONEY_KEY_F20 } },
+ { "f21", HONEY_INTEGER, { HONEY_KEY_F21 } },
+ { "f22", HONEY_INTEGER, { HONEY_KEY_F22 } },
+ { "f23", HONEY_INTEGER, { HONEY_KEY_F23 } },
+ { "f24", HONEY_INTEGER, { HONEY_KEY_F24 } },
+ { "f25", HONEY_INTEGER, { HONEY_KEY_F25 } },
+ { "kp_0", HONEY_INTEGER, { HONEY_KEY_KP_0 } },
+ { "kp_1", HONEY_INTEGER, { HONEY_KEY_KP_1 } },
+ { "kp_2", HONEY_INTEGER, { HONEY_KEY_KP_2 } },
+ { "kp_3", HONEY_INTEGER, { HONEY_KEY_KP_3 } },
+ { "kp_4", HONEY_INTEGER, { HONEY_KEY_KP_4 } },
+ { "kp_5", HONEY_INTEGER, { HONEY_KEY_KP_5 } },
+ { "kp_6", HONEY_INTEGER, { HONEY_KEY_KP_6 } },
+ { "kp_7", HONEY_INTEGER, { HONEY_KEY_KP_7 } },
+ { "kp_8", HONEY_INTEGER, { HONEY_KEY_KP_8 } },
+ { "kp_9", HONEY_INTEGER, { HONEY_KEY_KP_9 } },
+ { "kp_decimal", HONEY_INTEGER, { HONEY_KEY_KP_DECIMAL } },
+ { "kp_divide", HONEY_INTEGER, { HONEY_KEY_KP_DIVIDE } },
+ { "kp_multiply", HONEY_INTEGER, { HONEY_KEY_KP_MULTIPLY } },
+ { "kp_subtract", HONEY_INTEGER, { HONEY_KEY_KP_SUBTRACT } },
+ { "kp_add", HONEY_INTEGER, { HONEY_KEY_KP_ADD } },
+ { "kp_enter", HONEY_INTEGER, { HONEY_KEY_KP_ENTER } },
+ { "kp_equal", HONEY_INTEGER, { HONEY_KEY_KP_EQUAL } },
+ { "left_shift", HONEY_INTEGER, { HONEY_KEY_LEFT_SHIFT } },
+ { "left_control", HONEY_INTEGER, { HONEY_KEY_LEFT_CONTROL } },
+ { "left_alt", HONEY_INTEGER, { HONEY_KEY_LEFT_ALT } },
+ { "left_super", HONEY_INTEGER, { HONEY_KEY_LEFT_SUPER } },
+ { "right_shift", HONEY_INTEGER, { HONEY_KEY_RIGHT_SHIFT } },
+ { "right_control", HONEY_INTEGER, { HONEY_KEY_RIGHT_CONTROL } },
+ { "right_alt", HONEY_INTEGER, { HONEY_KEY_RIGHT_ALT } },
+ { "right_super", HONEY_INTEGER, { HONEY_KEY_RIGHT_SUPER } },
+ { "menu", HONEY_INTEGER, { HONEY_KEY_MENU } },
+ { "is_down", HONEY_FUNCTION, { .function = honey_key_down } },
+ { "bind", HONEY_FUNCTION, { .function = honey_key_bind } },
+ { "unbind", HONEY_FUNCTION, { .function = honey_key_unbind } },
+ { "unbind_all", HONEY_FUNCTION, { .function = honey_key_unbind_all } },
};
honey_lua_element mouse_mode_elements[] = {
- { "normal", HONEY_INT, { .integer = HONEY_MOUSE_MODE_NORMAL } },
- { "hidden", HONEY_INT, { .integer = HONEY_MOUSE_MODE_HIDDEN } },
- { "disabled", HONEY_INT, { .integer = HONEY_MOUSE_MODE_DISABLED } },
+ { "normal", HONEY_INTEGER, { .integer = HONEY_MOUSE_MODE_NORMAL } },
+ { "hidden", HONEY_INTEGER, { .integer = HONEY_MOUSE_MODE_HIDDEN } },
+ { "disabled", HONEY_INTEGER, { .integer = HONEY_MOUSE_MODE_DISABLED } },
};
honey_lua_element mouse_elements[] = {
{ "mode", HONEY_TABLE, { .table = { 3, mouse_mode_elements } } },
- { "set_mode", HONEY_FUNC, { .function = honey_mouse_set_mode } },
- { "bind_movement", HONEY_FUNC, { .function = honey_mouse_movement_bind } },
- { "unbind_movement", HONEY_FUNC, { .function = honey_mouse_movement_unbind } },
+ { "set_mode", HONEY_FUNCTION, { .function = honey_mouse_set_mode } },
+ { "bind_movement", HONEY_FUNCTION, { .function = honey_mouse_movement_bind } },
+ { "unbind_movement", HONEY_FUNCTION, { .function = honey_mouse_movement_unbind } },
};
honey_lua_element input_elements[] = {
@@ -201,12 +201,12 @@ int honey_key_bind(lua_State* L)
/* lua params: (int) key, (func) callback, (arb) data */
int n_args = lua_gettop(L);
if (n_args == 3) {
- if (!honey_lua_validate_types(L, 3, HONEY_INT, HONEY_FUNC, HONEY_ANY)) {
+ if (!honey_lua_validate_types(L, 3, HONEY_INTEGER, HONEY_FUNCTION, HONEY_ANY)) {
lua_error(L);
}
}
else if (n_args == 2) {
- if (!honey_lua_validate_types(L, 2, HONEY_INT, HONEY_FUNC)) {
+ if (!honey_lua_validate_types(L, 2, HONEY_INTEGER, HONEY_FUNCTION)) {
lua_error(L);
}
}
@@ -242,7 +242,7 @@ int honey_key_bind(lua_State* L)
int honey_key_unbind(lua_State* L)
{
/* lua params: (int) key */
- if (!honey_lua_validate_types(L, 1, HONEY_INT))
+ if (!honey_lua_validate_types(L, 1, HONEY_INTEGER))
lua_error(L);
int key = lua_tointeger(L, 1);
@@ -275,7 +275,7 @@ int honey_key_unbind_all(lua_State* L)
int honey_mouse_set_mode(lua_State* L)
{
- if (!honey_lua_validate_types(L, 1, HONEY_INT))
+ if (!honey_lua_validate_types(L, 1, HONEY_INTEGER))
lua_error(L);
int cursor_mode = lua_tointeger(L, 1);
@@ -298,7 +298,7 @@ int honey_mouse_set_mode(lua_State* L)
int honey_mouse_movement_bind(lua_State* L)
{
- if (!honey_lua_validate_types(L, 2, HONEY_FUNC, HONEY_ANY))
+ if (!honey_lua_validate_types(L, 2, HONEY_FUNCTION, HONEY_ANY))
lua_error(L);
honey_mouse_movement_unbind(L); /* avoid memory leaks! */