Mercurial > hg > xemacs-beta
annotate lwlib/xlwscrollbarP.h @ 5142:f965e31a35f0
reduce lcrecord headers to 2 words, rename printing_unreadable_object
-------------------- ChangeLog entries follow: --------------------
man/ChangeLog addition:
2010-03-13 Ben Wing <ben@xemacs.org>
* internals/internals.texi (Working with Lisp Objects):
* internals/internals.texi (Writing Macros):
* internals/internals.texi (lrecords):
More rewriting to correspond with changes from
*LRECORD* to *LISP_OBJECT*.
modules/ChangeLog addition:
2010-03-13 Ben Wing <ben@xemacs.org>
* postgresql/postgresql.c (print_pgconn):
* postgresql/postgresql.c (print_pgresult):
printing_unreadable_object -> printing_unreadable_object_fmt.
2010-03-13 Ben Wing <ben@xemacs.org>
* ldap/eldap.c (print_ldap):
printing_unreadable_object -> printing_unreadable_object_fmt.
src/ChangeLog addition:
2010-03-13 Ben Wing <ben@xemacs.org>
* alloc.c (alloc_sized_lrecord_1):
* alloc.c (alloc_sized_lrecord_array):
* alloc.c (old_alloc_sized_lcrecord):
* alloc.c (disksave_object_finalization_1):
* alloc.c (mark_lcrecord_list):
* alloc.c (alloc_managed_lcrecord):
* alloc.c (free_managed_lcrecord):
* alloc.c (tick_lcrecord_stats):
* alloc.c (sweep_lcrecords_1):
* buffer.c (print_buffer):
* buffer.c (DEFVAR_BUFFER_LOCAL_1):
* casetab.c:
* casetab.c (print_case_table):
* console.c (print_console):
* console.c (DEFVAR_CONSOLE_LOCAL_1):
* data.c (print_weak_list):
* data.c (print_weak_box):
* data.c (print_ephemeron):
* data.c (ephemeron_equal):
* database.c (print_database):
* database.c (finalize_database):
* device-msw.c (sync_printer_with_devmode):
* device-msw.c (print_devmode):
* device-msw.c (finalize_devmode):
* device.c:
* device.c (print_device):
* elhash.c:
* elhash.c (print_hash_table):
* eval.c (print_subr):
* eval.c (print_multiple_value):
* event-stream.c (event_stream_resignal_wakeup):
* events.c (clear_event_resource):
* events.c (zero_event):
* events.c (print_event):
* extents.c:
* extents.c (print_extent):
* file-coding.c (print_coding_system):
* font-mgr.c:
* font-mgr.c (Ffc_init):
* frame.c:
* frame.c (print_frame):
* gc.c:
* gc.c (GC_CHECK_NOT_FREE):
* glyphs.c:
* glyphs.c (print_image_instance):
* glyphs.c (print_glyph):
* gui.c (print_gui_item):
* gui.c (copy_gui_item):
* keymap.c (print_keymap):
* keymap.c (MARKED_SLOT):
* lisp.h:
* lisp.h (struct Lisp_String):
* lisp.h (DEFUN):
* lisp.h (DEFUN_NORETURN):
* lrecord.h:
* lrecord.h (NORMAL_LISP_OBJECT_UID):
* lrecord.h (struct lrecord_header):
* lrecord.h (set_lheader_implementation):
* lrecord.h (struct old_lcrecord_header):
* lrecord.h (struct free_lcrecord_header):
* marker.c (print_marker):
* mule-charset.c:
* mule-charset.c (print_charset):
* objects.c (print_color_instance):
* objects.c (print_font_instance):
* objects.c (finalize_font_instance):
* print.c (print_cons):
* print.c (printing_unreadable_object_fmt):
* print.c (printing_unreadable_lisp_object):
* print.c (external_object_printer):
* print.c (internal_object_printer):
* print.c (debug_p4):
* print.c (ext_print_begin):
* process.c (print_process):
* rangetab.c (print_range_table):
* rangetab.c (range_table_equal):
* scrollbar.c (free_scrollbar_instance):
* specifier.c (print_specifier):
* specifier.c (finalize_specifier):
* symbols.c (guts_of_unbound_marker):
* symeval.h:
* symeval.h (DEFVAR_SYMVAL_FWD):
* tooltalk.c:
* tooltalk.c (print_tooltalk_message):
* tooltalk.c (print_tooltalk_pattern):
* ui-gtk.c (ffi_object_printer):
* ui-gtk.c (emacs_gtk_object_printer):
* ui-gtk.c (emacs_gtk_boxed_printer):
* window.c (print_window):
* window.c (free_window_mirror):
* window.c (debug_print_window):
* xemacs.def.in.in:
(1) printing_unreadable_object -> printing_unreadable_object_fmt.
(2) printing_unreadable_lcrecord -> printing_unreadable_lisp_object
and fix up so it no longer requires an lcrecord.
These previous changes eliminate most of the remaining places where
the terms `lcrecord' and `lrecord' occurred outside of specialized
code.
(3) Fairly major change: Reduce the number of words in an lcrecord
from 3 to 2. The third word consisted of a uid that duplicated the
lrecord uid, and a single free bit, which was moved into the lrecord
structure. This reduces the size of the `uid' slot from 21 bits to
20 bits. Arguably this isn't enough -- we could easily have more than
1,000,000 or so objects created in a session. The answer is
(a) It doesn't really matter if we overflow the uid field because
it's only used for debugging, to identify an object uniquely
(or pretty much so).
(b) If we cared about it overflowing and wanted to reduce this,
we could make it so that cons, string, float and certain other
frob-block types that never print out the uid simply don't
store a uid in them and don't increment the lrecord_uid_counter.
(4) In conjunction with (3), create new macro NORMAL_LISP_OBJECT_UID()
and use it to abstract out the differences between NEWGC and old-GC
in accessing the `uid' value from a "normal Lisp Object pointer".
(5) In events.c, use zero_nonsized_lisp_object() in place of custom-
written equivalent. In font-mgr.c use external_object_printer()
in place of custom-written equivalents.
author | Ben Wing <ben@xemacs.org> |
---|---|
date | Sat, 13 Mar 2010 05:38:08 -0600 |
parents | 3ecd8885ac67 |
children | ade4c7e2c6cb |
rev | line source |
---|---|
428 | 1 /* Implements a lightweight scrollbar widget. |
2 Copyright (C) 1992, 1993, 1994 Lucid, Inc. | |
3 | |
4 This file is part of the Lucid Widget Library. | |
5 | |
6 The Lucid Widget Library is free software; you can redistribute it and/or | |
7 modify it under the terms of the GNU General Public License as published by | |
8 the Free Software Foundation; either version 2, or (at your option) | |
9 any later version. | |
10 | |
11 The Lucid Widget Library is distributed in the hope that it will be useful, | |
12 but WITHOUT ANY WARRANTY; without even the implied warranty of | |
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
14 GNU General Public License for more details. | |
15 | |
16 You should have received a copy of the GNU General Public License | |
17 along with XEmacs; see the file COPYING. If not, write to | |
18 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, | |
19 Boston, MA 02111-1307, USA. */ | |
20 | |
21 /* Created by Douglas Keller <dkeller@vnet.ibm.com> */ | |
22 | |
23 #ifndef _XlwScrollBarP_h | |
24 #define _XlwScrollBarP_h | |
25 | |
26 | |
27 /* | |
28 ** Widget class | |
29 */ | |
30 typedef struct | |
31 { | |
32 int dummy_field; /* keep compiler happy */ | |
33 } XlwScrollBarClassPart; | |
34 | |
35 typedef struct _XlwScrollbarClassRec | |
36 { | |
37 CoreClassPart core_class; | |
38 XlwScrollBarClassPart scrollbar_class; | |
39 } XlwScrollBarClassRec; | |
40 | |
41 enum XlwScrollbarArm | |
42 { | |
43 ARM_NONE, | |
44 ARM_SLIDER, | |
45 ARM_UP, | |
46 ARM_DOWN, | |
47 ARM_PAGEUP, | |
48 ARM_PAGEDOWN | |
49 }; | |
50 | |
51 enum XlwScrollbarForcedScroll | |
52 { | |
53 FORCED_SCROLL_NONE, | |
54 FORCED_SCROLL_DOWNRIGHT, | |
55 FORCED_SCROLL_UPLEFT | |
56 }; | |
57 | |
58 /* | |
59 ** Widget instance | |
60 */ | |
61 typedef struct | |
62 { | |
63 /* resources */ | |
64 XtCallbackList valueChangedCBL; | |
65 XtCallbackList incrementCBL; | |
66 XtCallbackList decrementCBL; | |
67 XtCallbackList pageIncrementCBL; | |
68 XtCallbackList pageDecrementCBL; | |
69 XtCallbackList toTopCBL; | |
70 XtCallbackList toBottomCBL; | |
71 XtCallbackList dragCBL; | |
72 | |
73 Pixel foreground; | |
74 | |
75 Pixel topShadowColor; | |
76 Pixel bottomShadowColor; | |
77 | |
78 Pixel troughColor; | |
79 | |
80 Pixel armColor; | |
81 Pixel armTopShadowColor; | |
82 Pixel armBottomShadowColor; | |
83 | |
84 Pixmap topShadowPixmap; | |
85 Pixmap bottomShadowPixmap; | |
86 | |
87 int shadowThickness; | |
88 | |
89 Boolean showArrows; | |
90 | |
91 int minimum; | |
92 int maximum; | |
93 int sliderSize; | |
94 int value; | |
95 int pageIncrement; | |
96 int increment; | |
97 | |
98 int initialDelay; | |
99 int repeatDelay; | |
100 | |
101 unsigned char orientation; | |
102 | |
103 char *sliderStyle; | |
104 char *knobStyle; | |
105 char *arrowPosition; | |
106 | |
107 /* private */ | |
108 Pixmap grayPixmap; | |
109 | |
110 GC backgroundGC; | |
111 GC topShadowGC; | |
112 GC bottomShadowGC; | |
113 | |
114 int above, ss, below; | |
115 int lastY; | |
116 | |
117 enum XlwScrollbarArm armed; | |
118 | |
119 enum XlwScrollbarForcedScroll forced_scroll; | |
120 | |
121 int savedValue; | |
122 | |
123 Boolean fullRedrawNext; | |
124 | |
125 Boolean timerActive; | |
126 XtIntervalId timerId; | |
127 | |
128 } XlwScrollBarPart; | |
129 | |
130 typedef struct _XlwScrollBarRec | |
131 { | |
132 CorePart core; | |
133 XlwScrollBarPart sb; | |
134 } XlwScrollBarRec; | |
135 | |
136 #endif /* _XlwScrollBarP_h */ |