Mercurial > hg > xemacs-beta
annotate lisp/gtk-marshal.el @ 5359:f5a5501814f5
Document the CL set functions and #'eql in the Lispref, not just cl.texi
man/ChangeLog addition:
2011-02-19 Aidan Kehoe <kehoea@parhasard.net>
* lispref/lists.texi (Sets And Lists):
Document #'member*, #'remove*, #'delete* in this file. Document
#'memq, #'member, #'remq, #'remove, #'delq, #'delete in terms of
the former functions.
Document #'subsetp, #'union, #'intersection, #'set-difference,
#'set-exclusive-or and their destructive analogues in this file.
* lispref/lists.texi (Association Lists):
Document #'assoc*, #'rassoc* in this file. Document #'assq,
#'assoc, #'rassq, #'rassoc in terms of the first two functions.
* lispref/objects.texi (Equality Predicates):
Document #'eql here, don't leave it to cl.texi.
src/ChangeLog addition:
2011-02-19 Aidan Kehoe <kehoea@parhasard.net>
* fns.c (Fset_exclusive_or):
This function accepts the :stable keyword too, document this in
its arglist.
| author | Aidan Kehoe <kehoea@parhasard.net> |
|---|---|
| date | Sat, 19 Feb 2011 11:03:46 +0000 |
| parents | cd167465bf69 |
| children | b9167d522a9a |
| rev | line source |
|---|---|
|
5287
cd167465bf69
More permission consistency.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
5231
diff
changeset
|
1 ;; gtk-marshal.el --- regenerate C wrappers for GTK |
|
cd167465bf69
More permission consistency.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
5231
diff
changeset
|
2 ;; |
|
cd167465bf69
More permission consistency.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
5231
diff
changeset
|
3 ;; Copyright (C) 2000, 2001 William M. Perry |
|
cd167465bf69
More permission consistency.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
5231
diff
changeset
|
4 ;; |
|
4709
db7068430402
Add explicit GPL v2 or later notices to Bill Perry's code, where such notices
Jerry James <james@xemacs.org>
parents:
2523
diff
changeset
|
5 ;; 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:
2523
diff
changeset
|
6 ;; |
|
db7068430402
Add explicit GPL v2 or later notices to Bill Perry's code, where such notices
Jerry James <james@xemacs.org>
parents:
2523
diff
changeset
|
7 ;; 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:
2523
diff
changeset
|
8 ;; 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:
2523
diff
changeset
|
9 ;; 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:
2523
diff
changeset
|
10 ;; later version. |
|
db7068430402
Add explicit GPL v2 or later notices to Bill Perry's code, where such notices
Jerry James <james@xemacs.org>
parents:
2523
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:
2523
diff
changeset
|
12 ;; 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:
2523
diff
changeset
|
13 ;; 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:
2523
diff
changeset
|
14 ;; 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:
2523
diff
changeset
|
15 ;; 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:
2523
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:
2523
diff
changeset
|
17 ;; 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:
2523
diff
changeset
|
18 ;; 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:
2523
diff
changeset
|
19 ;; 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:
4709
diff
changeset
|
20 ;; Boston, MA 02110-1301, USA. */ |
| 2054 | 21 ;; |
| 22 ;; To regenerate ../src/emacs-marshals.c just load this file. | |
| 23 ;; | |
| 462 | 24 (defconst name-to-return-type |
| 2054 | 25 '(("INT" . "gint") |
| 462 | 26 ("CALLBACK" . "GtkCallback") |
| 27 ("OBJECT" . "GtkObject *") | |
| 28 ("POINTER" . "void *") | |
| 29 ("STRING" . "gchar *") | |
| 30 ("BOOL" . "gboolean") | |
| 31 ("DOUBLE" . "gdouble") | |
| 32 ("FLOAT" . "gfloat") | |
| 33 ("LIST" . "void *") | |
| 34 ("NONE" . nil))) | |
| 35 | |
| 36 (defvar defined-marshallers nil) | |
| 37 | |
| 38 (defun get-marshaller-name (rval args) | |
| 39 (concat "emacs_gtk_marshal_" rval "__" | |
| 40 (mapconcat 'identity (or args '("NONE")) "_"))) | |
| 41 | |
| 42 (defun define-marshaller (rval &rest args) | |
| 43 (let ((name nil) | |
| 44 (internal-rval (assoc rval name-to-return-type)) | |
| 45 (ctr 0) | |
| 46 (func-proto (format "__%s_fn" rval))) | |
| 47 (if (not internal-rval) | |
| 48 (error "Do not know return type of `%s'" rval)) | |
| 49 (setq name (get-marshaller-name rval args)) | |
| 50 | |
| 51 (if (member name defined-marshallers) | |
| 2054 | 52 (error "Attempt to define the same marshaller more than once! %s" name)) |
| 462 | 53 |
| 54 (set-buffer (get-buffer-create "emacs-marshals.c")) | |
| 55 (goto-char (point-max)) | |
| 56 | |
| 57 (if (or (member "FLOAT" args) (member "DOUBLE" args)) | |
| 58 ;; We need to special case anything with FLOAT in the argument | |
| 59 ;; list or the parameters get screwed up royally. | |
| 60 (progn | |
| 61 (setq func-proto (concat (format "__%s__" rval) | |
| 62 (mapconcat 'identity args "_") | |
| 63 "_fn")) | |
| 64 (insert "typedef " | |
| 65 (or (cdr internal-rval) "void") | |
| 66 " (*" | |
| 67 func-proto ")(" | |
| 68 (mapconcat (lambda (x) | |
| 69 (cdr (assoc x name-to-return-type))) args ", ") | |
| 70 ");\n"))) | |
| 71 | |
| 72 (insert "\n" | |
| 73 "static void\n" | |
| 74 name " (ffi_actual_function func, GtkArg *args)\n" | |
| 75 "{\n" | |
| 76 (format " %s rfunc = (%s) func;\n" func-proto func-proto)) | |
| 77 | |
| 78 (if (string= "LIST" rval) (setq rval "POINTER")) | |
| 79 | |
| 80 (if (cdr internal-rval) | |
| 81 ;; It has a return type to worry about | |
| 82 (insert " " (cdr internal-rval) " *return_val;\n\n" | |
| 83 (format " return_val = GTK_RETLOC_%s (args[%d]);\n" rval (length args)) | |
| 84 " *return_val = ") | |
| 85 (insert " ")) | |
| 86 (insert "(*rfunc) (") | |
| 87 (while args | |
| 88 (if (/= ctr 0) | |
| 89 (insert ", ")) | |
| 90 (insert (format "GTK_VALUE_%s (args[%d])" (car args) ctr)) | |
| 91 (setq args (cdr args) | |
| 92 ctr (1+ ctr))) | |
| 93 (insert ");\n") | |
| 94 (insert "}\n"))) | |
| 95 | |
| 96 (save-excursion | |
| 591 | 97 (find-file "../src/emacs-marshals.c") |
| 462 | 98 (erase-buffer) |
| 99 (setq defined-marshallers nil) | |
| 100 | |
| 591 | 101 (insert "/* This file was automatically generated by ../lisp/gtk-marshal.el */\n" |
| 102 "/* DO NOT EDIT BY HAND!!! */\n") | |
| 462 | 103 (insert "#define GTK_VALUE_ARRAY(x) GTK_VALUE_POINTER(x)\n\n") |
| 104 (insert "#define GTK_VALUE_LIST(x) GTK_VALUE_POINTER(x)\n\n") | |
| 105 | |
| 106 (let ((todo '( | |
| 107 ("BOOL" "OBJECT" "INT") | |
| 108 ("BOOL" "OBJECT" "OBJECT" "OBJECT") | |
| 109 ("BOOL" "OBJECT" "OBJECT") | |
| 110 ("BOOL" "OBJECT" "POINTER") | |
| 111 ("BOOL" "OBJECT" "STRING") | |
| 112 ("BOOL" "OBJECT") | |
| 113 ("BOOL" "POINTER" "BOOL") | |
| 114 ("BOOL" "POINTER") | |
| 115 ("BOOL") | |
| 116 ("FLOAT" "OBJECT" "FLOAT") | |
| 117 ("FLOAT" "OBJECT") | |
| 118 ("INT" "BOOL") | |
| 119 ("INT" "OBJECT" "ARRAY") | |
| 120 ("INT" "OBJECT" "INT" "ARRAY") | |
| 121 ("INT" "OBJECT" "INT" "INT") | |
| 122 ("INT" "OBJECT" "INT" "STRING") | |
| 123 ("INT" "OBJECT" "INT") | |
| 124 ("INT" "OBJECT" "OBJECT") | |
| 125 ("INT" "OBJECT" "POINTER" "INT" "INT") | |
| 126 ("INT" "OBJECT" "POINTER" "INT") | |
| 127 ("INT" "OBJECT" "POINTER") | |
| 128 ("INT" "OBJECT" "STRING") | |
| 129 ("INT" "OBJECT") | |
| 130 ("INT" "POINTER" "INT") | |
| 131 ("INT" "POINTER" "STRING" "INT") | |
| 132 ("INT" "POINTER" "STRING" "STRING") | |
| 133 ("INT" "POINTER" "STRING") | |
| 134 ("INT" "POINTER") | |
| 135 ("INT" "STRING" "STRING" "INT" "ARRAY") | |
| 136 ("INT" "STRING") | |
| 137 ("INT") | |
| 138 ("LIST" "OBJECT") | |
| 139 ("LIST") | |
| 140 ("NONE" "BOOL") | |
| 141 ("NONE" "INT" "INT" "INT" "INT") | |
| 142 ("NONE" "INT" "INT") | |
| 143 ("NONE" "INT") | |
| 144 ("NONE" "OBJECT" "BOOL" "INT") | |
| 145 ("NONE" "OBJECT" "BOOL") | |
| 146 ("NONE" "OBJECT" "FLOAT" "FLOAT" "FLOAT" "BOOL") | |
| 147 ("NONE" "OBJECT" "FLOAT" "FLOAT" "FLOAT" "FLOAT") | |
| 148 ("NONE" "OBJECT" "FLOAT" "FLOAT" "FLOAT") | |
| 149 ("NONE" "OBJECT" "FLOAT" "FLOAT") | |
| 150 ("NONE" "OBJECT" "FLOAT") | |
| 151 ("NONE" "OBJECT" "INT" "BOOL") | |
| 152 ("NONE" "OBJECT" "INT" "FLOAT" "BOOL") | |
| 153 ("NONE" "OBJECT" "INT" "FLOAT") | |
| 154 ("NONE" "OBJECT" "INT" "INT" "ARRAY" "ARRAY" "ARRAY" "ARRAY" "ARRAY" "ARRAY") | |
| 155 ("NONE" "OBJECT" "INT" "INT" "ARRAY") | |
| 156 ("NONE" "OBJECT" "INT" "INT" "FLOAT" "FLOAT") | |
| 157 ("NONE" "OBJECT" "INT" "INT" "INT" "INT") | |
| 158 ("NONE" "OBJECT" "INT" "INT" "INT") | |
| 159 ("NONE" "OBJECT" "INT" "INT" "POINTER" "POINTER") | |
| 160 ("NONE" "OBJECT" "INT" "INT" "POINTER") | |
| 161 ("NONE" "OBJECT" "INT" "INT" "STRING" "INT" "POINTER" "POINTER") | |
| 162 ("NONE" "OBJECT" "INT" "INT" "STRING") | |
| 163 ("NONE" "OBJECT" "INT" "INT") | |
| 164 ("NONE" "OBJECT" "INT" "OBJECT") | |
| 165 ("NONE" "OBJECT" "INT" "POINTER") | |
| 166 ("NONE" "OBJECT" "INT" "STRING") | |
| 167 ("NONE" "OBJECT" "INT") | |
| 168 ("NONE" "OBJECT" "LIST" "INT") | |
| 169 ("NONE" "OBJECT" "LIST") | |
| 170 ("NONE" "OBJECT" "OBJECT" "BOOL" "BOOL" "INT" "INT") | |
| 171 ("NONE" "OBJECT" "OBJECT" "BOOL" "BOOL" "INT") | |
| 172 ("NONE" "OBJECT" "OBJECT" "BOOL" "BOOL") | |
| 173 ("NONE" "OBJECT" "OBJECT" "FLOAT" "INT") | |
| 174 ("NONE" "OBJECT" "OBJECT" "INT" "INT" "INT" "INT" "INT" "INT" "INT" "INT") | |
| 175 ("NONE" "OBJECT" "OBJECT" "INT" "INT" "INT" "INT") | |
| 176 ("NONE" "OBJECT" "OBJECT" "INT" "INT" "INT") | |
| 177 ("NONE" "OBJECT" "OBJECT" "INT" "INT") | |
| 178 ("NONE" "OBJECT" "OBJECT" "INT") | |
| 179 ("NONE" "OBJECT" "OBJECT" "OBJECT" "INT") | |
| 180 ("NONE" "OBJECT" "OBJECT" "OBJECT" "OBJECT" "INT") | |
| 181 ("NONE" "OBJECT" "OBJECT" "OBJECT" "OBJECT") | |
| 182 ("NONE" "OBJECT" "OBJECT" "OBJECT" "POINTER" "POINTER" "INT" "INT") | |
| 183 ("NONE" "OBJECT" "OBJECT" "OBJECT") | |
| 184 ("NONE" "OBJECT" "OBJECT" "POINTER") | |
| 185 ("NONE" "OBJECT" "OBJECT" "STRING" "INT" "INT" "INT" "INT" "INT") | |
| 186 ("NONE" "OBJECT" "OBJECT" "STRING" "STRING" "INT") | |
| 187 ("NONE" "OBJECT" "OBJECT" "STRING" "STRING") | |
| 188 ("NONE" "OBJECT" "OBJECT" "STRING") | |
| 189 ("NONE" "OBJECT" "OBJECT") | |
| 190 ("NONE" "OBJECT" "POINTER" "BOOL") | |
| 191 ("NONE" "OBJECT" "POINTER" "INT" "FLOAT" "FLOAT") | |
| 192 ("NONE" "OBJECT" "POINTER" "INT" "INT" "INT") | |
| 193 ("NONE" "OBJECT" "POINTER" "INT" "INT") | |
| 194 ("NONE" "OBJECT" "POINTER" "INT" "POINTER" "POINTER") | |
| 195 ("NONE" "OBJECT" "POINTER" "INT" "POINTER") | |
| 196 ("NONE" "OBJECT" "POINTER" "INT" "STRING" "INT" "POINTER" "POINTER") | |
| 197 ("NONE" "OBJECT" "POINTER" "INT" "STRING") | |
| 198 ("NONE" "OBJECT" "POINTER" "INT") | |
| 199 ("NONE" "OBJECT" "POINTER" "POINTER" "INT" "INT" "INT" "INT" "INT" "INT") | |
| 200 ("NONE" "OBJECT" "POINTER" "POINTER" "POINTER" "STRING" "INT") | |
| 201 ("NONE" "OBJECT" "POINTER" "POINTER" "POINTER") | |
| 202 ("NONE" "OBJECT" "POINTER" "POINTER") | |
| 203 ("NONE" "OBJECT" "POINTER" "STRING" "INT" "POINTER" "POINTER" "POINTER" "POINTER" "BOOL" "BOOL") | |
| 204 ("NONE" "OBJECT" "POINTER") | |
| 205 ("NONE" "OBJECT" "STRING" "BOOL") | |
| 206 ("NONE" "OBJECT" "STRING" "INT" "INT" "INT") | |
| 207 ("NONE" "OBJECT" "STRING" "POINTER" "INT" "INT" "INT") | |
| 208 ("NONE" "OBJECT" "STRING" "POINTER" "INT" "INT") | |
| 209 ("NONE" "OBJECT" "STRING" "STRING") | |
| 210 ("NONE" "OBJECT" "STRING") | |
| 211 ("NONE" "OBJECT") | |
| 833 | 212 ("NONE" "POINTER" "INT" "INT") |
| 462 | 213 ("NONE" "POINTER" "INT") |
| 214 ("NONE" "POINTER" "POINTER" "BOOL" "INT" "INT" "INT" "INT" "INT" "INT") | |
| 215 ("NONE" "POINTER" "POINTER" "BOOL" "INT" "INT" "INT" "INT") | |
| 216 ("NONE" "POINTER" "POINTER" "INT" "INT" "INT" "INT") | |
| 217 ("NONE" "POINTER" "POINTER" "INT" "INT") | |
| 218 ("NONE" "POINTER" "POINTER" "POINTER" "INT" "INT" "STRING" "INT") | |
| 219 ("NONE" "POINTER" "POINTER" "POINTER" "INT" "INT" "STRING") | |
| 220 ("NONE" "POINTER" "POINTER" "POINTER" "POINTER") | |
| 221 ("NONE" "POINTER" "POINTER") | |
| 222 ("NONE" "POINTER" "STRING" "STRING") | |
| 223 ("NONE" "POINTER" "STRING") | |
| 224 ("NONE" "POINTER") | |
| 225 ("NONE") | |
| 226 ("OBJECT" "BOOL" "BOOL" "INT") | |
| 227 ("OBJECT" "BOOL" "INT") | |
| 228 ("OBJECT" "FLOAT" "FLOAT" "FLOAT" "FLOAT" "FLOAT" "FLOAT") | |
| 229 ("OBJECT" "FLOAT" "FLOAT" "FLOAT" "FLOAT" "FLOAT") | |
| 230 ("OBJECT" "FLOAT" "FLOAT" "FLOAT" "FLOAT") | |
| 231 ("OBJECT" "INT" "ARRAY") | |
| 232 ("OBJECT" "INT" "BOOL" "BOOL") | |
| 233 ("OBJECT" "INT" "INT" "ARRAY") | |
| 234 ("OBJECT" "INT" "INT" "BOOL") | |
| 235 ("OBJECT" "INT" "INT" "STRING") | |
| 236 ("OBJECT" "INT" "INT") | |
| 237 ("OBJECT" "INT") | |
| 238 ("OBJECT" "OBJECT" "FLOAT" "INT") | |
| 239 ("OBJECT" "OBJECT" "INT") | |
| 240 ("OBJECT" "OBJECT" "OBJECT") | |
| 241 ("OBJECT" "OBJECT" "STRING" "INT" "INT" "INT" "INT" "INT") | |
| 242 ("OBJECT" "OBJECT" "STRING" "INT" "INT" "INT" "INT") | |
| 243 ("OBJECT" "OBJECT" "STRING" "INT" "INT") | |
| 244 ("OBJECT" "OBJECT" "STRING") | |
| 245 ("OBJECT" "OBJECT") | |
| 246 ("OBJECT" "POINTER" "POINTER") | |
| 247 ("OBJECT" "POINTER" "STRING") | |
| 248 ("OBJECT" "POINTER") | |
| 249 ("OBJECT" "STRING" "FLOAT" "FLOAT" "FLOAT" "BOOL") | |
| 250 ("OBJECT" "STRING" "INT" "STRING" "STRING") | |
| 251 ("OBJECT" "STRING" "OBJECT") | |
| 252 ("OBJECT" "STRING" "STRING" "STRING" "ARRAY" "STRING" "STRING") | |
| 253 ("OBJECT" "STRING" "STRING") | |
| 254 ("OBJECT" "STRING") | |
| 255 ("OBJECT") | |
| 256 ("POINTER" "INT" "INT") | |
| 257 ("POINTER" "INT") | |
| 258 ("POINTER" "OBJECT" "INT" "INT") | |
| 259 ("POINTER" "OBJECT" "INT") | |
| 260 ("POINTER" "OBJECT" "POINTER" "INT") | |
| 261 ("POINTER" "OBJECT" "POINTER" "POINTER" "ARRAY" "INT" "POINTER" "POINTER" "POINTER" "POINTER" "BOOL" "BOOL") | |
| 262 ("POINTER" "OBJECT" "POINTER") | |
| 263 ("POINTER" "OBJECT") | |
| 264 ("POINTER" "POINTER") | |
| 833 | 265 ("POINTER" "STRING" "INT") |
| 462 | 266 ("POINTER") |
| 267 ("STRING" "INT" "INT" "INT") | |
| 268 ("STRING" "INT") | |
| 269 ("STRING" "OBJECT" "BOOL") | |
| 270 ("STRING" "OBJECT" "FLOAT") | |
| 271 ("STRING" "OBJECT" "INT" "INT") | |
| 272 ("STRING" "OBJECT" "INT") | |
| 273 ("STRING" "OBJECT") | |
| 274 ("STRING" "POINTER" "STRING") | |
| 275 ("STRING" "POINTER") | |
| 276 ("STRING") | |
| 277 ) | |
| 278 ) | |
| 279 ) | |
| 280 (mapc (lambda (x) (apply 'define-marshaller x)) todo) | |
| 281 | |
| 282 (insert "\n | |
| 283 #include \"hash.h\" | |
| 608 | 284 |
| 285 static struct hash_table *marshaller_hashtable; | |
| 462 | 286 |
| 287 static void initialize_marshaller_storage (void) | |
| 288 { | |
| 289 if (!marshaller_hashtable) | |
| 290 { | |
| 2523 | 291 marshaller_hashtable = make_string_hash_table (100); |
| 462 | 292 ") |
| 293 | |
| 294 (mapc (lambda (x) | |
| 295 (let ((name (get-marshaller-name (car x) (cdr x)))) | |
| 296 (insert (format "\t\tputhash (\"%s\", (void *) %s, marshaller_hashtable);\n" name name)))) | |
| 297 todo) | |
| 298 (insert "\t};\n" | |
| 299 "}\n" | |
| 300 " | |
| 301 static void *find_marshaller (const char *func_name) | |
| 302 { | |
| 303 void *fn = NULL; | |
| 304 initialize_marshaller_storage (); | |
| 305 | |
| 591 | 306 if (gethash (func_name, marshaller_hashtable, (const void **)&fn)) |
| 462 | 307 { |
| 308 return (fn); | |
| 309 } | |
| 310 | |
| 311 return (NULL); | |
| 312 } | |
| 313 ")) | |
| 314 | |
| 315 (save-buffer) | |
| 316 (kill-buffer "emacs-marshals.c")) |
