1 /* XLISP-STAT 2.1 Copyright (c) 1990, by Luke Tierney */
2 /* Additions to Xlisp 2.1, Copyright (c) 1989 by David Michael Betz */
3 /* You may give out copies of this software; for conditions see the */
4 /* file COPYING included with this distribution. */
12 LVAL s_selecting
, s_brushing
, s_user
;
13 LVAL s_invisible
, s_normal
, s_hilited
, s_selected
, s_solid
, s_dashed
;
15 LVAL s_left
, s_center
, s_right
, s_top
, s_bottom
;
17 LVAL sk_allocate
, sk_dispose
, sk_resize
, sk_redraw
, sk_do_idle
,
18 sk_do_click
, sk_do_motion
,
19 sk_do_key
, sk_install
, sk_remove
, sk_update
, sk_select
,
20 sk_mark_points_in_rect
, sk_adjust_screen
,
21 s_hardware_address
, s_number_of_variables
, s_menu
,
22 sk_draw
, sk_redraw_background
, sk_clear_content
,
23 sk_redraw_content
, sk_redraw_overlays
,
24 sk_overlay_click
, sk_resize_overlays
, sk_new
,
25 s_histogram_proto
, sk_new_menu
, sk_add_points
, sk_add_lines
,
26 s_black_on_white
, sk_variable_labels
, s_variable_labels
,
27 s_scatterplot_proto
, sk_adjust_to_data
, sk_showing_labels
,
28 s_showing_labels
, sk_scale
, s_spin_proto
, s_scatmat_proto
,
29 s_name_list_proto
, s_depth_cuing
,
30 s_showing_axes
, sk_type
, s_dotword
,
31 s_title
, s_items
, s_id
, s_menu_list
, s_key
,
32 s_mark
, s_style
, s_action
, s_enabled
, s_menu_proto
, s_apple_menu_proto
,
33 s_menu_item_proto
, sk_do_action
, s_bold
, s_italic
, s_underline
,
34 s_outline
, s_shadow
, s_condense
, s_extend
,
35 sk_enabled
, s_type
, s_go_away
, s_default_button
,
36 s_text
, s_location
, s_size
, s_dialog
,
37 s_min_value
, s_max_value
, s_page_increment
, s_editable
,
38 s_list_data
, s_columns
, sk_scroll_action
, s_dialog_proto
, sk_go_away
,
39 s_dialog_item_proto
, s_button_item_proto
, s_toggle_item_proto
,
40 s_text_item_proto
, sk_editable
, s_choice_item_proto
, s_scroll_item_proto
,
41 sk_min_value
, sk_max_value
, sk_page_increment
, s_list_item_proto
,
42 sk_columns
, s_modeless
, s_modal
, s_hardware_objects
, s_bind_to_file
,
43 sk_clobber
, sk_own
, sk_print
, s_arrow
, sk_activate
, sk_close
, s_value
,
44 s_listener
, s_input_stream
,
45 sk_tolerance
, sk_max_iters
, sk_adjust_points_in_rect
, sk_adjust_screen_point
,
47 s_compound_data_proto
, sk_data_length
, sk_data_seq
, sk_make_data
,
49 s_machine_epsilon
, s_graph
, s_instance_slots
, s_proto_name
,
50 s_content_variables
, s_rotation_type
, s_rotation_angle
, s_rotation_controls
,
51 s_histogram_internals
, sk_adjust_depth_cuing
, sk_draw_axes
, s_mode_list
,
52 s_scale_type
, s_fixed
, s_variable
, sk_apply_transformation
,
53 sk_unselect_all_points
, s_set_slot_hook
, s_message_hook
, s_mouse_mode
,
54 s_has_h_scroll
, s_has_v_scroll
, s_fixed_aspect
, sk_width
, sk_color
,
55 sk_symbol
, s_multiple
, s_internals
, s_color_index
, s_cursor_index
,
56 s_symbol_index
, s_pitching
, s_rolling
, s_yawing
, sk_basis
,
57 sk_links
, sk_linked
, sk_show
, sk_show_window
, s_event_queue
, s_text_length
,
58 k_derivstep
, k_set_mode_cursor
, s_default_path
;
63 LVAL k_initial
, s_input_enabled
, s_istream
, s_ostream
;
65 #endif /* MACINTOSH */
67 LVAL s_window_id
, sk_fast_lines
, sk_fast_symbols
, sk_motion_sync
,
68 sk_do_clipping
, sk_use_icccm
, sk_wait_for_map
;
69 #endif /* X11WINDOWS */
71 LVAL s_dll_list
, s_msw_help_file
, k_context
, k_help
,
75 LVAL k_fortran
, k_libflags
, s_cfun_table
;
76 #endif /* FOREIGNCALL */
77 LVAL s_xls_major_release
, s_xls_minor_release
, s_xls_subminor_release
;
78 extern char *defaultpath
;
80 LVAL s_standard_division
;
82 /* forward declarations */
83 LOCAL VOID statfinit
_((void));
84 LOCAL VOID init_color
_((int index
, LVAL sym
));
85 LOCAL VOID init_colors
_((void));
86 LOCAL VOID init_cursor
_((int index
, LVAL sym
));
87 LOCAL VOID init_cursors
_((void));
88 LOCAL VOID init_plot_symbol
_((int i1
, int i2
, LVAL sym
));
89 LOCAL VOID init_plot_symbols
_((void));
91 LOCAL VOID
statfinit(V
)
93 setvalue(s_linked_plots
, NIL
);
94 setvalue(s_hardware_objects
, NIL
);
95 setsvalue(s_input_stream
, newustream());
96 defconstant(s_machine_epsilon
, cvflonum((FLOTYPE
) macheps()));
103 if (defaultpath
== NULL
) {
105 setsvalue(s_default_path
, cvstring(buf
));
107 else setsvalue(s_default_path
, cvstring(defaultpath
));
109 setvalue(s_plot_output
, getvalue(s_stdout
));
111 setsvalue(s_in_callback
, NIL
);
114 LOCAL VOID init_color
P2C(int, index
, LVAL
, sym
)
116 StGWSetColRefCon(index
, (long) sym
);
117 xlputprop(sym
, cvfixnum((FIXTYPE
) index
), xlenter("color-index"));
120 LOCAL VOID
init_colors(V
)
122 init_color(0, xlenter("WHITE"));
123 init_color(1, xlenter("BLACK"));
124 init_color(2, xlenter("RED"));
125 init_color(3, xlenter("GREEN"));
126 init_color(4, xlenter("BLUE"));
127 init_color(5, xlenter("CYAN"));
128 init_color(6, xlenter("MAGENTA"));
129 init_color(7, xlenter("YELLOW"));
132 LOCAL VOID init_cursor
P2C(int, index
, LVAL
, sym
)
134 StGWSetCursRefCon(index
, (long) sym
);
135 xlputprop(sym
, cvfixnum((FIXTYPE
) index
), xlenter("cursor-index"));
138 LOCAL VOID
init_cursors(V
)
140 init_cursor(0, xlenter("ARROW"));
141 init_cursor(1, xlenter("WATCH"));
142 init_cursor(2, xlenter("CROSS"));
143 init_cursor(3, xlenter("BRUSH"));
144 init_cursor(4, xlenter("HAND"));
145 init_cursor(5, xlenter("FINGER"));
146 init_cursor(6, xlenter("HOUR-GLASS"));
147 init_cursor(7, xlenter("TRASH-BAG"));
148 init_cursor(8, xlenter("TRASH-CAN"));
151 LOCAL VOID init_plot_symbol
P3C(int, i1
, int, i2
, LVAL
, sym
)
153 StGWSetSymRefCon(i1
, (long) sym
);
154 xlputprop(sym
, integer_list_2(i1
, i2
), xlenter("symbol-index"));
157 LOCAL VOID
init_plot_symbols(V
)
159 init_plot_symbol(0, 3, xlenter("DOT"));
160 init_plot_symbol(0, 5, xlenter("DOT1"));
161 init_plot_symbol(1, 5, xlenter("DOT2"));
162 init_plot_symbol(2, 5, xlenter("DOT3"));
163 init_plot_symbol(3, 5, xlenter("DOT4"));
164 init_plot_symbol(4, 5, xlenter("DISK"));
165 init_plot_symbol(6, 7, xlenter("DIAMOND"));
166 init_plot_symbol(8, 9, xlenter("CROSS"));
167 init_plot_symbol(10, 11, xlenter("SQUARE"));
168 init_plot_symbol(12, 13, xlenter("WEDGE1"));
169 init_plot_symbol(14, 15, xlenter("WEDGE2"));
170 init_plot_symbol(16, 17, xlenter("X"));
177 s_selecting
= xlenter("SELECTING");
178 s_brushing
= xlenter("BRUSHING");
179 s_user
= xlenter("USER");
180 s_invisible
= xlenter("INVISIBLE");
181 s_normal
= xlenter("NORMAL");
182 s_hilited
= xlenter("HILITED");
183 s_selected
= xlenter("SELECTED");
184 s_solid
= xlenter("SOLID");
185 s_dashed
= xlenter("DASHED");
186 sk_point_labels
= xlenter(":POINT-LABELS");
187 s_left
= xlenter("LEFT");
188 s_center
= xlenter("CENTER");
189 s_right
= xlenter("RIGHT");
190 s_top
= xlenter("TOP");
191 s_bottom
= xlenter("BOTTOM");
192 s_xor
= xlenter("XOR");
194 sk_allocate
= xlenter(":ALLOCATE");
195 sk_dispose
= xlenter(":DISPOSE");
196 sk_resize
= xlenter(":RESIZE");
197 sk_redraw
= xlenter(":REDRAW");
198 sk_do_idle
= xlenter(":DO-IDLE");
199 sk_do_click
= xlenter(":DO-CLICK");
200 sk_do_motion
= xlenter(":DO-MOTION");
201 sk_do_key
= xlenter(":DO-KEY");
202 sk_install
= xlenter(":INSTALL");
203 sk_remove
= xlenter(":REMOVE");
204 sk_update
= xlenter(":UPDATE");
205 sk_select
= xlenter(":SELECT");
206 sk_mark_points_in_rect
= xlenter(":MARK-POINTS-IN-RECT");
207 sk_adjust_screen
= xlenter(":ADJUST-SCREEN");
209 s_hardware_address
= xlenter("HARDWARE-ADDRESS");
210 s_number_of_variables
= xlenter("NUMBER-OF-VARIABLES");
211 s_menu
= xlenter("MENU");
212 sk_draw
= xlenter(":DRAW");
213 sk_redraw_background
= xlenter(":REDRAW-BACKGROUND");
214 sk_clear_content
= xlenter(":CLEAR-CONTENT");
215 sk_redraw_content
= xlenter(":REDRAW-CONTENT");
216 sk_redraw_overlays
= xlenter(":REDRAW-OVERLAYS");
217 sk_resize_overlays
= xlenter(":RESIZE-OVERLAYS");
218 sk_overlay_click
= xlenter(":OVERLAY-CLICK");
219 sk_new
= xlenter(":NEW");
220 s_histogram_proto
= xlenter("HISTOGRAM-PROTO");
221 sk_new_menu
= xlenter(":NEW-MENU");
222 sk_add_points
= xlenter(":ADD-POINTS");
223 sk_add_lines
= xlenter(":ADD-LINES");
224 s_black_on_white
= xlenter("BLACK-ON-WHITE");
225 sk_variable_labels
= xlenter(":VARIABLE-LABELS");
226 s_variable_labels
= xlenter("VARIABLE-LABELS");
227 s_scatterplot_proto
= xlenter("SCATTERPLOT-PROTO");
228 sk_adjust_to_data
= xlenter(":ADJUST-TO-DATA");
229 sk_showing_labels
= xlenter(":SHOWING-LABELS");
230 s_showing_labels
= xlenter("SHOWING-LABELS");
231 sk_scale
= xlenter(":SCALE");
232 s_spin_proto
= xlenter("SPIN-PROTO");
233 s_scatmat_proto
= xlenter("SCATMAT-PROTO");
234 s_name_list_proto
= xlenter("NAME-LIST-PROTO");
235 s_depth_cuing
= xlenter("DEPTH-CUING");
236 s_showing_axes
= xlenter("SHOWING-AXES");
237 sk_type
= xlenter(":TYPE");
238 s_dotword
= xlenter("DOT");
239 s_title
= xlenter("TITLE");
240 s_items
= xlenter("ITEMS");
241 s_enabled
= xlenter("ENABLED");
242 s_id
= xlenter("ID");
243 s_menu_list
= xlenter("MENU-LIST");
244 s_title
= xlenter("TITLE");
245 s_key
= xlenter("KEY");
246 s_mark
= xlenter("MARK");
247 s_style
= xlenter("STYLE");
248 s_action
= xlenter("ACTION");
249 s_menu_proto
= xlenter("MENU-PROTO");
250 s_apple_menu_proto
= xlenter("APPLE-MENU-PROTO");
251 s_menu_item_proto
= xlenter("MENU-ITEM-PROTO");
252 sk_do_action
= xlenter(":DO-ACTION");
253 s_bold
= xlenter("BOLD");
254 s_italic
= xlenter("ITALIC");
255 s_underline
= xlenter("UNDERLINE");
256 s_outline
= xlenter("OUTLINE");
257 s_shadow
= xlenter("SHADOW");
258 s_condense
= xlenter("CONDENSE");
259 s_extend
= xlenter("EXTEND");
260 sk_enabled
= xlenter(":ENABLED");
261 s_type
= xlenter("TYPE");
262 s_go_away
= xlenter("GO-AWAY");
263 s_default_button
= xlenter("DEFAULT-BUTTON");
264 s_text
= xlenter("TEXT");
265 s_location
= xlenter("LOCATION");
266 s_size
= xlenter("SIZE");
267 s_dialog
= xlenter("DIALOG");
268 s_min_value
= xlenter("MIN-VALUE");
269 s_max_value
= xlenter("MAX-VALUE");
270 s_page_increment
= xlenter("PAGE-INCREMENT");
271 s_editable
= xlenter("EDITABLE");
272 s_list_data
= xlenter("LIST-DATA");
273 s_columns
= xlenter("COLUMNS");
274 sk_scroll_action
= xlenter(":SCROLL-ACTION");
275 s_dialog_proto
= xlenter("DIALOG-PROTO");
276 sk_go_away
= xlenter(":GO-AWAY");
277 s_dialog_item_proto
= xlenter("DIALOG-ITEM-PROTO");
278 s_button_item_proto
= xlenter("BUTTON-ITEM-PROTO");
279 s_toggle_item_proto
= xlenter("TOGGLE-ITEM-PROTO");
280 s_text_item_proto
= xlenter("TEXT-ITEM-PROTO");
281 sk_editable
= xlenter(":EDITABLE");
282 s_choice_item_proto
= xlenter("CHOICE-ITEM-PROTO");
283 s_scroll_item_proto
= xlenter("SCROLL-ITEM-PROTO");
284 sk_min_value
= xlenter(":MIN-VALUE");
285 sk_max_value
= xlenter(":MAX-VALUE");
286 sk_page_increment
= xlenter(":PAGE-INCREMENT");
287 s_list_item_proto
= xlenter("LIST-ITEM-PROTO");
288 sk_columns
= xlenter(":COLUMNS");
289 s_modeless
= xlenter("MODELESS");
290 s_modal
= xlenter("MODAL");
291 s_hardware_objects
= xlenter("*HARDWARE-OBJECTS*");
292 s_bind_to_file
= xlenter("BIND-TO-FILE");
293 sk_clobber
= xlenter(":CLOBBER");
294 sk_own
= xlenter(":OWN");
295 sk_print
= xlenter(":PRINT");
296 s_arrow
= xlenter("ARROW");
297 sk_activate
= xlenter(":ACTIVATE");
298 sk_close
= xlenter(":CLOSE");
299 s_value
= xlenter("VALUE");
300 s_listener
= xlenter("*LISTENER*");
301 s_input_stream
= xlenter("*INPUT-STREAM*");
302 sk_tolerance
= xlenter(":TOLERANCE");
303 sk_max_iters
= xlenter(":MAX-ITERS");
304 sk_adjust_points_in_rect
= xlenter(":ADJUST-POINTS-IN-RECT");
305 sk_adjust_screen_point
= xlenter(":ADJUST-SCREEN-POINT");
306 s_self
= xlenter("SELF");
307 s_documentation
= xlenter("DOCUMENTATION");
308 s_compound_data_proto
= xlenter("COMPOUND-DATA-PROTO");
309 sk_data_length
= xlenter(":DATA-LENGTH");
310 sk_data_seq
= xlenter(":DATA-SEQ");
311 sk_make_data
= xlenter(":MAKE-DATA");
312 sk_select_data
= xlenter(":SELECT-DATA");
313 s_machine_epsilon
= xlenter("MACHINE-EPSILON");
314 s_graph
= xlenter("GRAPH");
315 s_instance_slots
= xlenter("INSTANCE-SLOTS");
316 s_proto_name
= xlenter("PROTO-NAME");
317 s_content_variables
= xlenter("CONTENT-VARIABLES");
318 s_rotation_type
= xlenter("ROTATION-TYPE");
319 s_rotation_angle
= xlenter("ROTATION-ANGLE");
320 s_rotation_controls
= xlenter("ROTATION-CONTROLS");
321 s_histogram_internals
= xlenter("HISTOGRAM-INTERNALS");
322 sk_adjust_depth_cuing
= xlenter(":ADJUST-DEPTH-CUING");
323 sk_draw_axes
= xlenter(":DRAW-AXES");
324 s_mode_list
= xlenter("MODE-LIST");
325 s_scale_type
= xlenter("SCALE-TYPE");
326 s_fixed
= xlenter("FIXED");
327 s_variable
= xlenter("VARIABLE");
328 sk_apply_transformation
= xlenter(":APPLY-TRANSFORMATION");
329 sk_unselect_all_points
= xlenter(":UNSELECT-ALL-POINTS");
330 s_set_slot_hook
= xlenter("*SET-SLOT-HOOK*");
331 s_message_hook
= xlenter("*MESSAGE-HOOK*");
332 s_mouse_mode
= xlenter("MOUSE-MODE");
333 s_has_h_scroll
= xlenter("HAS-H-SCROLL");
334 s_has_v_scroll
= xlenter("HAS-V-SCROLL");
335 s_fixed_aspect
= xlenter("FIXED-ASPECT");
336 sk_width
= xlenter(":WIDTH");
337 sk_color
= xlenter(":COLOR");
338 sk_symbol
= xlenter(":SYMBOL");
339 s_multiple
= xlenter("MULTIPLE");
340 s_internals
= xlenter("INTERNALS");
341 s_color_index
= xlenter("color-index");
342 s_cursor_index
= xlenter("cursor-index");
343 s_symbol_index
= xlenter("symbol-index");
344 s_pitching
= xlenter("PITCHING");
345 s_rolling
= xlenter("ROLLING");
346 s_yawing
= xlenter("YAWING");
347 sk_basis
= xlenter(":BASIS");
348 sk_linked
= xlenter(":LINKED");
349 sk_links
= xlenter(":LINKS");
350 sk_show
= xlenter(":SHOW");
351 sk_show_window
= xlenter(":SHOW-WINDOW");
352 s_linked_plots
= xlenter("_linked_plots_");
353 s_event_queue
= xlenter("*EVENT-QUEUE*");
354 setsvalue(s_event_queue
, NIL
);
355 s_text_length
= xlenter("TEXT-LENGTH");
356 k_derivstep
= xlenter(":DERIVSTEP");
357 k_set_mode_cursor
= xlenter(":SET-MODE-CURSOR");
358 s_default_path
= xlenter("*DEFAULT-PATH*");
360 s_plot_output
= xlenter("*PLOT-OUTPUT*");
361 setvalue(s_plot_output
, getvalue(s_stdout
));
364 k_initial
= xlenter(":INITIAL");
365 s_input_enabled
= xlenter("INPUT-ENABLED");
366 s_istream
= xlenter("INPUT-STREAM");
367 s_ostream
= xlenter("OUTPUT-STREAM");
368 s_use_notifier
= xlenter("*USE-NOTIFIER*");
369 setsvalue(s_use_notifier
, s_true
);
370 #endif /* MACINTOSH */
372 s_window_id
= xlenter("WINDOW-ID");
373 sk_fast_lines
= xlenter(":FAST-LINES");
374 sk_fast_symbols
= xlenter(":FAST-SYMBOLS");
375 sk_motion_sync
= xlenter(":MOTION-SYNC");
376 sk_do_clipping
= xlenter(":DO-CLIPPING");
377 sk_use_icccm
= xlenter(":ICCCM");
378 sk_wait_for_map
= xlenter(":WAIT-FOR-MAP");
379 #endif /* X11WINDOWS */
381 s_dll_list
= xlenter("dll-list");
382 s_msw_help_file
= xlenter("msw-help-file");
383 k_context
= xlenter(":CONTEXT");
384 k_help
= xlenter(":HELP");
385 k_index
= xlenter(":INDEX");
386 k_quit
= xlenter(":QUIT");
387 #endif /* _Windows */
389 k_fortran
= xlenter(":FORTRAN");
390 k_libflags
= xlenter(":LIBFLAGS");
391 s_cfun_table
= xlenter("__cfun_table__");
392 #endif /* FOREIGNCALL */
393 s_xls_major_release
= xlenter("XLS-MAJOR-RELEASE");
394 defconstant(s_xls_major_release
, cvfixnum((FIXTYPE
) XLS_MAJOR_RELEASE
));
395 s_xls_minor_release
= xlenter("XLS-MINOR-RELEASE");
396 defconstant(s_xls_minor_release
, cvfixnum((FIXTYPE
) XLS_MINOR_RELEASE
));
397 s_xls_subminor_release
= xlenter("XLS-SUBMINOR-RELEASE");
398 defconstant(s_xls_subminor_release
, cvfixnum((FIXTYPE
) XLS_SUBMINOR_RELEASE
));
399 s_in_callback
= xlintern("*IN-CALLBACK*", xlisppack
);
400 s_standard_division
= xlenter("*STANDARD-DIVISION*");
401 setsvalue(s_standard_division
, NIL
);