annotate lwlib/xlwgaugeP.h @ 5574:d4f334808463

Support inlining labels, bytecomp.el. lisp/ChangeLog addition: 2011-10-02 Aidan Kehoe <kehoea@parhasard.net> * bytecomp.el (byte-compile-initial-macro-environment): Add #'declare to this, so it doesn't need to rely on #'cl-compiling file to determine when we're byte-compiling. Update #'labels to support declaring labels inline, as Common Lisp requires. * bytecomp.el (byte-compile-function-form): Don't error if FUNCTION is quoting a non-lambda, non-symbol, just return it. * cl-extra.el (cl-macroexpand-all): If a label name has been quoted, expand to the label placeholder quoted with 'function. This allows the byte compiler to distinguish between uses of the placeholder as data and uses in contexts where it should be inlined. * cl-macs.el: * cl-macs.el (cl-do-proclaim): When proclaming something as inline, if it is bound as a label, don't modify the symbol's plist; instead, treat the first element of its placeholder constant vector as a place to store compile information. * cl-macs.el (declare): Leave processing declarations while compiling to the implementation of #'declare in byte-compile-initial-macro-environment. tests/ChangeLog addition: 2011-10-02 Aidan Kehoe <kehoea@parhasard.net> * automated/lisp-tests.el: * automated/lisp-tests.el (+): Test #'labels and inlining.
author Aidan Kehoe <kehoea@parhasard.net>
date Sun, 02 Oct 2011 15:32:16 +0100
parents 308d34e9f07d
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
424
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
1 /* Gauge Widget for XEmacs.
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
2 Copyright (C) 1999 Edward A. Falk
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
3
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
4 This file is part of XEmacs.
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
5
5402
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 442
diff changeset
6 XEmacs is free software: you can redistribute it and/or modify it
424
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
7 under the terms of the GNU General Public License as published by the
5402
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 442
diff changeset
8 Free Software Foundation, either version 3 of the License, or (at your
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 442
diff changeset
9 option) any later version.
424
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
10
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
11 XEmacs is distributed in the hope that it will be useful, but WITHOUT
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
12 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
13 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
14 for more details.
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
15
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
16 You should have received a copy of the GNU General Public License
5402
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 442
diff changeset
17 along with XEmacs. If not, see <http://www.gnu.org/licenses/>. */
424
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
18
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
19 /*
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
20 * GaugeP.h - Gauge widget
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
21 *
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
22 * Author: Edward A. Falk
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
23 * falk@falconer.vip.best.com
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
24 *
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
25 * Date: July 9, 1997
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
26 */
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
27
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
28 #ifndef _XawGaugeP_h
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
29 #define _XawGaugeP_h
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
30
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
31 /***********************************************************************
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
32 *
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
33 * Gauge Widget Private Data
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
34 *
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
35 * Gauge has little in common with the label widget, but can make use
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
36 * of some label resources, so is subclassed from label.
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
37 *
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
38 ***********************************************************************/
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
39
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
40 #include "xlwgauge.h"
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 434
diff changeset
41 #include ATHENA_LabelP_h_
424
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
42
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
43 /* New fields for the Gauge widget class record */
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
44
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
45 typedef struct {XtPointer extension;} GaugeClassPart;
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
46
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
47 /* Full class record declaration */
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
48 typedef struct _GaugeClassRec {
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
49 CoreClassPart core_class;
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
50 SimpleClassPart simple_class;
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
51 #ifdef _ThreeDP_h
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
52 ThreeDClassPart threeD_class;
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
53 #endif
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
54 LabelClassPart label_class;
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
55 GaugeClassPart gauge_class;
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
56 } GaugeClassRec;
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
57
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
58 extern GaugeClassRec gaugeClassRec;
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
59
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
60 /* New fields for the Gauge widget record */
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
61 typedef struct {
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
62 /* resources */
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
63 int value, v0,v1 ;
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
64 int ntics, nlabels ;
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
65 String *labels ;
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
66 XtOrientation orientation ;
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
67 Boolean autoScaleUp ; /* scales automatically */
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
68 Boolean autoScaleDown ; /* scales automatically */
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
69 int update ; /* update interval */
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
70 XtCallbackList getValue ; /* proc to call to fetch a point */
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
71
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
72 /* private state */
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
73 Dimension gmargin ; /* edges <-> gauge */
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
74 Dimension tmargin ; /* top (left) edge <-> tic marks */
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
75 Dimension lmargin ; /* tic marks <-> labels */
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
76 Dimension margin0 ; /* left/bottom margin */
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
77 Dimension margin1 ; /* right/top margin */
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
78 XtIntervalId intervalId ;
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
79 Atom selected ;
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
80 String selstr ; /* selection string, if any */
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
81 GC inverse_GC ;
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
82 } GaugePart;
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
83
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
84
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
85 /****************************************************************
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
86 *
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
87 * Full instance record declaration
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
88 *
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
89 ****************************************************************/
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
90
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
91 typedef struct _GaugeRec {
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
92 CorePart core;
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
93 SimplePart simple;
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
94 #ifdef _ThreeDP_h
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
95 ThreeDPart threeD;
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
96 #endif
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
97 LabelPart label;
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
98 GaugePart gauge;
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
99 } GaugeRec;
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
100
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
101 #endif /* _XawGaugeP_h */