annotate lisp/gtk-marshal.el @ 953:c1e8977783ed

[xemacs-hg @ 2002-08-04 00:05:43 by youngs] 2002-08-03 Steve Youngs <youngs@xemacs.org> * lib-complete.el (find-library): Remove check for mule because decompression DOES work on Mule.
author youngs
date Sun, 04 Aug 2002 00:05:48 +0000
parents ee2d33cfc3c1
children 91d4c8c65a0f
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1 (defconst name-to-return-type
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
2 '(("INT" . "guint")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
3 ("CALLBACK" . "GtkCallback")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
4 ("OBJECT" . "GtkObject *")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
5 ("POINTER" . "void *")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
6 ("STRING" . "gchar *")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
7 ("BOOL" . "gboolean")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
8 ("DOUBLE" . "gdouble")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
9 ("FLOAT" . "gfloat")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
10 ("LIST" . "void *")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
11 ("NONE" . nil)))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
12
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
13 (defvar defined-marshallers nil)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
14
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
15 (defun get-marshaller-name (rval args)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
16 (concat "emacs_gtk_marshal_" rval "__"
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
17 (mapconcat 'identity (or args '("NONE")) "_")))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
18
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
19 (defun define-marshaller (rval &rest args)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
20 (let ((name nil)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
21 (internal-rval (assoc rval name-to-return-type))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
22 (ctr 0)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
23 (func-proto (format "__%s_fn" rval)))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
24 (if (not internal-rval)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
25 (error "Do not know return type of `%s'" rval))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
26 (setq name (get-marshaller-name rval args))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
27
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
28 (if (member name defined-marshallers)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
29 (error "Attempe to define the same marshaller more than once! %s" name))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
30
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
31 (set-buffer (get-buffer-create "emacs-marshals.c"))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
32 (goto-char (point-max))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
33
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
34 (if (or (member "FLOAT" args) (member "DOUBLE" args))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
35 ;; We need to special case anything with FLOAT in the argument
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
36 ;; list or the parameters get screwed up royally.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
37 (progn
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
38 (setq func-proto (concat (format "__%s__" rval)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
39 (mapconcat 'identity args "_")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
40 "_fn"))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
41 (insert "typedef "
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
42 (or (cdr internal-rval) "void")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
43 " (*"
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
44 func-proto ")("
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
45 (mapconcat (lambda (x)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
46 (cdr (assoc x name-to-return-type))) args ", ")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
47 ");\n")))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
48
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
49 (insert "\n"
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
50 "static void\n"
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
51 name " (ffi_actual_function func, GtkArg *args)\n"
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
52 "{\n"
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
53 (format " %s rfunc = (%s) func;\n" func-proto func-proto))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
54
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
55 (if (string= "LIST" rval) (setq rval "POINTER"))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
56
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
57 (if (cdr internal-rval)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
58 ;; It has a return type to worry about
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
59 (insert " " (cdr internal-rval) " *return_val;\n\n"
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
60 (format " return_val = GTK_RETLOC_%s (args[%d]);\n" rval (length args))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
61 " *return_val = ")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
62 (insert " "))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
63 (insert "(*rfunc) (")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
64 (while args
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
65 (if (/= ctr 0)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
66 (insert ", "))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
67 (insert (format "GTK_VALUE_%s (args[%d])" (car args) ctr))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
68 (setq args (cdr args)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
69 ctr (1+ ctr)))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
70 (insert ");\n")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
71 (insert "}\n")))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
72
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
73 (save-excursion
591
ec73ae6e772b [xemacs-hg @ 2001-05-31 02:05:16 by wmperry]
wmperry
parents: 462
diff changeset
74 (find-file "../src/emacs-marshals.c")
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
75 (erase-buffer)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
76 (setq defined-marshallers nil)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
77
591
ec73ae6e772b [xemacs-hg @ 2001-05-31 02:05:16 by wmperry]
wmperry
parents: 462
diff changeset
78 (insert "/* This file was automatically generated by ../lisp/gtk-marshal.el */\n"
ec73ae6e772b [xemacs-hg @ 2001-05-31 02:05:16 by wmperry]
wmperry
parents: 462
diff changeset
79 "/* DO NOT EDIT BY HAND!!! */\n")
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
80 (insert "#define GTK_VALUE_ARRAY(x) GTK_VALUE_POINTER(x)\n\n")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
81 (insert "#define GTK_VALUE_LIST(x) GTK_VALUE_POINTER(x)\n\n")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
82
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
83 (let ((todo '(
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
84 ("BOOL" "OBJECT" "INT")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
85 ("BOOL" "OBJECT" "OBJECT" "OBJECT")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
86 ("BOOL" "OBJECT" "OBJECT")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
87 ("BOOL" "OBJECT" "POINTER")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
88 ("BOOL" "OBJECT" "STRING")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
89 ("BOOL" "OBJECT")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
90 ("BOOL" "POINTER" "BOOL")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
91 ("BOOL" "POINTER")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
92 ("BOOL")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
93 ("FLOAT" "OBJECT" "FLOAT")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
94 ("FLOAT" "OBJECT")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
95 ("INT" "BOOL")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
96 ("INT" "OBJECT" "ARRAY")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
97 ("INT" "OBJECT" "INT" "ARRAY")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
98 ("INT" "OBJECT" "INT" "INT")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
99 ("INT" "OBJECT" "INT" "STRING")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
100 ("INT" "OBJECT" "INT")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
101 ("INT" "OBJECT" "OBJECT")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
102 ("INT" "OBJECT" "POINTER" "INT" "INT")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
103 ("INT" "OBJECT" "POINTER" "INT")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
104 ("INT" "OBJECT" "POINTER")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
105 ("INT" "OBJECT" "STRING")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
106 ("INT" "OBJECT")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
107 ("INT" "POINTER" "INT")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
108 ("INT" "POINTER" "STRING" "INT")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
109 ("INT" "POINTER" "STRING" "STRING")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
110 ("INT" "POINTER" "STRING")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
111 ("INT" "POINTER")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
112 ("INT" "STRING" "STRING" "INT" "ARRAY")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
113 ("INT" "STRING")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
114 ("INT")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
115 ("LIST" "OBJECT")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
116 ("LIST")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
117 ("NONE" "BOOL")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
118 ("NONE" "INT" "INT" "INT" "INT")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
119 ("NONE" "INT" "INT")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
120 ("NONE" "INT")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
121 ("NONE" "OBJECT" "BOOL" "INT")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
122 ("NONE" "OBJECT" "BOOL")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
123 ("NONE" "OBJECT" "FLOAT" "FLOAT" "FLOAT" "BOOL")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
124 ("NONE" "OBJECT" "FLOAT" "FLOAT" "FLOAT" "FLOAT")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
125 ("NONE" "OBJECT" "FLOAT" "FLOAT" "FLOAT")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
126 ("NONE" "OBJECT" "FLOAT" "FLOAT")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
127 ("NONE" "OBJECT" "FLOAT")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
128 ("NONE" "OBJECT" "INT" "BOOL")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
129 ("NONE" "OBJECT" "INT" "FLOAT" "BOOL")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
130 ("NONE" "OBJECT" "INT" "FLOAT")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
131 ("NONE" "OBJECT" "INT" "INT" "ARRAY" "ARRAY" "ARRAY" "ARRAY" "ARRAY" "ARRAY")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
132 ("NONE" "OBJECT" "INT" "INT" "ARRAY")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
133 ("NONE" "OBJECT" "INT" "INT" "FLOAT" "FLOAT")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
134 ("NONE" "OBJECT" "INT" "INT" "INT" "INT")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
135 ("NONE" "OBJECT" "INT" "INT" "INT")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
136 ("NONE" "OBJECT" "INT" "INT" "POINTER" "POINTER")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
137 ("NONE" "OBJECT" "INT" "INT" "POINTER")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
138 ("NONE" "OBJECT" "INT" "INT" "STRING" "INT" "POINTER" "POINTER")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
139 ("NONE" "OBJECT" "INT" "INT" "STRING")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
140 ("NONE" "OBJECT" "INT" "INT")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
141 ("NONE" "OBJECT" "INT" "OBJECT")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
142 ("NONE" "OBJECT" "INT" "POINTER")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
143 ("NONE" "OBJECT" "INT" "STRING")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
144 ("NONE" "OBJECT" "INT")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
145 ("NONE" "OBJECT" "LIST" "INT")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
146 ("NONE" "OBJECT" "LIST")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
147 ("NONE" "OBJECT" "OBJECT" "BOOL" "BOOL" "INT" "INT")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
148 ("NONE" "OBJECT" "OBJECT" "BOOL" "BOOL" "INT")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
149 ("NONE" "OBJECT" "OBJECT" "BOOL" "BOOL")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
150 ("NONE" "OBJECT" "OBJECT" "FLOAT" "INT")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
151 ("NONE" "OBJECT" "OBJECT" "INT" "INT" "INT" "INT" "INT" "INT" "INT" "INT")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
152 ("NONE" "OBJECT" "OBJECT" "INT" "INT" "INT" "INT")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
153 ("NONE" "OBJECT" "OBJECT" "INT" "INT" "INT")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
154 ("NONE" "OBJECT" "OBJECT" "INT" "INT")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
155 ("NONE" "OBJECT" "OBJECT" "INT")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
156 ("NONE" "OBJECT" "OBJECT" "OBJECT" "INT")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
157 ("NONE" "OBJECT" "OBJECT" "OBJECT" "OBJECT" "INT")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
158 ("NONE" "OBJECT" "OBJECT" "OBJECT" "OBJECT")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
159 ("NONE" "OBJECT" "OBJECT" "OBJECT" "POINTER" "POINTER" "INT" "INT")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
160 ("NONE" "OBJECT" "OBJECT" "OBJECT")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
161 ("NONE" "OBJECT" "OBJECT" "POINTER")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
162 ("NONE" "OBJECT" "OBJECT" "STRING" "INT" "INT" "INT" "INT" "INT")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
163 ("NONE" "OBJECT" "OBJECT" "STRING" "STRING" "INT")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
164 ("NONE" "OBJECT" "OBJECT" "STRING" "STRING")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
165 ("NONE" "OBJECT" "OBJECT" "STRING")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
166 ("NONE" "OBJECT" "OBJECT")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
167 ("NONE" "OBJECT" "POINTER" "BOOL")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
168 ("NONE" "OBJECT" "POINTER" "INT" "FLOAT" "FLOAT")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
169 ("NONE" "OBJECT" "POINTER" "INT" "INT" "INT")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
170 ("NONE" "OBJECT" "POINTER" "INT" "INT")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
171 ("NONE" "OBJECT" "POINTER" "INT" "POINTER" "POINTER")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
172 ("NONE" "OBJECT" "POINTER" "INT" "POINTER")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
173 ("NONE" "OBJECT" "POINTER" "INT" "STRING" "INT" "POINTER" "POINTER")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
174 ("NONE" "OBJECT" "POINTER" "INT" "STRING")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
175 ("NONE" "OBJECT" "POINTER" "INT")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
176 ("NONE" "OBJECT" "POINTER" "POINTER" "INT" "INT" "INT" "INT" "INT" "INT")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
177 ("NONE" "OBJECT" "POINTER" "POINTER" "POINTER" "STRING" "INT")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
178 ("NONE" "OBJECT" "POINTER" "POINTER" "POINTER")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
179 ("NONE" "OBJECT" "POINTER" "POINTER")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
180 ("NONE" "OBJECT" "POINTER" "STRING" "INT" "POINTER" "POINTER" "POINTER" "POINTER" "BOOL" "BOOL")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
181 ("NONE" "OBJECT" "POINTER")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
182 ("NONE" "OBJECT" "STRING" "BOOL")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
183 ("NONE" "OBJECT" "STRING" "INT" "INT" "INT")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
184 ("NONE" "OBJECT" "STRING" "POINTER" "INT" "INT" "INT")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
185 ("NONE" "OBJECT" "STRING" "POINTER" "INT" "INT")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
186 ("NONE" "OBJECT" "STRING" "STRING")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
187 ("NONE" "OBJECT" "STRING")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
188 ("NONE" "OBJECT")
833
ee2d33cfc3c1 [xemacs-hg @ 2002-05-09 13:49:39 by wmperry]
wmperry
parents: 608
diff changeset
189 ("NONE" "POINTER" "INT" "INT")
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
190 ("NONE" "POINTER" "INT")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
191 ("NONE" "POINTER" "POINTER" "BOOL" "INT" "INT" "INT" "INT" "INT" "INT")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
192 ("NONE" "POINTER" "POINTER" "BOOL" "INT" "INT" "INT" "INT")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
193 ("NONE" "POINTER" "POINTER" "INT" "INT" "INT" "INT")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
194 ("NONE" "POINTER" "POINTER" "INT" "INT")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
195 ("NONE" "POINTER" "POINTER" "POINTER" "INT" "INT" "STRING" "INT")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
196 ("NONE" "POINTER" "POINTER" "POINTER" "INT" "INT" "STRING")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
197 ("NONE" "POINTER" "POINTER" "POINTER" "POINTER")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
198 ("NONE" "POINTER" "POINTER")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
199 ("NONE" "POINTER" "STRING" "STRING")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
200 ("NONE" "POINTER" "STRING")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
201 ("NONE" "POINTER")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
202 ("NONE")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
203 ("OBJECT" "BOOL" "BOOL" "INT")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
204 ("OBJECT" "BOOL" "INT")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
205 ("OBJECT" "FLOAT" "FLOAT" "FLOAT" "FLOAT" "FLOAT" "FLOAT")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
206 ("OBJECT" "FLOAT" "FLOAT" "FLOAT" "FLOAT" "FLOAT")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
207 ("OBJECT" "FLOAT" "FLOAT" "FLOAT" "FLOAT")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
208 ("OBJECT" "INT" "ARRAY")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
209 ("OBJECT" "INT" "BOOL" "BOOL")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
210 ("OBJECT" "INT" "INT" "ARRAY")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
211 ("OBJECT" "INT" "INT" "BOOL")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
212 ("OBJECT" "INT" "INT" "STRING")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
213 ("OBJECT" "INT" "INT")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
214 ("OBJECT" "INT")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
215 ("OBJECT" "OBJECT" "FLOAT" "INT")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
216 ("OBJECT" "OBJECT" "INT")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
217 ("OBJECT" "OBJECT" "OBJECT")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
218 ("OBJECT" "OBJECT" "STRING" "INT" "INT" "INT" "INT" "INT")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
219 ("OBJECT" "OBJECT" "STRING" "INT" "INT" "INT" "INT")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
220 ("OBJECT" "OBJECT" "STRING" "INT" "INT")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
221 ("OBJECT" "OBJECT" "STRING")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
222 ("OBJECT" "OBJECT")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
223 ("OBJECT" "POINTER" "POINTER")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
224 ("OBJECT" "POINTER" "STRING")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
225 ("OBJECT" "POINTER")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
226 ("OBJECT" "STRING" "FLOAT" "FLOAT" "FLOAT" "BOOL")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
227 ("OBJECT" "STRING" "INT" "STRING" "STRING")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
228 ("OBJECT" "STRING" "OBJECT")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
229 ("OBJECT" "STRING" "STRING" "STRING" "ARRAY" "STRING" "STRING")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
230 ("OBJECT" "STRING" "STRING")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
231 ("OBJECT" "STRING")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
232 ("OBJECT")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
233 ("POINTER" "INT" "INT")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
234 ("POINTER" "INT")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
235 ("POINTER" "OBJECT" "INT" "INT")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
236 ("POINTER" "OBJECT" "INT")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
237 ("POINTER" "OBJECT" "POINTER" "INT")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
238 ("POINTER" "OBJECT" "POINTER" "POINTER" "ARRAY" "INT" "POINTER" "POINTER" "POINTER" "POINTER" "BOOL" "BOOL")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
239 ("POINTER" "OBJECT" "POINTER")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
240 ("POINTER" "OBJECT")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
241 ("POINTER" "POINTER")
833
ee2d33cfc3c1 [xemacs-hg @ 2002-05-09 13:49:39 by wmperry]
wmperry
parents: 608
diff changeset
242 ("POINTER" "STRING" "INT")
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
243 ("POINTER")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
244 ("STRING" "INT" "INT" "INT")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
245 ("STRING" "INT")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
246 ("STRING" "OBJECT" "BOOL")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
247 ("STRING" "OBJECT" "FLOAT")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
248 ("STRING" "OBJECT" "INT" "INT")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
249 ("STRING" "OBJECT" "INT")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
250 ("STRING" "OBJECT")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
251 ("STRING" "POINTER" "STRING")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
252 ("STRING" "POINTER")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
253 ("STRING")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
254 )
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
255 )
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
256 )
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
257 (mapc (lambda (x) (apply 'define-marshaller x)) todo)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
258
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
259 (insert "\n
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
260 #include \"hash.h\"
608
4d7fdf497470 [xemacs-hg @ 2001-06-04 16:59:51 by wmperry]
wmperry
parents: 591
diff changeset
261 static int
4d7fdf497470 [xemacs-hg @ 2001-06-04 16:59:51 by wmperry]
wmperry
parents: 591
diff changeset
262 our_string_eq (const void *st1, const void *st2)
4d7fdf497470 [xemacs-hg @ 2001-06-04 16:59:51 by wmperry]
wmperry
parents: 591
diff changeset
263 {
4d7fdf497470 [xemacs-hg @ 2001-06-04 16:59:51 by wmperry]
wmperry
parents: 591
diff changeset
264 if (!st1)
4d7fdf497470 [xemacs-hg @ 2001-06-04 16:59:51 by wmperry]
wmperry
parents: 591
diff changeset
265 return st2 ? 0 : 1;
4d7fdf497470 [xemacs-hg @ 2001-06-04 16:59:51 by wmperry]
wmperry
parents: 591
diff changeset
266 else if (!st2)
4d7fdf497470 [xemacs-hg @ 2001-06-04 16:59:51 by wmperry]
wmperry
parents: 591
diff changeset
267 return 0;
4d7fdf497470 [xemacs-hg @ 2001-06-04 16:59:51 by wmperry]
wmperry
parents: 591
diff changeset
268 else
4d7fdf497470 [xemacs-hg @ 2001-06-04 16:59:51 by wmperry]
wmperry
parents: 591
diff changeset
269 return !strcmp ( (const char *) st1, (const char *) st2);
4d7fdf497470 [xemacs-hg @ 2001-06-04 16:59:51 by wmperry]
wmperry
parents: 591
diff changeset
270 }
4d7fdf497470 [xemacs-hg @ 2001-06-04 16:59:51 by wmperry]
wmperry
parents: 591
diff changeset
271
833
ee2d33cfc3c1 [xemacs-hg @ 2002-05-09 13:49:39 by wmperry]
wmperry
parents: 608
diff changeset
272 static unsigned long
608
4d7fdf497470 [xemacs-hg @ 2001-06-04 16:59:51 by wmperry]
wmperry
parents: 591
diff changeset
273 our_string_hash (const void *xv)
4d7fdf497470 [xemacs-hg @ 2001-06-04 16:59:51 by wmperry]
wmperry
parents: 591
diff changeset
274 {
4d7fdf497470 [xemacs-hg @ 2001-06-04 16:59:51 by wmperry]
wmperry
parents: 591
diff changeset
275 unsigned int h = 0;
4d7fdf497470 [xemacs-hg @ 2001-06-04 16:59:51 by wmperry]
wmperry
parents: 591
diff changeset
276 unsigned const char *x = (unsigned const char *) xv;
4d7fdf497470 [xemacs-hg @ 2001-06-04 16:59:51 by wmperry]
wmperry
parents: 591
diff changeset
277
4d7fdf497470 [xemacs-hg @ 2001-06-04 16:59:51 by wmperry]
wmperry
parents: 591
diff changeset
278 if (!x) return 0;
4d7fdf497470 [xemacs-hg @ 2001-06-04 16:59:51 by wmperry]
wmperry
parents: 591
diff changeset
279
4d7fdf497470 [xemacs-hg @ 2001-06-04 16:59:51 by wmperry]
wmperry
parents: 591
diff changeset
280 while (*x)
4d7fdf497470 [xemacs-hg @ 2001-06-04 16:59:51 by wmperry]
wmperry
parents: 591
diff changeset
281 {
4d7fdf497470 [xemacs-hg @ 2001-06-04 16:59:51 by wmperry]
wmperry
parents: 591
diff changeset
282 unsigned int g;
4d7fdf497470 [xemacs-hg @ 2001-06-04 16:59:51 by wmperry]
wmperry
parents: 591
diff changeset
283 h = (h << 4) + *x++;
4d7fdf497470 [xemacs-hg @ 2001-06-04 16:59:51 by wmperry]
wmperry
parents: 591
diff changeset
284 if ((g = h & 0xf0000000) != 0)
4d7fdf497470 [xemacs-hg @ 2001-06-04 16:59:51 by wmperry]
wmperry
parents: 591
diff changeset
285 h = (h ^ (g >> 24)) ^ g;
4d7fdf497470 [xemacs-hg @ 2001-06-04 16:59:51 by wmperry]
wmperry
parents: 591
diff changeset
286 }
4d7fdf497470 [xemacs-hg @ 2001-06-04 16:59:51 by wmperry]
wmperry
parents: 591
diff changeset
287
4d7fdf497470 [xemacs-hg @ 2001-06-04 16:59:51 by wmperry]
wmperry
parents: 591
diff changeset
288 return h;
4d7fdf497470 [xemacs-hg @ 2001-06-04 16:59:51 by wmperry]
wmperry
parents: 591
diff changeset
289 }
4d7fdf497470 [xemacs-hg @ 2001-06-04 16:59:51 by wmperry]
wmperry
parents: 591
diff changeset
290
4d7fdf497470 [xemacs-hg @ 2001-06-04 16:59:51 by wmperry]
wmperry
parents: 591
diff changeset
291 static struct hash_table *marshaller_hashtable;
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
292
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
293 static void initialize_marshaller_storage (void)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
294 {
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
295 if (!marshaller_hashtable)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
296 {
608
4d7fdf497470 [xemacs-hg @ 2001-06-04 16:59:51 by wmperry]
wmperry
parents: 591
diff changeset
297 marshaller_hashtable = make_general_hash_table (100, our_string_hash, our_string_eq);
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
298 ")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
299
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
300 (mapc (lambda (x)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
301 (let ((name (get-marshaller-name (car x) (cdr x))))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
302 (insert (format "\t\tputhash (\"%s\", (void *) %s, marshaller_hashtable);\n" name name))))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
303 todo)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
304 (insert "\t};\n"
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
305 "}\n"
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
306 "
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
307 static void *find_marshaller (const char *func_name)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
308 {
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
309 void *fn = NULL;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
310 initialize_marshaller_storage ();
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
311
591
ec73ae6e772b [xemacs-hg @ 2001-05-31 02:05:16 by wmperry]
wmperry
parents: 462
diff changeset
312 if (gethash (func_name, marshaller_hashtable, (const void **)&fn))
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
313 {
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
314 return (fn);
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
315 }
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
316
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
317 return (NULL);
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
318 }
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
319 "))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
320
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
321 (save-buffer)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
322 (kill-buffer "emacs-marshals.c"))