Mercurial > hg > xemacs-beta
comparison src/device.h @ 442:abe6d1db359e r21-2-36
Import from CVS: tag r21-2-36
author | cvs |
---|---|
date | Mon, 13 Aug 2007 11:35:02 +0200 |
parents | 8de8e3f6228a |
children | 0784d089fdc9 |
comparison
equal
deleted
inserted
replaced
441:72a7cfa4a488 | 442:abe6d1db359e |
---|---|
218 }; | 218 }; |
219 | 219 |
220 DECLARE_LRECORD (device, struct device); | 220 DECLARE_LRECORD (device, struct device); |
221 #define XDEVICE(x) XRECORD (x, device, struct device) | 221 #define XDEVICE(x) XRECORD (x, device, struct device) |
222 #define XSETDEVICE(x, p) XSETRECORD (x, p, device) | 222 #define XSETDEVICE(x, p) XSETRECORD (x, p, device) |
223 #define wrap_device(p) wrap_object (p) | |
223 #define DEVICEP(x) RECORDP (x, device) | 224 #define DEVICEP(x) RECORDP (x, device) |
224 #define CHECK_DEVICE(x) CHECK_RECORD (x, device) | 225 #define CHECK_DEVICE(x) CHECK_RECORD (x, device) |
225 #define CONCHECK_DEVICE(x) CONCHECK_RECORD (x, device) | 226 #define CONCHECK_DEVICE(x) CONCHECK_RECORD (x, device) |
226 | 227 |
227 #define CHECK_LIVE_DEVICE(x) do { \ | 228 #define CHECK_LIVE_DEVICE(x) do { \ |
236 } while (0) | 237 } while (0) |
237 | 238 |
238 #define DEVICE_TYPE_P(d, type) EQ (DEVICE_TYPE (d), Q##type) | 239 #define DEVICE_TYPE_P(d, type) EQ (DEVICE_TYPE (d), Q##type) |
239 | 240 |
240 #ifdef ERROR_CHECK_TYPECHECK | 241 #ifdef ERROR_CHECK_TYPECHECK |
241 INLINE struct device * | 242 INLINE_HEADER struct device * |
242 error_check_device_type (struct device *d, Lisp_Object sym); | 243 error_check_device_type (struct device *d, Lisp_Object sym); |
243 INLINE struct device * | 244 INLINE_HEADER struct device * |
244 error_check_device_type (struct device *d, Lisp_Object sym) | 245 error_check_device_type (struct device *d, Lisp_Object sym) |
245 { | 246 { |
246 assert (EQ (DEVICE_TYPE (d), sym)); | 247 assert (EQ (DEVICE_TYPE (d), sym)); |
247 return d; | 248 return d; |
248 } | 249 } |
268 type))) \ | 269 type))) \ |
269 x = wrong_type_argument \ | 270 x = wrong_type_argument \ |
270 (type##_console_methods->predicate_symbol, x); \ | 271 (type##_console_methods->predicate_symbol, x); \ |
271 } while (0) | 272 } while (0) |
272 | 273 |
274 #define DEVICE_DISPLAY_P(dev) \ | |
275 (DEVICE_LIVE_P (dev) && \ | |
276 (MAYBE_INT_DEVMETH (dev, \ | |
277 device_implementation_flags, ()) \ | |
278 & XDEVIMPF_IS_A_PRINTER) ? 0 : 1) | |
279 | |
280 #define CHECK_DISPLAY_DEVICE(dev) \ | |
281 do { \ | |
282 CHECK_DEVICE (dev); \ | |
283 if (!(DEVICEP (dev) \ | |
284 && DEVICE_DISPLAY_P (XDEVICE (dev)))) \ | |
285 dead_wrong_type_argument (Qdisplay, dev); \ | |
286 } while (0) | |
287 | |
288 #define CONCHECK_DISPLAY_DEVICE(dev) \ | |
289 do { \ | |
290 CONCHECK_DEVICE (dev); \ | |
291 if (!(DEVICEP (dev) \ | |
292 && DEVICE_DISPLAY_P (XDEVICE (dev)))) \ | |
293 wrong_type_argument (Qdisplay, dev); \ | |
294 } while (0) | |
295 | |
296 #define DEVICE_PRINTER_P(dev) \ | |
297 (DEVICE_LIVE_P (dev) && !DEVICE_DISPLAY_P (dev)) | |
298 | |
299 #define CHECK_PRINTER_DEVICE(dev) \ | |
300 do { \ | |
301 CHECK_DEVICE (dev); \ | |
302 if (!(DEVICEP (dev) \ | |
303 && DEVICE_PRINTER_P (XDEVICE (dev)))) \ | |
304 dead_wrong_type_argument (Qprinter, dev); \ | |
305 } while (0) | |
306 | |
307 #define CONCHECK_PRINTER_DEVICE(dev) \ | |
308 do { \ | |
309 CONCHECK_DEVICE (dev); \ | |
310 if (!(DEVICEP (dev) \ | |
311 && DEVICE_PRINTER_P (XDEVICE (dev)))) \ | |
312 wrong_type_argument (Qprinter, dev); \ | |
313 } while (0) | |
314 | |
273 /* #### These should be in the device-*.h files but there are | 315 /* #### These should be in the device-*.h files but there are |
274 too many places where the abstraction is broken. Need to | 316 too many places where the abstraction is broken. Need to |
275 fix. */ | 317 fix. */ |
276 | 318 |
277 #define DEVICE_X_P(dev) CONSOLE_TYPESYM_X_P (DEVICE_TYPE (dev)) | 319 #define DEVICE_X_P(dev) CONSOLE_TYPESYM_X_P (DEVICE_TYPE (dev)) |
292 | 334 |
293 #define DEVICE_WIN_P(dev) CONSOLE_TYPESYM_WIN_P (DEVICE_TYPE (dev)) | 335 #define DEVICE_WIN_P(dev) CONSOLE_TYPESYM_WIN_P (DEVICE_TYPE (dev)) |
294 | 336 |
295 EXFUN (Fdevice_console, 1); | 337 EXFUN (Fdevice_console, 1); |
296 EXFUN (Fdevice_name, 1); | 338 EXFUN (Fdevice_name, 1); |
339 EXFUN (Ffind_device, 2); | |
297 EXFUN (Fmake_device, 3); | 340 EXFUN (Fmake_device, 3); |
298 EXFUN (Fselected_device, 1); | 341 EXFUN (Fselected_device, 1); |
299 | 342 |
300 extern Lisp_Object Qcreate_device_hook, Qdelete_device_hook, Qgrayscale; | 343 extern Lisp_Object Qcreate_device_hook, Qdelete_device_hook, Qgrayscale; |
301 extern Lisp_Object Qinit_post_tty_win, Qmono, Vdefault_x_device; | 344 extern Lisp_Object Qinit_post_tty_win, Qmono, Vdefault_x_device; |
383 ((void) (windows_changed = (d)->windows_changed = 1)) | 426 ((void) (windows_changed = (d)->windows_changed = 1)) |
384 | 427 |
385 #define MARK_DEVICE_WINDOWS_STRUCTURE_CHANGED(d) \ | 428 #define MARK_DEVICE_WINDOWS_STRUCTURE_CHANGED(d) \ |
386 ((void) (windows_structure_changed = (d)->windows_structure_changed = 1)) | 429 ((void) (windows_structure_changed = (d)->windows_structure_changed = 1)) |
387 | 430 |
431 /* #### unify this with DOMAIN_DEVICE once the latter has image instances | |
432 expunged from it. */ | |
388 /* This turns out to be used heavily so we make it a macro to make it | 433 /* This turns out to be used heavily so we make it a macro to make it |
389 inline. Also, the majority of the time the object will turn out to | 434 inline. Also, the majority of the time the object will turn out to |
390 be a window so we move it from being checked last to being checked | 435 be a window so we move it from being checked last to being checked |
391 first. */ | 436 first. */ |
392 #define DFW_DEVICE(obj) \ | 437 #define DFW_DEVICE(obj) \ |