Mercurial > hg > xemacs-beta
annotate src/glade.c @ 5307:c096d8051f89
Have NATNUMP give t for positive bignums; check limits appropriately.
src/ChangeLog addition:
2010-11-20 Aidan Kehoe <kehoea@parhasard.net>
* abbrev.c (Fexpand_abbrev):
* alloc.c:
* alloc.c (Fmake_list):
* alloc.c (Fmake_vector):
* alloc.c (Fmake_bit_vector):
* alloc.c (Fmake_byte_code):
* alloc.c (Fmake_string):
* alloc.c (vars_of_alloc):
* bytecode.c (UNUSED):
* bytecode.c (Fbyte_code):
* chartab.c (decode_char_table_range):
* cmds.c (Fself_insert_command):
* data.c (check_integer_range):
* data.c (Fnatnump):
* data.c (Fnonnegativep):
* data.c (Fstring_to_number):
* elhash.c (hash_table_size_validate):
* elhash.c (decode_hash_table_size):
* eval.c (Fbacktrace_frame):
* event-stream.c (lisp_number_to_milliseconds):
* event-stream.c (Faccept_process_output):
* event-stream.c (Frecent_keys):
* event-stream.c (Fdispatch_event):
* events.c (Fmake_event):
* events.c (Fevent_timestamp):
* events.c (Fevent_timestamp_lessp):
* events.h:
* events.h (struct command_builder):
* file-coding.c (gzip_putprop):
* fns.c:
* fns.c (check_sequence_range):
* fns.c (Frandom):
* fns.c (Fnthcdr):
* fns.c (Flast):
* fns.c (Fnbutlast):
* fns.c (Fbutlast):
* fns.c (Fmember):
* fns.c (Ffill):
* fns.c (Freduce):
* fns.c (replace_string_range_1):
* fns.c (Freplace):
* font-mgr.c (Ffc_pattern_get):
* frame-msw.c (msprinter_set_frame_properties):
* glyphs.c (check_valid_xbm_inline):
* indent.c (Fmove_to_column):
* intl-win32.c (mswindows_multibyte_to_unicode_putprop):
* lisp.h:
* lisp.h (ARRAY_DIMENSION_LIMIT):
* lread.c (decode_mode_1):
* mule-ccl.c (ccl_get_compiled_code):
* number.h:
* process-unix.c (unix_open_multicast_group):
* process.c (Fset_process_window_size):
* profile.c (Fstart_profiling):
* unicode.c (Funicode_to_char):
Change NATNUMP to return 1 for positive bignums; changes uses of
it and of CHECK_NATNUM appropriately, usually by checking for an
integer in an appropriate range.
Add array-dimension-limit and use it in #'make-vector,
#'make-string. Add array-total-size-limit, array-rank-limit while
we're at it, for the sake of any Common Lisp-oriented code that
uses these limits.
Rename check_int_range to check_integer_range, have it take
Lisp_Objects (and thus bignums) instead.
Remove bignum_butlast(), just set int_n to an appropriately large
integer if N is a bignum.
Accept bignums in check_sequence_range(), change the functions
that use check_sequence_range() appropriately.
Move the definition of NATNUMP() to number.h; document why it's a
reasonable name, contradicting an old comment.
tests/ChangeLog addition:
2010-11-20 Aidan Kehoe <kehoea@parhasard.net>
* automated/lisp-tests.el:
* automated/lisp-tests.el (featurep):
* automated/lisp-tests.el (wrong-type-argument):
* automated/mule-tests.el (featurep):
Check for args-out-of-range errors instead of wrong-type-argument
errors in various places when code is handed a large bignum
instead of a fixnum.
Also check for the wrong-type-argument errors when giving the same
code a non-integer value.
author | Aidan Kehoe <kehoea@parhasard.net> |
---|---|
date | Sat, 20 Nov 2010 16:49:11 +0000 |
parents | ba07c880114a |
children | 2aa9cd456ae7 |
rev | line source |
---|---|
462 | 1 /* glade.c |
2 ** | |
3 ** Description: Interface to `libglade' for XEmacs/GTK | |
4 ** | |
5 ** Created by: William M. Perry <wmperry@gnu.org> | |
6 ** | |
7 ** Copyright (C) 1999 John Harper <john@dcs.warwick.ac.uk> | |
8 ** Copyright (c) 2000 Free Software Foundation | |
9 ** | |
4709
db7068430402
Add explicit GPL v2 or later notices to Bill Perry's code, where such notices
Jerry James <james@xemacs.org>
parents:
4677
diff
changeset
|
10 ** This file is part of XEmacs. |
db7068430402
Add explicit GPL v2 or later notices to Bill Perry's code, where such notices
Jerry James <james@xemacs.org>
parents:
4677
diff
changeset
|
11 ** |
db7068430402
Add explicit GPL v2 or later notices to Bill Perry's code, where such notices
Jerry James <james@xemacs.org>
parents:
4677
diff
changeset
|
12 ** XEmacs is free software; you can redistribute it and/or modify it |
db7068430402
Add explicit GPL v2 or later notices to Bill Perry's code, where such notices
Jerry James <james@xemacs.org>
parents:
4677
diff
changeset
|
13 ** under the terms of the GNU General Public License as published by the |
db7068430402
Add explicit GPL v2 or later notices to Bill Perry's code, where such notices
Jerry James <james@xemacs.org>
parents:
4677
diff
changeset
|
14 ** Free Software Foundation; either version 2, or (at your option) any |
db7068430402
Add explicit GPL v2 or later notices to Bill Perry's code, where such notices
Jerry James <james@xemacs.org>
parents:
4677
diff
changeset
|
15 ** later version. |
db7068430402
Add explicit GPL v2 or later notices to Bill Perry's code, where such notices
Jerry James <james@xemacs.org>
parents:
4677
diff
changeset
|
16 ** |
db7068430402
Add explicit GPL v2 or later notices to Bill Perry's code, where such notices
Jerry James <james@xemacs.org>
parents:
4677
diff
changeset
|
17 ** XEmacs is distributed in the hope that it will be useful, but WITHOUT |
db7068430402
Add explicit GPL v2 or later notices to Bill Perry's code, where such notices
Jerry James <james@xemacs.org>
parents:
4677
diff
changeset
|
18 ** ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
db7068430402
Add explicit GPL v2 or later notices to Bill Perry's code, where such notices
Jerry James <james@xemacs.org>
parents:
4677
diff
changeset
|
19 ** FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
db7068430402
Add explicit GPL v2 or later notices to Bill Perry's code, where such notices
Jerry James <james@xemacs.org>
parents:
4677
diff
changeset
|
20 ** for more details. |
db7068430402
Add explicit GPL v2 or later notices to Bill Perry's code, where such notices
Jerry James <james@xemacs.org>
parents:
4677
diff
changeset
|
21 ** |
db7068430402
Add explicit GPL v2 or later notices to Bill Perry's code, where such notices
Jerry James <james@xemacs.org>
parents:
4677
diff
changeset
|
22 ** You should have received a copy of the GNU General Public License |
db7068430402
Add explicit GPL v2 or later notices to Bill Perry's code, where such notices
Jerry James <james@xemacs.org>
parents:
4677
diff
changeset
|
23 ** along with XEmacs; see the file COPYING. If not, write to |
db7068430402
Add explicit GPL v2 or later notices to Bill Perry's code, where such notices
Jerry James <james@xemacs.org>
parents:
4677
diff
changeset
|
24 ** the Free Software Foundation, Inc., 51 Franklin Street - Fifth Floor, |
5231
ba07c880114a
Fix up FSF's Franklin Street address in many files.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
5013
diff
changeset
|
25 ** Boston, MA 02110-1301, USA. */ |
462 | 26 */ |
27 | |
28 #if defined(HAVE_GLADE_H) || defined(HAVE_GLADE_GLADE_H) | |
29 | |
30 /* For COMPILED_FUNCTIONP */ | |
31 #include "bytecode.h" | |
32 | |
33 #ifdef HAVE_GLADE_GLADE_H | |
34 #include <glade/glade.h> | |
35 #endif | |
36 | |
37 #ifdef HAVE_GLADE_H | |
38 #include <glade.h> | |
39 #endif | |
40 | |
41 /* This is based on the code from rep-gtk 0.11 in libglade-support.c */ | |
42 | |
43 static void | |
44 connector (const gchar *handler_name, GtkObject *object, | |
45 const gchar *signal_name, const gchar *signal_data, | |
46 GtkObject *connect_object, gboolean after, gpointer user_data) | |
47 { | |
48 Lisp_Object func; | |
49 Lisp_Object lisp_data = Qnil; | |
50 | |
5013 | 51 func = GET_LISP_FROM_VOID (user_data); |
462 | 52 |
53 if (NILP (func)) | |
54 { | |
55 /* Look for a lisp function called HANDLER_NAME */ | |
56 func = intern (handler_name); | |
57 } | |
58 | |
59 if (signal_data && signal_data[0]) | |
60 { | |
4677
8f1ee2d15784
Support full Common Lisp multiple values in C.
Aidan Kehoe <kehoea@parhasard.net>
parents:
2054
diff
changeset
|
61 lisp_data |
4953
304aebb79cd3
function renamings to track names of char typedefs
Ben Wing <ben@xemacs.org>
parents:
4709
diff
changeset
|
62 = IGNORE_MULTIPLE_VALUES (Feval (Fread (build_cistring (signal_data)))); |
462 | 63 } |
64 | |
65 /* obj, name, func, cb_data, object_signal, after_p */ | |
66 Fgtk_signal_connect (build_gtk_object (object), | |
67 intern (signal_name), | |
68 func, | |
69 lisp_data, | |
70 connect_object ? Qt : Qnil, | |
71 after ? Qt : Qnil); | |
72 } | |
73 | |
74 /* This differs from lisp/subr.el (functionp) definition by allowing | |
75 ** symbol names that may not necessarily be fboundp yet. | |
76 */ | |
77 static int __almost_functionp (Lisp_Object obj) | |
78 { | |
79 return (SYMBOLP (obj) || | |
80 SUBRP (obj) || | |
81 COMPILED_FUNCTIONP (obj) || | |
82 EQ (Fcar_safe (obj), Qlambda)); | |
83 } | |
84 | |
85 DEFUN ("glade-xml-signal-connect", Fglade_xml_signal_connect, 3, 3, 0, /* | |
86 Connect a glade handler. | |
87 */ | |
88 (xml, handler_name, func)) | |
89 { | |
90 CHECK_GTK_OBJECT (xml); | |
91 CHECK_STRING (handler_name); | |
92 | |
93 if (!__almost_functionp (func)) | |
94 { | |
95 func = wrong_type_argument (intern ("functionp"), func); | |
96 } | |
97 | |
98 glade_xml_signal_connect_full (GLADE_XML (XGTK_OBJECT (xml)->object), | |
2054 | 99 (char*) XSTRING_DATA (handler_name), |
5013 | 100 connector, STORE_LISP_IN_VOID (func)); |
462 | 101 return (Qt); |
102 } | |
103 | |
104 DEFUN ("glade-xml-signal-autoconnect", Fglade_xml_signal_autoconnect, 1, 1, 0, /* | |
105 Connect all glade handlers. | |
106 */ | |
107 (xml)) | |
108 { | |
109 CHECK_GTK_OBJECT (xml); | |
110 | |
111 glade_xml_signal_autoconnect_full (GLADE_XML (XGTK_OBJECT (xml)->object), | |
5013 | 112 connector, STORE_LISP_IN_VOID (Qnil)); |
462 | 113 return (Qt); |
114 } | |
115 | |
116 DEFUN ("glade-xml-textdomain", Fglade_xml_textdomain, 1, 1, 0, /* | |
117 Return the textdomain of a GladeXML object. | |
118 */ | |
119 (xml)) | |
120 { | |
121 gchar *the_domain = NULL; | |
122 | |
123 CHECK_GTK_OBJECT (xml); | |
124 | |
125 if (!GLADE_IS_XML (XGTK_OBJECT (xml)->object)) | |
126 { | |
563 | 127 wtaerror ("Object is not a GladeXML type.", xml); |
462 | 128 } |
129 | |
130 #ifdef LIBGLADE_XML_TXTDOMAIN | |
131 the_domain = GLADE_XML (XGTK_OBJECT (xml)->object)->txtdomain; | |
132 #else | |
133 the_domain = GLADE_XML (XGTK_OBJECT (xml)->object)->textdomain; | |
134 #endif | |
4953
304aebb79cd3
function renamings to track names of char typedefs
Ben Wing <ben@xemacs.org>
parents:
4709
diff
changeset
|
135 return (build_cistring (the_domain)); |
462 | 136 } |
137 | |
138 void syms_of_glade (void) | |
139 { | |
140 DEFSUBR (Fglade_xml_signal_connect); | |
141 DEFSUBR (Fglade_xml_signal_autoconnect); | |
142 DEFSUBR (Fglade_xml_textdomain); | |
143 } | |
144 | |
145 void vars_of_glade (void) | |
146 { | |
147 Fprovide (intern ("glade")); | |
148 } | |
149 | |
150 #else /* !(HAVE_GLADE_H || HAVE_GLADE_GLADE_H) */ | |
151 #define syms_of_glade() | |
152 #define vars_of_glade() | |
153 #endif |