Mercurial > hg > xemacs-beta
annotate lwlib/xlwmenuP.h @ 5327:d1b17a33450b
Move the heavy lifting from cl-seq.el to C.
src/ChangeLog addition:
2010-12-30 Aidan Kehoe <kehoea@parhasard.net>
Move the heavy lifting from cl-seq.el to C, finally making those
functions first-class XEmacs citizens, with circularity checking,
built-in support for tests other than #'eql, and as much
compatibility with current Common Lisp as Paul Dietz' tests require.
* fns.c (check_eq_nokey, check_eq_key, check_eql_nokey)
(check_eql_key, check_equal_nokey, check_equal_key)
(check_equalp_nokey, check_equalp_key, check_string_match_nokey)
(check_string_match_key, check_other_nokey, check_other_key)
(check_if_nokey, check_if_key, check_match_eq_key)
(check_match_eql_key, check_match_equal_key)
(check_match_equalp_key, check_match_other_key): New. These are
basically to provide function pointers to be used by Lisp
functions that take TEST, TEST-NOT and KEY arguments.
(get_check_match_function_1, get_check_test_function)
(get_check_match_function): These functions work out which of the
previous list of functions to use, given the keywords supplied by
the user.
(count_with_tail): New. This is the bones of #'count.
(list_count_from_end, string_count_from_end): Utility functions
for #'count.
(Fcount): New, moved from cl-seq.el.
(list_position_cons_before): New. The implementation of #'member*,
and important in implementing various other functions.
(FmemberX, Fadjoin, FassocX, FrassocX, Fposition, Ffind)
(FdeleteX, FremoveX, Fdelete_duplicates, Fremove_duplicates)
(Fnsubstitute, Fsubstitute, Fsublis, Fnsublis, Fsubst, Fnsubst)
(Ftree_equal, Fmismatch, Fsearch, Fintersection, Fnintersection)
(Fsubsetp, Fset_difference, Fnset_difference, Fnunion, Funion)
(Fset_exclusive_or, Fnset_exclusive_or): New, moved here from
cl-seq.el.
(position): New. The implementation of #'find and #'position.
(list_delete_duplicates_from_end, subst, sublis, nsublis)
(tree_equal, mismatch_from_end, mismatch_list_list)
(mismatch_list_string, mismatch_list_array)
(mismatch_string_array, mismatch_string_string)
(mismatch_array_array, get_mismatch_func): Helper C functions for
the Lisp-visible functions.
(venn, nvenn): New. The implementation of the main Lisp functions that
treat lists as sets.
lisp/ChangeLog addition:
2010-12-30 Aidan Kehoe <kehoea@parhasard.net>
* cl-seq.el:
Move the heavy lifting from this file to C. Dump the
cl-parsing-keywords macro, but don't use defun* for the functions
we define that do take keywords, dynamic scope lossage makes that
not practical.
* subr.el (sort, fillarray): Move these aliases here.
(map-plist): #'nsublis is now built-in, but at this point #'eql
isn't necessarily available as a test; use #'eq.
* obsolete.el (cl-delete-duplicates): Make this available for old
compiler macros and old code.
(memql): Document that this is equivalent to #'member*, and worse.
* cl.el (adjoin, subst): Removed. These are in C.
author | Aidan Kehoe <kehoea@parhasard.net> |
---|---|
date | Thu, 30 Dec 2010 01:59:52 +0000 |
parents | a6c778975d7d |
children | ade4c7e2c6cb |
rev | line source |
---|---|
440 | 1 #ifndef INCLUDED_xlwmenuP_h_ |
2 #define INCLUDED_xlwmenuP_h_ | |
428 | 3 |
4 #include "xlwmenu.h" | |
5 #include <X11/CoreP.h> | |
6 | |
4916
a6c778975d7d
split USE_XFT into HAVE_XFT/USE_XFT
Ben Wing <ben@xemacs.org>
parents:
3685
diff
changeset
|
7 #ifdef HAVE_XFT_MENUBARS |
3094 | 8 #include <X11/Xft/Xft.h> |
9 #endif | |
10 | |
11 | |
428 | 12 /* Elements in the stack arrays. */ |
13 typedef struct _window_state | |
14 { | |
15 Window window; | |
16 Position x; | |
17 Position y; | |
18 Dimension width; | |
19 Dimension height; | |
20 Dimension label_width; | |
21 Dimension toggle_width; | |
22 } window_state; | |
23 | |
24 | |
25 /* New fields for the XlwMenu widget instance record */ | |
26 typedef struct _XlwMenu_part | |
27 { | |
28 /* slots set by the resources */ | |
29 | |
4916
a6c778975d7d
split USE_XFT into HAVE_XFT/USE_XFT
Ben Wing <ben@xemacs.org>
parents:
3685
diff
changeset
|
30 #if defined(NEED_MOTIF) && !defined(HAVE_XFT_MENUBARS) |
428 | 31 XmFontList font_list; |
32 XmFontList font_list_2; | |
33 XmFontList fallback_font_list; | |
34 #else | |
35 XFontStruct * font; | |
4916
a6c778975d7d
split USE_XFT into HAVE_XFT/USE_XFT
Ben Wing <ben@xemacs.org>
parents:
3685
diff
changeset
|
36 #ifdef HAVE_XFT_MENUBARS |
3397 | 37 String fcFontName; |
3685 | 38 String xftFontName; |
3094 | 39 XftFont *renderFont; |
40 #endif | |
428 | 41 # ifdef USE_XFONTSET |
42 XFontSet font_set; | |
43 # endif | |
44 #endif | |
45 Dimension font_ascent, font_descent; /* extracted from font/fontlist */ | |
46 | |
47 Pixel foreground; | |
48 Pixel button_foreground; | |
49 Pixel highlight_foreground; | |
50 Pixel title_foreground; | |
51 Dimension margin; | |
52 Dimension horizontal_margin; | |
53 Dimension vertical_margin; | |
54 Dimension column_spacing; | |
55 Dimension shadow_thickness; | |
56 Dimension indicator_size; | |
57 Pixel top_shadow_color; | |
58 Pixel bottom_shadow_color; | |
59 Pixel select_color; | |
4916
a6c778975d7d
split USE_XFT into HAVE_XFT/USE_XFT
Ben Wing <ben@xemacs.org>
parents:
3685
diff
changeset
|
60 #ifdef HAVE_XFT_MENUBARS |
3094 | 61 #endif |
428 | 62 Pixmap top_shadow_pixmap; |
63 Pixmap bottom_shadow_pixmap; | |
64 Cursor cursor_shape; | |
65 XtCallbackList open; | |
66 XtCallbackList select; | |
67 widget_value* contents; | |
68 int horizontal; | |
69 Boolean use_backing_store; | |
70 Boolean bounce_down; | |
71 Boolean lookup_labels; | |
72 | |
73 /* State of the XlwMenu */ | |
74 int old_depth; | |
75 widget_value** old_stack; | |
76 int old_stack_length; | |
77 | |
78 /* New state after the user moved */ | |
79 int new_depth; | |
80 widget_value** new_stack; | |
81 int new_stack_length; | |
82 | |
83 /* Window resources */ | |
84 window_state* windows; | |
85 int windows_length; | |
86 | |
87 /* Internal part, set by the XlwMenu */ | |
88 GC foreground_gc; | |
89 GC button_gc; | |
90 GC background_gc; | |
91 GC inactive_gc; | |
92 GC inactive_button_gc; | |
93 GC shadow_top_gc; | |
94 GC shadow_bottom_gc; | |
95 GC select_gc; | |
96 GC highlight_gc; | |
97 GC title_gc; | |
98 Cursor cursor; | |
99 Boolean popped_up; | |
100 Pixmap gray_pixmap; | |
101 | |
102 /* Stay-up stuff */ | |
103 Boolean pointer_grabbed; | |
104 Boolean next_release_must_exit; | |
105 Time menu_post_time, menu_bounce_time; | |
106 widget_value * last_selected_val; | |
107 } XlwMenuPart; | |
108 | |
109 /* Full instance record declaration */ | |
110 typedef struct _XlwMenuRec | |
111 { | |
112 CorePart core; | |
113 XlwMenuPart menu; | |
114 } XlwMenuRec; | |
115 | |
116 /* New fields for the XlwMenu widget class record */ | |
117 typedef struct | |
118 { | |
119 int dummy; | |
120 } XlwMenuClassPart; | |
121 | |
122 /* Full class record declaration. */ | |
123 typedef struct _XlwMenuClassRec | |
124 { | |
125 CoreClassPart core_class; | |
126 XlwMenuClassPart menu_class; | |
127 } XlwMenuClassRec; | |
128 | |
129 /* Class pointer. */ | |
130 extern XlwMenuClassRec xlwMenuClassRec; | |
131 | |
440 | 132 #endif /* INCLUDED_xlwmenuP_h_ */ |