Mercurial > hg > xemacs-beta
diff src/device.h @ 272:c5d627a313b1 r21-0b34
Import from CVS: tag r21-0b34
author | cvs |
---|---|
date | Mon, 13 Aug 2007 10:28:48 +0200 |
parents | b2472a1930f2 |
children | 8626e4521993 |
line wrap: on
line diff
--- a/src/device.h Mon Aug 13 10:27:41 2007 +0200 +++ b/src/device.h Mon Aug 13 10:28:48 2007 +0200 @@ -222,28 +222,30 @@ #define CHECK_DEVICE(x) CHECK_RECORD (x, device) #define CONCHECK_DEVICE(x) CONCHECK_RECORD (x, device) -#define CHECK_LIVE_DEVICE(x) \ - do { CHECK_DEVICE (x); \ - if (! DEVICEP (x) \ - || ! DEVICE_LIVE_P (XDEVICE (x))) \ - dead_wrong_type_argument (Qdevice_live_p, (x)); } while (0) -#define CONCHECK_LIVE_DEVICE(x) \ - do { CONCHECK_DEVICE (x); \ - if (! DEVICEP (x) \ - || ! DEVICE_LIVE_P (XDEVICE (x))) \ - x = wrong_type_argument (Qdevice_live_p, (x)); } while (0) +#define CHECK_LIVE_DEVICE(x) do { \ + CHECK_DEVICE (x); \ + if (! DEVICE_LIVE_P (XDEVICE (x))) \ + dead_wrong_type_argument (Qdevice_live_p, (x)); \ +} while (0) +#define CONCHECK_LIVE_DEVICE(x) do { \ + CONCHECK_DEVICE (x); \ + if (! DEVICE_LIVE_P (XDEVICE (x))) \ + x = wrong_type_argument (Qdevice_live_p, (x)); \ +} while (0) #define DEVICE_TYPE_P(d, type) EQ (DEVICE_TYPE (d), Q##type) #ifdef ERROR_CHECK_TYPECHECK -MAC_DECLARE_EXTERN (struct device *, MTdevice_data) +INLINE struct device * +error_check_device_type (struct device *d, Lisp_Object sym); +INLINE struct device * +error_check_device_type (struct device *d, Lisp_Object sym) +{ + assert (EQ (DEVICE_TYPE (d), sym)); + return d; +} # define DEVICE_TYPE_DATA(d, type) \ -MAC_BEGIN \ - MAC_DECLARE (struct device *, MTdevice_data, d) \ - assert (DEVICE_TYPE_P (MTdevice_data, type)) \ - MAC_SEP \ - (struct type##_device *) MTdevice_data->device_data \ -MAC_END + ((struct type##_device *) (error_check_device_type (d, Q##type))->device_data) #else # define DEVICE_TYPE_DATA(d, type) \ ((struct type##_device *) (d)->device_data) @@ -288,13 +290,15 @@ #define DEVICE_WIN_P(dev) CONSOLE_TYPESYM_WIN_P (DEVICE_TYPE (dev)) -extern Lisp_Object Vdefault_device; -extern Lisp_Object Qdelete_device; -extern Lisp_Object Qdevice_live_p; +EXFUN (Fdevice_console, 1); +EXFUN (Fdevice_name, 1); +EXFUN (Fmake_device, 3); +EXFUN (Fselected_device, 1); +extern Lisp_Object Qcreate_device_hook, Qdelete_device_hook, Qgrayscale; +extern Lisp_Object Qinit_post_tty_win, Qmono, Vdefault_x_device; extern Lisp_Object Vdevice_class_list; -extern Lisp_Object Qcolor, Qgrayscale, Qmono; int valid_device_class_p (Lisp_Object class); #define DEVICE_LIVE_P(d) (!EQ (DEVICE_TYPE (d), Qdead)) @@ -321,51 +325,46 @@ #define DEVICE_ON_CONSOLE_P(d) ((d)->on_console_p) #define DEVICE_CONNECTED_TO_NAS_P(d) ((d)->connected_to_nas_p) -#define LOCK_DEVICE(d) do { (d)->locked = 1; } while (0) -#define UNLOCK_DEVICE(d) do { (d)->locked = 0; } while (0) +#define LOCK_DEVICE(d) ((void) ((d)->locked = 1)) +#define UNLOCK_DEVICE(d) ((void) ((d)->locked = 0)) #define INVALIDATE_DEVICE_PIXEL_TO_GLYPH_CACHE(d) \ - (d)->pixel_to_glyph_cache.valid = 0 + ((void) ((d)->pixel_to_glyph_cache.valid = 0)) #define INVALIDATE_PIXEL_TO_GLYPH_CACHE do { \ Lisp_Object _devcons_, _concons_; \ DEVICE_LOOP_NO_BREAK (_devcons_, _concons_) \ - INVALIDATE_DEVICE_PIXEL_TO_GLYPH_CACHE (XDEVICE (XCONS (_devcons_)->car));\ + INVALIDATE_DEVICE_PIXEL_TO_GLYPH_CACHE (XDEVICE (XCAR (_devcons_)));\ } while (0) -#define MARK_DEVICE_FACES_CHANGED(d) do { \ - faces_changed = 1; \ - (d)->faces_changed = 1; } while (0) +#define MARK_DEVICE_FACES_CHANGED(d) \ + ((void) (faces_changed = (d)->faces_changed = 1)) -#define MARK_DEVICE_GLYPHS_CHANGED(d) do { \ - glyphs_changed = 1; \ - (d)->glyphs_changed = 1; } while (0) +#define MARK_DEVICE_GLYPHS_CHANGED(d) \ + ((void) (glyphs_changed = (d)->glyphs_changed = 1)) -#define MARK_DEVICE_TOOLBARS_CHANGED(d) do { \ - toolbar_changed = 1; \ - (d)->toolbar_changed = 1; } while (0) +#define MARK_DEVICE_TOOLBARS_CHANGED(d) \ + ((void) (toolbar_changed = (d)->toolbar_changed = 1)) -#define MARK_DEVICE_SIZE_CHANGED(d) do { \ - size_changed = 1; \ - (d)->size_changed = 1; } while (0) +#define MARK_DEVICE_SIZE_CHANGED(d) \ + ((void) (size_changed = (d)->size_changed = 1)) -#define MARK_DEVICE_FRAMES_FACES_CHANGED(d) do { \ - Lisp_Object frmcons; \ - DEVICE_FRAME_LOOP (frmcons, d) \ - XFRAME (XCONS (frmcons)->car)->faces_changed = 1; \ - MARK_DEVICE_FACES_CHANGED (d); } while (0) +#define MARK_DEVICE_FRAMES_FACES_CHANGED(d) do { \ + struct device *mdffc_d = (d); \ + Lisp_Object frmcons; \ + DEVICE_FRAME_LOOP (frmcons, mdffc_d) \ + XFRAME (XCAR (frmcons))->faces_changed = 1; \ + MARK_DEVICE_FACES_CHANGED (mdffc_d); \ +} while (0) -#define MARK_DEVICE_FRAME_CHANGED(d) do { \ - frame_changed = 1; \ - (d)->frame_changed = 1; } while (0) +#define MARK_DEVICE_FRAME_CHANGED(d) \ + ((void) (frame_changed = (d)->frame_changed = 1)) -#define MARK_DEVICE_WINDOWS_CHANGED(d) do { \ - windows_changed = 1; \ - (d)->windows_changed = 1; } while (0) +#define MARK_DEVICE_WINDOWS_CHANGED(d) \ + ((void) (windows_changed = (d)->windows_changed = 1)) -#define MARK_DEVICE_WINDOWS_STRUCTURE_CHANGED(d) do { \ - windows_structure_changed = 1; \ - (d)->windows_structure_changed = 1; } while (0) +#define MARK_DEVICE_WINDOWS_STRUCTURE_CHANGED(d) \ + ((void) (windows_structure_changed = (d)->windows_structure_changed = 1)) /* This turns out to be used heavily so we make it a macro to make it inline. Also, the majority of the time the object will turn out to @@ -390,7 +389,6 @@ void select_device_1 (Lisp_Object); struct device *decode_device (Lisp_Object); -Lisp_Object make_device (struct device *d); void handle_asynch_device_change (void); void call_critical_lisp_code (struct device *d, Lisp_Object function, Lisp_Object object);