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) \