fixed bug due to s48_get_imported_binding causing a garbage collection.

This commit is contained in:
frese 2003-04-25 18:52:58 +00:00
parent 95c80db77f
commit 2e6d5657a4
16 changed files with 603 additions and 210 deletions

View File

@ -127,11 +127,17 @@ s48_value scx_Set_Wm_Class(s48_value dpy, s48_value w, s48_value name,
return S48_UNSPECIFIC;
}
#define scx_extract_initial_state(x) S48_EXTRACT_ENUM(x, "scx-initial-state")
#define scx_enter_initial_state(x) S48_ENTER_ENUM(x, "scx-initial-states")
s48_value scx_initial_state_binding = S48_FALSE;
#define scx_extract_initial_state(x) \
S48_EXTRACT_ENUM(x, scx_initial_state_binding)
s48_value scx_initial_states_binding = S48_FALSE;
#define scx_enter_initial_state(x) \
S48_ENTER_ENUM(x, scx_initial_states_binding)
#define scx_extract_wm_hint(x) S48_EXTRACT_ENUM(x, "scx-wm-hint")
#define scx_enter_wm_hint(x) S48_ENTER_ENUM(x, "scx-wm-hints")
s48_value scx_wm_hint_binding = S48_FALSE;
#define scx_extract_wm_hint(x) S48_EXTRACT_ENUM(x, scx_wm_hint_binding)
s48_value scx_wm_hints_binding = S48_FALSE;
#define scx_enter_wm_hint(x) S48_ENTER_ENUM(x, scx_wm_hints_binding)
s48_value scx_enter_wm_hint_alist(XWMHints* p) {
s48_value res = S48_NULL, t = S48_FALSE;
@ -282,8 +288,10 @@ s48_value scx_Set_Text_Property(s48_value dpy, s48_value w, s48_value prop,
return S48_UNSPECIFIC;
}
#define scx_extract_size_hint(h) S48_EXTRACT_ENUM(h, "scx-size-hint")
#define scx_enter_size_hint(h) S48_ENTER_ENUM(h, "scx-size-hints")
s48_value scx_size_hint_binding = S48_FALSE;
#define scx_extract_size_hint(h) S48_EXTRACT_ENUM(h, scx_size_hint_binding)
s48_value scx_size_hints_binding = S48_FALSE;
#define scx_enter_size_hint(h) S48_ENTER_ENUM(h, scx_size_hints_binding)
s48_value scx_enter_size_hint_alist(XSizeHints* sh) {
int i;
@ -404,8 +412,10 @@ s48_value scx_Set_Wm_Normal_Hints(s48_value dpy, s48_value win,
return S48_UNSPECIFIC;
}
s48_value scx_icon_size_binding = S48_FALSE;
s48_value scx_enter_icon_size(XIconSize* is) {
s48_value res = s48_make_record(s48_get_imported_binding("scx-icon-size"));
s48_value res = s48_make_record(scx_icon_size_binding);
S48_DECLARE_GC_PROTECT(1);
S48_GC_PROTECT_1(res);
S48_RECORD_SET(res, 0, s48_enter_integer(is->min_width));
@ -419,7 +429,7 @@ s48_value scx_enter_icon_size(XIconSize* is) {
}
void scx_extract_icon_size(s48_value r, XIconSize* is) {
s48_check_record_type(r, s48_get_imported_binding("scx-icon-size"));
s48_check_record_type(r, scx_icon_size_binding);
is->min_width = s48_extract_integer(S48_RECORD_REF(r, 0));
is->min_height = s48_extract_integer(S48_RECORD_REF(r, 1));
is->max_width = s48_extract_integer(S48_RECORD_REF(r, 2));
@ -461,6 +471,14 @@ s48_value scx_Set_Icon_Sizes(s48_value dpy, s48_value w, s48_value v) {
}
scx_init_client() {
SCX_PRO_IMP(scx_icon_size_binding, "scx-icon-size");
SCX_PRO_IMP(scx_initial_state_binding, "scx-initial-state");
SCX_PRO_IMP(scx_initial_states_binding, "scx-initial-states");
SCX_PRO_IMP(scx_wm_hint_binding, "scx-wm-hint");
SCX_PRO_IMP(scx_wm_hints_binding, "scx-wm-hints");
SCX_PRO_IMP(scx_size_hint_binding, "scx-size-hint");
SCX_PRO_IMP(scx_size_hints_binding, "scx-size-hints");
S48_EXPORT_FUNCTION(scx_Iconify_Window);
S48_EXPORT_FUNCTION(scx_Withdraw_Window);
S48_EXPORT_FUNCTION(scx_Reconfigure_Wm_Window);

View File

@ -1,6 +1,7 @@
#include "xlib.h"
#define scx_extract_colormap_alloc(x) S48_EXTRACT_ENUM(x, "scx-colormap-alloc")
s48_value scx_colormap_alloc_binding = S48_FALSE;
#define scx_extract_colormap_alloc(x) S48_EXTRACT_ENUM(x, scx_colormap_alloc_binding)
double s48_extract_number(s48_value v) {
if (S48_DOUBLE_P(v))
@ -257,6 +258,8 @@ s48_value scx_Store_Named_Color(s48_value display, s48_value colormap,
}
void scx_init_colormap(void) {
SCX_PRO_IMP(scx_colormap_alloc_binding, "scx-colormap-alloc");
S48_EXPORT_FUNCTION(scx_Create_Colormap);
S48_EXPORT_FUNCTION(scx_Copy_Colormap_And_Free);
S48_EXPORT_FUNCTION(scx_Free_Colormap);

View File

@ -2,9 +2,10 @@
#include "xlib.h"
s48_value scx_screen_format_binding = S48_FALSE;
s48_value scx_enter_screenformat(ScreenFormat* sf) {
s48_value res =
s48_make_record(s48_get_imported_binding("scx-screen-format"));
s48_value res = s48_make_record(scx_screen_format_binding);
S48_DECLARE_GC_PROTECT(1);
S48_GC_PROTECT_1(res);
S48_RECORD_SET(res, 0, s48_enter_integer(sf->depth));
@ -49,15 +50,17 @@ s48_value scx_enter_screen(Screen* scr) {
}
s48_value scx_display_list = S48_NULL;
s48_value scx_general_after_function_binding = S48_FALSE;
static int scx_after_function_wrapper(Display* dpy) {
s48_value display = scx_enter_display(dpy);
s48_value fun = S48_SHARED_BINDING_REF(
s48_get_imported_binding("scx-general-after-function"));
s48_value fun = S48_SHARED_BINDING_REF(scx_general_after_function_binding);
s48_call_scheme(fun, 1, display);
return 0;
}
s48_value scx_initialize_display_binding = S48_FALSE;
s48_value scx_enter_display(Display* dpy) {
s48_value d = scx_struct_cache_ref(dpy, scx_display_list);
if (d == S48_FALSE) {
@ -91,8 +94,8 @@ s48_value scx_enter_display(Display* dpy) {
S48_RECORD_SET(d, 14, S48_FALSE);
XSetAfterFunction(dpy, &scx_after_function_wrapper);
S48_RECORD_SET(d, 15, S48_FALSE);
s48_call_scheme(S48_SHARED_BINDING_REF(s48_get_imported_binding(
"scx-initialize-display")), 1, d);
s48_call_scheme(S48_SHARED_BINDING_REF(scx_initialize_display_binding),
1, d);
S48_GC_UNPROTECT();
}
return d;
@ -145,6 +148,10 @@ s48_value scx_Display_Select_Input(s48_value display, s48_value window,
}
void scx_init_display(void) {
SCX_PRO_IMP(scx_screen_format_binding, "scx-screen-format");
SCX_PRO_IMP(scx_general_after_function_binding,
"scx-general-after-function");
SCX_PRO_IMP(scx_initialize_display_binding, "scx-initialize-display");
S48_GC_PROTECT_GLOBAL(scx_display_list);
S48_GC_PROTECT_GLOBAL(scx_screen_list);

View File

@ -1,9 +1,11 @@
#include "xlib.h"
#include <stdio.h>
s48_value scx_error_code_binding = S48_FALSE;
s48_value scx_error_codes_binding = S48_FALSE;
s48_value scx_enter_error_code(int code) {
s48_value v =
S48_SHARED_BINDING_REF(s48_get_imported_binding("scx-error-codes"));
s48_value v = S48_SHARED_BINDING_REF(scx_error_codes_binding);
if (code < S48_VECTOR_LENGTH(v))
return S48_VECTOR_REF(v, code);
else
@ -11,16 +13,17 @@ s48_value scx_enter_error_code(int code) {
}
s48_value scx_extract_error_code(s48_value code) {
if (S48_RECORD_P(code)) {
s48_value t =
S48_SHARED_BINDING_REF(s48_get_imported_binding("scx-error-code"));
return s48_extract_integer(s48_checked_record_ref(code, 1, t));
} else
if (S48_RECORD_P(code))
return s48_extract_integer(s48_checked_record_ref(code, 1,
scx_error_code_binding));
else
return s48_extract_integer(code);
}
s48_value scx_x_error_binding = S48_FALSE;
s48_value scx_enter_x_error(XErrorEvent* xe) {
s48_value e = s48_make_record(s48_get_imported_binding("scx-x-error"));
s48_value e = s48_make_record(scx_x_error_binding);
char s[1024];
S48_DECLARE_GC_PROTECT(1);
S48_GC_PROTECT_1(e);
@ -39,7 +42,7 @@ s48_value scx_enter_x_error(XErrorEvent* xe) {
}
void scx_extract_x_error(s48_value e, XErrorEvent* xe) {
s48_check_record_type(e, s48_get_imported_binding("scx-x-error"));
s48_check_record_type(e, scx_x_error_binding);
xe->type = 1;
xe->display = scx_extract_display(S48_RECORD_REF(e, 0));
xe->serial = s48_extract_integer(S48_RECORD_REF(e, 1));
@ -111,6 +114,9 @@ static int fatal_error_handler_wrapper(Display* d) {
}
void scx_init_error() {
SCX_PRO_IMP(scx_error_code_binding, "scx-error-code");
SCX_PRO_IMP(scx_error_codes_binding, "scx-error-codes");
SCX_PRO_IMP(scx_x_error_binding, "scx-x-error");
S48_GC_PROTECT_GLOBAL(internal_x_error_handler_binding);
S48_GC_PROTECT_GLOBAL(internal_x_fatal_error_handler_binding);

View File

@ -4,8 +4,8 @@
#define EENTER(i, n, f) S48_RECORD_SET(e, i, f(xe->n))
#define EENTER_START(stype) \
s48_value e = s48_make_record(s48_get_imported_binding(stype)); \
#define EENTER_START(rtype) \
s48_value e = s48_make_record(rtype); \
S48_DECLARE_GC_PROTECT(1); \
S48_GC_PROTECT_1(e); \
EENTER(0, type, scx_enter_event_type); \
@ -17,8 +17,10 @@
S48_GC_UNPROTECT(); \
return e
s48_value scx_key_event_binding = S48_FALSE;
s48_value scx_enter_key_event(XKeyEvent* xe) {
EENTER_START("scx-key-event");
EENTER_START(scx_key_event_binding);
EENTER(4, window, scx_enter_window);
EENTER(5, root, scx_enter_window);
EENTER(6, subwindow, scx_enter_window);
@ -33,8 +35,10 @@ s48_value scx_enter_key_event(XKeyEvent* xe) {
EENTER_END();
}
s48_value scx_button_event_binding = S48_FALSE;
s48_value scx_enter_button_event(XButtonEvent* xe) {
EENTER_START("scx-button-event");
EENTER_START(scx_button_event_binding);
EENTER(4, window, scx_enter_window);
EENTER(5, root, scx_enter_window);
EENTER(6, subwindow, scx_enter_window);
@ -49,8 +53,10 @@ s48_value scx_enter_button_event(XButtonEvent* xe) {
EENTER_END();
}
s48_value scx_motion_event_binding = S48_FALSE;
s48_value scx_enter_motion_event(XMotionEvent* xe) {
EENTER_START("scx-motion-event");
EENTER_START(scx_motion_event_binding);
EENTER(4, window, scx_enter_window);
EENTER(5, root, scx_enter_window);
EENTER(6, subwindow, scx_enter_window);
@ -65,8 +71,10 @@ s48_value scx_enter_motion_event(XMotionEvent* xe) {
EENTER_END();
}
s48_value scx_crossing_event_binding = S48_FALSE;
s48_value scx_enter_crossing_event(XCrossingEvent* xe) {
EENTER_START("scx-crossing-event");
EENTER_START(scx_crossing_event_binding);
EENTER(4, window, scx_enter_window);
EENTER(5, root, scx_enter_window);
EENTER(6, subwindow, scx_enter_window);
@ -83,16 +91,20 @@ s48_value scx_enter_crossing_event(XCrossingEvent* xe) {
EENTER_END();
}
s48_value scx_focus_change_event_binding = S48_FALSE;
s48_value scx_enter_focus_change_event(XFocusChangeEvent* xe) {
EENTER_START("scx-focus-change-event");
EENTER_START(scx_focus_change_event_binding);
EENTER(4, window, scx_enter_window);
EENTER(5, mode, scx_enter_notify_mode);
EENTER(6, detail, scx_enter_notify_detail);
EENTER_END();
}
s48_value scx_expose_event_binding = S48_FALSE;
s48_value scx_enter_expose_event(XExposeEvent* xe) {
EENTER_START("scx-expose-event");
EENTER_START(scx_expose_event_binding);
EENTER(4, window, scx_enter_window);
EENTER(5, x, s48_enter_integer);
EENTER(6, y, s48_enter_integer);
@ -102,8 +114,10 @@ s48_value scx_enter_expose_event(XExposeEvent* xe) {
EENTER_END();
}
s48_value scx_graphics_expose_event_binding = S48_FALSE;
s48_value scx_enter_graphics_expose_event(XGraphicsExposeEvent* xe) {
EENTER_START("scx-graphics-expose-event");
EENTER_START(scx_graphics_expose_event_binding);
EENTER(4, drawable, scx_enter_drawable);
EENTER(5, x, s48_enter_integer);
EENTER(6, y, s48_enter_integer);
@ -115,23 +129,29 @@ s48_value scx_enter_graphics_expose_event(XGraphicsExposeEvent* xe) {
EENTER_END();
}
s48_value scx_no_expose_event_binding = S48_FALSE;
s48_value scx_enter_no_expose_event(XNoExposeEvent* xe) {
EENTER_START("scx-no-expose-event");
EENTER_START(scx_no_expose_event_binding);
EENTER(4, drawable, scx_enter_drawable);
EENTER(5, major_code, s48_enter_integer);
EENTER(6, minor_code, s48_enter_integer);
EENTER_END();
}
s48_value scx_visibility_event_binding = S48_FALSE;
s48_value scx_enter_visibility_event(XVisibilityEvent* xe) {
EENTER_START("scx-visibility-event");
EENTER_START(scx_visibility_event_binding);
EENTER(4, window, scx_enter_window);
EENTER(5, state, scx_enter_visibility_state);
EENTER_END();
}
s48_value scx_create_window_event_binding = S48_FALSE;
s48_value scx_enter_create_window_event(XCreateWindowEvent* xe) {
EENTER_START("scx-create-window-event");
EENTER_START(scx_create_window_event_binding);
EENTER(4, parent, scx_enter_window);
EENTER(5, window, scx_enter_window);
EENTER(6, x, s48_enter_integer);
@ -143,38 +163,48 @@ s48_value scx_enter_create_window_event(XCreateWindowEvent* xe) {
EENTER_END();
}
s48_value scx_destroy_window_event_binding = S48_FALSE;
s48_value scx_enter_destroy_window_event(XDestroyWindowEvent* xe) {
EENTER_START("scx-destroy-window-event");
EENTER_START(scx_destroy_window_event_binding);
EENTER(4, event, scx_enter_window);
EENTER(5, window, scx_enter_window);
EENTER_END();
}
s48_value scx_unmap_event_binding = S48_FALSE;
s48_value scx_enter_unmap_event(XUnmapEvent* xe) {
EENTER_START("scx-unmap-event");
EENTER_START(scx_unmap_event_binding);
EENTER(4, event, scx_enter_window);
EENTER(5, window, scx_enter_window);
EENTER(6, from_configure, S48_ENTER_BOOLEAN);
EENTER_END();
}
s48_value scx_map_event_binding = S48_FALSE;
s48_value scx_enter_map_event(XMapEvent* xe) {
EENTER_START("scx-map-event");
EENTER_START(scx_map_event_binding);
EENTER(4, event, scx_enter_window);
EENTER(5, window, scx_enter_window);
EENTER(6, override_redirect, S48_ENTER_BOOLEAN);
EENTER_END();
}
s48_value scx_map_request_event_binding = S48_FALSE;
s48_value scx_enter_map_request_event(XMapRequestEvent* xe) {
EENTER_START("scx-map-request-event");
EENTER_START(scx_map_request_event_binding);
EENTER(4, parent, scx_enter_window);
EENTER(5, window, scx_enter_window);
EENTER_END();
}
s48_value scx_reparent_event_binding = S48_FALSE;
s48_value scx_enter_reparent_event(XReparentEvent* xe) {
EENTER_START("scx-reparent-event");
EENTER_START(scx_reparent_event_binding);
EENTER(4, event, scx_enter_window);
EENTER(5, window, scx_enter_window);
EENTER(6, parent, scx_enter_window);
@ -184,8 +214,10 @@ s48_value scx_enter_reparent_event(XReparentEvent* xe) {
EENTER_END();
}
s48_value scx_configure_event_binding = S48_FALSE;
s48_value scx_enter_configure_event(XConfigureEvent* xe) {
EENTER_START("scx-configure-event");
EENTER_START(scx_configure_event_binding);
EENTER(4, event, scx_enter_window);
EENTER(5, window, scx_enter_window);
EENTER(6, x, s48_enter_integer);
@ -198,8 +230,10 @@ s48_value scx_enter_configure_event(XConfigureEvent* xe) {
EENTER_END();
}
s48_value scx_gravity_event_binding = S48_FALSE;
s48_value scx_enter_gravity_event(XGravityEvent* xe) {
EENTER_START("scx-gravity-event");
EENTER_START(scx_gravity_event_binding);
EENTER(4, event, scx_enter_window);
EENTER(5, window, scx_enter_window);
EENTER(6, x, s48_enter_integer);
@ -207,17 +241,21 @@ s48_value scx_enter_gravity_event(XGravityEvent* xe) {
EENTER_END();
}
s48_value scx_resize_request_event_binding = S48_FALSE;
s48_value scx_enter_resize_request_event(XResizeRequestEvent* xe) {
EENTER_START("scx-resize-request-event");
EENTER_START(scx_resize_request_event_binding);
EENTER(4, window, scx_enter_window);
EENTER(5, width, s48_enter_integer);
EENTER(6, height, s48_enter_integer);
EENTER_END();
}
s48_value scx_configure_request_event_binding = S48_FALSE;
s48_value scx_enter_configure_request_event(XConfigureRequestEvent* xe) {
XWindowChanges WC;
EENTER_START("scx-configure-request-event");
EENTER_START(scx_configure_request_event_binding);
EENTER(4, parent, scx_enter_window);
EENTER(5, window, scx_enter_window);
WC.x = xe->x;
@ -231,24 +269,30 @@ s48_value scx_enter_configure_request_event(XConfigureRequestEvent* xe) {
EENTER_END();
}
s48_value scx_circulate_event_binding = S48_FALSE;
s48_value scx_enter_circulate_event(XCirculateEvent* xe) {
EENTER_START("scx-circulate-event");
EENTER_START(scx_circulate_event_binding);
EENTER(4, event, scx_enter_window);
EENTER(5, window, scx_enter_window);
EENTER(6, place, scx_enter_place);
EENTER_END();
}
s48_value scx_circulate_request_event_binding = S48_FALSE;
s48_value scx_enter_circulate_request_event(XCirculateRequestEvent* xe) {
EENTER_START("scx-circulate-request-event");
EENTER_START(scx_circulate_request_event_binding);
EENTER(4, parent, scx_enter_window);
EENTER(5, window, scx_enter_window);
EENTER(6, place, scx_enter_place);
EENTER_END();
}
s48_value scx_property_event_binding = S48_FALSE;
s48_value scx_enter_property_event(XPropertyEvent* xe) {
EENTER_START("scx-property-event");
EENTER_START(scx_property_event_binding);
EENTER(4, window, scx_enter_window);
EENTER(5, atom, scx_enter_atom);
EENTER(6, time, scx_enter_time);
@ -256,16 +300,20 @@ s48_value scx_enter_property_event(XPropertyEvent* xe) {
EENTER_END();
}
s48_value scx_selection_clear_event_binding = S48_FALSE;
s48_value scx_enter_selection_clear_event(XSelectionClearEvent* xe) {
EENTER_START("scx-selection-clear-event");
EENTER_START(scx_selection_clear_event_binding);
EENTER(4, window, scx_enter_window);
EENTER(5, selection, scx_enter_atom);
EENTER(6, time, scx_enter_time);
EENTER_END();
}
s48_value scx_selection_request_event_binding = S48_FALSE;
s48_value scx_enter_selection_request_event(XSelectionRequestEvent* xe) {
EENTER_START("scx-selection-request-event");
EENTER_START(scx_selection_request_event_binding);
EENTER(4, owner, scx_enter_window);
EENTER(5, requestor, scx_enter_window);
EENTER(6, selection, scx_enter_atom);
@ -275,8 +323,10 @@ s48_value scx_enter_selection_request_event(XSelectionRequestEvent* xe) {
EENTER_END();
}
s48_value scx_selection_event_binding = S48_FALSE;
s48_value scx_enter_selection_event(XSelectionEvent* xe) {
EENTER_START("scx-selection-event");
EENTER_START(scx_selection_event_binding);
EENTER(4, requestor, scx_enter_window);
EENTER(5, selection, scx_enter_atom);
EENTER(6, target, scx_enter_atom);
@ -285,8 +335,10 @@ s48_value scx_enter_selection_event(XSelectionEvent* xe) {
EENTER_END();
}
s48_value scx_colormap_event_binding = S48_FALSE;
s48_value scx_enter_colormap_event(XColormapEvent* xe) {
EENTER_START("scx-colormap-event");
EENTER_START(scx_colormap_event_binding);
EENTER(4, window, scx_enter_window);
EENTER(5, colormap, scx_enter_colormap);
EENTER(6, new, S48_ENTER_BOOLEAN);
@ -294,8 +346,10 @@ s48_value scx_enter_colormap_event(XColormapEvent* xe) {
EENTER_END();
}
s48_value scx_client_message_event_binding = S48_FALSE;
s48_value scx_enter_client_message_event(XClientMessageEvent* xe) {
EENTER_START("scx-client-message-event");
EENTER_START(scx_client_message_event_binding);
EENTER(4, window, scx_enter_window);
S48_RECORD_SET(e, 5, scx_enter_property(xe->message_type,
xe->format,
@ -304,8 +358,10 @@ s48_value scx_enter_client_message_event(XClientMessageEvent* xe) {
EENTER_END();
}
s48_value scx_mapping_event_binding = S48_FALSE;
s48_value scx_enter_mapping_event(XMappingEvent* xe) {
EENTER_START("scx-mapping-event");
EENTER_START(scx_mapping_event_binding);
EENTER(4, window, scx_enter_window);
EENTER(5, request, scx_enter_mapping_request);
EENTER(6, first_keycode, scx_enter_keycode);
@ -313,9 +369,11 @@ s48_value scx_enter_mapping_event(XMappingEvent* xe) {
EENTER_END();
}
s48_value scx_keymap_event_binding = S48_FALSE;
s48_value scx_enter_keymap_event(XKeymapEvent* xe) {
s48_value temp; int i;
EENTER_START("scx-keymap-event");
EENTER_START(scx_keymap_event_binding);
temp = s48_make_vector(32*8, s48_enter_fixnum(0));
for (i = 0; i < 32; i++) {
int j; char b = xe->key_vector[i];
@ -391,8 +449,8 @@ s48_value scx_enter_event(XEvent* e) {
/*** extraction ****************************************************/
#define EEXTRACT(i, name, f) xe->name = f(S48_RECORD_REF(e, i))
#define EEXTRACT_START(stype) \
s48_check_record_type(e, s48_get_imported_binding(stype)); \
#define EEXTRACT_START(rtype) \
s48_check_record_type(e, rtype); \
EEXTRACT(0, type, scx_extract_event_type); \
EEXTRACT(1, serial, s48_extract_integer); \
EEXTRACT(2, send_event, S48_EXTRACT_BOOLEAN); \
@ -400,7 +458,7 @@ s48_value scx_enter_event(XEvent* e) {
#define EEXTRACT_END()
void scx_extract_key_event(s48_value e, XKeyEvent* xe) {
EEXTRACT_START("scx-key-event");
EEXTRACT_START(scx_key_event_binding);
EEXTRACT(4, window, scx_extract_window);
EEXTRACT(5, root, scx_extract_window);
EEXTRACT(6, subwindow, scx_extract_window);
@ -416,7 +474,7 @@ void scx_extract_key_event(s48_value e, XKeyEvent* xe) {
}
void scx_extract_button_event(s48_value e, XButtonEvent* xe) {
EEXTRACT_START("scx-button-event");
EEXTRACT_START(scx_button_event_binding);
EEXTRACT(4, window, scx_extract_window);
EEXTRACT(5, root, scx_extract_window);
EEXTRACT(6, subwindow, scx_extract_window);
@ -432,7 +490,7 @@ void scx_extract_button_event(s48_value e, XButtonEvent* xe) {
}
void scx_extract_motion_event(s48_value e, XMotionEvent* xe) {
EEXTRACT_START("scx-motion-event");
EEXTRACT_START(scx_motion_event_binding);
EEXTRACT(4, window, scx_extract_window);
EEXTRACT(5, root, scx_extract_window);
EEXTRACT(6, subwindow, scx_extract_window);
@ -448,7 +506,7 @@ void scx_extract_motion_event(s48_value e, XMotionEvent* xe) {
}
void scx_extract_crossing_event(s48_value e, XCrossingEvent* xe) {
EEXTRACT_START("scx-crossing-event");
EEXTRACT_START(scx_crossing_event_binding);
EEXTRACT(4, window, scx_extract_window);
EEXTRACT(5, root, scx_extract_window);
EEXTRACT(6, subwindow, scx_extract_window);
@ -466,7 +524,7 @@ void scx_extract_crossing_event(s48_value e, XCrossingEvent* xe) {
}
void scx_extract_focus_change_event(s48_value e, XFocusChangeEvent* xe) {
EEXTRACT_START("scx-focus-change-event");
EEXTRACT_START(scx_focus_change_event_binding);
EEXTRACT(4, window, scx_extract_window);
EEXTRACT(5, mode, scx_extract_notify_mode);
EEXTRACT(6, detail, scx_extract_notify_detail);
@ -474,7 +532,7 @@ void scx_extract_focus_change_event(s48_value e, XFocusChangeEvent* xe) {
}
void scx_extract_expose_event(s48_value e, XExposeEvent* xe) {
EEXTRACT_START("scx-expose-event");
EEXTRACT_START(scx_expose_event_binding);
EEXTRACT(4, window, scx_extract_window);
EEXTRACT(5, x, s48_extract_integer);
EEXTRACT(6, y, s48_extract_integer);
@ -485,7 +543,7 @@ void scx_extract_expose_event(s48_value e, XExposeEvent* xe) {
}
void scx_extract_graphics_expose_event(s48_value e, XGraphicsExposeEvent* xe) {
EEXTRACT_START("scx-graphics-expose-event");
EEXTRACT_START(scx_graphics_expose_event_binding);
EEXTRACT(4, drawable, scx_extract_drawable);
EEXTRACT(5, x, s48_extract_integer);
EEXTRACT(6, y, s48_extract_integer);
@ -498,7 +556,7 @@ void scx_extract_graphics_expose_event(s48_value e, XGraphicsExposeEvent* xe) {
}
void scx_extract_no_expose_event(s48_value e, XNoExposeEvent* xe) {
EEXTRACT_START("scx-no-expose-event");
EEXTRACT_START(scx_no_expose_event_binding);
EEXTRACT(4, drawable, scx_extract_drawable);
EEXTRACT(5, major_code, s48_extract_integer);
EEXTRACT(6, minor_code, s48_extract_integer);
@ -506,14 +564,14 @@ void scx_extract_no_expose_event(s48_value e, XNoExposeEvent* xe) {
}
void scx_extract_visibility_event(s48_value e, XVisibilityEvent* xe) {
EEXTRACT_START("scx-visibility-event");
EEXTRACT_START(scx_visibility_event_binding);
EEXTRACT(4, window, scx_extract_window);
EEXTRACT(5, state, scx_extract_visibility_state);
EEXTRACT_END();
}
void scx_extract_create_window_event(s48_value e, XCreateWindowEvent* xe) {
EEXTRACT_START("scx-create-window-event");
EEXTRACT_START(scx_create_window_event_binding);
EEXTRACT(4, parent, scx_extract_window);
EEXTRACT(5, window, scx_extract_window);
EEXTRACT(6, x, s48_extract_integer);
@ -526,14 +584,14 @@ void scx_extract_create_window_event(s48_value e, XCreateWindowEvent* xe) {
}
void scx_extract_destroy_window_event(s48_value e, XDestroyWindowEvent* xe) {
EEXTRACT_START("scx-destroy-window-event");
EEXTRACT_START(scx_destroy_window_event_binding);
EEXTRACT(4, event, scx_extract_window);
EEXTRACT(5, window, scx_extract_window);
EEXTRACT_END();
}
void scx_extract_unmap_event(s48_value e, XUnmapEvent* xe) {
EEXTRACT_START("scx-unmap-event");
EEXTRACT_START(scx_unmap_event_binding);
EEXTRACT(4, event, scx_extract_window);
EEXTRACT(5, window, scx_extract_window);
EEXTRACT(6, from_configure, S48_EXTRACT_BOOLEAN);
@ -541,7 +599,7 @@ void scx_extract_unmap_event(s48_value e, XUnmapEvent* xe) {
}
void scx_extract_map_event(s48_value e, XMapEvent* xe) {
EEXTRACT_START("scx-map-event");
EEXTRACT_START(scx_map_event_binding);
EEXTRACT(4, event, scx_extract_window);
EEXTRACT(5, window, scx_extract_window);
EEXTRACT(6, override_redirect, S48_EXTRACT_BOOLEAN);
@ -549,14 +607,14 @@ void scx_extract_map_event(s48_value e, XMapEvent* xe) {
}
void scx_extract_map_request_event(s48_value e, XMapRequestEvent* xe) {
EEXTRACT_START("scx-map-request-event");
EEXTRACT_START(scx_map_request_event_binding);
EEXTRACT(4, parent, scx_extract_window);
EEXTRACT(5, window, scx_extract_window);
EEXTRACT_END();
}
void scx_extract_reparent_event(s48_value e, XReparentEvent* xe) {
EEXTRACT_START("scx-reparent-event");
EEXTRACT_START(scx_reparent_event_binding);
EEXTRACT(4, event, scx_extract_window);
EEXTRACT(5, window, scx_extract_window);
EEXTRACT(6, parent, scx_extract_window);
@ -567,7 +625,7 @@ void scx_extract_reparent_event(s48_value e, XReparentEvent* xe) {
}
void scx_extract_configure_event(s48_value e, XConfigureEvent* xe) {
EEXTRACT_START("scx-configure-event");
EEXTRACT_START(scx_configure_event_binding);
EEXTRACT(4, event, scx_extract_window);
EEXTRACT(5, window, scx_extract_window);
EEXTRACT(6, x, s48_extract_integer);
@ -581,7 +639,7 @@ void scx_extract_configure_event(s48_value e, XConfigureEvent* xe) {
}
void scx_extract_gravity_event(s48_value e, XGravityEvent* xe) {
EEXTRACT_START("scx-gravity-event");
EEXTRACT_START(scx_gravity_event_binding);
EEXTRACT(4, event, scx_extract_window);
EEXTRACT(5, window, scx_extract_window);
EEXTRACT(6, x, s48_extract_integer);
@ -590,7 +648,7 @@ void scx_extract_gravity_event(s48_value e, XGravityEvent* xe) {
}
void scx_extract_resize_request_event(s48_value e, XResizeRequestEvent* xe) {
EEXTRACT_START("scx-resize-request-event");
EEXTRACT_START(scx_resize_request_event_binding);
EEXTRACT(4, window, scx_extract_window);
EEXTRACT(5, width, s48_extract_integer);
EEXTRACT(6, height, s48_extract_integer);
@ -600,7 +658,7 @@ void scx_extract_resize_request_event(s48_value e, XResizeRequestEvent* xe) {
void scx_extract_configure_request_event(s48_value e,
XConfigureRequestEvent* xe) {
XWindowChanges WC;
EEXTRACT_START("scx-configure-request-event");
EEXTRACT_START(scx_configure_request_event_binding);
EEXTRACT(4, parent, scx_extract_window);
EEXTRACT(5, window, scx_extract_window);
xe->value_mask = scx_extract_window_changes(S48_RECORD_REF(e, 6), &WC);
@ -615,7 +673,7 @@ void scx_extract_configure_request_event(s48_value e,
}
void scx_extract_circulate_event(s48_value e, XCirculateEvent* xe) {
EEXTRACT_START("scx-circulate-event");
EEXTRACT_START(scx_circulate_event_binding);
EEXTRACT(4, event, scx_extract_window);
EEXTRACT(5, window, scx_extract_window);
EEXTRACT(6, place, scx_extract_place);
@ -624,7 +682,7 @@ void scx_extract_circulate_event(s48_value e, XCirculateEvent* xe) {
void scx_extract_circulate_request_event(s48_value e,
XCirculateRequestEvent* xe) {
EEXTRACT_START("scx-circulate-request-event");
EEXTRACT_START(scx_circulate_request_event_binding);
EEXTRACT(4, parent, scx_extract_window);
EEXTRACT(5, window, scx_extract_window);
EEXTRACT(6, place, scx_extract_place);
@ -632,7 +690,7 @@ void scx_extract_circulate_request_event(s48_value e,
}
void scx_extract_property_event(s48_value e, XPropertyEvent* xe) {
EEXTRACT_START("scx-property-event");
EEXTRACT_START(scx_property_event_binding);
EEXTRACT(4, window, scx_extract_window);
EEXTRACT(5, atom, scx_extract_atom);
EEXTRACT(6, time, scx_extract_time);
@ -641,7 +699,7 @@ void scx_extract_property_event(s48_value e, XPropertyEvent* xe) {
}
void scx_extract_selection_clear_event(s48_value e, XSelectionClearEvent* xe) {
EEXTRACT_START("scx-selection-clear-event");
EEXTRACT_START(scx_selection_clear_event_binding);
EEXTRACT(4, window, scx_extract_window);
EEXTRACT(5, selection, scx_extract_atom);
EEXTRACT(6, time, scx_extract_time);
@ -650,7 +708,7 @@ void scx_extract_selection_clear_event(s48_value e, XSelectionClearEvent* xe) {
void scx_extract_selection_request_event(s48_value e,
XSelectionRequestEvent* xe) {
EEXTRACT_START("scx-selection-request-event");
EEXTRACT_START(scx_selection_request_event_binding);
EEXTRACT(4, owner, scx_extract_window);
EEXTRACT(5, requestor, scx_extract_window);
EEXTRACT(6, selection, scx_extract_atom);
@ -661,7 +719,7 @@ void scx_extract_selection_request_event(s48_value e,
}
void scx_extract_selection_event(s48_value e, XSelectionEvent* xe) {
EEXTRACT_START("scx-selection-event");
EEXTRACT_START(scx_selection_event_binding);
EEXTRACT(4, requestor, scx_extract_window);
EEXTRACT(5, selection, scx_extract_atom);
EEXTRACT(6, target, scx_extract_atom);
@ -671,7 +729,7 @@ void scx_extract_selection_event(s48_value e, XSelectionEvent* xe) {
}
void scx_extract_colormap_event(s48_value e, XColormapEvent* xe) {
EEXTRACT_START("scx-colormap-event");
EEXTRACT_START(scx_colormap_event_binding);
EEXTRACT(4, window, scx_extract_window);
EEXTRACT(5, colormap, scx_extract_colormap);
EEXTRACT(6, new, S48_EXTRACT_BOOLEAN);
@ -682,7 +740,7 @@ void scx_extract_colormap_event(s48_value e, XColormapEvent* xe) {
void scx_extract_client_message_event(s48_value e, XClientMessageEvent* xe) {
int nelements, i;
char* data; int bytes;
EEXTRACT_START("scx-client-message-event");
EEXTRACT_START(scx_client_message_event_binding);
EEXTRACT(4, window, scx_extract_window);
scx_extract_property(S48_RECORD_REF(e, 5), &xe->message_type, &xe->format,
&data, &nelements);
@ -699,7 +757,7 @@ void scx_extract_client_message_event(s48_value e, XClientMessageEvent* xe) {
}
void scx_extract_mapping_event(s48_value e, XMappingEvent* xe) {
EEXTRACT_START("scx-mapping-event");
EEXTRACT_START(scx_mapping_event_binding);
EEXTRACT(4, window, scx_extract_window);
EEXTRACT(5, request, scx_extract_mapping_request);
EEXTRACT(6, first_keycode, scx_extract_keycode);
@ -709,7 +767,7 @@ void scx_extract_mapping_event(s48_value e, XMappingEvent* xe) {
void scx_extract_keymap_event(s48_value e, XKeymapEvent* xe) {
s48_value temp; int i;
EEXTRACT_START("scx-keymap-event");
EEXTRACT_START(scx_keymap_event_binding);
xe->window = (Window)0;
temp = S48_RECORD_REF(e, 4);
for (i = 0; i < 32; i++) {
@ -782,3 +840,37 @@ void scx_extract_event(s48_value se, XEvent* e) {
scx_extract_mapping_event(se, (XMappingEvent*)e); break;
}
}
void scx_init_event_types() {
SCX_PRO_IMP(scx_key_event_binding, "scx-key-event");
SCX_PRO_IMP(scx_button_event_binding, "scx-button-event");
SCX_PRO_IMP(scx_motion_event_binding, "scx-motion-event");
SCX_PRO_IMP(scx_crossing_event_binding, "scx-crossing-event");
SCX_PRO_IMP(scx_focus_change_event_binding, "scx-focus-change-event");
SCX_PRO_IMP(scx_expose_event_binding, "scx-expose-event");
SCX_PRO_IMP(scx_graphics_expose_event_binding, "scx-graphics-expose-event");
SCX_PRO_IMP(scx_no_expose_event_binding, "scx-no-expose-event");
SCX_PRO_IMP(scx_visibility_event_binding, "scx-visibility-event");
SCX_PRO_IMP(scx_create_window_event_binding, "scx-create-window-event");
SCX_PRO_IMP(scx_destroy_window_event_binding, "scx-destroy-window-event");
SCX_PRO_IMP(scx_unmap_event_binding, "scx-unmap-event");
SCX_PRO_IMP(scx_map_event_binding, "scx-map-event");
SCX_PRO_IMP(scx_map_request_event_binding, "scx-map-request-event");
SCX_PRO_IMP(scx_reparent_event_binding, "scx-reparent-event");
SCX_PRO_IMP(scx_configure_event_binding, "scx-configure-event");
SCX_PRO_IMP(scx_gravity_event_binding, "scx-gravity-event");
SCX_PRO_IMP(scx_resize_request_event_binding, "scx-resize-request-event");
SCX_PRO_IMP(scx_configure_request_event_binding,
"scx-configure-request-event");
SCX_PRO_IMP(scx_circulate_event_binding, "scx-circulate-event");
SCX_PRO_IMP(scx_circulate_event_binding, "scx-circulate-request-event");
SCX_PRO_IMP(scx_property_event_binding, "scx-property-event");
SCX_PRO_IMP(scx_selection_clear_event_binding, "scx-selection-clear-event");
SCX_PRO_IMP(scx_selection_request_event_binding,
"scx-selection-request-event");
SCX_PRO_IMP(scx_selection_event_binding, "scx-selection-event");
SCX_PRO_IMP(scx_colormap_event_binding, "scx-colormap-event");
SCX_PRO_IMP(scx_client_message_event_binding, "scx-client-message-event");
SCX_PRO_IMP(scx_mapping_event_binding, "scx-mapping-event");
SCX_PRO_IMP(scx_keymap_event_binding, "scx-keymap-event");
}

View File

@ -2,7 +2,8 @@
#include "xlib.h"
#define scx_extract_queued_mode(x) S48_EXTRACT_ENUM(x, "scx-queued-mode")
s48_value scx_queued_mode_binding = S48_FALSE;
#define scx_extract_queued_mode(x) S48_EXTRACT_ENUM(x, scx_queued_mode_binding)
s48_value scx_Events_Queued(s48_value display, s48_value mode) {
int r = XEventsQueued(scx_extract_display(display),
@ -76,6 +77,8 @@ s48_value scx_add_pending_channel(channel) {
}
void scx_init_event(void) {
SCX_PRO_IMP(scx_queued_mode_binding, "scx-queued-mode");
S48_EXPORT_FUNCTION(scx_Events_Queued);
S48_EXPORT_FUNCTION(scx_Events_Pending);
S48_EXPORT_FUNCTION(scx_Next_Event);
@ -84,4 +87,3 @@ void scx_init_event(void) {
S48_EXPORT_FUNCTION(scx_Send_Event);
S48_EXPORT_FUNCTION(scx_add_pending_channel);
}

View File

@ -2,30 +2,52 @@
#include "xlib.h"
#define scx_extract_gc_function(x) S48_EXTRACT_ENUM(x, "scx-gc-function")
#define scx_extract_line_style(x) S48_EXTRACT_ENUM(x, "scx-line-style")
#define scx_extract_cap_style(x) S48_EXTRACT_ENUM(x, "scx-cap-style")
#define scx_extract_join_style(x) S48_EXTRACT_ENUM(x, "scx-join-style")
#define scx_extract_fill_style(x) S48_EXTRACT_ENUM(x, "scx-fill-style")
#define scx_extract_fill_rule(x) S48_EXTRACT_ENUM(x, "scx-fill-rule")
#define scx_extract_subwindow_mode(x) S48_EXTRACT_ENUM(x, "scx-subwindow-mode")
#define scx_extract_arc_mode(x) S48_EXTRACT_ENUM(x, "scx-arc-mode")
s48_value scx_gc_function_binding = S48_FALSE;
s48_value scx_line_style_binding = S48_FALSE;
s48_value scx_cap_style_binding = S48_FALSE;
s48_value scx_join_style_binding = S48_FALSE;
s48_value scx_fill_style_binding = S48_FALSE;
s48_value scx_fill_rule_binding = S48_FALSE;
s48_value scx_subwindow_mode_binding = S48_FALSE;
s48_value scx_arc_mode_binding = S48_FALSE;
#define scx_extract_gc_function(x) S48_EXTRACT_ENUM(x, scx_gc_function_binding)
#define scx_extract_line_style(x) S48_EXTRACT_ENUM(x, scx_line_style_binding)
#define scx_extract_cap_style(x) S48_EXTRACT_ENUM(x, scx_cap_style_binding)
#define scx_extract_join_style(x) S48_EXTRACT_ENUM(x, scx_join_style_binding)
#define scx_extract_fill_style(x) S48_EXTRACT_ENUM(x, scx_fill_style_binding)
#define scx_extract_fill_rule(x) S48_EXTRACT_ENUM(x, scx_fill_rule_binding)
#define scx_extract_subwindow_mode(x) \
S48_EXTRACT_ENUM(x, scx_subwindow_mode_binding)
#define scx_extract_arc_mode(x) S48_EXTRACT_ENUM(x, scx_arc_mode_binding)
#define scx_enter_gc_function(x) S48_ENTER_ENUM(x, "scx-gc-functions")
#define scx_enter_line_style(x) S48_ENTER_ENUM(x, "scx-line-styles")
#define scx_enter_cap_style(x) S48_ENTER_ENUM(x, "scx-cap-styles")
#define scx_enter_join_style(x) S48_ENTER_ENUM(x, "scx-join-styles")
#define scx_enter_fill_style(x) S48_ENTER_ENUM(x, "scx-fill-styles")
#define scx_enter_fill_rule(x) S48_ENTER_ENUM(x, "scx-fill-rules")
#define scx_enter_subwindow_mode(x) S48_ENTER_ENUM(x, "scx-subwindow-modes")
#define scx_enter_arc_mode(x) S48_ENTER_ENUM(x, "scx-arc-modes")
s48_value scx_gc_functions_binding = S48_FALSE;
s48_value scx_line_styles_binding = S48_FALSE;
s48_value scx_cap_styles_binding = S48_FALSE;
s48_value scx_join_styles_binding = S48_FALSE;
s48_value scx_fill_styles_binding = S48_FALSE;
s48_value scx_fill_rules_binding = S48_FALSE;
s48_value scx_subwindow_modes_binding = S48_FALSE;
s48_value scx_arc_modes_binding = S48_FALSE;
#define scx_enter_gc_function(x) S48_ENTER_ENUM(x, scx_gc_functions_binding)
#define scx_enter_line_style(x) S48_ENTER_ENUM(x, scx_line_styles_binding)
#define scx_enter_cap_style(x) S48_ENTER_ENUM(x, scx_cap_styles_binding)
#define scx_enter_join_style(x) S48_ENTER_ENUM(x, scx_join_styles_binding)
#define scx_enter_fill_style(x) S48_ENTER_ENUM(x, scx_fill_styles_binding)
#define scx_enter_fill_rule(x) S48_ENTER_ENUM(x, scx_fill_rules_binding)
#define scx_enter_subwindow_mode(x) \
S48_ENTER_ENUM(x, scx_subwindow_modes_binding)
#define scx_enter_arc_mode(x) S48_ENTER_ENUM(x, scx_arc_modes_binding)
#define scx_extract_gc_value_set(x) S48_EXTRACT_ENUM_SET(x, "scx-gc-value-set")
#define scx_enter_gc_value_set(x) s48_enter_enum_set(x, "scx-gc-value-set")
s48_value scx_gc_value_set_binding = S48_FALSE;
#define scx_extract_gc_value_set(x) \
S48_EXTRACT_ENUM_SET(x, scx_gc_value_set_binding)
#define scx_enter_gc_value_set(x) \
s48_enter_enum_set(x, scx_gc_value_set_binding)
s48_value scx_char_struct_binding = S48_FALSE;
s48_value scx_enter_charstruct(XCharStruct* cs) {
s48_value res =
s48_make_record(s48_get_imported_binding("scx-char-struct"));
s48_value res = s48_make_record(scx_char_struct_binding);
S48_DECLARE_GC_PROTECT(1);
S48_GC_PROTECT_1(res);
S48_RECORD_SET(res, 0, s48_enter_fixnum(cs->lbearing));
@ -284,8 +306,9 @@ s48_value scx_Set_Dashes(s48_value display, s48_value gc, s48_value dashoffset,
return S48_UNSPECIFIC;
}
s48_value scx_rectangle_ordering_binding = S48_FALSE;
#define scx_extract_rectangle_ordering(x) \
S48_EXTRACT_ENUM(x, "scx-rectangle-ordering")
S48_EXTRACT_ENUM(x, scx_rectangle_ordering_binding)
s48_value scx_Set_Clip_Rectangles(s48_value display, s48_value gc,
s48_value x_origin, s48_value y_origin,
@ -324,6 +347,27 @@ s48_value scx_Query_Best_Size(s48_value screen, s48_value class,
}
void scx_init_gcontext(void) {
SCX_PRO_IMP(scx_gc_function_binding, "scx-gc-function");
SCX_PRO_IMP(scx_line_style_binding, "scx-line-style");
SCX_PRO_IMP(scx_cap_style_binding, "scx-cap-style");
SCX_PRO_IMP(scx_join_style_binding, "scx-join-style");
SCX_PRO_IMP(scx_fill_style_binding, "scx-fill-style");
SCX_PRO_IMP(scx_fill_rule_binding, "scx-fill-rule");
SCX_PRO_IMP(scx_subwindow_mode_binding, "scx-subwindow-mode");
SCX_PRO_IMP(scx_arc_mode_binding, "scx-arc-mode");
SCX_PRO_IMP(scx_gc_functions_binding, "scx-gc-functions");
SCX_PRO_IMP(scx_line_styles_binding, "scx-line-styles");
SCX_PRO_IMP(scx_cap_styles_binding, "scx-cap-styles");
SCX_PRO_IMP(scx_join_styles_binding, "scx-join-styles");
SCX_PRO_IMP(scx_fill_styles_binding, "scx-fill-styles");
SCX_PRO_IMP(scx_fill_rules_binding, "scx-fill-rules");
SCX_PRO_IMP(scx_subwindow_modes_binding, "scx-subwindow-modes");
SCX_PRO_IMP(scx_arc_modes_binding, "scx-arc-modes");
SCX_PRO_IMP(scx_gc_value_set_binding, "scx-gc-value-set");
SCX_PRO_IMP(scx_char_struct_binding, "scx-char-struct");
SCX_PRO_IMP(scx_rectangle_ordering_binding, "scx-rectangle-ordering");
S48_EXPORT_FUNCTION(scx_Create_Gc);
S48_EXPORT_FUNCTION(scx_Copy_Gc);
S48_EXPORT_FUNCTION(scx_Change_Gc);

View File

@ -2,8 +2,10 @@
#include "xlib.h"
#define scx_extract_grab_mode(x) S48_EXTRACT_ENUM(x, "scx-grab-mode")
#define scx_enter_grab_status(x) S48_ENTER_ENUM(x, "scx-grab-states")
s48_value scx_grab_mode_binding = S48_FALSE;
#define scx_extract_grab_mode(x) S48_EXTRACT_ENUM(x, scx_grab_mode_binding)
s48_value scx_grab_states_binding = S48_FALSE;
#define scx_enter_grab_status(x) S48_ENTER_ENUM(x, scx_grab_states_binding)
s48_value scx_Grab_Pointer(s48_value dpy, s48_value win,
s48_value ownerp, s48_value events,
@ -102,7 +104,8 @@ s48_value scx_Ungrab_Key(s48_value dpy, s48_value key, s48_value mods,
return S48_UNSPECIFIC;
}
#define scx_extract_event_mode(x) S48_EXTRACT_ENUM(x, "scx-event-mode")
s48_value scx_event_mode_binding = S48_FALSE;
#define scx_extract_event_mode(x) S48_EXTRACT_ENUM(x, scx_event_mode_binding)
s48_value scx_Allow_Events(s48_value dpy, s48_value event_mode,
s48_value time) {
@ -123,6 +126,10 @@ s48_value scx_Ungrab_Server(s48_value dpy){
}
void scx_init_grab(void) {
SCX_PRO_IMP(scx_grab_mode_binding, "scx-grab-mode");
SCX_PRO_IMP(scx_grab_states_binding, "scx-grab-states");
SCX_PRO_IMP(scx_event_mode_binding, "scx-event-mode");
S48_EXPORT_FUNCTION(scx_Grab_Pointer);
S48_EXPORT_FUNCTION(scx_Ungrab_Pointer);
S48_EXPORT_FUNCTION(scx_Grab_Button);

View File

@ -2,8 +2,11 @@
#include "xlib.h"
#define scx_extract_coord_mode(x) S48_EXTRACT_ENUM(x, "scx-coord-mode")
#define scx_extract_polygon_shape(x) S48_EXTRACT_ENUM(x, "scx-polygon-shape")
s48_value scx_coord_mode_binding = S48_FALSE;
#define scx_extract_coord_mode(x) S48_EXTRACT_ENUM(x, scx_coord_mode_binding)
s48_value scx_polygon_shape_binding = S48_FALSE;
#define scx_extract_polygon_shape(x) \
S48_EXTRACT_ENUM(x, scx_polygon_shape_binding)
s48_value scx_Copy_Area(s48_value display, s48_value src, s48_value dest,
s48_value gc, s48_value srcx, s48_value srcy,
@ -80,12 +83,13 @@ s48_value scx_Draw_Lines(s48_value display, s48_value drawable,
return S48_UNSPECIFIC;
}
s48_value scx_segment_binding = S48_FALSE;
static void List_To_XSegments(s48_value l, XSegment* p, int n) {
int i;
s48_value rectype = s48_get_imported_binding("scx-segment");
for (i = 0; i < n; i++) {
s48_value s = S48_CAR(l);
s48_check_record_type(s, rectype);
s48_check_record_type(s, scx_segment_binding);
p[i].x1 = (int)s48_extract_integer(S48_RECORD_REF(s, 0));
p[i].y1 = (int)s48_extract_integer(S48_RECORD_REF(s, 1));
p[i].x2 = (int)s48_extract_integer(S48_RECORD_REF(s, 2));
@ -116,9 +120,11 @@ s48_value scx_Draw_Rectangle(s48_value display, s48_value drawable,
return S48_UNSPECIFIC;
}
s48_value scx_rectangle_binding = S48_FALSE;
static void List_To_XRectangles(s48_value l, XRectangle* p, int n) {
int i;
s48_value rectype = s48_get_imported_binding("scx-rectangle");
s48_value rectype = scx_rectangle_binding;
for (i = 0; i < n; i++) {
s48_value r = S48_CAR(l);
s48_check_record_type(r, rectype);
@ -151,9 +157,11 @@ s48_value scx_Draw_Arc(s48_value display, s48_value drawable,
return S48_UNSPECIFIC;
}
s48_value scx_arc_binding = S48_FALSE;
static void List_To_XArcs(s48_value l, XArc* p, int n) {
int i;
s48_value rectype = s48_get_imported_binding("scx-arc");
s48_value rectype = scx_arc_binding;
for (i = 0; i < n; i++) {
s48_value r = S48_CAR(l);
s48_check_record_type(r, rectype);
@ -234,6 +242,12 @@ s48_value scx_Fill_Arcs(s48_value display, s48_value drawable,
}
void scx_init_graphics(void) {
SCX_PRO_IMP(scx_coord_mode_binding, "scx-coord-mode");
SCX_PRO_IMP(scx_polygon_shape_binding, "scx-polygon-shape");
SCX_PRO_IMP(scx_segment_binding, "scx-segment");
SCX_PRO_IMP(scx_rectangle_binding, "scx-rectangle");
SCX_PRO_IMP(scx_arc_binding, "scx-arc");
S48_EXPORT_FUNCTION(scx_Copy_Area);
S48_EXPORT_FUNCTION(scx_Copy_Plane);
S48_EXPORT_FUNCTION(scx_Draw_Point);

View File

@ -43,6 +43,7 @@ extern void scx_init_util();
extern void scx_init_grab();
extern void scx_init_visual();
extern void scx_init_region();
extern void scx_init_event_types();
void scx_init_xlib(void) {
S48_EXPORT_FUNCTION(scx_Xlib_Release_4_Or_Later);
@ -68,6 +69,7 @@ void scx_init_xlib(void) {
scx_init_pixmap();
scx_init_client();
scx_init_util();
scx_init_event_types();
}

View File

@ -79,14 +79,18 @@ s48_value scx_Delete_Property(s48_value display, s48_value window,
return S48_UNSPECIFIC;
}
s48_value scx_property_binding = S48_FALSE;
s48_value scx_property_format_binding = S48_FALSE;
s48_value scx_property_formats_binding = S48_FALSE;
void scx_extract_property(s48_value p, Atom* type, int* format,
char** data, int* nelements) {
int i;
s48_value d = S48_RECORD_REF(p, 2);
s48_check_record_type(p, s48_get_imported_binding("scx-property"));
s48_check_record_type(p, scx_property_binding);
*type = scx_extract_atom(S48_RECORD_REF(p, 0));
*format = S48_EXTRACT_ENUM(S48_RECORD_REF(p, 1),
"scx-property-format");
scx_property_format_binding);
switch (*format) {
case 0:
*format = 8;
@ -117,7 +121,7 @@ void scx_extract_property(s48_value p, Atom* type, int* format,
s48_value scx_enter_property(Atom type, int format, char* data,
int nelements) {
s48_value p = s48_make_record(s48_get_imported_binding("scx-property"));
s48_value p = s48_make_record(scx_property_binding);
s48_value l = S48_NULL;
int i;
S48_DECLARE_GC_PROTECT(2);
@ -126,17 +130,17 @@ s48_value scx_enter_property(Atom type, int format, char* data,
S48_RECORD_SET(p, 0, scx_enter_atom(type));
switch (format) {
case 8:
S48_RECORD_SET(p, 1, S48_ENTER_ENUM(0, "scx-property-formats"));
S48_RECORD_SET(p, 1, S48_ENTER_ENUM(0, scx_property_formats_binding));
S48_RECORD_SET(p, 2, s48_enter_substring(data, nelements));
break;
case 16:
S48_RECORD_SET(p, 1, S48_ENTER_ENUM(1, "scx-property-formats"));
S48_RECORD_SET(p, 1, S48_ENTER_ENUM(1, scx_property_formats_binding));
for (i = nelements-1; i >= 0; i--)
l = s48_cons(s48_enter_integer(((short*)data)[i]), l);
S48_RECORD_SET(p, 2, l);
break;
case 32:
S48_RECORD_SET(p, 1, S48_ENTER_ENUM(2, "scx-property-formats"));
S48_RECORD_SET(p, 1, S48_ENTER_ENUM(2, scx_property_formats_binding));
for (i = nelements-1; i >= 0; i--)
l = s48_cons(s48_enter_integer(((long*)data)[i]), l);
S48_RECORD_SET(p, 2, l);
@ -180,8 +184,9 @@ s48_value scx_Get_Window_Property(s48_value display, s48_value window,
return S48_FALSE;
}
s48_value scx_change_property_mode_binding = S48_FALSE;
#define scx_extract_change_property_mode(x) \
S48_EXTRACT_ENUM(x, "scx-change-property-mode")
S48_EXTRACT_ENUM(x, scx_change_property_mode_binding)
s48_value scx_Change_Property(s48_value display, s48_value window,
s48_value atom, s48_value mode,
@ -222,6 +227,11 @@ s48_value scx_Convert_Selection(s48_value display, s48_value selection,
}
void scx_init_property(void) {
SCX_PRO_IMP(scx_property_binding, "scx-property");
SCX_PRO_IMP(scx_property_format_binding, "scx-property-format");
SCX_PRO_IMP(scx_property_formats_binding, "scx-property-formats");
SCX_PRO_IMP(scx_change_property_mode_binding, "scx-change-property-mode");
S48_EXPORT_FUNCTION(scx_Intern_Atom);
S48_EXPORT_FUNCTION(scx_Intern_Atoms);
S48_EXPORT_FUNCTION(scx_Get_Atom_Name);

View File

@ -2,6 +2,58 @@
#include "xlib.h"
s48_value scx_display = S48_FALSE;
s48_value scx_color = S48_FALSE;
s48_value scx_gc = S48_FALSE;
s48_value scx_fontstruct = S48_FALSE;
s48_value scx_screenformat = S48_FALSE;
s48_value scx_visual = S48_FALSE;
s48_value scx_screen = S48_FALSE;
s48_value scx_event_mask_binding = S48_FALSE;
s48_value scx_gc_value_binding = S48_FALSE;
s48_value scx_gc_values_binding = S48_FALSE;
s48_value scx_byte_order_binding = S48_FALSE;
s48_value scx_byte_orders_binding = S48_FALSE;
s48_value scx_bit_order_binding = S48_FALSE;
s48_value scx_bit_orders_binding = S48_FALSE;
s48_value scx_bit_gravity_binding = S48_FALSE;
s48_value scx_bit_gravities_binding = S48_FALSE;
s48_value scx_win_gravity_binding = S48_FALSE;
s48_value scx_win_gravities_binding = S48_FALSE;
s48_value scx_event_type_binding = S48_FALSE;
s48_value scx_event_types_binding = S48_FALSE;
s48_value scx_font_direction_binding = S48_FALSE;
s48_value scx_font_directions_binding = S48_FALSE;
s48_value scx_state_binding = S48_FALSE;
s48_value scx_states_binding = S48_FALSE;
s48_value scx_state_set_binding = S48_FALSE;
s48_value scx_button_binding = S48_FALSE;
s48_value scx_buttons_binding = S48_FALSE;
s48_value scx_notify_mode_binding = S48_FALSE;
s48_value scx_notify_modes_binding = S48_FALSE;
s48_value scx_notify_detail_binding = S48_FALSE;
s48_value scx_notify_details_binding = S48_FALSE;
s48_value scx_visibility_state_binding = S48_FALSE;
s48_value scx_visibility_states_binding = S48_FALSE;
s48_value scx_place_binding = S48_FALSE;
s48_value scx_places_binding = S48_FALSE;
s48_value scx_property_state_binding = S48_FALSE;
s48_value scx_property_states_binding = S48_FALSE;
s48_value scx_colormap_state_binding = S48_FALSE;
s48_value scx_colormap_states_binding = S48_FALSE;
s48_value scx_mapping_request_binding = S48_FALSE;
s48_value scx_mapping_requests_binding = S48_FALSE;
s48_value scx_backing_store_binding = S48_FALSE;
s48_value scx_backing_stores_binding = S48_FALSE;
s48_value scx_map_state_binding = S48_FALSE;
s48_value scx_map_states_binding = S48_FALSE;
s48_value scx_window_class_binding = S48_FALSE;
s48_value scx_window_classes_binding = S48_FALSE;
s48_value scx_stack_mode_binding = S48_FALSE;
s48_value scx_stack_modes_binding = S48_FALSE;
s48_value scx_window_change_binding = S48_FALSE;
s48_value scx_window_changes_binding = S48_FALSE;
s48_value s48_checked_record_ref(s48_value value, int i,
s48_value rectype) {
s48_check_record_type(value, rectype);
@ -17,9 +69,10 @@ int s48_list_length(s48_value list) {
return res;
}
extern unsigned long s48_extract_enum_set(s48_value v, char* typestr) {
s48_value enum_set_type = s48_get_imported_binding("s48-enum-set-type");
s48_value type = s48_get_imported_binding(typestr);
s48_value scx_enum_set_type_binding = S48_FALSE;
extern unsigned long s48_extract_enum_set(s48_value v, s48_value type) {
s48_value enum_set_type = scx_enum_set_type_binding;
s48_check_record_type(v, enum_set_type);
if (S48_UNSAFE_SHARED_BINDING_REF(type) !=
S48_UNSAFE_RECORD_REF(v, 0))
@ -27,12 +80,11 @@ extern unsigned long s48_extract_enum_set(s48_value v, char* typestr) {
return s48_extract_integer(S48_UNSAFE_RECORD_REF(v, 1));
}
s48_value s48_enter_enum_set(unsigned long v, char* typestr) {
s48_value r = s48_make_record(s48_get_imported_binding("s48-enum-set-type"));
s48_value s48_enter_enum_set(unsigned long v, s48_value type) {
s48_value r = s48_make_record(scx_enum_set_type_binding);
S48_DECLARE_GC_PROTECT(1);
S48_GC_PROTECT_1(r);
S48_RECORD_SET(r, 0,
S48_SHARED_BINDING_REF(s48_get_imported_binding(typestr)));
S48_RECORD_SET(r, 0, S48_SHARED_BINDING_REF(type));
S48_RECORD_SET(r, 1, s48_enter_integer(v));
S48_GC_UNPROTECT();
return r;
@ -74,4 +126,57 @@ void scx_struct_cache_set(void* cpointer, s48_value* l, s48_value v) {
}
void scx_init_types(void) {
SCX_PRO_IMP(scx_enum_set_type_binding, "s48-enum-set-type");
SCX_PRO_IMP(scx_display, "scx-display");
SCX_PRO_IMP(scx_color, "scx-color");
SCX_PRO_IMP(scx_gc, "scx-gc");
SCX_PRO_IMP(scx_fontstruct, "scx-fontstruct");
SCX_PRO_IMP(scx_screenformat, "scx-screenformat");
SCX_PRO_IMP(scx_visual, "scx-visual");
SCX_PRO_IMP(scx_screen, "scx-screen");
SCX_PRO_IMP(scx_event_mask_binding, "scx-event-mask");
SCX_PRO_IMP(scx_gc_value_binding, "scx-gc-value");
SCX_PRO_IMP(scx_gc_values_binding, "scx-gc-values");
SCX_PRO_IMP(scx_byte_order_binding, "scx-byte-order");
SCX_PRO_IMP(scx_byte_orders_binding, "scx-byte-orders");
SCX_PRO_IMP(scx_bit_order_binding, "scx-bit-order");
SCX_PRO_IMP(scx_bit_orders_binding, "scx-bit-orders");
SCX_PRO_IMP(scx_bit_gravity_binding, "scx-bit-gravity");
SCX_PRO_IMP(scx_bit_gravities_binding, "scx-bit-gravities");
SCX_PRO_IMP(scx_win_gravity_binding, "scx-win-gravity");
SCX_PRO_IMP(scx_win_gravities_binding, "scx-win-gravities");
SCX_PRO_IMP(scx_event_type_binding, "scx-event-type");
SCX_PRO_IMP(scx_event_types_binding, "scx-event-types");
SCX_PRO_IMP(scx_font_direction_binding, "scx-font-direction");
SCX_PRO_IMP(scx_font_directions_binding, "scx-font-directions");
SCX_PRO_IMP(scx_state_binding, "scx-state");
SCX_PRO_IMP(scx_states_binding, "scx-states");
SCX_PRO_IMP(scx_state_set_binding, "scx-state-set");
SCX_PRO_IMP(scx_button_binding, "scx-button");
SCX_PRO_IMP(scx_buttons_binding, "scx-buttons");
SCX_PRO_IMP(scx_notify_mode_binding, "scx-notify-mode");
SCX_PRO_IMP(scx_notify_modes_binding, "scx-notify-modes");
SCX_PRO_IMP(scx_notify_detail_binding, "scx-notify-detail");
SCX_PRO_IMP(scx_notify_details_binding, "scx-notify-details");
SCX_PRO_IMP(scx_visibility_state_binding, "scx-visibility-state");
SCX_PRO_IMP(scx_visibility_states_binding, "scx-visibility-states");
SCX_PRO_IMP(scx_place_binding, "scx-place");
SCX_PRO_IMP(scx_places_binding, "scx-places");
SCX_PRO_IMP(scx_property_state_binding, "scx-property-state");
SCX_PRO_IMP(scx_property_states_binding, "scx-property-states");
SCX_PRO_IMP(scx_colormap_state_binding, "scx-colormap-state");
SCX_PRO_IMP(scx_colormap_state_binding, "scx-colormap-states");
SCX_PRO_IMP(scx_mapping_request_binding, "scx-mapping-request");
SCX_PRO_IMP(scx_mapping_requests_binding, "scx-mapping-requests");
SCX_PRO_IMP(scx_backing_store_binding, "scx-backing-store");
SCX_PRO_IMP(scx_backing_stores_binding, "scx-backing-stores");
SCX_PRO_IMP(scx_map_state_binding, "scx-map-state");
SCX_PRO_IMP(scx_map_states_binding, "scx-map-states");
SCX_PRO_IMP(scx_window_class_binding, "scx-window-class");
SCX_PRO_IMP(scx_window_classes_binding, "scx-window-classes");
SCX_PRO_IMP(scx_stack_mode_binding, "scx-stack-mode");
SCX_PRO_IMP(scx_stack_modes_binding, "scx-stack-modes");
SCX_PRO_IMP(scx_window_change_binding, "scx-window-change");
SCX_PRO_IMP(scx_window_changes_binding, "scx-window-changes");
}

View File

@ -2,8 +2,11 @@
#include "xlib.h"
#define scx_extract_visual_class(x) S48_EXTRACT_ENUM(x, "scx-visual-class")
#define scx_enter_visual_class(x) S48_ENTER_ENUM(x, "scx-visual-classes")
s48_value scx_visual_class_binding = S48_FALSE;
#define scx_extract_visual_class(x) \
S48_EXTRACT_ENUM(x, scx_visual_class_binding)
s48_value scx_visual_classes_binding = S48_FALSE;
#define scx_enter_visual_class(x) S48_ENTER_ENUM(x, scx_visual_classes_binding)
s48_value scx_enter_visual(Visual* vis) {
s48_value v = s48_make_record(scx_visual);
@ -14,10 +17,10 @@ s48_value scx_enter_visual(Visual* vis) {
return v;
}
#define scx_visual_info s48_get_imported_binding("scx-visual-info")
s48_value scx_visual_info_binding = S48_FALSE;
s48_value scx_enter_visual_info(XVisualInfo* vi) {
s48_value v = s48_make_record(scx_visual_info);
s48_value v = s48_make_record(scx_visual_info_binding);
S48_DECLARE_GC_PROTECT(1);
S48_GC_PROTECT_1(v);
S48_RECORD_SET(v, 0, scx_enter_visual(vi->visual));
@ -36,7 +39,7 @@ s48_value scx_enter_visual_info(XVisualInfo* vi) {
unsigned int scx_extract_visual_info(s48_value v, XVisualInfo* vi) {
unsigned long mask = 0;
s48_check_record_type(v, scx_visual_info);
s48_check_record_type(v, scx_visual_info_binding);
if (!S48_FALSE_P(S48_RECORD_REF(v, 0)))
vi->visual = scx_extract_visual(S48_RECORD_REF(v, 0));
if (!S48_FALSE_P(S48_RECORD_REF(v, 1))) {
@ -115,6 +118,10 @@ s48_value scx_VisualIDFromVisual(s48_value visual) {
}
void scx_init_visual(void) {
SCX_PRO_IMP(scx_visual_class_binding, "scx-visual-class");
SCX_PRO_IMP(scx_visual_classes_binding, "scx-visual-classes");
SCX_PRO_IMP(scx_visual_info_binding, "scx-visual-info");
S48_EXPORT_FUNCTION(scx_Get_Visual_Info);
S48_EXPORT_FUNCTION(scx_Match_Visual_Info);
S48_EXPORT_FUNCTION(scx_VisualIDFromVisual);

View File

@ -2,8 +2,9 @@
#include "xlib.h"
s48_value scx_set_window_attribute_binding = S48_FALSE;
#define scx_extract_set_window_attribute(x) \
S48_EXTRACT_ENUM(x, "scx-set-window-attribute")
S48_EXTRACT_ENUM(x, scx_set_window_attribute_binding)
static unsigned long
scx_extract_set_window_attribute_alist(s48_value attribs,
@ -184,9 +185,10 @@ s48_value scx_Configure_Window(s48_value display, s48_value window,
return S48_UNSPECIFIC;
}
s48_value scx_window_attibutes_binding = S48_FALSE;
s48_value scx_enter_window_attributes(XWindowAttributes* WA) {
s48_value v = s48_make_record(
s48_get_imported_binding("scx-window-attributes"));
s48_value v = s48_make_record(scx_window_attibutes_binding);
S48_DECLARE_GC_PROTECT(1);
S48_GC_PROTECT_1(v);
S48_RECORD_SET(v, 0, s48_enter_integer(WA->x));
@ -300,7 +302,9 @@ s48_value scx_Lower_Window(s48_value display, s48_value window) {
return S48_UNSPECIFIC;
}
#define scx_extract_direction(x) S48_EXTRACT_ENUM(x, "scx-circulate-direction")
s48_value scx_circulate_direction_binding = S48_FALSE;
#define scx_extract_direction(x) \
S48_EXTRACT_ENUM(x, scx_circulate_direction_binding)
s48_value scx_Circulate_Subwindows(s48_value display, s48_value window,
s48_value dir) {
@ -420,6 +424,10 @@ s48_value scx_Query_Pointer(s48_value display, s48_value window) {
}
void scx_init_window(void) {
SCX_PRO_IMP(scx_set_window_attribute_binding, "scx-set-window-attribute");
SCX_PRO_IMP(scx_window_attibutes_binding, "scx-window-attributes");
SCX_PRO_IMP(scx_circulate_direction_binding, "scx-circulate-direction");
S48_EXPORT_FUNCTION(scx_Create_Window);
S48_EXPORT_FUNCTION(scx_Create_Simple_Window);
S48_EXPORT_FUNCTION(scx_Change_Window_Attributes);

View File

@ -40,8 +40,10 @@ s48_value scx_List_Installed_Colormaps(s48_value display, s48_value window) {
return l;
}
#define scx_extract_revert_to(x) S48_EXTRACT_ENUM(x, "scx-revert-to")
#define scx_enter_revert_to(x) S48_ENTER_ENUM(x, "scx-revert-tos")
s48_value scx_revert_to_binding = S48_FALSE;
s48_value scx_revert_tos_binding = S48_FALSE;
#define scx_extract_revert_to(x) S48_EXTRACT_ENUM(x, scx_revert_to_binding)
#define scx_enter_revert_to(x) S48_ENTER_ENUM(x, scx_revert_tos_binding)
s48_value scx_Set_Input_Focus(s48_value display, s48_value window,
s48_value revert_to, s48_value time) {
@ -88,7 +90,8 @@ s48_value scx_Set_Access_Control(s48_value display, s48_value on) {
return S48_UNSPECIFIC;
}
#define scx_extract_save_set(x) S48_EXTRACT_ENUM(x, "scx-save-set")
s48_value scx_save_set_binding = S48_FALSE;
#define scx_extract_save_set(x) S48_EXTRACT_ENUM(x, scx_save_set_binding)
s48_value scx_Change_Save_Set(s48_value display, s48_value win,
s48_value mode) {
@ -97,8 +100,9 @@ s48_value scx_Change_Save_Set(s48_value display, s48_value win,
return S48_UNSPECIFIC;
}
s48_value scx_close_down_mode_binding = S48_FALSE;
#define scx_extract_close_down_mode(x) \
S48_EXTRACT_ENUM(x, "scx-close-down-mode")
S48_EXTRACT_ENUM(x, scx_close_down_mode_binding)
s48_value scx_Set_Close_Down_Mode(s48_value display, s48_value mode) {
XSetCloseDownMode(scx_extract_display(display),
@ -136,6 +140,11 @@ s48_value scx_Set_Pointer_Mapping(s48_value display, s48_value map) {
}
void scx_init_wm(void) {
SCX_PRO_IMP(scx_revert_to_binding, "scx-revert-to");
SCX_PRO_IMP(scx_revert_tos_binding, "scx-revert-tos");
SCX_PRO_IMP(scx_save_set_binding, "scx-save-set");
SCX_PRO_IMP(scx_close_down_mode_binding, "scx-close-down-mode");
S48_EXPORT_FUNCTION(scx_Reparent_Window);
S48_EXPORT_FUNCTION(scx_Install_Colormap);
S48_EXPORT_FUNCTION(scx_Uninstall_Colormap);

View File

@ -33,19 +33,21 @@
extern s48_value s48_checked_record_ref(s48_value value, int i,
s48_value rectype);
#define SCX_PRO_IMP(var, name) \
do { S48_GC_PROTECT_GLOBAL(var); var = s48_get_imported_binding(name); } \
while (0)
extern int s48_list_length(s48_value list);
#define S48_EXTRACT_ENUM(x, typestr) \
s48_extract_integer(s48_checked_record_ref(x, 1, \
s48_get_imported_binding(typestr)))
#define S48_EXTRACT_ENUM(x, type) \
s48_extract_integer(s48_checked_record_ref(x, 1, type))
#define S48_ENTER_ENUM(index, vvectorstr) \
S48_VECTOR_REF(S48_SHARED_BINDING_REF(s48_get_imported_binding(vvectorstr)),\
index)
#define S48_ENTER_ENUM(index, vvector) \
S48_VECTOR_REF(S48_SHARED_BINDING_REF(vvector), index)
#define S48_EXTRACT_ENUM_SET(x, typestr) s48_extract_enum_set(x, typestr)
extern unsigned long s48_extract_enum_set(s48_value v, char* typestr);
extern s48_value s48_enter_enum_set(unsigned long v, char* typestr);
#define S48_EXTRACT_ENUM_SET(x, type) s48_extract_enum_set(x, type)
extern unsigned long s48_extract_enum_set(s48_value v, s48_value type);
extern s48_value s48_enter_enum_set(unsigned long v, s48_value type);
/*** Extraction-Macros for the XIDs ********************************/
@ -84,43 +86,43 @@ extern s48_value s48_enter_enum_set(unsigned long v, char* typestr);
/* records */
#define scx_display s48_get_imported_binding("scx-display")
extern s48_value scx_display;
#define scx_extract_display(x) \
(Display*)s48_extract_integer(s48_checked_record_ref(x, 0, scx_display))
extern s48_value scx_enter_display(Display* dpy);
#define SCX_DISPLAY_AFTER_FUNCTION(d) \
s48_checked_record_ref(d, 14, scx_display)
#define scx_color s48_get_imported_binding("scx-color")
extern s48_value scx_color;
extern void scx_extract_color(s48_value v, XColor* c);
extern void scx_copy_color(const XColor* c, s48_value v);
extern s48_value scx_enter_color(const XColor* c);
#define scx_gc s48_get_imported_binding("scx-gc")
extern s48_value scx_gc;
#define scx_extract_gc(x) \
(GC)s48_extract_integer(s48_checked_record_ref(x, 0, scx_gc))
extern s48_value scx_enter_gc(GC gc);
#define scx_fontstruct s48_get_imported_binding("scx-fontstruct")
extern s48_value scx_fontstruct;
#define scx_extract_fontstruct(x)\
(XFontStruct*)s48_extract_integer(s48_checked_record_ref(x, 0,\
scx_fontstruct))
extern s48_value scx_enter_charstruct(XCharStruct* cs);
extern s48_value scx_enter_fontstruct(XFontStruct* fs);
#define scx_screenformat s48_get_imported_binding("scx-screenformat")
extern s48_value scx_screenformat;
#define scx_extract_screenformat(x)\
(ScreenFormat*)s48_extract_integer(s48_checked_record_ref(x, 0,\
scx_screenformat))
extern s48_value scx_enter_screenformat(ScreenFormat* sf);
#define scx_visual s48_get_imported_binding("scx-visual")
extern s48_value scx_visual;
#define scx_extract_visual(x)\
(Visual*)s48_extract_integer(s48_checked_record_ref(x, 0,\
scx_visual))
extern s48_value scx_enter_visual(Visual* vis);
#define scx_screen s48_get_imported_binding("scx-screen")
extern s48_value scx_screen;
#define scx_extract_screen(x)\
(Screen*)s48_extract_integer(s48_checked_record_ref(x, 0,\
scx_screen))
@ -140,79 +142,136 @@ extern void scx_extract_x_error(s48_value e, XErrorEvent* xe);
/* more types */
#define scx_extract_state(x) S48_EXTRACT_ENUM(x, "scx-state")
#define scx_enter_state(x) S48_ENTER_ENUM(x, "scx-states")
extern s48_value scx_event_mask_binding;
#define scx_extract_event_mask(x) \
S48_EXTRACT_ENUM_SET(x, scx_event_mask_binding)
#define scx_enter_event_mask(x) s48_enter_enum_set(x, scx_event_mask_binding)
#define scx_extract_event_mask(x) S48_EXTRACT_ENUM_SET(x, "scx-event-mask")
#define scx_enter_event_mask(x) s48_enter_enum_set(x, "scx-event-mask")
extern s48_value scx_gc_value_binding;
extern s48_value scx_gc_values_binding;
#define scx_extract_gc_value(x) S48_EXTRACT_ENUM(x, scx_gc_value_binding)
#define scx_enter_gc_value(x) S48_ENTER_ENUM(x, scx_gc_values_binding)
#define scx_extract_gc_value(x) S48_EXTRACT_ENUM(x, "scx-gc-value")
#define scx_enter_gc_value(x) S48_ENTER_ENUM(x, "scx-gc-values")
extern s48_value scx_byte_order_binding;
extern s48_value scx_byte_orders_binding;
#define scx_extract_byte_order(x) S48_EXTRACT_ENUM(x, scx_byte_order_binding)
#define scx_enter_byte_order(x) S48_ENTER_ENUM(x, scx_byte_orders_binding)
#define scx_extract_byte_order(x) S48_EXTRACT_ENUM(x, "scx-byte-order")
#define scx_enter_byte_order(x) S48_ENTER_ENUM(x, "scx-byte-orders")
extern s48_value scx_bit_order_binding;
extern s48_value scx_bit_orders_binding;
#define scx_extract_bit_order(x) S48_EXTRACT_ENUM(x, scx_bit_order_binding)
#define scx_enter_bit_order(x) S48_ENTER_ENUM(x, scx_bit_orders_binding)
#define scx_extract_bit_order(x) S48_EXTRACT_ENUM(x, "scx-bit-order")
#define scx_enter_bit_order(x) S48_ENTER_ENUM(x, "scx-bit-orders")
extern s48_value scx_bit_gravity_binding;
extern s48_value scx_bit_gravities_binding;
#define scx_extract_bit_gravity(x) S48_EXTRACT_ENUM(x, scx_bit_gravity_binding)
#define scx_enter_bit_gravity(x) S48_ENTER_ENUM(x, scx_bit_gravities_binding)
#define scx_extract_bit_gravity(x) S48_EXTRACT_ENUM(x, "scx-bit-gravity")
#define scx_enter_bit_gravity(x) S48_ENTER_ENUM(x, "scx-bit-gravities")
extern s48_value scx_win_gravity_binding;
extern s48_value scx_win_gravities_binding;
#define scx_extract_win_gravity(x) S48_EXTRACT_ENUM(x, scx_win_gravity_binding)
#define scx_enter_win_gravity(x) S48_ENTER_ENUM(x, scx_win_gravities_binding)
#define scx_extract_win_gravity(x) S48_EXTRACT_ENUM(x, "scx-win-gravity")
#define scx_enter_win_gravity(x) S48_ENTER_ENUM(x, "scx-win-gravities")
extern s48_value scx_event_type_binding;
extern s48_value scx_event_types_binding;
#define scx_extract_event_type(x) S48_EXTRACT_ENUM(x, scx_event_type_binding)
#define scx_enter_event_type(x) S48_ENTER_ENUM(x, scx_event_types_binding)
#define scx_extract_event_type(x) S48_EXTRACT_ENUM(x, "scx-event-type")
#define scx_enter_event_type(x) S48_ENTER_ENUM(x, "scx-event-types")
extern s48_value scx_font_direction_binding;
extern s48_value scx_font_directions_binding;
#define scx_extract_font_direction(x) \
S48_EXTRACT_ENUM(x, scx_font_direction_binding)
#define scx_enter_font_direction(x) \
S48_ENTER_ENUM(x, scx_font_directions_binding)
#define scx_extract_font_direction(x) S48_EXTRACT_ENUM(x, "scx-font-direction")
#define scx_enter_font_direction(x) S48_ENTER_ENUM(x, "scx-font-directions")
extern s48_value scx_state_binding;
extern s48_value scx_states_binding;
#define scx_extract_state(x) S48_EXTRACT_ENUM(x, scx_state_binding)
#define scx_enter_state(x) S48_ENTER_ENUM(x, scx_states_binding)
#define scx_extract_state(x) S48_EXTRACT_ENUM(x, "scx-state")
#define scx_enter_state(x) S48_ENTER_ENUM(x, "scx-states")
extern s48_value scx_state_set_binding;
#define scx_extract_state_set(x) S48_EXTRACT_ENUM_SET(x, scx_state_set_binding)
#define scx_enter_state_set(x) s48_enter_enum_set(x, scx_state_set_binding)
#define scx_extract_state_set(x) S48_EXTRACT_ENUM_SET(x, "scx-state-set")
#define scx_enter_state_set(x) s48_enter_enum_set(x, "scx-state-set")
extern s48_value scx_button_binding;
extern s48_value scx_buttons_binding;
#define scx_extract_button(x) S48_EXTRACT_ENUM(x, scx_button_binding)
#define scx_enter_button(x) S48_ENTER_ENUM(x, scx_buttons_binding)
#define scx_extract_button(x) S48_EXTRACT_ENUM(x, "scx-button")
#define scx_enter_button(x) S48_ENTER_ENUM(x, "scx-buttons")
extern s48_value scx_notify_mode_binding;
extern s48_value scx_notify_modes_binding;
#define scx_extract_notify_mode(x) S48_EXTRACT_ENUM(x, scx_notify_mode_binding)
#define scx_enter_notify_mode(x) S48_ENTER_ENUM(x, scx_notify_modes_binding)
#define scx_extract_notify_mode(x) S48_EXTRACT_ENUM(x, "scx-notify-mode")
#define scx_enter_notify_mode(x) S48_ENTER_ENUM(x, "scx-notify-modes")
#define scx_extract_notify_detail(x) S48_EXTRACT_ENUM(x, "scx-notify-detail")
#define scx_enter_notify_detail(x) S48_ENTER_ENUM(x, "scx-notify-details")
extern s48_value scx_notify_detail_binding;
extern s48_value scx_notify_details_binding;
#define scx_extract_notify_detail(x) \
S48_EXTRACT_ENUM(x, scx_notify_detail_binding)
#define scx_enter_notify_detail(x) \
S48_ENTER_ENUM(x, scx_notify_details_binding)
extern s48_value scx_visibility_state_binding;
extern s48_value scx_visibility_states_binding;
#define scx_extract_visibility_state(x) \
S48_EXTRACT_ENUM(x, "scx-visibility-state")
S48_EXTRACT_ENUM(x, scx_visibility_state_binding)
#define scx_enter_visibility_state(x) \
S48_ENTER_ENUM(x, "scx-visibility-states")
S48_ENTER_ENUM(x, scx_visibility_states_binding)
#define scx_extract_place(x) S48_EXTRACT_ENUM(x, "scx-place")
#define scx_enter_place(x) S48_ENTER_ENUM(x, "scx-places")
extern s48_value scx_place_binding;
extern s48_value scx_places_binding;
#define scx_extract_place(x) S48_EXTRACT_ENUM(x, scx_place_binding)
#define scx_enter_place(x) S48_ENTER_ENUM(x, scx_places_binding)
#define scx_extract_property_state(x) S48_EXTRACT_ENUM(x, "scx-property-state")
#define scx_enter_property_state(x) S48_ENTER_ENUM(x, "scx-property-states")
extern s48_value scx_property_state_binding;
extern s48_value scx_property_states_binding;
#define scx_extract_property_state(x) \
S48_EXTRACT_ENUM(x, scx_property_state_binding)
#define scx_enter_property_state(x) \
S48_ENTER_ENUM(x, scx_property_states_binding)
#define scx_extract_colormap_state(x) S48_EXTRACT_ENUM(x, "scx-colormap-state")
#define scx_enter_colormap_state(x) S48_ENTER_ENUM(x, "scx-colormap-states")
extern s48_value scx_colormap_state_binding;
extern s48_value scx_colormap_states_binding;
#define scx_extract_colormap_state(x) \
S48_EXTRACT_ENUM(x, scx_colormap_state_binding)
#define scx_enter_colormap_state(x) \
S48_ENTER_ENUM(x, scx_colormap_states_binding)
extern s48_value scx_mapping_request_binding;
extern s48_value scx_mapping_requests_binding;
#define scx_extract_mapping_request(x) \
S48_EXTRACT_ENUM(x, "scx-mapping-request")
#define scx_enter_mapping_request(x) S48_ENTER_ENUM(x, "scx-mapping-requests")
S48_EXTRACT_ENUM(x, scx_mapping_request_binding)
#define scx_enter_mapping_request(x) \
S48_ENTER_ENUM(x, scx_mapping_requests_binding)
#define scx_extract_backing_store(x) S48_EXTRACT_ENUM(x, "scx-backing-store")
#define scx_enter_backing_store(x) S48_ENTER_ENUM(x, "scx-backing-stores")
extern s48_value scx_backing_store_binding;
extern s48_value scx_backing_stores_binding;
#define scx_extract_backing_store(x) \
S48_EXTRACT_ENUM(x, scx_backing_store_binding)
#define scx_enter_backing_store(x) \
S48_ENTER_ENUM(x, scx_backing_stores_binding)
#define scx_extract_map_state(x) S48_EXTRACT_ENUM(x, "scx-map-state")
#define scx_enter_map_state(x) S48_ENTER_ENUM(x, "scx-map-states")
extern s48_value scx_map_state_binding;
extern s48_value scx_map_states_binding;
#define scx_extract_map_state(x) S48_EXTRACT_ENUM(x, scx_map_state_binding)
#define scx_enter_map_state(x) S48_ENTER_ENUM(x, scx_map_states_binding)
#define scx_extract_window_class(x) S48_EXTRACT_ENUM(x, "scx-window-class")
#define scx_enter_window_class(x) S48_ENTER_ENUM(x, "scx-window-classes")
extern s48_value scx_window_class_binding;
extern s48_value scx_window_classes_binding;
#define scx_extract_window_class(x) \
S48_EXTRACT_ENUM(x, scx_window_class_binding)
#define scx_enter_window_class(x) \
S48_ENTER_ENUM(x, scx_window_classes_binding)
#define scx_extract_stack_mode(x) S48_EXTRACT_ENUM(x, "scx-stack-mode")
#define scx_enter_stack_mode(x) S48_ENTER_ENUM(x, "scx-stack-modes")
extern s48_value scx_stack_mode_binding;
extern s48_value scx_stack_modes_binding;
#define scx_extract_stack_mode(x) S48_EXTRACT_ENUM(x, scx_stack_mode_binding)
#define scx_enter_stack_mode(x) S48_ENTER_ENUM(x, scx_stack_modes_binding)
#define scx_extract_window_change(x) S48_EXTRACT_ENUM(x, "scx-window-change")
#define scx_enter_window_change(x) S48_ENTER_ENUM(x, "scx-window-changes")
extern s48_value scx_window_change_binding;
extern s48_value scx_window_changes_binding;
#define scx_extract_window_change(x) \
S48_EXTRACT_ENUM(x, scx_window_change_binding)
#define scx_enter_window_change(x) \
S48_ENTER_ENUM(x, scx_window_changes_binding)
#endif