comparison src/lrecord.h @ 793:e38acbeb1cae

[xemacs-hg @ 2002-03-29 04:46:17 by ben] lots o' fixes etc/ChangeLog: New file. Separated out all entries for etc/ into their own ChangeLog. Includes entries for the following files: etc/BABYL, etc/BETA, etc/CHARSETS, etc/DISTRIB, etc/Emacs.ad, etc/FTP, etc/GNUS-NEWS, etc/GOATS, etc/HELLO, etc/INSTALL, etc/MACHINES, etc/MAILINGLISTS, etc/MSDOS, etc/MYTHOLOGY, etc/NEWS, etc/OXYMORONS, etc/PACKAGES, etc/README, etc/TUTORIAL, etc/TUTORIAL.de, etc/TUTORIAL.ja, etc/TUTORIAL.ko, etc/TUTORIAL.se, etc/aliases.ksh, etc/altrasoft-logo.xpm, etc/check_cygwin_setup.sh, etc/custom/example-themes/europe-theme.el, etc/custom/example-themes/ex-custom-file, etc/custom/example-themes/example-theme.el, etc/e/eterm.ti, etc/edt-user.doc, etc/enriched.doc, etc/etags.1, etc/gnuserv.1, etc/gnuserv.README, etc/package-index.LATEST.gpg, etc/package-index.LATEST.pgp, etc/photos/jan.png, etc/recycle.xpm, etc/refcard.tex, etc/sample.Xdefaults, etc/sample.emacs, etc/sgml/CATALOG, etc/sgml/HTML32.dtd, etc/skk/SKK.tut.E, etc/smilies/Face_ase.xbm, etc/smilies/Face_ase2.xbm, etc/smilies/Face_ase3.xbm, etc/smilies/Face_smile.xbm, etc/smilies/Face_weep.xbm, etc/sounds, etc/toolbar, etc/toolbar/workshop-cap-up.xpm, etc/xemacs-ja.1, etc/xemacs.1, etc/yow.lines, etc\BETA, etc\NEWS, etc\README, etc\TUTORIAL, etc\TUTORIAL.de, etc\check_cygwin_setup.sh, etc\sample.init.el, etc\unicode\README, etc\unicode\mule-ucs\*, etc\unicode\other\* unicode/unicode-consortium/8859-16.TXT: New file. mule/english.el: Define this charset now, since a bug was fixed that formerly prevented it. mule/ethio-util.el: Fix compile errors involving Unicode `characters', which should be integers. Makefile.in.in: Always include gui.c, to fix compile error when TTY-only. EmacsFrame.c, abbrev.c, alloc.c, buffer.c, buffer.h, bytecode.c, bytecode.h, callint.c, callproc.c, casetab.c, casetab.h, charset.h, chartab.c, chartab.h, cmds.c, console-msw.c, console-msw.h, console-tty.c, console-x.c, console-x.h, console.c, console.h, data.c, database.c, device-gtk.c, device-msw.c, device-x.c, device.c, device.h, dialog-msw.c, doc.c, doprnt.c, dumper.c, dynarr.c, editfns.c, eldap.c, eldap.h, elhash.c, elhash.h, emacs.c, eval.c, event-Xt.c, event-gtk.c, event-msw.c, event-stream.c, event-tty.c, event-unixoid.c, events.c, events.h, extents.c, extents.h, faces.c, faces.h, file-coding.c, file-coding.h, fileio.c, filelock.c, fns.c, frame-gtk.c, frame-msw.c, frame-tty.c, frame-x.c, frame.c, frame.h, free-hook.c, general-slots.h, glyphs-eimage.c, glyphs-gtk.c, glyphs-msw.c, glyphs-widget.c, glyphs-x.c, glyphs.c, glyphs.h, gpmevent.c, gtk-xemacs.c, gui-msw.c, gui-x.c, gui-x.h, gui.c, gui.h, gutter.c, gutter.h, indent.c, input-method-xlib.c, insdel.c, keymap.c, keymap.h, lisp-disunion.h, lisp-union.h, lisp.h, lread.c, lrecord.h, lstream.c, lstream.h, marker.c, menubar-gtk.c, menubar-msw.c, menubar-x.c, menubar.c, minibuf.c, mule-canna.c, mule-ccl.c, mule-charset.c, mule-wnnfns.c, native-gtk-toolbar.c, objects-msw.c, objects-tty.c, objects-x.c, objects.c, objects.h, opaque.c, opaque.h, postgresql.c, postgresql.h, print.c, process-unix.c, process.c, process.h, rangetab.c, rangetab.h, redisplay-gtk.c, redisplay-msw.c, redisplay-output.c, redisplay-tty.c, redisplay-x.c, redisplay.c, scrollbar-gtk.c, scrollbar-msw.c, scrollbar-x.c, scrollbar.c, scrollbar.h, search.c, select-gtk.c, select-x.c, sound.c, specifier.c, specifier.h, strftime.c, symbols.c, symeval.h, syntax.h, text.c, text.h, toolbar-common.c, toolbar-msw.c, toolbar.c, toolbar.h, tooltalk.c, tooltalk.h, ui-gtk.c, ui-gtk.h, undo.c, vm-limit.c, window.c, window.h: Eliminate XSETFOO. Replace all usages with wrap_foo(). Make symbol->name a Lisp_Object, not Lisp_String *. Eliminate nearly all uses of Lisp_String * in favor of Lisp_Object, and correct macros so most of them favor Lisp_Object. Create new error-behavior ERROR_ME_DEBUG_WARN -- output warnings, but at level `debug' (usually ignored). Use it when instantiating specifiers, so problems can be debugged. Move log-warning-minimum-level into C so that we can optimize ERROR_ME_DEBUG_WARN. Fix warning levels consistent with new definitions. Add default_ and parent fields to char table; not yet implemented. New fun Dynarr_verify(); use for further error checking on Dynarrs. Rearrange code at top of lisp.h in conjunction with dynarr changes. Fix eifree(). Use Eistrings in various places (format_event_object(), where_is_to_char(), and callers thereof) to avoid fixed-size strings buffers. New fun write_eistring(). Reindent and fix GPM code to follow standards. Set default MS Windows font to Lucida Console (same size as Courier New but less interline spacing, so more lines fit). Increase default frame size on Windows to 50 lines. (If that's too big for the workspace, the frame will be shrunk as necessary.) Fix problem with text files with no newlines (). (Change `convert-eol' coding system to use `nil' for autodetect, consistent with make-coding-system.) Correct compile warnings in vm-limit.c. Fix handling of reverse-direction charsets to avoid errors when opening (e.g.) mule-ucs/lisp/reldata/uiso8859-6.el. Recode some object printing methods to use write_fmt_string() instead of a fixed buffer and sprintf. Turn on display of png comments as warnings (level `info'), now that they're unobtrusive. Revamped the sound documentation. Fixed bug in redisplay w.r.t. hscroll/truncation/continuation glyphs causing jumping up and down of the lines, since they're bigger than the line size. (It was seen most obviously when there's a horizontal scroll bar, e.g. do C-h a glyph or something like that.) The problem was that the glyph-contrib-p setting on glyphs was ignored even if it was set properly, which it wasn't until now.
author ben
date Fri, 29 Mar 2002 04:49:13 +0000
parents 026c5bf9c134
children a5954632b187
comparison
equal deleted inserted replaced
792:4e83fdb13eb9 793:e38acbeb1cae
615 1. Declare the struct for your object in a header file somewhere. 615 1. Declare the struct for your object in a header file somewhere.
616 Remember that it must begin with 616 Remember that it must begin with
617 617
618 struct lcrecord_header header; 618 struct lcrecord_header header;
619 619
620 2. Put the "standard junk" (DECLARE_RECORD()/XFOO/XSETFOO/etc.) below the 620 2. Put the "standard junk" (DECLARE_RECORD()/XFOO/etc.) below the
621 struct definition -- see below. 621 struct definition -- see below.
622 622
623 3. Add this header file to inline.c. 623 3. Add this header file to inline.c.
624 624
625 4. Create the methods for your object. Note that technically you don't 625 4. Create the methods for your object. Note that technically you don't
673 673
674 [[ the standard junk: ]] 674 [[ the standard junk: ]]
675 675
676 DECLARE_LRECORD (toolbar_button, struct toolbar_button); 676 DECLARE_LRECORD (toolbar_button, struct toolbar_button);
677 #define XTOOLBAR_BUTTON(x) XRECORD (x, toolbar_button, struct toolbar_button) 677 #define XTOOLBAR_BUTTON(x) XRECORD (x, toolbar_button, struct toolbar_button)
678 #define XSETTOOLBAR_BUTTON(x, p) XSETRECORD (x, p, toolbar_button)
679 #define wrap_toolbar_button(p) wrap_record (p, toolbar_button) 678 #define wrap_toolbar_button(p) wrap_record (p, toolbar_button)
680 #define TOOLBAR_BUTTONP(x) RECORDP (x, toolbar_button) 679 #define TOOLBAR_BUTTONP(x) RECORDP (x, toolbar_button)
681 #define CHECK_TOOLBAR_BUTTON(x) CHECK_RECORD (x, toolbar_button) 680 #define CHECK_TOOLBAR_BUTTON(x) CHECK_RECORD (x, toolbar_button)
682 #define CONCHECK_TOOLBAR_BUTTON(x) CONCHECK_RECORD (x, toolbar_button) 681 #define CONCHECK_TOOLBAR_BUTTON(x) CONCHECK_RECORD (x, toolbar_button)
683 682
789 # define XRECORD(x, c_name, structtype) \ 788 # define XRECORD(x, c_name, structtype) \
790 error_check_##c_name (x, __FILE__, __LINE__) 789 error_check_##c_name (x, __FILE__, __LINE__)
791 # define XNONRECORD(x, c_name, type_enum, structtype) \ 790 # define XNONRECORD(x, c_name, type_enum, structtype) \
792 error_check_##c_name (x, __FILE__, __LINE__) 791 error_check_##c_name (x, __FILE__, __LINE__)
793 792
794 # define XSETRECORD(var, p, c_name) do \
795 { \
796 XSETOBJ (var, p); \
797 assert (RECORD_TYPEP (var, lrecord_type_##c_name)); \
798 } while (0)
799
800 INLINE_HEADER Lisp_Object wrap_record_1 (void *ptr, enum lrecord_type ty, 793 INLINE_HEADER Lisp_Object wrap_record_1 (void *ptr, enum lrecord_type ty,
801 const char *file, int line); 794 const char *file, int line);
802 INLINE_HEADER Lisp_Object 795 INLINE_HEADER Lisp_Object
803 wrap_record_1 (void *ptr, enum lrecord_type ty, const char *file, int line) 796 wrap_record_1 (void *ptr, enum lrecord_type ty, const char *file, int line)
804 { 797 {
805 Lisp_Object obj; 798 Lisp_Object obj = wrap_pointer_1 (ptr);
806 XSETOBJ (obj, ptr); 799
807 assert_at_line (RECORD_TYPEP (obj, ty), file, line); 800 assert_at_line (RECORD_TYPEP (obj, ty), file, line);
808 return obj; 801 return obj;
809 } 802 }
810 803
811 #define wrap_record(ptr, ty) \ 804 #define wrap_record(ptr, ty) \
823 # define DECLARE_NONRECORD(c_name, type_enum, structtype) \ 816 # define DECLARE_NONRECORD(c_name, type_enum, structtype) \
824 extern Lisp_Object Q##c_name##p 817 extern Lisp_Object Q##c_name##p
825 # define XRECORD(x, c_name, structtype) ((structtype *) XPNTR (x)) 818 # define XRECORD(x, c_name, structtype) ((structtype *) XPNTR (x))
826 # define XNONRECORD(x, c_name, type_enum, structtype) \ 819 # define XNONRECORD(x, c_name, type_enum, structtype) \
827 ((structtype *) XPNTR (x)) 820 ((structtype *) XPNTR (x))
828 # define XSETRECORD(var, p, c_name) XSETOBJ (var, p)
829 /* wrap_pointer_1 is so named as a suggestion not to use it unless you 821 /* wrap_pointer_1 is so named as a suggestion not to use it unless you
830 know what you're doing. */ 822 know what you're doing. */
831 #define wrap_record(ptr, ty) wrap_pointer_1 (ptr) 823 #define wrap_record(ptr, ty) wrap_pointer_1 (ptr)
832 824
833 #endif /* not ERROR_CHECK_TYPECHECK */ 825 #endif /* not ERROR_CHECK_TYPECHECK */