File: | Converters.c |
Location: | line 583, column 30 |
Description: | Dereference of null pointer |
1 | /*********************************************************** | ||||
2 | Copyright (c) 1993, Oracle and/or its affiliates. All rights reserved. | ||||
3 | |||||
4 | Permission is hereby granted, free of charge, to any person obtaining a | ||||
5 | copy of this software and associated documentation files (the "Software"), | ||||
6 | to deal in the Software without restriction, including without limitation | ||||
7 | the rights to use, copy, modify, merge, publish, distribute, sublicense, | ||||
8 | and/or sell copies of the Software, and to permit persons to whom the | ||||
9 | Software is furnished to do so, subject to the following conditions: | ||||
10 | |||||
11 | The above copyright notice and this permission notice (including the next | ||||
12 | paragraph) shall be included in all copies or substantial portions of the | ||||
13 | Software. | ||||
14 | |||||
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL | ||||
18 | THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING | ||||
20 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | ||||
21 | DEALINGS IN THE SOFTWARE. | ||||
22 | |||||
23 | Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts. | ||||
24 | |||||
25 | All Rights Reserved | ||||
26 | |||||
27 | Permission to use, copy, modify, and distribute this software and its | ||||
28 | documentation for any purpose and without fee is hereby granted, | ||||
29 | provided that the above copyright notice appear in all copies and that | ||||
30 | both that copyright notice and this permission notice appear in | ||||
31 | supporting documentation, and that the name of Digital not be | ||||
32 | used in advertising or publicity pertaining to distribution of the | ||||
33 | software without specific, written prior permission. | ||||
34 | |||||
35 | DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING | ||||
36 | ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL | ||||
37 | DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR | ||||
38 | ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, | ||||
39 | WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, | ||||
40 | ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS | ||||
41 | SOFTWARE. | ||||
42 | |||||
43 | ******************************************************************/ | ||||
44 | |||||
45 | /* | ||||
46 | |||||
47 | Copyright 1987, 1988, 1994, 1998 The Open Group | ||||
48 | |||||
49 | Permission to use, copy, modify, distribute, and sell this software and its | ||||
50 | documentation for any purpose is hereby granted without fee, provided that | ||||
51 | the above copyright notice appear in all copies and that both that | ||||
52 | copyright notice and this permission notice appear in supporting | ||||
53 | documentation. | ||||
54 | |||||
55 | The above copyright notice and this permission notice shall be included in | ||||
56 | all copies or substantial portions of the Software. | ||||
57 | |||||
58 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||
59 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||
60 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||
61 | OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN | ||||
62 | AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN | ||||
63 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | ||||
64 | |||||
65 | Except as contained in this notice, the name of The Open Group shall not be | ||||
66 | used in advertising or otherwise to promote the sale, use or other dealings | ||||
67 | in this Software without prior written authorization from The Open Group. | ||||
68 | |||||
69 | */ | ||||
70 | |||||
71 | /*LINTLIBRARY*/ | ||||
72 | /* Conversion.c - implementations of resource type conversion procs */ | ||||
73 | |||||
74 | #ifdef HAVE_CONFIG_H1 | ||||
75 | #include <config.h> | ||||
76 | #endif | ||||
77 | #include "IntrinsicI.h" | ||||
78 | #include "StringDefs.h" | ||||
79 | #include "Shell.h" | ||||
80 | #include <stdio.h> | ||||
81 | #include <X11/cursorfont.h> | ||||
82 | #include <X11/keysym.h> | ||||
83 | #include <X11/Xlocale.h> | ||||
84 | #include <errno(*__errno_location ()).h> /* for StringToDirectoryString */ | ||||
85 | |||||
86 | #ifdef __UNIXOS2__ | ||||
87 | #define IsNewline(str)((str) == '\n') ((str) == '\n' || (str) == '\r') | ||||
88 | #define IsWhitespace(str)((str)== ' ' || (str) == '\t') ((str)== ' ' || (str) == '\t' || (str) == '\r') | ||||
89 | #else | ||||
90 | #define IsNewline(str)((str) == '\n') ((str) == '\n') | ||||
91 | #define IsWhitespace(str)((str)== ' ' || (str) == '\t') ((str)== ' ' || (str) == '\t') | ||||
92 | #endif | ||||
93 | |||||
94 | static const String XtNwrongParameters = "wrongParameters"; | ||||
95 | static const String XtNconversionError = "conversionError"; | ||||
96 | static const String XtNmissingCharsetList = "missingCharsetList"; | ||||
97 | |||||
98 | /* Representation types */ | ||||
99 | |||||
100 | #define XtQAtomXrmPermStringToQuark(((char*)&XtStrings[1544])) XrmPermStringToQuark(XtRAtom((char*)&XtStrings[1544])) | ||||
101 | #define XtQCommandArgArrayXrmPermStringToQuark(((char*)&XtStrings[2128])) XrmPermStringToQuark(XtRCommandArgArray((char*)&XtStrings[2128])) | ||||
102 | #define XtQCursorXrmPermStringToQuark(((char*)&XtStrings[1611])) XrmPermStringToQuark(XtRCursor((char*)&XtStrings[1611])) | ||||
103 | #define XtQDirectoryStringXrmPermStringToQuark(((char*)&XtStrings[2144])) XrmPermStringToQuark(XtRDirectoryString((char*)&XtStrings[2144])) | ||||
104 | #define XtQDisplayXrmPermStringToQuark(((char*)&XtStrings[1628])) XrmPermStringToQuark(XtRDisplay((char*)&XtStrings[1628])) | ||||
105 | #define XtQFileXrmPermStringToQuark(((char*)&XtStrings[1650])) XrmPermStringToQuark(XtRFile((char*)&XtStrings[1650])) | ||||
106 | #define XtQFloatXrmPermStringToQuark(((char*)&XtStrings[1655])) XrmPermStringToQuark(XtRFloat((char*)&XtStrings[1655])) | ||||
107 | #define XtQInitialStateXrmPermStringToQuark(((char*)&XtStrings[1705])) XrmPermStringToQuark(XtRInitialState((char*)&XtStrings[1705])) | ||||
108 | #define XtQPixmapXrmPermStringToQuark(((char*)&XtStrings[1760])) XrmPermStringToQuark(XtRPixmap((char*)&XtStrings[1760])) | ||||
109 | #define XtQRestartStyleXrmPermStringToQuark(((char*)&XtStrings[2177])) XrmPermStringToQuark(XtRRestartStyle((char*)&XtStrings[2177])) | ||||
110 | #define XtQShortXrmPermStringToQuark(((char*)&XtStrings[1791])) XrmPermStringToQuark(XtRShort((char*)&XtStrings[1791])) | ||||
111 | #define XtQUnsignedCharXrmPermStringToQuark(((char*)&XtStrings[1828])) XrmPermStringToQuark(XtRUnsignedChar((char*)&XtStrings[1828])) | ||||
112 | #define XtQVisualXrmPermStringToQuark(((char*)&XtStrings[1858])) XrmPermStringToQuark(XtRVisual((char*)&XtStrings[1858])) | ||||
113 | |||||
114 | static XrmQuark XtQBool; | ||||
115 | static XrmQuark XtQBoolean; | ||||
116 | static XrmQuark XtQColor; | ||||
117 | static XrmQuark XtQDimension; | ||||
118 | static XrmQuark XtQFont; | ||||
119 | static XrmQuark XtQFontSet; | ||||
120 | static XrmQuark XtQFontStruct; | ||||
121 | static XrmQuark XtQGravity; | ||||
122 | static XrmQuark XtQInt; | ||||
123 | static XrmQuark XtQPixel; | ||||
124 | static XrmQuark XtQPosition; | ||||
125 | #ifdef __UNIXOS2__ | ||||
126 | XrmQuark _XtQString = 0; | ||||
127 | #else | ||||
128 | XrmQuark _XtQString; | ||||
129 | #endif | ||||
130 | |||||
131 | void _XtConvertInitialize(void) | ||||
132 | { | ||||
133 | XtQBool = XrmPermStringToQuark(XtRBool((char*)&XtStrings[1556])); | ||||
134 | XtQBoolean = XrmPermStringToQuark(XtRBoolean((char*)&XtStrings[1561])); | ||||
135 | XtQColor = XrmPermStringToQuark(XtRColor((char*)&XtStrings[1596])); | ||||
136 | XtQDimension = XrmPermStringToQuark(XtRDimension((char*)&XtStrings[1618])); | ||||
137 | XtQFont = XrmPermStringToQuark(XtRFont((char*)&XtStrings[1661])); | ||||
138 | XtQFontSet = XrmPermStringToQuark(XtRFontSet((char*)&XtStrings[2026])); | ||||
139 | XtQFontStruct = XrmPermStringToQuark(XtRFontStruct((char*)&XtStrings[1666])); | ||||
140 | XtQGravity = XrmPermStringToQuark(XtRGravity((char*)&XtStrings[2042])); | ||||
141 | XtQInt = XrmPermStringToQuark(XtRInt((char*)&XtStrings[1718])); | ||||
142 | XtQPixel = XrmPermStringToQuark(XtRPixel((char*)&XtStrings[1754])); | ||||
143 | XtQPosition = XrmPermStringToQuark(XtRPosition((char*)&XtStrings[1775])); | ||||
144 | _XtQString = XrmPermStringToQuark(XtRString((char*)&XtStrings[1797])); | ||||
145 | } | ||||
146 | |||||
147 | #define donestr(type, value, tstr){ if (toVal->addr != ((void*)0)) { if (toVal->size < sizeof(type)) { toVal->size = sizeof(type); XtDisplayStringConversionWarning (dpy, (char*) fromVal->addr, tstr); return 0; } *(type*)(toVal ->addr) = (value); } else { static type static_val; static_val = (value); toVal->addr = (XPointer)&static_val; } toVal ->size = sizeof(type); return 1; } \ | ||||
148 | { \ | ||||
149 | if (toVal->addr != NULL((void*)0)) { \ | ||||
150 | if (toVal->size < sizeof(type)) { \ | ||||
151 | toVal->size = sizeof(type); \ | ||||
152 | XtDisplayStringConversionWarning(dpy, \ | ||||
153 | (char*) fromVal->addr, tstr); \ | ||||
154 | return False0; \ | ||||
155 | } \ | ||||
156 | *(type*)(toVal->addr) = (value); \ | ||||
157 | } \ | ||||
158 | else { \ | ||||
159 | static type static_val; \ | ||||
160 | static_val = (value); \ | ||||
161 | toVal->addr = (XPointer)&static_val; \ | ||||
162 | } \ | ||||
163 | toVal->size = sizeof(type); \ | ||||
164 | return True1; \ | ||||
165 | } | ||||
166 | |||||
167 | #define done(type, value){ if (toVal->addr != ((void*)0)) { if (toVal->size < sizeof(type)) { toVal->size = sizeof(type); return 0; } * (type*)(toVal->addr) = (value); } else { static type static_val ; static_val = (value); toVal->addr = (XPointer)&static_val ; } toVal->size = sizeof(type); return 1; } \ | ||||
168 | { \ | ||||
169 | if (toVal->addr != NULL((void*)0)) { \ | ||||
170 | if (toVal->size < sizeof(type)) { \ | ||||
171 | toVal->size = sizeof(type); \ | ||||
172 | return False0; \ | ||||
173 | } \ | ||||
174 | *(type*)(toVal->addr) = (value); \ | ||||
175 | } \ | ||||
176 | else { \ | ||||
177 | static type static_val; \ | ||||
178 | static_val = (value); \ | ||||
179 | toVal->addr = (XPointer)&static_val; \ | ||||
180 | } \ | ||||
181 | toVal->size = sizeof(type); \ | ||||
182 | return True1; \ | ||||
183 | } | ||||
184 | |||||
185 | void XtDisplayStringConversionWarning( | ||||
186 | Display* dpy, | ||||
187 | _Xconstconst char* from, | ||||
188 | _Xconstconst char* toType | ||||
189 | ) | ||||
190 | { | ||||
191 | #ifndef NO_MIT_HACKS | ||||
192 | /* Allow suppression of conversion warnings. %%% Not specified. */ | ||||
193 | |||||
194 | static enum {Check, Report, Ignore} report_it = Check; | ||||
195 | XtAppContext app = XtDisplayToApplicationContext(dpy); | ||||
196 | |||||
197 | LOCK_APP(app)if(app && app->lock)(*app->lock)(app); | ||||
198 | LOCK_PROCESSif(_XtProcessLock)(*_XtProcessLock)(); | ||||
199 | if (report_it == Check) { | ||||
200 | XrmDatabase rdb = XtDatabase(dpy); | ||||
201 | XrmName xrm_name[2]; | ||||
202 | XrmClass xrm_class[2]; | ||||
203 | XrmRepresentation rep_type; | ||||
204 | XrmValue value; | ||||
205 | xrm_name[0] = XrmPermStringToQuark( "stringConversionWarnings" ); | ||||
206 | xrm_name[1] = 0; | ||||
207 | xrm_class[0] = XrmPermStringToQuark( "StringConversionWarnings" ); | ||||
208 | xrm_class[1] = 0; | ||||
209 | if (XrmQGetResource( rdb, xrm_name, xrm_class, | ||||
210 | &rep_type, &value )) | ||||
211 | { | ||||
212 | if (rep_type == XtQBoolean) | ||||
213 | report_it = *(Boolean*)value.addr ? Report : Ignore; | ||||
214 | else if (rep_type == _XtQString) { | ||||
215 | XrmValue toVal; | ||||
216 | Boolean report; | ||||
217 | toVal.addr = (XPointer)&report; | ||||
218 | toVal.size = sizeof(Boolean); | ||||
219 | if (XtCallConverter(dpy, XtCvtStringToBoolean, (XrmValuePtr)NULL((void*)0), | ||||
220 | (Cardinal)0, &value, &toVal, | ||||
221 | (XtCacheRef*)NULL((void*)0))) | ||||
222 | report_it = report ? Report : Ignore; | ||||
223 | } | ||||
224 | else report_it = Report; | ||||
225 | } | ||||
226 | else report_it = Report; | ||||
227 | } | ||||
228 | |||||
229 | if (report_it == Report) { | ||||
230 | #endif /* ifndef NO_MIT_HACKS */ | ||||
231 | String params[2]; | ||||
232 | Cardinal num_params = 2; | ||||
233 | params[0] = (String)from; | ||||
234 | params[1] = (String)toType; | ||||
235 | XtAppWarningMsg(app, | ||||
236 | XtNconversionError,"string",XtCXtToolkitError, | ||||
237 | "Cannot convert string \"%s\" to type %s", | ||||
238 | params,&num_params); | ||||
239 | #ifndef NO_MIT_HACKS | ||||
240 | } | ||||
241 | #endif /* ifndef NO_MIT_HACKS */ | ||||
242 | UNLOCK_PROCESSif(_XtProcessUnlock)(*_XtProcessUnlock)(); | ||||
243 | UNLOCK_APP(app)if(app && app->unlock)(*app->unlock)(app); | ||||
244 | } | ||||
245 | |||||
246 | void XtStringConversionWarning( | ||||
247 | _Xconstconst char* from, | ||||
248 | _Xconstconst char* toType | ||||
249 | ) | ||||
250 | { | ||||
251 | String params[2]; | ||||
252 | Cardinal num_params = 2; | ||||
253 | params[0] = (String)from; | ||||
254 | params[1] = (String)toType; | ||||
255 | XtWarningMsg(XtNconversionError,"string",XtCXtToolkitError, | ||||
256 | "Cannot convert string \"%s\" to type %s", | ||||
257 | params,&num_params); | ||||
258 | } | ||||
259 | |||||
260 | static int CompareISOLatin1(const char *, const char *); | ||||
261 | |||||
262 | |||||
263 | static Boolean IsInteger( | ||||
264 | String string, | ||||
265 | int *value) | ||||
266 | { | ||||
267 | Boolean foundDigit = False0; | ||||
268 | Boolean isNegative = False0; | ||||
269 | Boolean isPositive = False0; | ||||
270 | int val = 0; | ||||
271 | char ch; | ||||
272 | /* skip leading whitespace */ | ||||
273 | #ifndef __UNIXOS2__ | ||||
274 | while ((ch = *string) == ' ' || ch == '\t') string++; | ||||
275 | #else | ||||
276 | while ((ch = *string) == ' ' || ch == '\t' || ch == '\r') string++; | ||||
277 | #endif | ||||
278 | while ((ch = *string++)) { | ||||
279 | if (ch >= '0' && ch <= '9') { | ||||
280 | val *= 10; | ||||
281 | val += ch - '0'; | ||||
282 | foundDigit = True1; | ||||
283 | continue; | ||||
284 | } | ||||
285 | if (IsWhitespace(ch)((ch)== ' ' || (ch) == '\t')) { | ||||
286 | if (!foundDigit) return False0; | ||||
287 | /* make sure only trailing whitespace */ | ||||
288 | while ((ch = *string++)) { | ||||
289 | if (!IsWhitespace(ch)((ch)== ' ' || (ch) == '\t')) | ||||
290 | return False0; | ||||
291 | } | ||||
292 | break; | ||||
293 | } | ||||
294 | if (ch == '-' && !foundDigit && !isNegative && !isPositive) { | ||||
295 | isNegative = True1; | ||||
296 | continue; | ||||
297 | } | ||||
298 | if (ch == '+' && !foundDigit && !isNegative && !isPositive) { | ||||
299 | isPositive = True1; | ||||
300 | continue; | ||||
301 | } | ||||
302 | return False0; | ||||
303 | } | ||||
304 | if (ch == '\0') { | ||||
305 | if (isNegative) | ||||
306 | *value = -val; | ||||
307 | else | ||||
308 | *value = val; | ||||
309 | return True1; | ||||
310 | } | ||||
311 | return False0; | ||||
312 | } | ||||
313 | |||||
314 | |||||
315 | /*ARGSUSED*/ | ||||
316 | Boolean XtCvtIntToBoolean( | ||||
317 | Display* dpy, | ||||
318 | XrmValuePtr args, | ||||
319 | Cardinal *num_args, | ||||
320 | XrmValuePtr fromVal, | ||||
321 | XrmValuePtr toVal, | ||||
322 | XtPointer *closure_ret) | ||||
323 | { | ||||
324 | if (*num_args != 0) | ||||
325 | XtAppWarningMsg(XtDisplayToApplicationContext(dpy), | ||||
326 | XtNwrongParameters,"cvtIntToBoolean",XtCXtToolkitError, | ||||
327 | "Integer to Boolean conversion needs no extra arguments", | ||||
328 | (String *)NULL((void*)0), (Cardinal *)NULL((void*)0)); | ||||
329 | done(Boolean, (*(int *)fromVal->addr != 0)){ if (toVal->addr != ((void*)0)) { if (toVal->size < sizeof(Boolean)) { toVal->size = sizeof(Boolean); return 0 ; } *(Boolean*)(toVal->addr) = ((*(int *)fromVal->addr != 0)); } else { static Boolean static_val; static_val = ((*(int *)fromVal->addr != 0)); toVal->addr = (XPointer)&static_val ; } toVal->size = sizeof(Boolean); return 1; }; | ||||
330 | } | ||||
331 | |||||
332 | |||||
333 | /*ARGSUSED*/ | ||||
334 | Boolean XtCvtIntToShort( | ||||
335 | Display* dpy, | ||||
336 | XrmValuePtr args, | ||||
337 | Cardinal *num_args, | ||||
338 | XrmValuePtr fromVal, | ||||
339 | XrmValuePtr toVal, | ||||
340 | XtPointer *closure_ret) | ||||
341 | { | ||||
342 | if (*num_args != 0) | ||||
343 | XtAppWarningMsg(XtDisplayToApplicationContext(dpy), | ||||
344 | XtNwrongParameters,"cvtIntToShort",XtCXtToolkitError, | ||||
345 | "Integer to Short conversion needs no extra arguments", | ||||
346 | (String *)NULL((void*)0), (Cardinal *)NULL((void*)0)); | ||||
347 | done(short, (*(int *)fromVal->addr)){ if (toVal->addr != ((void*)0)) { if (toVal->size < sizeof(short)) { toVal->size = sizeof(short); return 0; } *(short*)(toVal->addr) = ((*(int *)fromVal->addr)); } else { static short static_val; static_val = ((*(int *)fromVal-> addr)); toVal->addr = (XPointer)&static_val; } toVal-> size = sizeof(short); return 1; }; | ||||
348 | } | ||||
349 | |||||
350 | |||||
351 | /*ARGSUSED*/ | ||||
352 | Boolean XtCvtStringToBoolean( | ||||
353 | Display* dpy, | ||||
354 | XrmValuePtr args, | ||||
355 | Cardinal *num_args, | ||||
356 | XrmValuePtr fromVal, | ||||
357 | XrmValuePtr toVal, | ||||
358 | XtPointer *closure_ret) | ||||
359 | { | ||||
360 | String str = (String)fromVal->addr; | ||||
361 | if (*num_args != 0) | ||||
362 | XtAppWarningMsg(XtDisplayToApplicationContext(dpy), | ||||
363 | XtNwrongParameters,"cvtStringToBoolean",XtCXtToolkitError, | ||||
364 | "String to Boolean conversion needs no extra arguments", | ||||
365 | (String *)NULL((void*)0), (Cardinal *)NULL((void*)0)); | ||||
366 | |||||
367 | if ( (CompareISOLatin1(str, "true") == 0) | ||||
368 | || (CompareISOLatin1(str, "yes") == 0) | ||||
369 | || (CompareISOLatin1(str, "on") == 0) | ||||
370 | || (CompareISOLatin1(str, "1") == 0)) donestr( Boolean, True, XtRBoolean ){ if (toVal->addr != ((void*)0)) { if (toVal->size < sizeof(Boolean)) { toVal->size = sizeof(Boolean); XtDisplayStringConversionWarning (dpy, (char*) fromVal->addr, ((char*)&XtStrings[1561]) ); return 0; } *(Boolean*)(toVal->addr) = (1); } else { static Boolean static_val; static_val = (1); toVal->addr = (XPointer )&static_val; } toVal->size = sizeof(Boolean); return 1 ; }; | ||||
371 | |||||
372 | if ( (CompareISOLatin1(str, "false") == 0) | ||||
373 | || (CompareISOLatin1(str, "no") == 0) | ||||
374 | || (CompareISOLatin1(str, "off") == 0) | ||||
375 | || (CompareISOLatin1(str, "0") == 0)) donestr( Boolean, False, XtRBoolean ){ if (toVal->addr != ((void*)0)) { if (toVal->size < sizeof(Boolean)) { toVal->size = sizeof(Boolean); XtDisplayStringConversionWarning (dpy, (char*) fromVal->addr, ((char*)&XtStrings[1561]) ); return 0; } *(Boolean*)(toVal->addr) = (0); } else { static Boolean static_val; static_val = (0); toVal->addr = (XPointer )&static_val; } toVal->size = sizeof(Boolean); return 1 ; }; | ||||
376 | |||||
377 | XtDisplayStringConversionWarning(dpy, str, XtRBoolean((char*)&XtStrings[1561])); | ||||
378 | return False0; | ||||
379 | } | ||||
380 | |||||
381 | |||||
382 | /*ARGSUSED*/ | ||||
383 | Boolean XtCvtIntToBool( | ||||
384 | Display* dpy, | ||||
385 | XrmValuePtr args, | ||||
386 | Cardinal *num_args, | ||||
387 | XrmValuePtr fromVal, | ||||
388 | XrmValuePtr toVal, | ||||
389 | XtPointer *closure_ret) | ||||
390 | { | ||||
391 | if (*num_args != 0) | ||||
392 | XtAppWarningMsg(XtDisplayToApplicationContext(dpy), | ||||
393 | XtNwrongParameters,"cvtIntToBool",XtCXtToolkitError, | ||||
394 | "Integer to Bool conversion needs no extra arguments", | ||||
395 | (String *)NULL((void*)0), (Cardinal *)NULL((void*)0)); | ||||
396 | done(Bool, (*(int *)fromVal->addr != 0)){ if (toVal->addr != ((void*)0)) { if (toVal->size < sizeof(int)) { toVal->size = sizeof(int); return 0; } *(int *)(toVal->addr) = ((*(int *)fromVal->addr != 0)); } else { static int static_val; static_val = ((*(int *)fromVal-> addr != 0)); toVal->addr = (XPointer)&static_val; } toVal ->size = sizeof(int); return 1; }; | ||||
397 | } | ||||
398 | |||||
399 | |||||
400 | /*ARGSUSED*/ | ||||
401 | Boolean XtCvtStringToBool( | ||||
402 | Display* dpy, | ||||
403 | XrmValuePtr args, | ||||
404 | Cardinal *num_args, | ||||
405 | XrmValuePtr fromVal, | ||||
406 | XrmValuePtr toVal, | ||||
407 | XtPointer *closure_ret) | ||||
408 | { | ||||
409 | String str = (String)fromVal->addr; | ||||
410 | if (*num_args != 0) | ||||
411 | XtAppWarningMsg(XtDisplayToApplicationContext(dpy), | ||||
412 | XtNwrongParameters,"cvtStringToBool", | ||||
413 | XtCXtToolkitError, | ||||
414 | "String to Bool conversion needs no extra arguments", | ||||
415 | (String *)NULL((void*)0), (Cardinal *)NULL((void*)0)); | ||||
416 | |||||
417 | if ( (CompareISOLatin1(str, "true") == 0) | ||||
418 | || (CompareISOLatin1(str, "yes") == 0) | ||||
419 | || (CompareISOLatin1(str, "on") == 0) | ||||
420 | || (CompareISOLatin1(str, "1") == 0)) donestr( Bool, True, XtRBool ){ if (toVal->addr != ((void*)0)) { if (toVal->size < sizeof(int)) { toVal->size = sizeof(int); XtDisplayStringConversionWarning (dpy, (char*) fromVal->addr, ((char*)&XtStrings[1556]) ); return 0; } *(int*)(toVal->addr) = (1); } else { static int static_val; static_val = (1); toVal->addr = (XPointer )&static_val; } toVal->size = sizeof(int); return 1; }; | ||||
421 | |||||
422 | if ( (CompareISOLatin1(str, "false") == 0) | ||||
423 | || (CompareISOLatin1(str, "no") == 0) | ||||
424 | || (CompareISOLatin1(str, "off") == 0) | ||||
425 | || (CompareISOLatin1(str, "0") == 0)) donestr( Bool, False, XtRBool ){ if (toVal->addr != ((void*)0)) { if (toVal->size < sizeof(int)) { toVal->size = sizeof(int); XtDisplayStringConversionWarning (dpy, (char*) fromVal->addr, ((char*)&XtStrings[1556]) ); return 0; } *(int*)(toVal->addr) = (0); } else { static int static_val; static_val = (0); toVal->addr = (XPointer )&static_val; } toVal->size = sizeof(int); return 1; }; | ||||
426 | |||||
427 | XtDisplayStringConversionWarning(dpy, (char *) fromVal->addr, XtRBool((char*)&XtStrings[1556])); | ||||
428 | return False0; | ||||
429 | } | ||||
430 | |||||
431 | XtConvertArgRec const colorConvertArgs[] = { | ||||
432 | {XtWidgetBaseOffset, (XtPointer)XtOffsetOf(WidgetRec, core.screen)__builtin_offsetof(WidgetRec, core.screen), | ||||
433 | sizeof(Screen *)}, | ||||
434 | {XtWidgetBaseOffset, (XtPointer)XtOffsetOf(WidgetRec, core.colormap)__builtin_offsetof(WidgetRec, core.colormap), | ||||
435 | sizeof(Colormap)} | ||||
436 | }; | ||||
437 | |||||
438 | |||||
439 | /* ARGSUSED */ | ||||
440 | Boolean XtCvtIntToColor( | ||||
441 | Display* dpy, | ||||
442 | XrmValuePtr args, | ||||
443 | Cardinal *num_args, | ||||
444 | XrmValuePtr fromVal, | ||||
445 | XrmValuePtr toVal, | ||||
446 | XtPointer *closure_ret) | ||||
447 | { | ||||
448 | XColor c; | ||||
449 | Screen *screen; | ||||
450 | Colormap colormap; | ||||
451 | |||||
452 | if (*num_args != 2) { | ||||
453 | XtAppWarningMsg(XtDisplayToApplicationContext(dpy), | ||||
454 | XtNwrongParameters,"cvtIntOrPixelToXColor",XtCXtToolkitError, | ||||
455 | "Pixel to color conversion needs screen and colormap arguments", | ||||
456 | (String *)NULL((void*)0), (Cardinal *)NULL((void*)0)); | ||||
457 | return False0; | ||||
458 | } | ||||
459 | screen = *((Screen **) args[0].addr); | ||||
460 | colormap = *((Colormap *) args[1].addr); | ||||
461 | c.pixel = *(int *)fromVal->addr; | ||||
462 | |||||
463 | XQueryColor(DisplayOfScreen(screen)((screen)->display), colormap, &c); | ||||
464 | done(XColor, c){ if (toVal->addr != ((void*)0)) { if (toVal->size < sizeof(XColor)) { toVal->size = sizeof(XColor); return 0; } *(XColor*)(toVal->addr) = (c); } else { static XColor static_val ; static_val = (c); toVal->addr = (XPointer)&static_val ; } toVal->size = sizeof(XColor); return 1; }; | ||||
465 | } | ||||
466 | |||||
467 | |||||
468 | Boolean XtCvtStringToPixel( | ||||
469 | Display* dpy, | ||||
470 | XrmValuePtr args, | ||||
471 | Cardinal *num_args, | ||||
472 | XrmValuePtr fromVal, | ||||
473 | XrmValuePtr toVal, | ||||
474 | XtPointer *closure_ret) | ||||
475 | { | ||||
476 | String str = (String)fromVal->addr; | ||||
477 | XColor screenColor; | ||||
478 | XColor exactColor; | ||||
479 | Screen *screen; | ||||
480 | XtPerDisplay pd = _XtGetPerDisplay(dpy); | ||||
481 | Colormap colormap; | ||||
482 | Statusint status; | ||||
483 | String params[1]; | ||||
484 | Cardinal num_params=1; | ||||
485 | |||||
486 | if (*num_args != 2) { | ||||
487 | XtAppWarningMsg(pd->appContext, XtNwrongParameters, "cvtStringToPixel", | ||||
488 | XtCXtToolkitError, | ||||
489 | "String to pixel conversion needs screen and colormap arguments", | ||||
490 | (String *)NULL((void*)0), (Cardinal *)NULL((void*)0)); | ||||
491 | return False0; | ||||
492 | } | ||||
493 | |||||
494 | screen = *((Screen **) args[0].addr); | ||||
495 | colormap = *((Colormap *) args[1].addr); | ||||
496 | |||||
497 | if (CompareISOLatin1(str, XtDefaultBackground"XtDefaultBackground") == 0) { | ||||
498 | *closure_ret = NULL((void*)0); | ||||
499 | if (pd->rv) donestr(Pixel, BlackPixelOfScreen(screen), XtRPixel){ if (toVal->addr != ((void*)0)) { if (toVal->size < sizeof(Pixel)) { toVal->size = sizeof(Pixel); XtDisplayStringConversionWarning (dpy, (char*) fromVal->addr, ((char*)&XtStrings[1754]) ); return 0; } *(Pixel*)(toVal->addr) = (((screen)->black_pixel )); } else { static Pixel static_val; static_val = (((screen) ->black_pixel)); toVal->addr = (XPointer)&static_val ; } toVal->size = sizeof(Pixel); return 1; } | ||||
500 | else donestr(Pixel, WhitePixelOfScreen(screen), XtRPixel){ if (toVal->addr != ((void*)0)) { if (toVal->size < sizeof(Pixel)) { toVal->size = sizeof(Pixel); XtDisplayStringConversionWarning (dpy, (char*) fromVal->addr, ((char*)&XtStrings[1754]) ); return 0; } *(Pixel*)(toVal->addr) = (((screen)->white_pixel )); } else { static Pixel static_val; static_val = (((screen) ->white_pixel)); toVal->addr = (XPointer)&static_val ; } toVal->size = sizeof(Pixel); return 1; }; | ||||
501 | } | ||||
502 | if (CompareISOLatin1(str, XtDefaultForeground"XtDefaultForeground") == 0) { | ||||
503 | *closure_ret = NULL((void*)0); | ||||
504 | if (pd->rv) donestr(Pixel, WhitePixelOfScreen(screen), XtRPixel){ if (toVal->addr != ((void*)0)) { if (toVal->size < sizeof(Pixel)) { toVal->size = sizeof(Pixel); XtDisplayStringConversionWarning (dpy, (char*) fromVal->addr, ((char*)&XtStrings[1754]) ); return 0; } *(Pixel*)(toVal->addr) = (((screen)->white_pixel )); } else { static Pixel static_val; static_val = (((screen) ->white_pixel)); toVal->addr = (XPointer)&static_val ; } toVal->size = sizeof(Pixel); return 1; } | ||||
505 | else donestr(Pixel, BlackPixelOfScreen(screen), XtRPixel){ if (toVal->addr != ((void*)0)) { if (toVal->size < sizeof(Pixel)) { toVal->size = sizeof(Pixel); XtDisplayStringConversionWarning (dpy, (char*) fromVal->addr, ((char*)&XtStrings[1754]) ); return 0; } *(Pixel*)(toVal->addr) = (((screen)->black_pixel )); } else { static Pixel static_val; static_val = (((screen) ->black_pixel)); toVal->addr = (XPointer)&static_val ; } toVal->size = sizeof(Pixel); return 1; }; | ||||
506 | } | ||||
507 | |||||
508 | status = XAllocNamedColor(DisplayOfScreen(screen)((screen)->display), colormap, | ||||
509 | (char*)str, &screenColor, &exactColor); | ||||
510 | if (status == 0) { | ||||
511 | String msg, type; | ||||
512 | params[0] = str; | ||||
513 | /* Server returns a specific error code but Xlib discards it. Ugh */ | ||||
514 | if (XLookupColor(DisplayOfScreen(screen)((screen)->display), colormap, (char*)str, | ||||
515 | &exactColor, &screenColor)) { | ||||
516 | type = "noColormap"; | ||||
517 | msg = "Cannot allocate colormap entry for \"%s\""; | ||||
518 | } | ||||
519 | else { | ||||
520 | type = "badValue"; | ||||
521 | msg = "Color name \"%s\" is not defined"; | ||||
522 | } | ||||
523 | |||||
524 | XtAppWarningMsg(pd->appContext, type, "cvtStringToPixel", | ||||
525 | XtCXtToolkitError, msg, params, &num_params); | ||||
526 | *closure_ret = NULL((void*)0); | ||||
527 | return False0; | ||||
528 | } else { | ||||
529 | *closure_ret = (char*)True1; | ||||
530 | donestr(Pixel, screenColor.pixel, XtRPixel){ if (toVal->addr != ((void*)0)) { if (toVal->size < sizeof(Pixel)) { toVal->size = sizeof(Pixel); XtDisplayStringConversionWarning (dpy, (char*) fromVal->addr, ((char*)&XtStrings[1754]) ); return 0; } *(Pixel*)(toVal->addr) = (screenColor.pixel ); } else { static Pixel static_val; static_val = (screenColor .pixel); toVal->addr = (XPointer)&static_val; } toVal-> size = sizeof(Pixel); return 1; }; | ||||
531 | } | ||||
532 | } | ||||
533 | |||||
534 | /* ARGSUSED */ | ||||
535 | static void FreePixel( | ||||
536 | XtAppContext app, | ||||
537 | XrmValuePtr toVal, | ||||
538 | XtPointer closure, | ||||
539 | XrmValuePtr args, | ||||
540 | Cardinal *num_args) | ||||
541 | { | ||||
542 | Screen *screen; | ||||
543 | Colormap colormap; | ||||
544 | |||||
545 | if (*num_args != 2) { | ||||
546 | XtAppWarningMsg(app, XtNwrongParameters,"freePixel",XtCXtToolkitError, | ||||
547 | "Freeing a pixel requires screen and colormap arguments", | ||||
548 | (String *)NULL((void*)0), (Cardinal *)NULL((void*)0)); | ||||
549 | return; | ||||
550 | } | ||||
551 | |||||
552 | screen = *((Screen **) args[0].addr); | ||||
553 | colormap = *((Colormap *) args[1].addr); | ||||
554 | |||||
555 | if (closure) { | ||||
556 | XFreeColors( DisplayOfScreen(screen)((screen)->display), colormap, | ||||
557 | (unsigned long*)toVal->addr, 1, (unsigned long)0 | ||||
558 | ); | ||||
559 | } | ||||
560 | } | ||||
561 | |||||
562 | |||||
563 | /* no longer used by Xt, but it's in the spec */ | ||||
564 | XtConvertArgRec const screenConvertArg[] = { | ||||
565 | {XtWidgetBaseOffset, (XtPointer)XtOffsetOf(WidgetRec, core.screen)__builtin_offsetof(WidgetRec, core.screen), | ||||
566 | sizeof(Screen *)} | ||||
567 | }; | ||||
568 | |||||
569 | /*ARGSUSED*/ | ||||
570 | static void FetchDisplayArg( | ||||
571 | Widget widget, | ||||
572 | Cardinal *size, | ||||
573 | XrmValue* value) | ||||
574 | { | ||||
575 | if (widget == NULL((void*)0)) | ||||
| |||||
| |||||
576 | XtErrorMsg("missingWidget", "fetchDisplayArg", XtCXtToolkitError, | ||||
577 | "FetchDisplayArg called without a widget to reference", | ||||
578 | (String*)NULL((void*)0), (Cardinal*)NULL((void*)0)); | ||||
579 | /* can't return any useful Display and caller will de-ref NULL, | ||||
580 | so aborting is the only useful option */ | ||||
581 | |||||
582 | value->size = sizeof(Display*); | ||||
583 | value->addr = (XPointer)&DisplayOfScreen(XtScreenOfObject(widget))((((((Object)(widget))->object.widget_class->core_class .class_inited & 0x04) ? (widget)->core.screen : _XtIsHookObject (widget) ? ((HookObject)(widget))->hooks.screen : _XtWindowedAncestor (widget)->core.screen))->display); | ||||
| |||||
584 | } | ||||
585 | |||||
586 | static XtConvertArgRec const displayConvertArg[] = { | ||||
587 | {XtProcedureArg, (XtPointer)FetchDisplayArg, 0}, | ||||
588 | }; | ||||
589 | |||||
590 | /*ARGSUSED*/ | ||||
591 | Boolean XtCvtStringToCursor( | ||||
592 | Display* dpy, | ||||
593 | XrmValuePtr args, | ||||
594 | Cardinal *num_args, | ||||
595 | XrmValuePtr fromVal, | ||||
596 | XrmValuePtr toVal, | ||||
597 | XtPointer *closure_ret) | ||||
598 | { | ||||
599 | static const struct _CursorName { | ||||
600 | const char *name; | ||||
601 | unsigned int shape; | ||||
602 | } cursor_names[] = { | ||||
603 | {"X_cursor", XC_X_cursor0}, | ||||
604 | {"arrow", XC_arrow2}, | ||||
605 | {"based_arrow_down", XC_based_arrow_down4}, | ||||
606 | {"based_arrow_up", XC_based_arrow_up6}, | ||||
607 | {"boat", XC_boat8}, | ||||
608 | {"bogosity", XC_bogosity10}, | ||||
609 | {"bottom_left_corner", XC_bottom_left_corner12}, | ||||
610 | {"bottom_right_corner", XC_bottom_right_corner14}, | ||||
611 | {"bottom_side", XC_bottom_side16}, | ||||
612 | {"bottom_tee", XC_bottom_tee18}, | ||||
613 | {"box_spiral", XC_box_spiral20}, | ||||
614 | {"center_ptr", XC_center_ptr22}, | ||||
615 | {"circle", XC_circle24}, | ||||
616 | {"clock", XC_clock26}, | ||||
617 | {"coffee_mug", XC_coffee_mug28}, | ||||
618 | {"cross", XC_cross30}, | ||||
619 | {"cross_reverse", XC_cross_reverse32}, | ||||
620 | {"crosshair", XC_crosshair34}, | ||||
621 | {"diamond_cross", XC_diamond_cross36}, | ||||
622 | {"dot", XC_dot38}, | ||||
623 | {"dotbox", XC_dotbox40}, | ||||
624 | {"double_arrow", XC_double_arrow42}, | ||||
625 | {"draft_large", XC_draft_large44}, | ||||
626 | {"draft_small", XC_draft_small46}, | ||||
627 | {"draped_box", XC_draped_box48}, | ||||
628 | {"exchange", XC_exchange50}, | ||||
629 | {"fleur", XC_fleur52}, | ||||
630 | {"gobbler", XC_gobbler54}, | ||||
631 | {"gumby", XC_gumby56}, | ||||
632 | {"hand1", XC_hand158}, | ||||
633 | {"hand2", XC_hand260}, | ||||
634 | {"heart", XC_heart62}, | ||||
635 | {"icon", XC_icon64}, | ||||
636 | {"iron_cross", XC_iron_cross66}, | ||||
637 | {"left_ptr", XC_left_ptr68}, | ||||
638 | {"left_side", XC_left_side70}, | ||||
639 | {"left_tee", XC_left_tee72}, | ||||
640 | {"leftbutton", XC_leftbutton74}, | ||||
641 | {"ll_angle", XC_ll_angle76}, | ||||
642 | {"lr_angle", XC_lr_angle78}, | ||||
643 | {"man", XC_man80}, | ||||
644 | {"middlebutton", XC_middlebutton82}, | ||||
645 | {"mouse", XC_mouse84}, | ||||
646 | {"pencil", XC_pencil86}, | ||||
647 | {"pirate", XC_pirate88}, | ||||
648 | {"plus", XC_plus90}, | ||||
649 | {"question_arrow", XC_question_arrow92}, | ||||
650 | {"right_ptr", XC_right_ptr94}, | ||||
651 | {"right_side", XC_right_side96}, | ||||
652 | {"right_tee", XC_right_tee98}, | ||||
653 | {"rightbutton", XC_rightbutton100}, | ||||
654 | {"rtl_logo", XC_rtl_logo102}, | ||||
655 | {"sailboat", XC_sailboat104}, | ||||
656 | {"sb_down_arrow", XC_sb_down_arrow106}, | ||||
657 | {"sb_h_double_arrow", XC_sb_h_double_arrow108}, | ||||
658 | {"sb_left_arrow", XC_sb_left_arrow110}, | ||||
659 | {"sb_right_arrow", XC_sb_right_arrow112}, | ||||
660 | {"sb_up_arrow", XC_sb_up_arrow114}, | ||||
661 | {"sb_v_double_arrow", XC_sb_v_double_arrow116}, | ||||
662 | {"shuttle", XC_shuttle118}, | ||||
663 | {"sizing", XC_sizing120}, | ||||
664 | {"spider", XC_spider122}, | ||||
665 | {"spraycan", XC_spraycan124}, | ||||
666 | {"star", XC_star126}, | ||||
667 | {"target", XC_target128}, | ||||
668 | {"tcross", XC_tcross130}, | ||||
669 | {"top_left_arrow", XC_top_left_arrow132}, | ||||
670 | {"top_left_corner", XC_top_left_corner134}, | ||||
671 | {"top_right_corner", XC_top_right_corner136}, | ||||
672 | {"top_side", XC_top_side138}, | ||||
673 | {"top_tee", XC_top_tee140}, | ||||
674 | {"trek", XC_trek142}, | ||||
675 | {"ul_angle", XC_ul_angle144}, | ||||
676 | {"umbrella", XC_umbrella146}, | ||||
677 | {"ur_angle", XC_ur_angle148}, | ||||
678 | {"watch", XC_watch150}, | ||||
679 | {"xterm", XC_xterm152}, | ||||
680 | }; | ||||
681 | const struct _CursorName *nP; | ||||
682 | char *name = (char *)fromVal->addr; | ||||
683 | register Cardinal i; | ||||
684 | |||||
685 | if (*num_args != 1) { | ||||
686 | XtAppWarningMsg(XtDisplayToApplicationContext(dpy), | ||||
687 | XtNwrongParameters,"cvtStringToCursor",XtCXtToolkitError, | ||||
688 | "String to cursor conversion needs display argument", | ||||
689 | (String *)NULL((void*)0), (Cardinal *)NULL((void*)0)); | ||||
690 | return False0; | ||||
691 | } | ||||
692 | |||||
693 | for (i=0, nP=cursor_names; i < XtNumber(cursor_names)((Cardinal) (sizeof(cursor_names) / sizeof(cursor_names[0]))); i++, nP++ ) { | ||||
694 | if (strcmp(name, nP->name) == 0) { | ||||
695 | Display *display = *(Display**)args[0].addr; | ||||
696 | Cursor cursor = XCreateFontCursor(display, nP->shape ); | ||||
697 | donestr(Cursor, cursor, XtRCursor){ if (toVal->addr != ((void*)0)) { if (toVal->size < sizeof(Cursor)) { toVal->size = sizeof(Cursor); XtDisplayStringConversionWarning (dpy, (char*) fromVal->addr, ((char*)&XtStrings[1611]) ); return 0; } *(Cursor*)(toVal->addr) = (cursor); } else { static Cursor static_val; static_val = (cursor); toVal->addr = (XPointer)&static_val; } toVal->size = sizeof(Cursor ); return 1; }; | ||||
698 | } | ||||
699 | } | ||||
700 | XtDisplayStringConversionWarning(dpy, name, XtRCursor((char*)&XtStrings[1611])); | ||||
701 | return False0; | ||||
702 | } | ||||
703 | |||||
704 | /* ARGSUSED */ | ||||
705 | static void FreeCursor( | ||||
706 | XtAppContext app, | ||||
707 | XrmValuePtr toVal, | ||||
708 | XtPointer closure, /* unused */ | ||||
709 | XrmValuePtr args, | ||||
710 | Cardinal *num_args) | ||||
711 | { | ||||
712 | Display* display; | ||||
713 | |||||
714 | if (*num_args != 1) { | ||||
715 | XtAppWarningMsg(app, | ||||
716 | XtNwrongParameters,"freeCursor",XtCXtToolkitError, | ||||
717 | "Free Cursor requires display argument", | ||||
718 | (String *)NULL((void*)0), (Cardinal *)NULL((void*)0)); | ||||
719 | return; | ||||
720 | } | ||||
721 | |||||
722 | display = *(Display**)args[0].addr; | ||||
723 | XFreeCursor( display, *(Cursor*)toVal->addr ); | ||||
724 | } | ||||
725 | |||||
726 | /*ARGSUSED*/ | ||||
727 | Boolean XtCvtStringToDisplay( | ||||
728 | Display* dpy, | ||||
729 | XrmValuePtr args, | ||||
730 | Cardinal *num_args, | ||||
731 | XrmValuePtr fromVal, | ||||
732 | XrmValuePtr toVal, | ||||
733 | XtPointer *closure_ret) | ||||
734 | { | ||||
735 | Display *d; | ||||
736 | |||||
737 | if (*num_args != 0) | ||||
738 | XtAppWarningMsg(XtDisplayToApplicationContext(dpy), | ||||
739 | XtNwrongParameters,"cvtStringToDisplay",XtCXtToolkitError, | ||||
740 | "String to Display conversion needs no extra arguments", | ||||
741 | (String *)NULL((void*)0), (Cardinal *)NULL((void*)0)); | ||||
742 | |||||
743 | d = XOpenDisplay((char *)fromVal->addr); | ||||
744 | if (d != NULL((void*)0)) | ||||
745 | donestr(Display*, d, XtRDisplay){ if (toVal->addr != ((void*)0)) { if (toVal->size < sizeof(Display*)) { toVal->size = sizeof(Display*); XtDisplayStringConversionWarning (dpy, (char*) fromVal->addr, ((char*)&XtStrings[1628]) ); return 0; } *(Display**)(toVal->addr) = (d); } else { static Display* static_val; static_val = (d); toVal->addr = (XPointer )&static_val; } toVal->size = sizeof(Display*); return 1; }; | ||||
746 | |||||
747 | XtDisplayStringConversionWarning(dpy, (char *) fromVal->addr, XtRDisplay((char*)&XtStrings[1628])); | ||||
748 | return False0; | ||||
749 | } | ||||
750 | |||||
751 | |||||
752 | /*ARGSUSED*/ | ||||
753 | Boolean XtCvtStringToFile( | ||||
754 | Display* dpy, | ||||
755 | XrmValuePtr args, | ||||
756 | Cardinal *num_args, | ||||
757 | XrmValuePtr fromVal, | ||||
758 | XrmValuePtr toVal, | ||||
759 | XtPointer *closure_ret) | ||||
760 | { | ||||
761 | FILE *f; | ||||
762 | |||||
763 | if (*num_args != 0) | ||||
764 | XtAppWarningMsg(XtDisplayToApplicationContext(dpy), | ||||
765 | XtNwrongParameters,"cvtStringToFile",XtCXtToolkitError, | ||||
766 | "String to File conversion needs no extra arguments", | ||||
767 | (String *) NULL((void*)0), (Cardinal *)NULL((void*)0)); | ||||
768 | |||||
769 | f = fopen((char *)fromVal->addr, "r"); | ||||
770 | if (f != NULL((void*)0)) | ||||
771 | donestr(FILE*, f, XtRFile){ if (toVal->addr != ((void*)0)) { if (toVal->size < sizeof(FILE*)) { toVal->size = sizeof(FILE*); XtDisplayStringConversionWarning (dpy, (char*) fromVal->addr, ((char*)&XtStrings[1650]) ); return 0; } *(FILE**)(toVal->addr) = (f); } else { static FILE* static_val; static_val = (f); toVal->addr = (XPointer )&static_val; } toVal->size = sizeof(FILE*); return 1; }; | ||||
772 | |||||
773 | XtDisplayStringConversionWarning(dpy, (char *) fromVal->addr, XtRFile((char*)&XtStrings[1650])); | ||||
774 | return False0; | ||||
775 | } | ||||
776 | |||||
777 | /* ARGSUSED */ | ||||
778 | static void FreeFile( | ||||
779 | XtAppContext app, | ||||
780 | XrmValuePtr toVal, | ||||
781 | XtPointer closure, /* unused */ | ||||
782 | XrmValuePtr args, /* unused */ | ||||
783 | Cardinal *num_args) | ||||
784 | { | ||||
785 | if (*num_args != 0) | ||||
786 | XtAppWarningMsg(app, | ||||
787 | XtNwrongParameters,"freeFile",XtCXtToolkitError, | ||||
788 | "Free File requires no extra arguments", | ||||
789 | (String *) NULL((void*)0), (Cardinal *)NULL((void*)0)); | ||||
790 | |||||
791 | fclose( *(FILE**)toVal->addr ); | ||||
792 | } | ||||
793 | |||||
794 | /*ARGSUSED*/ | ||||
795 | Boolean XtCvtIntToFloat( | ||||
796 | Display* dpy, | ||||
797 | XrmValuePtr args, | ||||
798 | Cardinal *num_args, | ||||
799 | XrmValuePtr fromVal, | ||||
800 | XrmValuePtr toVal, | ||||
801 | XtPointer *closure_ret) | ||||
802 | { | ||||
803 | if (*num_args != 0) | ||||
804 | XtAppWarningMsg(XtDisplayToApplicationContext(dpy), | ||||
805 | XtNwrongParameters,"cvtIntToFloat",XtCXtToolkitError, | ||||
806 | "Integer to Float conversion needs no extra arguments", | ||||
807 | (String *)NULL((void*)0), (Cardinal *)NULL((void*)0)); | ||||
808 | done(float, (*(int *)fromVal->addr)){ if (toVal->addr != ((void*)0)) { if (toVal->size < sizeof(float)) { toVal->size = sizeof(float); return 0; } *(float*)(toVal->addr) = ((*(int *)fromVal->addr)); } else { static float static_val; static_val = ((*(int *)fromVal-> addr)); toVal->addr = (XPointer)&static_val; } toVal-> size = sizeof(float); return 1; }; | ||||
809 | } | ||||
810 | |||||
811 | /*ARGSUSED*/ | ||||
812 | Boolean XtCvtStringToFloat( | ||||
813 | Display* dpy, | ||||
814 | XrmValuePtr args, | ||||
815 | Cardinal *num_args, | ||||
816 | XrmValuePtr fromVal, | ||||
817 | XrmValuePtr toVal, | ||||
818 | XtPointer *closure_ret) | ||||
819 | { | ||||
820 | int ret; | ||||
821 | float f, nan; | ||||
822 | |||||
823 | #ifndef ISC /* On ISC this generates a core dump :-( at least with gs */ | ||||
824 | /* depending on the system this may or may not do anything useful */ | ||||
825 | (void) sscanf ("NaNS", "%g", | ||||
826 | toVal->addr != NULL((void*)0) ? (float*) toVal->addr : &nan); | ||||
827 | #endif | ||||
828 | |||||
829 | if (*num_args != 0) | ||||
830 | XtAppWarningMsg(XtDisplayToApplicationContext(dpy), | ||||
831 | XtNwrongParameters,"cvtStringToFloat",XtCXtToolkitError, | ||||
832 | "String to Float conversion needs no extra arguments", | ||||
833 | (String *) NULL((void*)0), (Cardinal *)NULL((void*)0)); | ||||
834 | |||||
835 | ret = sscanf (fromVal->addr, "%g", &f); | ||||
836 | if (ret == 0) { | ||||
837 | if (toVal->addr != NULL((void*)0) && toVal->size == sizeof nan) | ||||
838 | *(float*)toVal->addr = nan; | ||||
839 | XtDisplayStringConversionWarning (dpy, (char*) fromVal->addr, XtRFloat((char*)&XtStrings[1655])); | ||||
840 | return False0; | ||||
841 | } | ||||
842 | donestr(float, f, XtRFloat){ if (toVal->addr != ((void*)0)) { if (toVal->size < sizeof(float)) { toVal->size = sizeof(float); XtDisplayStringConversionWarning (dpy, (char*) fromVal->addr, ((char*)&XtStrings[1655]) ); return 0; } *(float*)(toVal->addr) = (f); } else { static float static_val; static_val = (f); toVal->addr = (XPointer )&static_val; } toVal->size = sizeof(float); return 1; }; | ||||
843 | } | ||||
844 | |||||
845 | /*ARGSUSED*/ | ||||
846 | Boolean XtCvtStringToFont( | ||||
847 | Display* dpy, | ||||
848 | XrmValuePtr args, | ||||
849 | Cardinal *num_args, | ||||
850 | XrmValuePtr fromVal, | ||||
851 | XrmValuePtr toVal, | ||||
852 | XtPointer *closure_ret) | ||||
853 | { | ||||
854 | Font f; | ||||
855 | Display* display; | ||||
856 | |||||
857 | if (*num_args != 1) { | ||||
858 | XtAppWarningMsg(XtDisplayToApplicationContext(dpy), | ||||
859 | XtNwrongParameters,"cvtStringToFont",XtCXtToolkitError, | ||||
860 | "String to font conversion needs display argument", | ||||
861 | (String *) NULL((void*)0), (Cardinal *)NULL((void*)0)); | ||||
862 | return False0; | ||||
863 | } | ||||
864 | |||||
865 | display = *(Display**)args[0].addr; | ||||
866 | |||||
867 | if (CompareISOLatin1((String)fromVal->addr, XtDefaultFont"XtDefaultFont") != 0) { | ||||
868 | f = XLoadFont(display, (char *)fromVal->addr); | ||||
869 | if (f != 0) { | ||||
870 | Done: donestr( Font, f, XtRFont ){ if (toVal->addr != ((void*)0)) { if (toVal->size < sizeof(Font)) { toVal->size = sizeof(Font); XtDisplayStringConversionWarning (dpy, (char*) fromVal->addr, ((char*)&XtStrings[1661]) ); return 0; } *(Font*)(toVal->addr) = (f); } else { static Font static_val; static_val = (f); toVal->addr = (XPointer )&static_val; } toVal->size = sizeof(Font); return 1; }; | ||||
871 | } | ||||
872 | XtDisplayStringConversionWarning(dpy, (char *) fromVal->addr, XtRFont((char*)&XtStrings[1661])); | ||||
873 | } | ||||
874 | /* try and get the default font */ | ||||
875 | |||||
876 | { | ||||
877 | XrmName xrm_name[2]; | ||||
878 | XrmClass xrm_class[2]; | ||||
879 | XrmRepresentation rep_type; | ||||
880 | XrmValue value; | ||||
881 | |||||
882 | xrm_name[0] = XrmPermStringToQuark ("xtDefaultFont"); | ||||
883 | xrm_name[1] = 0; | ||||
884 | xrm_class[0] = XrmPermStringToQuark ("XtDefaultFont"); | ||||
885 | xrm_class[1] = 0; | ||||
886 | if (XrmQGetResource(XtDatabase(display), xrm_name, xrm_class, | ||||
887 | &rep_type, &value)) { | ||||
888 | if (rep_type == _XtQString) { | ||||
889 | f = XLoadFont(display, (char *)value.addr); | ||||
890 | if (f != 0) | ||||
891 | goto Done; | ||||
892 | else | ||||
893 | XtDisplayStringConversionWarning(dpy, (char *)value.addr, | ||||
894 | XtRFont((char*)&XtStrings[1661])); | ||||
895 | } else if (rep_type == XtQFont) { | ||||
896 | f = *(Font*)value.addr; | ||||
897 | goto Done; | ||||
898 | } else if (rep_type == XtQFontStruct) { | ||||
899 | f = ((XFontStruct*)value.addr)->fid; | ||||
900 | goto Done; | ||||
901 | } | ||||
902 | } | ||||
903 | } | ||||
904 | /* Should really do XListFonts, but most servers support this */ | ||||
905 | f = XLoadFont(display, "-*-*-*-R-*-*-*-120-*-*-*-*-ISO8859-*"); | ||||
906 | if (f != 0) | ||||
907 | goto Done; | ||||
908 | |||||
909 | XtAppWarningMsg(XtDisplayToApplicationContext(dpy), | ||||
910 | "noFont","cvtStringToFont",XtCXtToolkitError, | ||||
911 | "Unable to load any usable ISO8859 font", | ||||
912 | (String *) NULL((void*)0), (Cardinal *)NULL((void*)0)); | ||||
913 | |||||
914 | return False0; | ||||
915 | } | ||||
916 | |||||
917 | /* ARGSUSED */ | ||||
918 | static void FreeFont( | ||||
919 | XtAppContext app, | ||||
920 | XrmValuePtr toVal, | ||||
921 | XtPointer closure, /* unused */ | ||||
922 | XrmValuePtr args, | ||||
923 | Cardinal *num_args) | ||||
924 | { | ||||
925 | Display *display; | ||||
926 | if (*num_args != 1) { | ||||
927 | XtAppWarningMsg(app, | ||||
928 | XtNwrongParameters,"freeFont",XtCXtToolkitError, | ||||
929 | "Free Font needs display argument", | ||||
930 | (String *) NULL((void*)0), (Cardinal *)NULL((void*)0)); | ||||
931 | return; | ||||
932 | } | ||||
933 | |||||
934 | display = *(Display**)args[0].addr; | ||||
935 | XUnloadFont( display, *(Font*)toVal->addr ); | ||||
936 | } | ||||
937 | |||||
938 | /*ARGSUSED*/ | ||||
939 | Boolean XtCvtIntToFont( | ||||
940 | Display* dpy, | ||||
941 | XrmValuePtr args, | ||||
942 | Cardinal *num_args, | ||||
943 | XrmValuePtr fromVal, | ||||
944 | XrmValuePtr toVal, | ||||
945 | XtPointer *closure_ret) | ||||
946 | { | ||||
947 | if (*num_args != 0) | ||||
948 | XtAppWarningMsg(XtDisplayToApplicationContext(dpy), | ||||
949 | XtNwrongParameters,"cvtIntToFont",XtCXtToolkitError, | ||||
950 | "Integer to Font conversion needs no extra arguments", | ||||
951 | (String *) NULL((void*)0), (Cardinal *)NULL((void*)0)); | ||||
952 | done(Font, *(int*)fromVal->addr){ if (toVal->addr != ((void*)0)) { if (toVal->size < sizeof(Font)) { toVal->size = sizeof(Font); return 0; } * (Font*)(toVal->addr) = (*(int*)fromVal->addr); } else { static Font static_val; static_val = (*(int*)fromVal->addr ); toVal->addr = (XPointer)&static_val; } toVal->size = sizeof(Font); return 1; }; | ||||
953 | } | ||||
954 | |||||
955 | /*ARGSUSED*/ | ||||
956 | Boolean XtCvtStringToFontSet( | ||||
957 | Display* dpy, | ||||
958 | XrmValuePtr args, | ||||
959 | Cardinal *num_args, | ||||
960 | XrmValuePtr fromVal, | ||||
961 | XrmValuePtr toVal, | ||||
962 | XtPointer *closure_ret) | ||||
963 | { | ||||
964 | XFontSet f; | ||||
965 | Display* display; | ||||
966 | char** missing_charset_list; | ||||
967 | int missing_charset_count; | ||||
968 | char* def_string; | ||||
969 | |||||
970 | if (*num_args != 2) { | ||||
971 | XtAppWarningMsg(XtDisplayToApplicationContext(dpy), | ||||
972 | XtNwrongParameters,"cvtStringToFontSet",XtCXtToolkitError, | ||||
973 | "String to FontSet conversion needs display and locale arguments", | ||||
974 | (String *) NULL((void*)0), (Cardinal *)NULL((void*)0)); | ||||
975 | return False0; | ||||
976 | } | ||||
977 | |||||
978 | display = *(Display**)args[0].addr; | ||||
979 | |||||
980 | if (CompareISOLatin1((String)fromVal->addr, XtDefaultFontSet"XtDefaultFontSet") != 0) { | ||||
981 | f = XCreateFontSet(display, (char *)fromVal->addr, | ||||
982 | &missing_charset_list, &missing_charset_count, &def_string); | ||||
983 | /* Free any returned missing charset list */ | ||||
984 | if (missing_charset_count) { | ||||
985 | XtAppWarningMsg(XtDisplayToApplicationContext(dpy), | ||||
986 | XtNmissingCharsetList,"cvtStringToFontSet",XtCXtToolkitError, | ||||
987 | "Missing charsets in String to FontSet conversion", | ||||
988 | (String *) NULL((void*)0), (Cardinal *)NULL((void*)0)); | ||||
989 | XFreeStringList(missing_charset_list); | ||||
990 | } | ||||
991 | if (f != NULL((void*)0)) { | ||||
992 | Done: donestr( XFontSet, f, XtRFontSet ){ if (toVal->addr != ((void*)0)) { if (toVal->size < sizeof(XFontSet)) { toVal->size = sizeof(XFontSet); XtDisplayStringConversionWarning (dpy, (char*) fromVal->addr, ((char*)&XtStrings[2026]) ); return 0; } *(XFontSet*)(toVal->addr) = (f); } else { static XFontSet static_val; static_val = (f); toVal->addr = (XPointer )&static_val; } toVal->size = sizeof(XFontSet); return 1; }; | ||||
993 | } | ||||
994 | XtDisplayStringConversionWarning(dpy, (char *)fromVal->addr, XtRFontSet((char*)&XtStrings[2026])); | ||||
995 | } | ||||
996 | /* try and get the default fontset */ | ||||
997 | |||||
998 | { | ||||
999 | XrmName xrm_name[2]; | ||||
1000 | XrmClass xrm_class[2]; | ||||
1001 | XrmRepresentation rep_type; | ||||
1002 | XrmValue value; | ||||
1003 | |||||
1004 | xrm_name[0] = XrmPermStringToQuark ("xtDefaultFontSet"); | ||||
1005 | xrm_name[1] = 0; | ||||
1006 | xrm_class[0] = XrmPermStringToQuark ("XtDefaultFontSet"); | ||||
1007 | xrm_class[1] = 0; | ||||
1008 | if (XrmQGetResource(XtDatabase(display), xrm_name, xrm_class, | ||||
1009 | &rep_type, &value)) { | ||||
1010 | if (rep_type == _XtQString) { | ||||
1011 | |||||
1012 | f = XCreateFontSet(display, (char *)value.addr, | ||||
1013 | &missing_charset_list, &missing_charset_count, | ||||
1014 | &def_string); | ||||
1015 | /* Free any returned missing charset list */ | ||||
1016 | if (missing_charset_count) { | ||||
1017 | XtAppWarningMsg(XtDisplayToApplicationContext(dpy), | ||||
1018 | XtNmissingCharsetList,"cvtStringToFontSet", | ||||
1019 | XtCXtToolkitError, | ||||
1020 | "Missing charsets in String to FontSet conversion", | ||||
1021 | (String *) NULL((void*)0), (Cardinal *)NULL((void*)0)); | ||||
1022 | XFreeStringList(missing_charset_list); | ||||
1023 | } | ||||
1024 | if (f != NULL((void*)0)) | ||||
1025 | goto Done; | ||||
1026 | else | ||||
1027 | XtDisplayStringConversionWarning(dpy, (char *)value.addr, | ||||
1028 | XtRFontSet((char*)&XtStrings[2026])); | ||||
1029 | } else if (rep_type == XtQFontSet) { | ||||
1030 | f = *(XFontSet*)value.addr; | ||||
1031 | goto Done; | ||||
1032 | } | ||||
1033 | } | ||||
1034 | } | ||||
1035 | |||||
1036 | /* Should really do XListFonts, but most servers support this */ | ||||
1037 | f = XCreateFontSet(display, "-*-*-*-R-*-*-*-120-*-*-*-*,*", | ||||
1038 | &missing_charset_list, &missing_charset_count, &def_string); | ||||
1039 | |||||
1040 | /* Free any returned missing charset list */ | ||||
1041 | if (missing_charset_count) { | ||||
1042 | XtAppWarningMsg(XtDisplayToApplicationContext(dpy), | ||||
1043 | XtNmissingCharsetList,"cvtStringToFontSet",XtCXtToolkitError, | ||||
1044 | "Missing charsets in String to FontSet conversion", | ||||
1045 | (String *) NULL((void*)0), (Cardinal *)NULL((void*)0)); | ||||
1046 | XFreeStringList(missing_charset_list); | ||||
1047 | } | ||||
1048 | if (f != NULL((void*)0)) | ||||
1049 | goto Done; | ||||
1050 | |||||
1051 | XtAppWarningMsg(XtDisplayToApplicationContext(dpy), | ||||
1052 | "noFont","cvtStringToFontSet",XtCXtToolkitError, | ||||
1053 | "Unable to load any usable fontset", | ||||
1054 | (String *) NULL((void*)0), (Cardinal *)NULL((void*)0)); | ||||
1055 | |||||
1056 | return False0; | ||||
1057 | } | ||||
1058 | |||||
1059 | /*ARGSUSED*/ | ||||
1060 | static void FreeFontSet( | ||||
1061 | XtAppContext app, | ||||
1062 | XrmValuePtr toVal, | ||||
1063 | XtPointer closure, /* unused */ | ||||
1064 | XrmValuePtr args, | ||||
1065 | Cardinal *num_args) | ||||
1066 | { | ||||
1067 | Display *display; | ||||
1068 | if (*num_args != 2) { | ||||
1069 | XtAppWarningMsg(app, | ||||
1070 | XtNwrongParameters,"freeFontSet",XtCXtToolkitError, | ||||
1071 | "FreeFontSet needs display and locale arguments", | ||||
1072 | (String *) NULL((void*)0), (Cardinal *)NULL((void*)0)); | ||||
1073 | return; | ||||
1074 | } | ||||
1075 | |||||
1076 | display = *(Display**)args[0].addr; | ||||
1077 | XFreeFontSet( display, *(XFontSet*)toVal->addr ); | ||||
1078 | } | ||||
1079 | |||||
1080 | /*ARGSUSED*/ | ||||
1081 | static void FetchLocaleArg( | ||||
1082 | Widget widget, /* unused */ | ||||
1083 | Cardinal *size, /* unused */ | ||||
1084 | XrmValue *value) | ||||
1085 | { | ||||
1086 | static XrmString locale; | ||||
1087 | |||||
1088 | locale = XrmQuarkToString(XrmStringToQuark | ||||
1089 | (setlocale(LC_CTYPE__LC_CTYPE, (char*)NULL((void*)0)))); | ||||
1090 | value->size = sizeof(XrmString); | ||||
1091 | value->addr = (XPointer)&locale; | ||||
1092 | } | ||||
1093 | |||||
1094 | static XtConvertArgRec const localeDisplayConvertArgs[] = { | ||||
1095 | {XtProcedureArg, (XtPointer)FetchDisplayArg, 0}, | ||||
1096 | {XtProcedureArg, (XtPointer)FetchLocaleArg, 0}, | ||||
1097 | }; | ||||
1098 | |||||
1099 | |||||
1100 | /*ARGSUSED*/ | ||||
1101 | Boolean | ||||
1102 | XtCvtStringToFontStruct( | ||||
1103 | Display* dpy, | ||||
1104 | XrmValuePtr args, | ||||
1105 | Cardinal *num_args, | ||||
1106 | XrmValuePtr fromVal, | ||||
1107 | XrmValuePtr toVal, | ||||
1108 | XtPointer *closure_ret) | ||||
1109 | { | ||||
1110 | XFontStruct *f; | ||||
1111 | Display* display; | ||||
1112 | |||||
1113 | if (*num_args != 1) { | ||||
1114 | XtAppWarningMsg(XtDisplayToApplicationContext(dpy), | ||||
1115 | XtNwrongParameters,"cvtStringToFontStruct",XtCXtToolkitError, | ||||
1116 | "String to font conversion needs display argument", | ||||
1117 | (String *) NULL((void*)0), (Cardinal *)NULL((void*)0)); | ||||
1118 | return False0; | ||||
1119 | } | ||||
1120 | |||||
1121 | display = *(Display**)args[0].addr; | ||||
1122 | |||||
1123 | if (CompareISOLatin1((String)fromVal->addr, XtDefaultFont"XtDefaultFont") != 0) { | ||||
1124 | f = XLoadQueryFont(display, (char *)fromVal->addr); | ||||
1125 | if (f != NULL((void*)0)) { | ||||
1126 | Done: donestr( XFontStruct*, f, XtRFontStruct){ if (toVal->addr != ((void*)0)) { if (toVal->size < sizeof(XFontStruct*)) { toVal->size = sizeof(XFontStruct* ); XtDisplayStringConversionWarning(dpy, (char*) fromVal-> addr, ((char*)&XtStrings[1666])); return 0; } *(XFontStruct **)(toVal->addr) = (f); } else { static XFontStruct* static_val ; static_val = (f); toVal->addr = (XPointer)&static_val ; } toVal->size = sizeof(XFontStruct*); return 1; }; | ||||
1127 | } | ||||
1128 | |||||
1129 | XtDisplayStringConversionWarning(dpy, (char*)fromVal->addr, | ||||
1130 | XtRFontStruct((char*)&XtStrings[1666])); | ||||
1131 | } | ||||
1132 | |||||
1133 | /* try and get the default font */ | ||||
1134 | |||||
1135 | { | ||||
1136 | XrmName xrm_name[2]; | ||||
1137 | XrmClass xrm_class[2]; | ||||
1138 | XrmRepresentation rep_type; | ||||
1139 | XrmValue value; | ||||
1140 | |||||
1141 | xrm_name[0] = XrmPermStringToQuark ("xtDefaultFont"); | ||||
1142 | xrm_name[1] = 0; | ||||
1143 | xrm_class[0] = XrmPermStringToQuark ("XtDefaultFont"); | ||||
1144 | xrm_class[1] = 0; | ||||
1145 | if (XrmQGetResource(XtDatabase(display), xrm_name, xrm_class, | ||||
1146 | &rep_type, &value)) { | ||||
1147 | if (rep_type == _XtQString) { | ||||
1148 | f = XLoadQueryFont(display, (char*)value.addr); | ||||
1149 | if (f != NULL((void*)0)) | ||||
1150 | goto Done; | ||||
1151 | else | ||||
1152 | XtDisplayStringConversionWarning(dpy, (char*)value.addr, | ||||
1153 | XtRFontStruct((char*)&XtStrings[1666])); | ||||
1154 | } else if (rep_type == XtQFont) { | ||||
1155 | f = XQueryFont(display, *(Font*)value.addr ); | ||||
1156 | if (f != NULL((void*)0)) goto Done; | ||||
1157 | } else if (rep_type == XtQFontStruct) { | ||||
1158 | f = (XFontStruct*)value.addr; | ||||
1159 | goto Done; | ||||
1160 | } | ||||
1161 | } | ||||
1162 | } | ||||
1163 | /* Should really do XListFonts, but most servers support this */ | ||||
1164 | f = XLoadQueryFont(display, "-*-*-*-R-*-*-*-120-*-*-*-*-ISO8859-*"); | ||||
1165 | if (f != NULL((void*)0)) | ||||
1166 | goto Done; | ||||
1167 | |||||
1168 | XtAppWarningMsg(XtDisplayToApplicationContext(dpy), | ||||
1169 | "noFont","cvtStringToFontStruct",XtCXtToolkitError, | ||||
1170 | "Unable to load any usable ISO8859 font", | ||||
1171 | (String *) NULL((void*)0), (Cardinal *)NULL((void*)0)); | ||||
1172 | |||||
1173 | return False0; | ||||
1174 | } | ||||
1175 | |||||
1176 | /* ARGSUSED */ | ||||
1177 | static void FreeFontStruct( | ||||
1178 | XtAppContext app, | ||||
1179 | XrmValuePtr toVal, | ||||
1180 | XtPointer closure, /* unused */ | ||||
1181 | XrmValuePtr args, | ||||
1182 | Cardinal *num_args) | ||||
1183 | { | ||||
1184 | Display *display; | ||||
1185 | if (*num_args != 1) { | ||||
1186 | XtAppWarningMsg(app, | ||||
1187 | XtNwrongParameters,"freeFontStruct",XtCXtToolkitError, | ||||
1188 | "Free FontStruct requires display argument", | ||||
1189 | (String *) NULL((void*)0), (Cardinal *)NULL((void*)0)); | ||||
1190 | return; | ||||
1191 | } | ||||
1192 | |||||
1193 | display = *(Display**)args[0].addr; | ||||
1194 | XFreeFont( display, *(XFontStruct**)toVal->addr ); | ||||
1195 | } | ||||
1196 | |||||
1197 | /*ARGSUSED*/ | ||||
1198 | Boolean XtCvtStringToInt( | ||||
1199 | Display* dpy, | ||||
1200 | XrmValuePtr args, | ||||
1201 | Cardinal *num_args, | ||||
1202 | XrmValuePtr fromVal, | ||||
1203 | XrmValuePtr toVal, | ||||
1204 | XtPointer *closure_ret) | ||||
1205 | { | ||||
1206 | int i; | ||||
1207 | |||||
1208 | if (*num_args != 0) | ||||
1209 | XtAppWarningMsg(XtDisplayToApplicationContext(dpy), | ||||
1210 | XtNwrongParameters,"cvtStringToInt",XtCXtToolkitError, | ||||
1211 | "String to Integer conversion needs no extra arguments", | ||||
1212 | (String *) NULL((void*)0), (Cardinal *)NULL((void*)0)); | ||||
1213 | if (IsInteger((String)fromVal->addr, &i)) | ||||
1214 | donestr(int, i, XtRInt){ if (toVal->addr != ((void*)0)) { if (toVal->size < sizeof(int)) { toVal->size = sizeof(int); XtDisplayStringConversionWarning (dpy, (char*) fromVal->addr, ((char*)&XtStrings[1718]) ); return 0; } *(int*)(toVal->addr) = (i); } else { static int static_val; static_val = (i); toVal->addr = (XPointer )&static_val; } toVal->size = sizeof(int); return 1; }; | ||||
1215 | |||||
1216 | XtDisplayStringConversionWarning(dpy, (char *) fromVal->addr, XtRInt((char*)&XtStrings[1718])); | ||||
1217 | return False0; | ||||
1218 | } | ||||
1219 | |||||
1220 | /*ARGSUSED*/ | ||||
1221 | Boolean XtCvtStringToShort( | ||||
1222 | Display* dpy, | ||||
1223 | XrmValuePtr args, | ||||
1224 | Cardinal *num_args, | ||||
1225 | XrmValuePtr fromVal, | ||||
1226 | XrmValuePtr toVal, | ||||
1227 | XtPointer *closure_ret) | ||||
1228 | { | ||||
1229 | int i; | ||||
1230 | |||||
1231 | if (*num_args != 0) | ||||
1232 | XtAppWarningMsg(XtDisplayToApplicationContext(dpy), | ||||
1233 | XtNwrongParameters,"cvtStringToShort",XtCXtToolkitError, | ||||
1234 | "String to Integer conversion needs no extra arguments", | ||||
1235 | (String *) NULL((void*)0), (Cardinal *)NULL((void*)0)); | ||||
1236 | if (IsInteger((String)fromVal->addr, &i)) | ||||
1237 | donestr(short, (short)i, XtRShort){ if (toVal->addr != ((void*)0)) { if (toVal->size < sizeof(short)) { toVal->size = sizeof(short); XtDisplayStringConversionWarning (dpy, (char*) fromVal->addr, ((char*)&XtStrings[1791]) ); return 0; } *(short*)(toVal->addr) = ((short)i); } else { static short static_val; static_val = ((short)i); toVal-> addr = (XPointer)&static_val; } toVal->size = sizeof(short ); return 1; }; | ||||
1238 | |||||
1239 | XtDisplayStringConversionWarning(dpy, (char *) fromVal->addr, XtRShort((char*)&XtStrings[1791])); | ||||
1240 | return False0; | ||||
1241 | } | ||||
1242 | |||||
1243 | /*ARGSUSED*/ | ||||
1244 | Boolean XtCvtStringToDimension( | ||||
1245 | Display* dpy, | ||||
1246 | XrmValuePtr args, | ||||
1247 | Cardinal *num_args, | ||||
1248 | XrmValuePtr fromVal, | ||||
1249 | XrmValuePtr toVal, | ||||
1250 | XtPointer *closure_ret) | ||||
1251 | { | ||||
1252 | int i; | ||||
1253 | |||||
1254 | if (*num_args != 0) | ||||
1255 | XtAppWarningMsg(XtDisplayToApplicationContext(dpy), | ||||
1256 | XtNwrongParameters,"cvtStringToDimension",XtCXtToolkitError, | ||||
1257 | "String to Dimension conversion needs no extra arguments", | ||||
1258 | (String *) NULL((void*)0), (Cardinal *)NULL((void*)0)); | ||||
1259 | if (IsInteger((String)fromVal->addr, &i)) { | ||||
1260 | if ( i < 0 ) | ||||
1261 | XtDisplayStringConversionWarning(dpy, (char*)fromVal->addr, | ||||
1262 | XtRDimension((char*)&XtStrings[1618])); | ||||
1263 | donestr(Dimension, (Dimension)i, XtRDimension){ if (toVal->addr != ((void*)0)) { if (toVal->size < sizeof(Dimension)) { toVal->size = sizeof(Dimension); XtDisplayStringConversionWarning (dpy, (char*) fromVal->addr, ((char*)&XtStrings[1618]) ); return 0; } *(Dimension*)(toVal->addr) = ((Dimension)i) ; } else { static Dimension static_val; static_val = ((Dimension )i); toVal->addr = (XPointer)&static_val; } toVal-> size = sizeof(Dimension); return 1; }; | ||||
1264 | } | ||||
1265 | XtDisplayStringConversionWarning(dpy, (char *) fromVal->addr, XtRDimension((char*)&XtStrings[1618])); | ||||
1266 | return False0; | ||||
1267 | } | ||||
1268 | |||||
1269 | /*ARGSUSED*/ | ||||
1270 | Boolean XtCvtIntToUnsignedChar( | ||||
1271 | Display* dpy, | ||||
1272 | XrmValuePtr args, | ||||
1273 | Cardinal *num_args, | ||||
1274 | XrmValuePtr fromVal, | ||||
1275 | XrmValuePtr toVal, | ||||
1276 | XtPointer *closure_ret) | ||||
1277 | { | ||||
1278 | if (*num_args != 0) | ||||
1279 | XtAppWarningMsg(XtDisplayToApplicationContext(dpy), | ||||
1280 | XtNwrongParameters,"cvtIntToUnsignedChar",XtCXtToolkitError, | ||||
1281 | "Integer to UnsignedChar conversion needs no extra arguments", | ||||
1282 | (String *)NULL((void*)0), (Cardinal *)NULL((void*)0)); | ||||
1283 | done(unsigned char, (*(int *)fromVal->addr)){ if (toVal->addr != ((void*)0)) { if (toVal->size < sizeof(unsigned char)) { toVal->size = sizeof(unsigned char ); return 0; } *(unsigned char*)(toVal->addr) = ((*(int *) fromVal->addr)); } else { static unsigned char static_val; static_val = ((*(int *)fromVal->addr)); toVal->addr = ( XPointer)&static_val; } toVal->size = sizeof(unsigned char ); return 1; }; | ||||
1284 | } | ||||
1285 | |||||
1286 | |||||
1287 | /*ARGSUSED*/ | ||||
1288 | Boolean XtCvtStringToUnsignedChar( | ||||
1289 | Display* dpy, | ||||
1290 | XrmValuePtr args, | ||||
1291 | Cardinal *num_args, | ||||
1292 | XrmValuePtr fromVal, | ||||
1293 | XrmValuePtr toVal, | ||||
1294 | XtPointer *closure_ret) | ||||
1295 | { | ||||
1296 | int i; | ||||
1297 | |||||
1298 | if (*num_args != 0) | ||||
1299 | XtAppWarningMsg(XtDisplayToApplicationContext(dpy), | ||||
1300 | XtNwrongParameters,"cvtStringToUnsignedChar",XtCXtToolkitError, | ||||
1301 | "String to Integer conversion needs no extra arguments", | ||||
1302 | (String *) NULL((void*)0), (Cardinal *)NULL((void*)0)); | ||||
1303 | if (IsInteger((String)fromVal->addr, &i)) { | ||||
1304 | if ( i < 0 || i > 255 ) | ||||
1305 | XtDisplayStringConversionWarning(dpy, (char*)fromVal->addr, | ||||
1306 | XtRUnsignedChar((char*)&XtStrings[1828])); | ||||
1307 | donestr(unsigned char, i, XtRUnsignedChar){ if (toVal->addr != ((void*)0)) { if (toVal->size < sizeof(unsigned char)) { toVal->size = sizeof(unsigned char ); XtDisplayStringConversionWarning(dpy, (char*) fromVal-> addr, ((char*)&XtStrings[1828])); return 0; } *(unsigned char *)(toVal->addr) = (i); } else { static unsigned char static_val ; static_val = (i); toVal->addr = (XPointer)&static_val ; } toVal->size = sizeof(unsigned char); return 1; }; | ||||
1308 | } | ||||
1309 | XtDisplayStringConversionWarning(dpy, (char*)fromVal->addr, | ||||
1310 | XtRUnsignedChar((char*)&XtStrings[1828])); | ||||
1311 | return False0; | ||||
1312 | } | ||||
1313 | |||||
1314 | |||||
1315 | /*ARGSUSED*/ | ||||
1316 | Boolean XtCvtColorToPixel( | ||||
1317 | Display* dpy, | ||||
1318 | XrmValuePtr args, | ||||
1319 | Cardinal *num_args, | ||||
1320 | XrmValuePtr fromVal, | ||||
1321 | XrmValuePtr toVal, | ||||
1322 | XtPointer *closure_ret) | ||||
1323 | { | ||||
1324 | if (*num_args != 0) | ||||
1325 | XtAppWarningMsg(XtDisplayToApplicationContext(dpy), | ||||
1326 | XtNwrongParameters,"cvtXColorToPixel",XtCXtToolkitError, | ||||
1327 | "Color to Pixel conversion needs no extra arguments", | ||||
1328 | (String *) NULL((void*)0), (Cardinal *)NULL((void*)0)); | ||||
1329 | done(Pixel, ((XColor *)fromVal->addr)->pixel){ if (toVal->addr != ((void*)0)) { if (toVal->size < sizeof(Pixel)) { toVal->size = sizeof(Pixel); return 0; } *(Pixel*)(toVal->addr) = (((XColor *)fromVal->addr)-> pixel); } else { static Pixel static_val; static_val = (((XColor *)fromVal->addr)->pixel); toVal->addr = (XPointer)& static_val; } toVal->size = sizeof(Pixel); return 1; }; | ||||
1330 | } | ||||
1331 | |||||
1332 | /*ARGSUSED*/ | ||||
1333 | Boolean XtCvtIntToPixel( | ||||
1334 | Display* dpy, | ||||
1335 | XrmValuePtr args, | ||||
1336 | Cardinal *num_args, | ||||
1337 | XrmValuePtr fromVal, | ||||
1338 | XrmValuePtr toVal, | ||||
1339 | XtPointer *closure_ret) | ||||
1340 | { | ||||
1341 | if (*num_args != 0) | ||||
1342 | XtAppWarningMsg(XtDisplayToApplicationContext(dpy), | ||||
1343 | XtNwrongParameters,"cvtIntToPixel",XtCXtToolkitError, | ||||
1344 | "Integer to Pixel conversion needs no extra arguments", | ||||
1345 | (String *) NULL((void*)0), (Cardinal *)NULL((void*)0)); | ||||
1346 | done(Pixel, *(int*)fromVal->addr){ if (toVal->addr != ((void*)0)) { if (toVal->size < sizeof(Pixel)) { toVal->size = sizeof(Pixel); return 0; } *(Pixel*)(toVal->addr) = (*(int*)fromVal->addr); } else { static Pixel static_val; static_val = (*(int*)fromVal-> addr); toVal->addr = (XPointer)&static_val; } toVal-> size = sizeof(Pixel); return 1; }; | ||||
1347 | } | ||||
1348 | |||||
1349 | /*ARGSUSED*/ | ||||
1350 | Boolean XtCvtIntToPixmap( | ||||
1351 | Display* dpy, | ||||
1352 | XrmValuePtr args, | ||||
1353 | Cardinal *num_args, | ||||
1354 | XrmValuePtr fromVal, | ||||
1355 | XrmValuePtr toVal, | ||||
1356 | XtPointer *closure_ret) | ||||
1357 | { | ||||
1358 | if (*num_args != 0) | ||||
1359 | XtAppWarningMsg(XtDisplayToApplicationContext(dpy), | ||||
1360 | XtNwrongParameters,"cvtIntToPixmap",XtCXtToolkitError, | ||||
1361 | "Integer to Pixmap conversion needs no extra arguments", | ||||
1362 | (String *) NULL((void*)0), (Cardinal *)NULL((void*)0)); | ||||
1363 | done(Pixmap, *(int*)fromVal->addr){ if (toVal->addr != ((void*)0)) { if (toVal->size < sizeof(Pixmap)) { toVal->size = sizeof(Pixmap); return 0; } *(Pixmap*)(toVal->addr) = (*(int*)fromVal->addr); } else { static Pixmap static_val; static_val = (*(int*)fromVal-> addr); toVal->addr = (XPointer)&static_val; } toVal-> size = sizeof(Pixmap); return 1; }; | ||||
1364 | } | ||||
1365 | |||||
1366 | #ifdef MOTIFBC | ||||
1367 | void LowerCase(register char *source, register *dest) | ||||
1368 | { | ||||
1369 | register char ch; | ||||
1370 | int i; | ||||
1371 | |||||
1372 | for (i = 0; (ch = *source) != 0 && i < 999; source++, dest++, i++) { | ||||
1373 | if ('A' <= ch && ch <= 'Z') | ||||
1374 | *dest = ch - 'A' + 'a'; | ||||
1375 | else | ||||
1376 | *dest = ch; | ||||
1377 | } | ||||
1378 | *dest = 0; | ||||
1379 | } | ||||
1380 | #endif | ||||
1381 | |||||
1382 | static int CompareISOLatin1 (const char *first, const char *second) | ||||
1383 | { | ||||
1384 | register const unsigned char *ap, *bp; | ||||
1385 | |||||
1386 | for (ap = (const unsigned char *) first, | ||||
1387 | bp = (const unsigned char *) second; | ||||
1388 | *ap && *bp; ap++, bp++) { | ||||
1389 | register unsigned char a, b; | ||||
1390 | |||||
1391 | if ((a = *ap) != (b = *bp)) { | ||||
1392 | /* try lowercasing and try again */ | ||||
1393 | |||||
1394 | if ((a >= XK_A0x0041) && (a <= XK_Z0x005a)) | ||||
1395 | a += (XK_a0x0061 - XK_A0x0041); | ||||
1396 | else if ((a >= XK_Agrave0x00c0) && (a <= XK_Odiaeresis0x00d6)) | ||||
1397 | a += (XK_agrave0x00e0 - XK_Agrave0x00c0); | ||||
1398 | else if ((a >= XK_Ooblique0x00d8) && (a <= XK_Thorn0x00de)) | ||||
1399 | a += (XK_oslash0x00f8 - XK_Ooblique0x00d8); | ||||
1400 | |||||
1401 | if ((b >= XK_A0x0041) && (b <= XK_Z0x005a)) | ||||
1402 | b += (XK_a0x0061 - XK_A0x0041); | ||||
1403 | else if ((b >= XK_Agrave0x00c0) && (b <= XK_Odiaeresis0x00d6)) | ||||
1404 | b += (XK_agrave0x00e0 - XK_Agrave0x00c0); | ||||
1405 | else if ((b >= XK_Ooblique0x00d8) && (b <= XK_Thorn0x00de)) | ||||
1406 | b += (XK_oslash0x00f8 - XK_Ooblique0x00d8); | ||||
1407 | |||||
1408 | if (a != b) break; | ||||
1409 | } | ||||
1410 | } | ||||
1411 | return (((int) *bp) - ((int) *ap)); | ||||
1412 | } | ||||
1413 | |||||
1414 | static void CopyISOLatin1Lowered(char *dst, const char *src) | ||||
1415 | { | ||||
1416 | unsigned char *dest = (unsigned char *) dst; | ||||
1417 | const unsigned char *source = (const unsigned char *) src; | ||||
1418 | |||||
1419 | for ( ; *source; source++, dest++) { | ||||
1420 | if (*source >= XK_A0x0041 && *source <= XK_Z0x005a) | ||||
1421 | *dest = *source + (XK_a0x0061 - XK_A0x0041); | ||||
1422 | else if (*source >= XK_Agrave0x00c0 && *source <= XK_Odiaeresis0x00d6) | ||||
1423 | *dest = *source + (XK_agrave0x00e0 - XK_Agrave0x00c0); | ||||
1424 | else if (*source >= XK_Ooblique0x00d8 && *source <= XK_Thorn0x00de) | ||||
1425 | *dest = *source + (XK_oslash0x00f8 - XK_Ooblique0x00d8); | ||||
1426 | else | ||||
1427 | *dest = *source; | ||||
1428 | } | ||||
1429 | *dest = '\0'; | ||||
1430 | } | ||||
1431 | |||||
1432 | /*ARGSUSED*/ | ||||
1433 | Boolean | ||||
1434 | XtCvtStringToInitialState( | ||||
1435 | Display* dpy, | ||||
1436 | XrmValuePtr args, | ||||
1437 | Cardinal *num_args, | ||||
1438 | XrmValuePtr fromVal, | ||||
1439 | XrmValuePtr toVal, | ||||
1440 | XtPointer *closure_ret) | ||||
1441 | { | ||||
1442 | String str = (String)fromVal->addr; | ||||
1443 | if (*num_args != 0) | ||||
1444 | XtAppWarningMsg(XtDisplayToApplicationContext(dpy), | ||||
1445 | XtNwrongParameters,"cvtStringToInitialState",XtCXtToolkitError, | ||||
1446 | "String to InitialState conversion needs no extra arguments", | ||||
1447 | (String *) NULL((void*)0), (Cardinal *)NULL((void*)0)); | ||||
1448 | |||||
1449 | if (CompareISOLatin1(str, "NormalState") == 0) donestr(int, NormalState, XtRInitialState){ if (toVal->addr != ((void*)0)) { if (toVal->size < sizeof(int)) { toVal->size = sizeof(int); XtDisplayStringConversionWarning (dpy, (char*) fromVal->addr, ((char*)&XtStrings[1705]) ); return 0; } *(int*)(toVal->addr) = (1); } else { static int static_val; static_val = (1); toVal->addr = (XPointer )&static_val; } toVal->size = sizeof(int); return 1; }; | ||||
1450 | if (CompareISOLatin1(str, "IconicState") == 0) donestr(int, IconicState, XtRInitialState){ if (toVal->addr != ((void*)0)) { if (toVal->size < sizeof(int)) { toVal->size = sizeof(int); XtDisplayStringConversionWarning (dpy, (char*) fromVal->addr, ((char*)&XtStrings[1705]) ); return 0; } *(int*)(toVal->addr) = (3); } else { static int static_val; static_val = (3); toVal->addr = (XPointer )&static_val; } toVal->size = sizeof(int); return 1; }; | ||||
1451 | { | ||||
1452 | int val; | ||||
1453 | if (IsInteger(str, &val)) donestr( int, val, XtRInitialState ){ if (toVal->addr != ((void*)0)) { if (toVal->size < sizeof(int)) { toVal->size = sizeof(int); XtDisplayStringConversionWarning (dpy, (char*) fromVal->addr, ((char*)&XtStrings[1705]) ); return 0; } *(int*)(toVal->addr) = (val); } else { static int static_val; static_val = (val); toVal->addr = (XPointer )&static_val; } toVal->size = sizeof(int); return 1; }; | ||||
1454 | } | ||||
1455 | XtDisplayStringConversionWarning(dpy, str, XtRInitialState((char*)&XtStrings[1705])); | ||||
1456 | return False0; | ||||
1457 | } | ||||
1458 | |||||
1459 | static XtConvertArgRec const visualConvertArgs[] = { | ||||
1460 | {XtWidgetBaseOffset, (XtPointer)XtOffsetOf(WidgetRec, core.screen)__builtin_offsetof(WidgetRec, core.screen), | ||||
1461 | sizeof(Screen *)}, | ||||
1462 | {XtWidgetBaseOffset, (XtPointer)XtOffsetOf(WidgetRec, core.depth)__builtin_offsetof(WidgetRec, core.depth), | ||||
1463 | sizeof(Cardinal)} | ||||
1464 | }; | ||||
1465 | |||||
1466 | /*ARGSUSED*/ | ||||
1467 | Boolean XtCvtStringToVisual( | ||||
1468 | Display* dpy, | ||||
1469 | XrmValuePtr args, /* Screen, depth */ | ||||
1470 | Cardinal *num_args, /* 2 */ | ||||
1471 | XrmValuePtr fromVal, | ||||
1472 | XrmValuePtr toVal, | ||||
1473 | XtPointer *closure_ret) /* unused */ | ||||
1474 | { | ||||
1475 | String str = (String)fromVal->addr; | ||||
1476 | int vc; | ||||
1477 | XVisualInfo vinfo; | ||||
1478 | if (*num_args != 2) { | ||||
1479 | XtAppWarningMsg(XtDisplayToApplicationContext(dpy), | ||||
1480 | XtNwrongParameters,"cvtStringToVisual",XtCXtToolkitError, | ||||
1481 | "String to Visual conversion needs screen and depth arguments", | ||||
1482 | (String *) NULL((void*)0), (Cardinal *)NULL((void*)0)); | ||||
1483 | return False0; | ||||
1484 | } | ||||
1485 | |||||
1486 | if (CompareISOLatin1(str, "StaticGray") == 0) vc = StaticGray0; | ||||
1487 | else if (CompareISOLatin1(str, "StaticColor") == 0) vc = StaticColor2; | ||||
1488 | else if (CompareISOLatin1(str, "TrueColor") == 0) vc = TrueColor4; | ||||
1489 | else if (CompareISOLatin1(str, "GrayScale") == 0) vc = GrayScale1; | ||||
1490 | else if (CompareISOLatin1(str, "PseudoColor") == 0) vc = PseudoColor3; | ||||
1491 | else if (CompareISOLatin1(str, "DirectColor") == 0) vc = DirectColor5; | ||||
1492 | else if (!IsInteger(str, &vc)) { | ||||
1493 | XtDisplayStringConversionWarning(dpy, str, "Visual class name"); | ||||
1494 | return False0; | ||||
1495 | } | ||||
1496 | |||||
1497 | if (XMatchVisualInfo( XDisplayOfScreen((Screen*)*(Screen**)args[0].addr), | ||||
1498 | XScreenNumberOfScreen((Screen*)*(Screen**)args[0].addr), | ||||
1499 | (int)*(int*)args[1].addr, | ||||
1500 | vc, | ||||
1501 | &vinfo) ) { | ||||
1502 | donestr( Visual*, vinfo.visual, XtRVisual ){ if (toVal->addr != ((void*)0)) { if (toVal->size < sizeof(Visual*)) { toVal->size = sizeof(Visual*); XtDisplayStringConversionWarning (dpy, (char*) fromVal->addr, ((char*)&XtStrings[1858]) ); return 0; } *(Visual**)(toVal->addr) = (vinfo.visual); } else { static Visual* static_val; static_val = (vinfo.visual ); toVal->addr = (XPointer)&static_val; } toVal->size = sizeof(Visual*); return 1; }; | ||||
1503 | } | ||||
1504 | else { | ||||
1505 | String params[2]; | ||||
1506 | Cardinal num_params = 2; | ||||
1507 | params[0] = str; | ||||
1508 | params[1] = | ||||
1509 | DisplayString(XDisplayOfScreen((Screen*)*(Screen**)args[0].addr))(((_XPrivDisplay)XDisplayOfScreen((Screen*)*(Screen**)args[0] .addr))->display_name); | ||||
1510 | XtAppWarningMsg(XtDisplayToApplicationContext(dpy), | ||||
1511 | XtNconversionError, "stringToVisual", XtCXtToolkitError, | ||||
1512 | "Cannot find Visual of class %s for display %s", | ||||
1513 | params, &num_params ); | ||||
1514 | return False0; | ||||
1515 | } | ||||
1516 | } | ||||
1517 | |||||
1518 | |||||
1519 | /*ARGSUSED*/ | ||||
1520 | Boolean XtCvtStringToAtom( | ||||
1521 | Display* dpy, | ||||
1522 | XrmValuePtr args, | ||||
1523 | Cardinal *num_args, | ||||
1524 | XrmValuePtr fromVal, | ||||
1525 | XrmValuePtr toVal, | ||||
1526 | XtPointer *closure_ret) | ||||
1527 | { | ||||
1528 | Atom atom; | ||||
1529 | if (*num_args != 1) { | ||||
1530 | XtAppWarningMsg(XtDisplayToApplicationContext(dpy), | ||||
1531 | XtNwrongParameters,"cvtStringToAtom",XtCXtToolkitError, | ||||
1532 | "String to Atom conversion needs Display argument", | ||||
1533 | (String *) NULL((void*)0), (Cardinal *)NULL((void*)0)); | ||||
1534 | return False0; | ||||
1535 | } | ||||
1536 | |||||
1537 | atom = XInternAtom( *(Display**)args->addr, (char*)fromVal->addr, False0 ); | ||||
1538 | donestr(Atom, atom, XtRAtom){ if (toVal->addr != ((void*)0)) { if (toVal->size < sizeof(Atom)) { toVal->size = sizeof(Atom); XtDisplayStringConversionWarning (dpy, (char*) fromVal->addr, ((char*)&XtStrings[1544]) ); return 0; } *(Atom*)(toVal->addr) = (atom); } else { static Atom static_val; static_val = (atom); toVal->addr = (XPointer )&static_val; } toVal->size = sizeof(Atom); return 1; }; | ||||
1539 | } | ||||
1540 | |||||
1541 | /*ARGSUSED*/ | ||||
1542 | Boolean XtCvtStringToDirectoryString( | ||||
1543 | Display *dpy, | ||||
1544 | XrmValuePtr args, | ||||
1545 | Cardinal *num_args, | ||||
1546 | XrmValuePtr fromVal, | ||||
1547 | XrmValuePtr toVal, | ||||
1548 | XtPointer *closure_ret) | ||||
1549 | { | ||||
1550 | String str; | ||||
1551 | char directory[PATH_MAX4096+1]; | ||||
1552 | |||||
1553 | if (*num_args != 0) | ||||
1554 | XtAppWarningMsg(XtDisplayToApplicationContext(dpy), | ||||
1555 | XtNwrongParameters,"cvtStringToDirectoryString",XtCXtToolkitError, | ||||
1556 | "String to DirectoryString conversion needs no extra arguments", | ||||
1557 | (String *)NULL((void*)0), (Cardinal *)NULL((void*)0)); | ||||
1558 | |||||
1559 | str = (String)fromVal->addr; | ||||
1560 | if (CompareISOLatin1(str, "XtCurrentDirectory") == 0) { | ||||
1561 | /* uglier, but does not depend on compiler knowing return type */ | ||||
1562 | #if !defined(X_NOT_POSIX) || defined(SYSV) || defined(WIN32) | ||||
1563 | if (getcwd(directory, PATH_MAX4096 + 1)) | ||||
1564 | str = directory; | ||||
1565 | #else | ||||
1566 | if (getwd(directory)) | ||||
1567 | str = directory; | ||||
1568 | #endif | ||||
1569 | if (!str) { | ||||
1570 | if (errno(*__errno_location ()) == EACCES13) | ||||
1571 | errno(*__errno_location ()) = 0; /* reset errno */ | ||||
1572 | XtDisplayStringConversionWarning(dpy, (char *) fromVal->addr, | ||||
1573 | XtRDirectoryString((char*)&XtStrings[2144])); | ||||
1574 | return False0; | ||||
1575 | } | ||||
1576 | } | ||||
1577 | |||||
1578 | /* Since memory from the resource database or from static buffers of | ||||
1579 | * system libraries may be freed or overwritten, allocate memory. | ||||
1580 | * The memory is freed when all cache references are released. | ||||
1581 | */ | ||||
1582 | str = XtNewString(str)((str) != ((void*)0) ? (strcpy(XtMalloc((unsigned)strlen(str) + 1), str)) : ((void*)0)); | ||||
1583 | donestr(String, str, XtRDirectoryString){ if (toVal->addr != ((void*)0)) { if (toVal->size < sizeof(String)) { toVal->size = sizeof(String); XtDisplayStringConversionWarning (dpy, (char*) fromVal->addr, ((char*)&XtStrings[2144]) ); return 0; } *(String*)(toVal->addr) = (str); } else { static String static_val; static_val = (str); toVal->addr = (XPointer )&static_val; } toVal->size = sizeof(String); return 1 ; }; | ||||
1584 | } | ||||
1585 | |||||
1586 | /*ARGSUSED*/ | ||||
1587 | static void FreeDirectoryString( | ||||
1588 | XtAppContext app, | ||||
1589 | XrmValuePtr toVal, | ||||
1590 | XtPointer closure, /* unused */ | ||||
1591 | XrmValuePtr args, | ||||
1592 | Cardinal *num_args) | ||||
1593 | { | ||||
1594 | if (*num_args != 0) | ||||
1595 | XtAppWarningMsg(app, | ||||
1596 | XtNwrongParameters,"freeDirectoryString",XtCXtToolkitError, | ||||
1597 | "Free Directory String requires no extra arguments", | ||||
1598 | (String *) NULL((void*)0), (Cardinal *) NULL((void*)0)); | ||||
1599 | |||||
1600 | XtFree((char *) toVal->addr); | ||||
1601 | } | ||||
1602 | |||||
1603 | /*ARGSUSED*/ | ||||
1604 | Boolean XtCvtStringToRestartStyle( | ||||
1605 | Display *dpy, | ||||
1606 | XrmValuePtr args, | ||||
1607 | Cardinal *num_args, | ||||
1608 | XrmValuePtr fromVal, | ||||
1609 | XrmValuePtr toVal, | ||||
1610 | XtPointer *closure_ret) | ||||
1611 | { | ||||
1612 | String str = (String)fromVal->addr; | ||||
1613 | if (*num_args != 0) | ||||
1614 | XtAppWarningMsg(XtDisplayToApplicationContext(dpy), | ||||
1615 | XtNwrongParameters,"cvtStringToRestartStyle",XtCXtToolkitError, | ||||
1616 | "String to RestartStyle conversion needs no extra arguments", | ||||
1617 | (String *)NULL((void*)0), (Cardinal *)NULL((void*)0)); | ||||
1618 | |||||
1619 | if (CompareISOLatin1(str, "RestartIfRunning") == 0) | ||||
1620 | donestr(unsigned char, SmRestartIfRunning, XtRRestartStyle){ if (toVal->addr != ((void*)0)) { if (toVal->size < sizeof(unsigned char)) { toVal->size = sizeof(unsigned char ); XtDisplayStringConversionWarning(dpy, (char*) fromVal-> addr, ((char*)&XtStrings[2177])); return 0; } *(unsigned char *)(toVal->addr) = (0); } else { static unsigned char static_val ; static_val = (0); toVal->addr = (XPointer)&static_val ; } toVal->size = sizeof(unsigned char); return 1; }; | ||||
1621 | if (CompareISOLatin1(str, "RestartAnyway") == 0) | ||||
1622 | donestr(unsigned char, SmRestartAnyway, XtRRestartStyle){ if (toVal->addr != ((void*)0)) { if (toVal->size < sizeof(unsigned char)) { toVal->size = sizeof(unsigned char ); XtDisplayStringConversionWarning(dpy, (char*) fromVal-> addr, ((char*)&XtStrings[2177])); return 0; } *(unsigned char *)(toVal->addr) = (1); } else { static unsigned char static_val ; static_val = (1); toVal->addr = (XPointer)&static_val ; } toVal->size = sizeof(unsigned char); return 1; }; | ||||
1623 | if (CompareISOLatin1(str, "RestartImmediately") == 0) | ||||
1624 | donestr(unsigned char, SmRestartImmediately, XtRRestartStyle){ if (toVal->addr != ((void*)0)) { if (toVal->size < sizeof(unsigned char)) { toVal->size = sizeof(unsigned char ); XtDisplayStringConversionWarning(dpy, (char*) fromVal-> addr, ((char*)&XtStrings[2177])); return 0; } *(unsigned char *)(toVal->addr) = (2); } else { static unsigned char static_val ; static_val = (2); toVal->addr = (XPointer)&static_val ; } toVal->size = sizeof(unsigned char); return 1; }; | ||||
1625 | if (CompareISOLatin1(str, "RestartNever") == 0) | ||||
1626 | donestr(unsigned char, SmRestartNever, XtRRestartStyle){ if (toVal->addr != ((void*)0)) { if (toVal->size < sizeof(unsigned char)) { toVal->size = sizeof(unsigned char ); XtDisplayStringConversionWarning(dpy, (char*) fromVal-> addr, ((char*)&XtStrings[2177])); return 0; } *(unsigned char *)(toVal->addr) = (3); } else { static unsigned char static_val ; static_val = (3); toVal->addr = (XPointer)&static_val ; } toVal->size = sizeof(unsigned char); return 1; }; | ||||
1627 | XtDisplayStringConversionWarning(dpy, str, XtRRestartStyle((char*)&XtStrings[2177])); | ||||
1628 | return False0; | ||||
1629 | } | ||||
1630 | |||||
1631 | /*ARGSUSED*/ | ||||
1632 | Boolean XtCvtStringToCommandArgArray( | ||||
1633 | Display *dpy, | ||||
1634 | XrmValuePtr args, | ||||
1635 | Cardinal *num_args, | ||||
1636 | XrmValuePtr fromVal, | ||||
1637 | XrmValuePtr toVal, | ||||
1638 | XtPointer *closure_ret) | ||||
1639 | { | ||||
1640 | String *strarray, *ptr; | ||||
1641 | char *src; | ||||
1642 | char *dst, *dst_str; | ||||
1643 | char *start; | ||||
1644 | int tokens, len; | ||||
1645 | |||||
1646 | if (*num_args != 0) | ||||
1647 | XtAppWarningMsg(XtDisplayToApplicationContext(dpy), | ||||
1648 | XtNwrongParameters,"cvtStringToCommandArgArray",XtCXtToolkitError, | ||||
1649 | "String to CommandArgArray conversion needs no extra arguments", | ||||
1650 | (String *)NULL((void*)0), (Cardinal *)NULL((void*)0)); | ||||
1651 | |||||
1652 | src = fromVal->addr; | ||||
1653 | dst = dst_str = __XtMalloc((unsigned) strlen(src) + 1); | ||||
1654 | tokens = 0; | ||||
1655 | |||||
1656 | while (*src != '\0') { | ||||
1657 | /* skip whitespace */ | ||||
1658 | while (IsWhitespace(*src)((*src)== ' ' || (*src) == '\t') || IsNewline(*src)((*src) == '\n')) | ||||
1659 | src++; | ||||
1660 | /* test for end of string */ | ||||
1661 | if (*src == '\0') | ||||
1662 | break; | ||||
1663 | |||||
1664 | /* start new token */ | ||||
1665 | tokens++; | ||||
1666 | start = src; | ||||
1667 | while (*src != '\0' && !IsWhitespace(*src)((*src)== ' ' || (*src) == '\t') && !IsNewline(*src)((*src) == '\n')) { | ||||
1668 | if (*src == '\\' && | ||||
1669 | (IsWhitespace(*(src+1))((*(src+1))== ' ' || (*(src+1)) == '\t') || IsNewline(*(src+1))((*(src+1)) == '\n'))) { | ||||
1670 | len = src - start; | ||||
1671 | if (len) { | ||||
1672 | /* copy preceeding part of token */ | ||||
1673 | memcpy(dst, start, len); | ||||
1674 | dst += len; | ||||
1675 | } | ||||
1676 | /* skip backslash */ | ||||
1677 | src++; | ||||
1678 | /* next part of token starts at whitespace */ | ||||
1679 | start = src; | ||||
1680 | } | ||||
1681 | src++; | ||||
1682 | } | ||||
1683 | len = src - start; | ||||
1684 | if (len) { | ||||
1685 | /* copy last part of token */ | ||||
1686 | memcpy(dst, start, len); | ||||
1687 | dst += len; | ||||
1688 | } | ||||
1689 | *dst = '\0'; | ||||
1690 | if (*src != '\0') | ||||
1691 | dst++; | ||||
1692 | } | ||||
1693 | |||||
1694 | ptr = strarray = (String*) __XtMalloc((Cardinal)(tokens+1) * sizeof(String)); | ||||
1695 | src = dst_str; | ||||
1696 | while (--tokens >= 0) { | ||||
1697 | *ptr = src; | ||||
1698 | ptr++; | ||||
1699 | if (tokens) { | ||||
1700 | len = strlen(src); | ||||
1701 | src = src + len + 1; | ||||
1702 | } | ||||
1703 | } | ||||
1704 | *ptr = NULL((void*)0); | ||||
1705 | |||||
1706 | *closure_ret = (XtPointer) strarray; | ||||
1707 | donestr(char**, strarray, XtRCommandArgArray){ if (toVal->addr != ((void*)0)) { if (toVal->size < sizeof(char**)) { toVal->size = sizeof(char**); XtDisplayStringConversionWarning (dpy, (char*) fromVal->addr, ((char*)&XtStrings[2128]) ); return 0; } *(char***)(toVal->addr) = (strarray); } else { static char** static_val; static_val = (strarray); toVal-> addr = (XPointer)&static_val; } toVal->size = sizeof(char **); return 1; } | ||||
1708 | } | ||||
1709 | |||||
1710 | /*ARGSUSED*/ | ||||
1711 | static void ArgArrayDestructor( | ||||
1712 | XtAppContext app, | ||||
1713 | XrmValuePtr toVal, | ||||
1714 | XtPointer closure, | ||||
1715 | XrmValuePtr args, | ||||
1716 | Cardinal *num_args) | ||||
1717 | { | ||||
1718 | String *strarray; | ||||
1719 | |||||
1720 | if (closure) { | ||||
1721 | strarray = (String*) closure; | ||||
1722 | XtFree(*strarray); | ||||
1723 | XtFree((char *) strarray); | ||||
1724 | } | ||||
1725 | } | ||||
1726 | |||||
1727 | /*ARGSUSED*/ | ||||
1728 | Boolean XtCvtStringToGravity ( | ||||
1729 | Display* dpy, | ||||
1730 | XrmValuePtr args, | ||||
1731 | Cardinal *num_args, | ||||
1732 | XrmValuePtr fromVal, | ||||
1733 | XrmValuePtr toVal, | ||||
1734 | XtPointer *closure_ret) | ||||
1735 | { | ||||
1736 | static struct _namepair { | ||||
1737 | XrmQuark quark; | ||||
1738 | const char *name; | ||||
1739 | int gravity; | ||||
1740 | } names[] = { | ||||
1741 | { NULLQUARK((XrmQuark) 0), "forget", ForgetGravity0 }, | ||||
1742 | { NULLQUARK((XrmQuark) 0), "northwest", NorthWestGravity1 }, | ||||
1743 | { NULLQUARK((XrmQuark) 0), "north", NorthGravity2 }, | ||||
1744 | { NULLQUARK((XrmQuark) 0), "northeast", NorthEastGravity3 }, | ||||
1745 | { NULLQUARK((XrmQuark) 0), "west", WestGravity4 }, | ||||
1746 | { NULLQUARK((XrmQuark) 0), "center", CenterGravity5 }, | ||||
1747 | { NULLQUARK((XrmQuark) 0), "east", EastGravity6 }, | ||||
1748 | { NULLQUARK((XrmQuark) 0), "southwest", SouthWestGravity7 }, | ||||
1749 | { NULLQUARK((XrmQuark) 0), "south", SouthGravity8 }, | ||||
1750 | { NULLQUARK((XrmQuark) 0), "southeast", SouthEastGravity9 }, | ||||
1751 | { NULLQUARK((XrmQuark) 0), "static", StaticGravity10 }, | ||||
1752 | { NULLQUARK((XrmQuark) 0), "unmap", UnmapGravity0 }, | ||||
1753 | { NULLQUARK((XrmQuark) 0), "0", ForgetGravity0 }, | ||||
1754 | { NULLQUARK((XrmQuark) 0), "1", NorthWestGravity1 }, | ||||
1755 | { NULLQUARK((XrmQuark) 0), "2", NorthGravity2 }, | ||||
1756 | { NULLQUARK((XrmQuark) 0), "3", NorthEastGravity3 }, | ||||
1757 | { NULLQUARK((XrmQuark) 0), "4", WestGravity4 }, | ||||
1758 | { NULLQUARK((XrmQuark) 0), "5", CenterGravity5 }, | ||||
1759 | { NULLQUARK((XrmQuark) 0), "6", EastGravity6 }, | ||||
1760 | { NULLQUARK((XrmQuark) 0), "7", SouthWestGravity7 }, | ||||
1761 | { NULLQUARK((XrmQuark) 0), "8", SouthGravity8 }, | ||||
1762 | { NULLQUARK((XrmQuark) 0), "9", SouthEastGravity9 }, | ||||
1763 | { NULLQUARK((XrmQuark) 0), "10", StaticGravity10 }, | ||||
1764 | { NULLQUARK((XrmQuark) 0), NULL((void*)0), ForgetGravity0 } | ||||
1765 | }; | ||||
1766 | static Boolean haveQuarks = FALSE0; | ||||
1767 | char lowerName[40]; | ||||
1768 | XrmQuark q; | ||||
1769 | char *s; | ||||
1770 | struct _namepair *np; | ||||
1771 | |||||
1772 | if (*num_args != 0) { | ||||
1773 | XtAppWarningMsg(XtDisplayToApplicationContext (dpy), | ||||
1774 | "wrongParameters","cvtStringToGravity","XtToolkitError", | ||||
1775 | "String to Gravity conversion needs no extra arguments", | ||||
1776 | (String *) NULL((void*)0), (Cardinal *)NULL((void*)0)); | ||||
1777 | return False0; | ||||
1778 | } | ||||
1779 | if (!haveQuarks) { | ||||
1780 | for (np = names; np->name; np++) { | ||||
1781 | np->quark = XrmPermStringToQuark (np->name); | ||||
1782 | } | ||||
1783 | haveQuarks = TRUE1; | ||||
1784 | } | ||||
1785 | s = (char *) fromVal->addr; | ||||
1786 | if (strlen(s) < sizeof lowerName) { | ||||
1787 | CopyISOLatin1Lowered (lowerName, s); | ||||
1788 | q = XrmStringToQuark (lowerName); | ||||
1789 | for (np = names; np->name; np++) | ||||
1790 | if (np->quark == q) donestr(int, np->gravity, XtRGravity){ if (toVal->addr != ((void*)0)) { if (toVal->size < sizeof(int)) { toVal->size = sizeof(int); XtDisplayStringConversionWarning (dpy, (char*) fromVal->addr, ((char*)&XtStrings[2042]) ); return 0; } *(int*)(toVal->addr) = (np->gravity); } else { static int static_val; static_val = (np->gravity); toVal ->addr = (XPointer)&static_val; } toVal->size = sizeof (int); return 1; }; | ||||
1791 | } | ||||
1792 | XtDisplayStringConversionWarning(dpy, (char *)fromVal->addr, XtRGravity((char*)&XtStrings[2042])); | ||||
1793 | return False0; | ||||
1794 | } | ||||
1795 | |||||
1796 | void _XtAddDefaultConverters( | ||||
1797 | ConverterTable table) | ||||
1798 | { | ||||
1799 | #define Add(from, to, proc, convert_args, num_args, cache)_XtTableAddConverter(table, from, to, proc, (XtConvertArgList ) convert_args, (Cardinal)num_args, 1, cache, (XtDestructor)( (void*)0), 1) \ | ||||
1800 | _XtTableAddConverter(table, from, to, proc, \ | ||||
1801 | (XtConvertArgList) convert_args, (Cardinal)num_args, \ | ||||
1802 | True1, cache, (XtDestructor)NULL((void*)0), True1) | ||||
1803 | |||||
1804 | #define Add2(from, to, proc, convert_args, num_args, cache, destructor)_XtTableAddConverter(table, from, to, proc, (XtConvertArgList ) convert_args, (Cardinal)num_args, 1, cache, destructor, 1) \ | ||||
1805 | _XtTableAddConverter(table, from, to, proc, \ | ||||
1806 | (XtConvertArgList) convert_args, (Cardinal)num_args, \ | ||||
1807 | True1, cache, destructor, True1) | ||||
1808 | |||||
1809 | Add(XtQColor, XtQPixel, XtCvtColorToPixel, NULL, 0, XtCacheNone)_XtTableAddConverter(table, XtQColor, XtQPixel, XtCvtColorToPixel , (XtConvertArgList) ((void*)0), (Cardinal)0, 1, 0x001, (XtDestructor )((void*)0), 1); | ||||
1810 | |||||
1811 | Add(XtQInt, XtQBool, XtCvtIntToBool, NULL, 0, XtCacheNone)_XtTableAddConverter(table, XtQInt, XtQBool, XtCvtIntToBool, ( XtConvertArgList) ((void*)0), (Cardinal)0, 1, 0x001, (XtDestructor )((void*)0), 1); | ||||
1812 | Add(XtQInt, XtQBoolean, XtCvtIntToBoolean, NULL, 0, XtCacheNone)_XtTableAddConverter(table, XtQInt, XtQBoolean, XtCvtIntToBoolean , (XtConvertArgList) ((void*)0), (Cardinal)0, 1, 0x001, (XtDestructor )((void*)0), 1); | ||||
1813 | Add(XtQInt, XtQColor, XtCvtIntToColor,_XtTableAddConverter(table, XtQInt, XtQColor, XtCvtIntToColor , (XtConvertArgList) colorConvertArgs, (Cardinal)((Cardinal) ( sizeof(colorConvertArgs) / sizeof(colorConvertArgs[0]))), 1, 0x003 , (XtDestructor)((void*)0), 1) | ||||
1814 | colorConvertArgs, XtNumber(colorConvertArgs), XtCacheByDisplay)_XtTableAddConverter(table, XtQInt, XtQColor, XtCvtIntToColor , (XtConvertArgList) colorConvertArgs, (Cardinal)((Cardinal) ( sizeof(colorConvertArgs) / sizeof(colorConvertArgs[0]))), 1, 0x003 , (XtDestructor)((void*)0), 1); | ||||
1815 | Add(XtQInt, XtQDimension, XtCvtIntToShort, NULL, 0, XtCacheNone)_XtTableAddConverter(table, XtQInt, XtQDimension, XtCvtIntToShort , (XtConvertArgList) ((void*)0), (Cardinal)0, 1, 0x001, (XtDestructor )((void*)0), 1); | ||||
1816 | Add(XtQInt, XtQFloat, XtCvtIntToFloat, NULL, 0, XtCacheNone)_XtTableAddConverter(table, XtQInt, XrmPermStringToQuark(((char *)&XtStrings[1655])), XtCvtIntToFloat, (XtConvertArgList) ((void*)0), (Cardinal)0, 1, 0x001, (XtDestructor)((void*)0), 1); | ||||
1817 | Add(XtQInt, XtQFont, XtCvtIntToFont, NULL, 0, XtCacheNone)_XtTableAddConverter(table, XtQInt, XtQFont, XtCvtIntToFont, ( XtConvertArgList) ((void*)0), (Cardinal)0, 1, 0x001, (XtDestructor )((void*)0), 1); | ||||
1818 | Add(XtQInt, XtQPixel, XtCvtIntToPixel, NULL, 0, XtCacheNone)_XtTableAddConverter(table, XtQInt, XtQPixel, XtCvtIntToPixel , (XtConvertArgList) ((void*)0), (Cardinal)0, 1, 0x001, (XtDestructor )((void*)0), 1); | ||||
1819 | Add(XtQInt, XtQPixmap, XtCvtIntToPixmap, NULL, 0, XtCacheNone)_XtTableAddConverter(table, XtQInt, XrmPermStringToQuark(((char *)&XtStrings[1760])), XtCvtIntToPixmap, (XtConvertArgList ) ((void*)0), (Cardinal)0, 1, 0x001, (XtDestructor)((void*)0) , 1); | ||||
1820 | Add(XtQInt, XtQPosition, XtCvtIntToShort, NULL, 0, XtCacheNone)_XtTableAddConverter(table, XtQInt, XtQPosition, XtCvtIntToShort , (XtConvertArgList) ((void*)0), (Cardinal)0, 1, 0x001, (XtDestructor )((void*)0), 1); | ||||
1821 | Add(XtQInt, XtQShort, XtCvtIntToShort, NULL, 0, XtCacheNone)_XtTableAddConverter(table, XtQInt, XrmPermStringToQuark(((char *)&XtStrings[1791])), XtCvtIntToShort, (XtConvertArgList) ((void*)0), (Cardinal)0, 1, 0x001, (XtDestructor)((void*)0), 1); | ||||
1822 | Add(XtQInt, XtQUnsignedChar,XtCvtIntToUnsignedChar,NULL, 0, XtCacheNone)_XtTableAddConverter(table, XtQInt, XrmPermStringToQuark(((char *)&XtStrings[1828])), XtCvtIntToUnsignedChar, (XtConvertArgList ) ((void*)0), (Cardinal)0, 1, 0x001, (XtDestructor)((void*)0) , 1); | ||||
1823 | |||||
1824 | Add(XtQPixel, XtQColor, XtCvtIntToColor,_XtTableAddConverter(table, XtQPixel, XtQColor, XtCvtIntToColor , (XtConvertArgList) colorConvertArgs, (Cardinal)((Cardinal) ( sizeof(colorConvertArgs) / sizeof(colorConvertArgs[0]))), 1, 0x003 , (XtDestructor)((void*)0), 1) | ||||
1825 | colorConvertArgs, XtNumber(colorConvertArgs), XtCacheByDisplay)_XtTableAddConverter(table, XtQPixel, XtQColor, XtCvtIntToColor , (XtConvertArgList) colorConvertArgs, (Cardinal)((Cardinal) ( sizeof(colorConvertArgs) / sizeof(colorConvertArgs[0]))), 1, 0x003 , (XtDestructor)((void*)0), 1); | ||||
1826 | |||||
1827 | Add(_XtQString, XtQAtom, XtCvtStringToAtom,_XtTableAddConverter(table, _XtQString, XrmPermStringToQuark( ((char*)&XtStrings[1544])), XtCvtStringToAtom, (XtConvertArgList ) displayConvertArg, (Cardinal)((Cardinal) (sizeof(displayConvertArg ) / sizeof(displayConvertArg[0]))), 1, 0x001, (XtDestructor)( (void*)0), 1) | ||||
1828 | displayConvertArg, XtNumber(displayConvertArg), XtCacheNone)_XtTableAddConverter(table, _XtQString, XrmPermStringToQuark( ((char*)&XtStrings[1544])), XtCvtStringToAtom, (XtConvertArgList ) displayConvertArg, (Cardinal)((Cardinal) (sizeof(displayConvertArg ) / sizeof(displayConvertArg[0]))), 1, 0x001, (XtDestructor)( (void*)0), 1); | ||||
1829 | Add(_XtQString, XtQBool, XtCvtStringToBool, NULL, 0, XtCacheNone)_XtTableAddConverter(table, _XtQString, XtQBool, XtCvtStringToBool , (XtConvertArgList) ((void*)0), (Cardinal)0, 1, 0x001, (XtDestructor )((void*)0), 1); | ||||
1830 | Add(_XtQString, XtQBoolean, XtCvtStringToBoolean, NULL, 0, XtCacheNone)_XtTableAddConverter(table, _XtQString, XtQBoolean, XtCvtStringToBoolean , (XtConvertArgList) ((void*)0), (Cardinal)0, 1, 0x001, (XtDestructor )((void*)0), 1); | ||||
1831 | Add2(_XtQString, XtQCommandArgArray, XtCvtStringToCommandArgArray,_XtTableAddConverter(table, _XtQString, XrmPermStringToQuark( ((char*)&XtStrings[2128])), XtCvtStringToCommandArgArray, (XtConvertArgList) ((void*)0), (Cardinal)0, 1, 0x001 | 0x100 , ArgArrayDestructor, 1) | ||||
1832 | NULL, 0, XtCacheNone | XtCacheRefCount, ArgArrayDestructor)_XtTableAddConverter(table, _XtQString, XrmPermStringToQuark( ((char*)&XtStrings[2128])), XtCvtStringToCommandArgArray, (XtConvertArgList) ((void*)0), (Cardinal)0, 1, 0x001 | 0x100 , ArgArrayDestructor, 1); | ||||
1833 | Add2(_XtQString, XtQCursor, XtCvtStringToCursor,_XtTableAddConverter(table, _XtQString, XrmPermStringToQuark( ((char*)&XtStrings[1611])), XtCvtStringToCursor, (XtConvertArgList ) displayConvertArg, (Cardinal)((Cardinal) (sizeof(displayConvertArg ) / sizeof(displayConvertArg[0]))), 1, 0x003, FreeCursor, 1) | ||||
1834 | displayConvertArg, XtNumber(displayConvertArg),_XtTableAddConverter(table, _XtQString, XrmPermStringToQuark( ((char*)&XtStrings[1611])), XtCvtStringToCursor, (XtConvertArgList ) displayConvertArg, (Cardinal)((Cardinal) (sizeof(displayConvertArg ) / sizeof(displayConvertArg[0]))), 1, 0x003, FreeCursor, 1) | ||||
1835 | XtCacheByDisplay, FreeCursor)_XtTableAddConverter(table, _XtQString, XrmPermStringToQuark( ((char*)&XtStrings[1611])), XtCvtStringToCursor, (XtConvertArgList ) displayConvertArg, (Cardinal)((Cardinal) (sizeof(displayConvertArg ) / sizeof(displayConvertArg[0]))), 1, 0x003, FreeCursor, 1); | ||||
1836 | Add(_XtQString, XtQDimension, XtCvtStringToDimension,NULL, 0, XtCacheNone)_XtTableAddConverter(table, _XtQString, XtQDimension, XtCvtStringToDimension , (XtConvertArgList) ((void*)0), (Cardinal)0, 1, 0x001, (XtDestructor )((void*)0), 1); | ||||
1837 | Add2(_XtQString, XtQDirectoryString, XtCvtStringToDirectoryString, NULL, 0,_XtTableAddConverter(table, _XtQString, XrmPermStringToQuark( ((char*)&XtStrings[2144])), XtCvtStringToDirectoryString, (XtConvertArgList) ((void*)0), (Cardinal)0, 1, 0x001 | 0x100 , FreeDirectoryString, 1) | ||||
1838 | XtCacheNone | XtCacheRefCount, FreeDirectoryString)_XtTableAddConverter(table, _XtQString, XrmPermStringToQuark( ((char*)&XtStrings[2144])), XtCvtStringToDirectoryString, (XtConvertArgList) ((void*)0), (Cardinal)0, 1, 0x001 | 0x100 , FreeDirectoryString, 1); | ||||
1839 | Add(_XtQString, XtQDisplay, XtCvtStringToDisplay, NULL, 0, XtCacheAll)_XtTableAddConverter(table, _XtQString, XrmPermStringToQuark( ((char*)&XtStrings[1628])), XtCvtStringToDisplay, (XtConvertArgList ) ((void*)0), (Cardinal)0, 1, 0x002, (XtDestructor)((void*)0) , 1); | ||||
1840 | Add2(_XtQString, XtQFile, XtCvtStringToFile, NULL, 0,_XtTableAddConverter(table, _XtQString, XrmPermStringToQuark( ((char*)&XtStrings[1650])), XtCvtStringToFile, (XtConvertArgList ) ((void*)0), (Cardinal)0, 1, 0x002 | 0x100, FreeFile, 1) | ||||
1841 | XtCacheAll | XtCacheRefCount, FreeFile)_XtTableAddConverter(table, _XtQString, XrmPermStringToQuark( ((char*)&XtStrings[1650])), XtCvtStringToFile, (XtConvertArgList ) ((void*)0), (Cardinal)0, 1, 0x002 | 0x100, FreeFile, 1); | ||||
1842 | Add(_XtQString, XtQFloat, XtCvtStringToFloat, NULL, 0, XtCacheNone)_XtTableAddConverter(table, _XtQString, XrmPermStringToQuark( ((char*)&XtStrings[1655])), XtCvtStringToFloat, (XtConvertArgList ) ((void*)0), (Cardinal)0, 1, 0x001, (XtDestructor)((void*)0) , 1); | ||||
1843 | |||||
1844 | Add2(_XtQString, XtQFont, XtCvtStringToFont,_XtTableAddConverter(table, _XtQString, XtQFont, XtCvtStringToFont , (XtConvertArgList) displayConvertArg, (Cardinal)((Cardinal) (sizeof(displayConvertArg) / sizeof(displayConvertArg[0]))), 1, 0x003, FreeFont, 1) | ||||
1845 | displayConvertArg, XtNumber(displayConvertArg),_XtTableAddConverter(table, _XtQString, XtQFont, XtCvtStringToFont , (XtConvertArgList) displayConvertArg, (Cardinal)((Cardinal) (sizeof(displayConvertArg) / sizeof(displayConvertArg[0]))), 1, 0x003, FreeFont, 1) | ||||
1846 | XtCacheByDisplay, FreeFont)_XtTableAddConverter(table, _XtQString, XtQFont, XtCvtStringToFont , (XtConvertArgList) displayConvertArg, (Cardinal)((Cardinal) (sizeof(displayConvertArg) / sizeof(displayConvertArg[0]))), 1, 0x003, FreeFont, 1); | ||||
1847 | Add2(_XtQString, XtQFontSet, XtCvtStringToFontSet,_XtTableAddConverter(table, _XtQString, XtQFontSet, XtCvtStringToFontSet , (XtConvertArgList) localeDisplayConvertArgs, (Cardinal)((Cardinal ) (sizeof(localeDisplayConvertArgs) / sizeof(localeDisplayConvertArgs [0]))), 1, 0x003, FreeFontSet, 1) | ||||
1848 | localeDisplayConvertArgs, XtNumber(localeDisplayConvertArgs),_XtTableAddConverter(table, _XtQString, XtQFontSet, XtCvtStringToFontSet , (XtConvertArgList) localeDisplayConvertArgs, (Cardinal)((Cardinal ) (sizeof(localeDisplayConvertArgs) / sizeof(localeDisplayConvertArgs [0]))), 1, 0x003, FreeFontSet, 1) | ||||
1849 | XtCacheByDisplay, FreeFontSet)_XtTableAddConverter(table, _XtQString, XtQFontSet, XtCvtStringToFontSet , (XtConvertArgList) localeDisplayConvertArgs, (Cardinal)((Cardinal ) (sizeof(localeDisplayConvertArgs) / sizeof(localeDisplayConvertArgs [0]))), 1, 0x003, FreeFontSet, 1); | ||||
1850 | Add2(_XtQString, XtQFontStruct,XtCvtStringToFontStruct,_XtTableAddConverter(table, _XtQString, XtQFontStruct, XtCvtStringToFontStruct , (XtConvertArgList) displayConvertArg, (Cardinal)((Cardinal) (sizeof(displayConvertArg) / sizeof(displayConvertArg[0]))), 1, 0x003, FreeFontStruct, 1) | ||||
1851 | displayConvertArg, XtNumber(displayConvertArg),_XtTableAddConverter(table, _XtQString, XtQFontStruct, XtCvtStringToFontStruct , (XtConvertArgList) displayConvertArg, (Cardinal)((Cardinal) (sizeof(displayConvertArg) / sizeof(displayConvertArg[0]))), 1, 0x003, FreeFontStruct, 1) | ||||
1852 | XtCacheByDisplay, FreeFontStruct)_XtTableAddConverter(table, _XtQString, XtQFontStruct, XtCvtStringToFontStruct , (XtConvertArgList) displayConvertArg, (Cardinal)((Cardinal) (sizeof(displayConvertArg) / sizeof(displayConvertArg[0]))), 1, 0x003, FreeFontStruct, 1); | ||||
1853 | |||||
1854 | Add(_XtQString, XtQGravity, XtCvtStringToGravity, NULL, 0, XtCacheNone)_XtTableAddConverter(table, _XtQString, XtQGravity, XtCvtStringToGravity , (XtConvertArgList) ((void*)0), (Cardinal)0, 1, 0x001, (XtDestructor )((void*)0), 1); | ||||
1855 | Add(_XtQString, XtQInitialState, XtCvtStringToInitialState, NULL, 0,_XtTableAddConverter(table, _XtQString, XrmPermStringToQuark( ((char*)&XtStrings[1705])), XtCvtStringToInitialState, (XtConvertArgList ) ((void*)0), (Cardinal)0, 1, 0x001, (XtDestructor)((void*)0) , 1) | ||||
1856 | XtCacheNone)_XtTableAddConverter(table, _XtQString, XrmPermStringToQuark( ((char*)&XtStrings[1705])), XtCvtStringToInitialState, (XtConvertArgList ) ((void*)0), (Cardinal)0, 1, 0x001, (XtDestructor)((void*)0) , 1); | ||||
1857 | Add(_XtQString, XtQInt, XtCvtStringToInt, NULL, 0, XtCacheAll)_XtTableAddConverter(table, _XtQString, XtQInt, XtCvtStringToInt , (XtConvertArgList) ((void*)0), (Cardinal)0, 1, 0x002, (XtDestructor )((void*)0), 1); | ||||
1858 | Add2(_XtQString, XtQPixel, XtCvtStringToPixel,_XtTableAddConverter(table, _XtQString, XtQPixel, XtCvtStringToPixel , (XtConvertArgList) colorConvertArgs, (Cardinal)((Cardinal) ( sizeof(colorConvertArgs) / sizeof(colorConvertArgs[0]))), 1, 0x003 , FreePixel, 1) | ||||
1859 | colorConvertArgs, XtNumber(colorConvertArgs),_XtTableAddConverter(table, _XtQString, XtQPixel, XtCvtStringToPixel , (XtConvertArgList) colorConvertArgs, (Cardinal)((Cardinal) ( sizeof(colorConvertArgs) / sizeof(colorConvertArgs[0]))), 1, 0x003 , FreePixel, 1) | ||||
1860 | XtCacheByDisplay, FreePixel)_XtTableAddConverter(table, _XtQString, XtQPixel, XtCvtStringToPixel , (XtConvertArgList) colorConvertArgs, (Cardinal)((Cardinal) ( sizeof(colorConvertArgs) / sizeof(colorConvertArgs[0]))), 1, 0x003 , FreePixel, 1); | ||||
1861 | Add(_XtQString, XtQPosition, XtCvtStringToShort, NULL, 0, XtCacheAll)_XtTableAddConverter(table, _XtQString, XtQPosition, XtCvtStringToShort , (XtConvertArgList) ((void*)0), (Cardinal)0, 1, 0x002, (XtDestructor )((void*)0), 1); | ||||
1862 | Add(_XtQString, XtQRestartStyle, XtCvtStringToRestartStyle, NULL, 0,_XtTableAddConverter(table, _XtQString, XrmPermStringToQuark( ((char*)&XtStrings[2177])), XtCvtStringToRestartStyle, (XtConvertArgList ) ((void*)0), (Cardinal)0, 1, 0x001, (XtDestructor)((void*)0) , 1) | ||||
1863 | XtCacheNone)_XtTableAddConverter(table, _XtQString, XrmPermStringToQuark( ((char*)&XtStrings[2177])), XtCvtStringToRestartStyle, (XtConvertArgList ) ((void*)0), (Cardinal)0, 1, 0x001, (XtDestructor)((void*)0) , 1); | ||||
1864 | Add(_XtQString, XtQShort, XtCvtStringToShort, NULL, 0, XtCacheAll)_XtTableAddConverter(table, _XtQString, XrmPermStringToQuark( ((char*)&XtStrings[1791])), XtCvtStringToShort, (XtConvertArgList ) ((void*)0), (Cardinal)0, 1, 0x002, (XtDestructor)((void*)0) , 1); | ||||
1865 | Add(_XtQString, XtQUnsignedChar, XtCvtStringToUnsignedChar,_XtTableAddConverter(table, _XtQString, XrmPermStringToQuark( ((char*)&XtStrings[1828])), XtCvtStringToUnsignedChar, (XtConvertArgList ) ((void*)0), (Cardinal)0, 1, 0x002, (XtDestructor)((void*)0) , 1) | ||||
1866 | NULL, 0, XtCacheAll)_XtTableAddConverter(table, _XtQString, XrmPermStringToQuark( ((char*)&XtStrings[1828])), XtCvtStringToUnsignedChar, (XtConvertArgList ) ((void*)0), (Cardinal)0, 1, 0x002, (XtDestructor)((void*)0) , 1); | ||||
1867 | Add2(_XtQString, XtQVisual, XtCvtStringToVisual,_XtTableAddConverter(table, _XtQString, XrmPermStringToQuark( ((char*)&XtStrings[1858])), XtCvtStringToVisual, (XtConvertArgList ) visualConvertArgs, (Cardinal)((Cardinal) (sizeof(visualConvertArgs ) / sizeof(visualConvertArgs[0]))), 1, 0x003, ((void*)0), 1) | ||||
1868 | visualConvertArgs, XtNumber(visualConvertArgs),_XtTableAddConverter(table, _XtQString, XrmPermStringToQuark( ((char*)&XtStrings[1858])), XtCvtStringToVisual, (XtConvertArgList ) visualConvertArgs, (Cardinal)((Cardinal) (sizeof(visualConvertArgs ) / sizeof(visualConvertArgs[0]))), 1, 0x003, ((void*)0), 1) | ||||
1869 | XtCacheByDisplay, NULL)_XtTableAddConverter(table, _XtQString, XrmPermStringToQuark( ((char*)&XtStrings[1858])), XtCvtStringToVisual, (XtConvertArgList ) visualConvertArgs, (Cardinal)((Cardinal) (sizeof(visualConvertArgs ) / sizeof(visualConvertArgs[0]))), 1, 0x003, ((void*)0), 1); | ||||
1870 | |||||
1871 | _XtAddTMConverters(table); | ||||
1872 | } |