X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2FChangeLog;h=5514d1f59a945d852161001c7fb37f3760cc8e3a;hb=9b4b94c6d3b5fd98bf396e23d015380b87d2d296;hp=799df045a036f198615ac0b90ad594468baefea7;hpb=48d68723da059bce11f1d507a67bf73cd3fd0bed;p=pspp diff --git a/src/ChangeLog b/src/ChangeLog index 799df045a0..5514d1f59a 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,678 @@ +Tue Mar 30 22:04:19 2004 Ben Pfaff + + * vfm.c: Had to get last call to multipass_split_output() inside + open_active_file()/close_active_file() pairing, so introduce new + function. + (internal_procedure) Move procedure() code here, except for calls + to open_active_file() and close_active_file(). + (procedure) Wrap open_active_file() and close_active_file() around + internal_procedure(). + (multipass_procedure_with_splits) Wrap open_active_file() and + close_active_file() around internal_procedure(). + +Tue Mar 30 22:01:57 2004 Ben Pfaff + + * descript.c: (cmd_descriptives) Free `vars' to avoid memory leak. + +Mon Mar 29 16:26:40 2004 Ben Pfaff + + * debug.c: Removed. Moved cmd_debug_evaluate() into expr-evl.c. + + * expr-evl.c: (cmd_debug_evaluate) Moved here from debug.c. + +Mon Mar 29 16:03:08 2004 Ben Pfaff + + * algorithm.c: By default turn off some of the more expensive + assertions. + (expensive_assert) New macro which expands to assert if + EXTRA_CHECKS is defined, to nothing otherwise. + (unique) Use expensive_assert(). + (binary_search) Ditto. + (push_heap) Ditto. + (pop_heap) Ditto. + (make_heap) Ditto. + (sort_heap) Ditto. + + * command.c: (conflicting_3char_prefixes) Words that are the same + don't cause conflicts when they are abbreviated to the first three + letters. + + * expr-evl.c: (CONCAT_func) Fix memory leak by incrementing struct + nonterm_node's n earlier. + (generic_str_func) Ditto. + +Mon Mar 29 15:32:17 2004 Ben Pfaff + + Add support for multipass procedures. Rewrite DESCRIPTIVES to + test multipass support, take advantage of new moments + calculation, and to not be such crappy code. Get rid of q2c + processing for DESCRIPTIVES. + + * vfm.c: (struct multipass_split_aux_data) New structure. + (multipass_procedure_with_splits) New function. + (multipass_split_callback) New function. + (multipass_split_output) New function. + * descript.q: Removed. + + * descript.c: New file. + + * var.h: Removed descriptives enums. + (struct descriptives_proc) Removed. + (struct variable) Removed p.dsc. + + * Makefile.am: (q_sources_c) Remove descript.c. + (q_sources_q) Removed descript.q. + +Mon Mar 29 15:31:55 2004 Ben Pfaff + + New manager for keeping track of used workspace. + + * workspace.c: New file. + + * workspace.h: New file. + + * Makefile.am: (pspp_SOURCES) Add workspace.c, workspace.h. + + * sort.c: (do_internal_sort) Use workspace_malloc(). + (destroy_internal_sort) Use workspace_free(). + +Mon Mar 29 15:31:08 2004 Ben Pfaff + + New `struct casefile' for managing sets of cases. + + * casefile.c: New file. + + * casefile.h: New file. + + * command.def: Add DEBUG CASEFILE command. + + * Makefile.am: (pspp_SOURCES) Add casefile.c, casefile.h. + + * sort.c: (sort_cases) Move logic for sending storage file to disk + into do_external_sort(). + (struct internal_sort) Use an array of ccase pointers instead of a + case_list. + (do_internal_sort) Rewrite to handle casefiles. + (compare_case_list) Removed. + (compare_cases) New function. + (compare_case_dblptrs) New function. + (read_internal_sort_output) Deal with new struct internal_sort. + + * vfm.c: (static var workspace_overflow) Removed. + (struct storage_stream_info) Removed all the members. Added + struct casefile * member. + (storage_sink_open) Use casefile. + (open_storage_file) Removed. + (write_storage_file) Removed. + (storage_to_disk) Removed. + (destroy_storage_stream_info) Use casefile. + (storage_sink_write) Use casefile. + (storage_sink_make_source) Use casefile. + (storage_source_count) Use casefile. + (storage_source_read) Use casefile. + (storage_source_on_disk) Removed. + (storage_source_get_cases) Removed. + (storage_source_set_cases) Removed. + (storage_source_get_casefile) New function. + +Mon Mar 29 15:30:09 2004 Ben Pfaff + + New `struct moments' for calculating moments. + + * stats.c: Removed. + + * stats.h: Removed. + + * moments.c: New file. + + * moments.h: New file. + + * command.def: Add DEBUG MOMENTS command. + + * Makefile.am: (pspp_SOURCES) Add moments.c, moments.h. Remove + stats.c, stats.h. + + * aggregate.c: Modify AGGREGATE to use the new moments + calculation, even if not in such a great way. + (struct agr_var) Add `moments' member. + (parse_aggregate_functions) Set `moments' member to null. + (agr_destroy) Destroy `moments' member. + (accumulate_aggregate_info) Use `moments' for standard deviation. + (dump_aggregate_info) Ditto. + (initialize_aggregate_info) Create or clear `moments'. + + * misc.h: Add pow2(), pow3(), pow4() functions in place of sqr(), + cube(), pow4() that were in stats.h. All references updated. + + * crosstabs.q: stats.h had chi-square significance functions. Use + GSL instead. + (display_chisq) Use gsl_cdf_chisq_Q() instead of chisq_sig(). + + * expr-evl.c: (expr_evaluate) Use moments_of_values() for + OP_CFVAR, OP_MEAN, OP_SD, OP_VARIANCE. + +Fri Mar 26 14:21:23 2004 Ben Pfaff + + * dictionary.c: (dict_compact_values) Compacted values need to + start off from 0. + +Fri Mar 26 00:54:57 2004 Ben Pfaff + + * var-labs.c: (cmd_variable_labels) For compatibility, don't allow + `/' at start. Check return value of parse_variables() for error + return. + +Fri Mar 26 00:19:27 2004 Ben Pfaff + + Revamp expressions: make the code a little nicer, and fix bugs + found in testing. + + * expr-evl.c: (expr_evaluate) Make expression argument const. + Support OP_ADD, OP_SUB, OP_MUL, OP_DIV instead of OP_PLUS, OP_MUL. + OP_POW is missing for arg 2 <= 0. OP_LOG is natural log, not + base-10 log. Fix OP_ANY, OP_ANY_STRING, OP_RANGE, OP_RANGE_STRING + off-by-ones. Add OP_MAX_STRING, OP_MIN_STRING. Fix OP_TIME_HMS, + OP_DATE_WKYR boundary conditions. Add OP_CTIME_DAYS, + OP_CTIME_HOURS, OP_CTIME_MINUTES, OP_CTIME_DAYS, OP_CTIME_SECONDS. + Support OP_INDEX_2, OP_INDEX_3, OP_RINDEX_2, OP_RINDEX_3 instead + of OP_INDEX, OP_INDEX_OPT, OP_RINDEX, OP_RINDEX_OPT. Merge + OP_LPAD_OPT into OP_LPAD, OP_RPAD_OPT into OP_RPAD, OP_LTRIM_OPT + into OP_LTRIM, OP_RTRIM_OPT into OP_RTRIM, OP_NUMBER_OPT into + OP_NUMBER. Fix OP_RTRIM fragility. Support OP_SUBSTR_2, + OP_SUBSTR_3 instead of OP_SUBSTR, OP_SUBSTR_OPT. Remove OP_INV. + Simplify OP_SYSMIS. Remove OP_STR_MIS. + + * expr-opt.c: (optimize_expression) Rewrite. + (macro n0) Removed. + (macro n1) Removed. + (macro n2) Removed. + (macro s0) Removed. + (macro s0l) Removed. + (macro s1) Removed. + (macro s1l) Removed. + (macro s2) Removed. + (macro s2l) Removed. + (macro s) Removed. + (macro sl) Removed. + (eq_num_con) New function. + (optimize_tree) New function. + (macro rnc) Removed. + (macro frnc) Removed. + (str_search) Add const to string params. + (str_rsearch) Ditto. + (evaluate_tree_no_missing) Renamed from evaluate_tree. Add num[], + str[], str_len[] locals to substitute for most of removed macros. + Support OP_ADD, OP_SUB, OP_MUL, OP_DIV instead of OP_PLUS, OP_MUL. + Removed support for missing values because we're never called with + missing values. Use set_number() or set_number_errno() instead of + rnc or frnc. Removed any stuff that caused trouble in testing. + We can re-add it later if it really slows anything. Fix some + random problems. + (evaluate_tree_with_missing) Not yet supported. To be added later + if it's important. + (repl_num_con) Removed. + (collapse_node) New function. + (force_repl_num_con) Removed. + (set_number) New function. + (set_number_errno) New function. + (repl_str_con) Removed. + (set_string) New function. + (yrmoda) Tighten boundary conditions. Adopt 2030 cut-off for + 2-digit years. + (dump_node) No special case for OP_AND, OP_OR. + + * expr-prs.c: (expr_prs) Honor EXPR_NO_OPTIMIZE bit. Rewrite. + (expr_get_type) New function. + (type_check) Rewrite. + (type_coercion) New function. + (struct operator) New structure. + (match_operator New function. + (parse_binary_operators) New function. + (parse_inverting_unary_operator) New function. + (parse_or) Rewritten. + (parse_and) Rewritten. + (parse_not) Rewritten. + (parse_rel) Rewritten. + (parse_add) Rewritten. + (parse_mul) Rewritten. + (parse_neg) Rewritten. + (parse_exp) Rewritten. + (parse_sysvar) Add $TRUE, $FALSE system variables. + Get $LENGTH, $WIDTH from get_viewlength(), get_viewwidth(). + (parse_primary) Use allocate_var_node(), allocate_num_con(), + allocate_str_con(). + (struct function) Remove desc, change `func' prototype. + (unary_func) Remove special cases. + (MISSING_func) Reduce to unary_func() that just returns a boolean. + (SYSMIS_func) Handle SYSMIS((x)) like SYSMIS(x). + (VALUE_func) Use allocate_var_node(). + (nary_num_func) Allow MIN and MAX for strings. + Use allocate_var_node(). Properly clean up. + Fix return type. + (generic_str_func) Use local table instead of removed `desc' + member. Mostly rewrite. + (get_num_args) Revise error message. + (parse_function) Return EXPR_ERROR, not 0 on error. + (macro op) Removed. + (macro varies) Removed. + (ops[]) Use expr.def. + (free_node) Do nothing if node is null. + (allocate_num_con) New function. + (allocate_str_con) New function. + (allocate_var_node) New function. + (allocate_binary_nonterminal) New function. + (append_nonterminal_arg) Removed. + (static var func_tab[]) Revised. + (expr_debug_print_postfix) Make parameter const. + Use printf() instead of debug_printf(). + + * expr.def: New file. + + * expr.h: Change PXP_* to EXPR_*, all references updated. Also + use named enum instead of unnamed, all references updated. Add + EXPR_ANY, EXPR_NO_OPTIMIZE. + + * exprP.h: Remove EX_*. Add DEFINE_OPERATOR. Use expr.def + instead of defining OP_* directly. + (macro IS_TERMINAL) New macro. + (macro IS_NONTERMINAL) New macro. + (enum OP_NO_FLAGS) New. + +Fri Mar 26 00:18:01 2004 Ben Pfaff + + * error.c: (err_assert_fail) msg variable needs to be non-const. + +Fri Mar 26 00:17:24 2004 Ben Pfaff + + * debug.c: (cmd_debug_evaluate) Rewrite. + +Fri Mar 26 00:15:13 2004 Ben Pfaff + + Fix some CROSSTABS bit rot stupidity. + + * crosstabs.q: Reorder the CELLS subcommands for compatibility. + (internal_cmd_crosstabs) Initializes cells[] correctly. + (float_M_suffix) Rename format_cell_entry(), change prototype, + rewrite. + (display_crosstabulation) Fix cell formatting. + +Fri Mar 26 00:14:09 2004 Ben Pfaff + + Make lex_rest_of_line(), lex_entire_end() not discard lines. Have + to call lex_discard_line() to do that. + + * command.c: (run_command) Call lex_discard_line() after + lex_rest_of_line(). + + * lexer.c: (lex_entire_end) Change behavior. + (lex_rest_of_line) Change behavior. Return const char *. + (lex_discard_line) Don't clear getl_buf, don't emit message. + + * main.c: (handle_error) Emit message here. + + * repeat.c: (internal_cmd_do_repeat) Use lex_discard_line() + instead of lex_entire_line(). + + * str.c: (mm_find_reverse) Make length params size_t. Rewrite. + + * title.c: (get_title) Call lex_discard_line() after + lex_rest_of_line(). + (cmd_file_label) Ditto. + (cmd_document) Deal with const char * return value. + +Fri Mar 26 00:10:16 2004 Ben Pfaff + + Removed REMARK command. + + * command.c: (extract_prefix) Removed. + (output_line) Removed. + (cmd_remark) Removed. + + * command.def: Remove REMARK. + +Fri Mar 26 00:08:38 2004 Ben Pfaff + + Added abort() after lots of assert(0) invocations to avoid some + compiler warnings. We really need a NOT_REACHED macro. + +Tue Mar 23 08:00:42 WAST 2004 John Darrington + + * sort.c: Added missing call to temp_file_close. Changed error + messages to warnings. + + * set.q: Improved setting of set_view{length,width} to be more tolerant + of buggy OSes. + +Sun Mar 21 10:11:14 WST 2004 John Darrington + + * val-labs.c: Fixed a bug where PSPP would crash, if VALUE LABELS was + used with incorrect syntax. + + * error.c, error.h et al: Overridden definition of assert for a + custom one. + + * test-q.c: Fixed a buglet where it would crash if no /VARIABLES + subcommand was given when it ought to have been. + +Sat Mar 20 22:19:08 2004 Ben Pfaff + + * tab.c: (tab_vline) Fix assertions to respect row_ofs and + col_ofs. + (tab_hline) Ditto. + (tab_box) Ditto. + (tab_joint_text) Ditto. + +Sat Mar 20 17:57:23 2004 Ben Pfaff + + * levene.c: Add #include. + + * set.q: (set_viewport) Add `int' argument to make its prototype + correct for signal(). + +Sat Mar 20 15:35:17 2004 Ben Pfaff + + * expr-evl.c: (expr_evaluate) Assert that `c' is nonzero before + using it. + +Sat Mar 20 15:18:16 2004 Ben Pfaff + + Changed DFM from open-at-first-access to explicit-open. Before, + calling dfm_get_record() or dfm_put_record() would automatically + open the file. Now, you have to call dfm_open_for_reading() or + dfm_open_for_writing() explicitly. This makes it possible to + check permissions, file existence, etc. earlier. + + Also made struct file_handle more opaque, and clean up in general. + + * data-list.c: (cmd_data_list) Open handle for reading. + + * dfm.c: (struct dfm_fhuser_ext) Add `where', `saw_begin_data' + members. + (open_file_r) Renamed dfm_open_for_reading(), rewrote. + (open_file_w) Renamed dfm_open_for_writing(), rewrote. + (open_inline_file) Removed. + (read_record) For inline_file, if we haven't seen BEGIN DATA, read + it. Deal with line_number in extension record instead of file + handle. + (dfm_get_record) Rewrote. + (dfm_put_record) Rewrote. + (dfm_push) Assert file is open and one of ours. Deal with + line_number in extension record instead of file handle. + (dfm_pop) Assert file is open and one of ours. Deal with + line_number in extension record instead of file handle. + (cmd_begin_data) Use dfm_open_for_reading(). Mark that we saw + BEGIN DATA. + + * file-handle.h: (enum constants RH_RF_*) Removed. + (enum constants FH_MD_*) Removed. + (struct file_handle) Removed `name', `norm_fn', `fn', `where', + `recform', `lrecl', `mode' members. Public references to + `recform' changed to use handle_get_mode(), references to `lrecl' + changed to use handle_get_record_width(). Added `private' member. + (enum file_handle_mode) New. + + * file-handle.q: (struct private_file_handle) New structure. + (struct file_handle_list) New structure. + (static var files) New. + (static var file_handles) Removed. + (init_file_handle) Removed. + (create_file_handle) Removed. + (get_handle_with_name) New function. + (get_handle_for_filename) New function. + (cmd_file_handle) Rewritten. + (hash_file_handle) Removed. + (cmp_file_handle) Removed. + (fh_init_files) Rewritten. + (fh_parse_file_handle) Rewritten. Allows identifiers as + filenames. + (fh_get_handle_by_name) Renamed handle_get_name(), all references + updated. Rewritten. + (fh_get_handle_by_filename) Renamed handle_get_filename(), all + references updated. Rewritten. + (fh_record_width) Renamed handle_get_record_width(), all + references updated. Rewritten. + (handle_get_mode) New function. + + * file-type.c: (cmd_file_type) Open handle for reading. + + * filename.c: [unix] (struct file_identity) New structure. + [unix] (fn_get_identity) New function. + [unix] (fn_free_identity) New function. + [unix] (fn_compare_file_identities) New function. + [!unix] (struct file_identity) New structure. + [!unix] (fn_get_identity) New function. + [!unix] (fn_free_identity) New function. + [!unix] (fn_compare_file_identities) New function. + + * lexer.c: (static var put) Renamed put_token, all references + updated. + (static var put_tokstr) New. + (static var put_tokval) New. + (lex_init) Initialize put_tokstr(). + (restore_token) New function. + (save_token) New function. + (lex_get) Use restore_token(). + (lex_put_back) Use save_token(). + (lex_put_back_id) New function. + (lex_put_forward) Removed. + (lex_preprocess_line) Set put_token instead of using + lex_put_forward(). + (lex_negative_to_dash) Use save_token(), set put_token directly. + (dump_token) Use stderr instead of stdout. + + * main.c: (main) Remove call to cmd_init(). + + * matrix-data.c: (cmd_matrix_data) Open file for reading. + + * pfm-read.c: Use handle_get_filename() instead of trying to use + h->fn directly, all over. + + * pfm-write.c: Ditto. + + * print.c: (internal_cmd_print) Open handle for writing. + (dump_table) Use handle_get_filename(). + (print_trns_proc) Use handle_get_mode(). + (cmd_print_space) Use fh_parse_file_handle(). + Open handle for writing. + [0] (debug_print) Removed. + + * sfm-read.c: Use handle_get_filename() instead of trying to use + h->fn directly, all over. + + * sfm-write.c: Ditto. + +Sat Mar 20 14:35:48 2004 Ben Pfaff + + Fix memory leaks. + + * autorecode.c: (arc_free) Free arc->src_values. + + * error.c: (msg) Free buf. + + * val-labs.c: (do_value_labels) Always free vars. + + * vfm.c: (close_active_file) If sink has no make_source then call + its destroy function. + +Sat Mar 20 14:00:24 2004 Ben Pfaff + + Fixed cmd_parse() so that it always skips past a full command + name. A few special commands for which this would be bad get + special treatment. This lets us drop code for skipping past the + end of a command name in most cmd_*() functions. It's not worth + listing all the commands affected. + + * command.c: (struct command) Remove `cmd' member, replace by + `name' member, all references updated. Remove `word', `next', + `skip_entire_name' members. + (macro DEFCMD) Deal with revised `struct command'. + (macro UNIMPL) Ditto. + (macro SPCCMD) New macro for commands whose last word shouldn't be + skipped. + (static array cmd_table[]) Make const, rename `commands', remove + sentinel element. + (macro COMMAND_CNT) New macro. + (split_words) Removed. + (cmd_init) Removed. + (FILE_TYPE_okay) Make parameter const. + (cmd_parse) Improve error messages. + (match_strings) New function. + (next_word) New function. + (enum command_match) New enum. + (conflicting_3char_prefixes) New function. + (conflicting_3char_prefix_command) New function. + (cmd_match_words) New function. + (count_matching_commands) New function. + (get_command_name) New function. + (free_words) New function. + (unknown_command_error) New function. + (figure_out_command) Renamed parse_command_name(), rewritten. + + * command.def: Removed @ command. Marked BEGIN DATA, DOCUMENT, + FILE LABEL, REMARK, SUBTITLE, TITLE as special. Renamed EVALUATE + to DEBUG EVALUATE. Added N alias for N OF CASES, SORT alias for + SORT CASES. + + * command.h: (macro SPCCMD) New. + + * include.c: (cmd_include_at) Removed. + (cmd_include) Allow identifier to be used as filename. + + * inpt-pgm.c: (cmd_reread) Use fh_parse_file_handle(). + + * t-test.q: (cmd_t_test) Command name is now parsed for us. + + +Sat Mar 20 13:56:00 2004 Ben Pfaff + + Start work on better test framework. + + * Makefile.am: (pspp_sources) Add debug.c. + + * debug.c: New file. + + * compute.c: (cmd_evaluate) Moved to debug.c, renamed + cmd_debug_evaluate(). + + * expr-prs.c: (expr_parse) Remove PXP_DUMP support. + + * expr.h: (enum constant PXP_DUMP) Removed. + +Sat Mar 20 00:05:42 WST 2004 John Darrington + + * set.q: Implemented the SHOW command, and synced it to the existing + SET cmd. + + Added a handler for SIGWINCH so that viewlength and viewwidth follow + changes as the window size is changed. + + Added fallback to set viewlength and viewwidth from LINES and COLUMS + environment variables if other methods are not available. + + glob.c: Removed a lot of global variables from glob.c and encapsulated + them in set.q + + random.c: Tidied up the way the random seed is set. + + str.c: Added a ds_vprintf function. + + error.c: Extended dump_message so that messages are always broken at + '\n' characters. + +Thu Mar 18 11:07:14 2004 Ben Pfaff + + * pfm-write.c: (bufwrite) Write out the correct element for string + variables. From Andreas Streichardt . + +Mon Mar 15 20:48:03 2004 Ben Pfaff + + Get rid of static and global (!) vars in matrix-data.c. + + * matrix-data.c: (static var nr_data) Removed. + (static var nr_factor_values) Removed. + (static var max_cell_index) Removed. + (static var split_values) Removed. + (struct nr_aux_data) New structure. + (read_matrices_without_rowtype) Use a local struct nr_aux_data in + place of static vars, pass to create_case_source() and procedure() + as aux data. + (nr_read_data_lines) Use struct nr_aux_data * parameter instead of + struct matrix_data_pgm *. + (nr_read_splits) Ditto. + (nr_read_factors) Ditto. + (nr_output_data) Ditto. + (static var wr_content) Removed. + (global var wr_data) Removed. + (global var wr_current) Removed. + (struct wr_aux_data) New structure. + (read_matrices_with_rowtype) Use a local struct wr_aux_data in + place of static vars, pass to create_case_source() and procedure() + as aux data. + (matrix_data_read_with_rowtype) Use struct wr_aux_data * parameter + instead of matrix_data_pgm *. + (wr_read_splits) Ditto. + (wr_output_data) Ditto. + (wr_read_rowtype) Ditto. + (wr_read_factors) Ditto. + (wr_read_indeps) Ditto. + +Mon Mar 15 20:07:29 2004 Ben Pfaff + + Get rid of static vars in autorecode.c. + + * autorecode.c: (struct autorecode_trns) Rename `arc' to `specs', + `n_arc' to `spec_cnt'. All references updated. + (static var v_src) Removed. + (static var v_dest) Removed. + (static var h_trns) Removed. + (static var nv_src) Removed. + (static var descend) Removed. + (static var print) Removed. + (enum direction) New enum. + (struct autorecode_pgm) New structure. + (cmd_autorecode) Use struct autorecode_pgm instead of static vars. + Move n_dest local var into struct autorecode_pgm for ease of + clean-up. Use arc_free(). + (arc_free) New function. + (recode) Modify to take struct autorecode_pgm * parameter instead + of using statics. Let the caller clean up. + (autorecode_proc_func) Use struct autorecode_pgm * auxiliary data + instead of statics. Rearrange code a little. + +Mon Mar 15 00:25:02 2004 Ben Pfaff + + Get rid of static, global vars in recode.c. Remove debug code. + + * recode.c: (static var head) Removed. + (global var v) Removed. + (global var nv) Removed. + (cmd_recode) New local variables head, v, nv. Initialize and free + v. Don't call debug_print(). + [DEBUGGING] (dump_dest) Removed. + [DEBUGGING] (debug_print) Removed. + +Mon Mar 15 00:14:49 2004 Ben Pfaff + + Get rid of static vars in expr-opt.c. + + * expr-opt.c: (static var e) Removed. + (static var nop) Removed. + (static var mop) Removed. + (static var ndbl) Removed. + (static var mdbl) Removed. + (static var nstr) Removed. + (static var mstr) Removed. + (static var nvars) Removed. + (static var mvars) Removed. + (struct expr_dump_state) New structure. + (dump_expression) Use new struct expr_dump_state instead of static + vars and pass to functions we call. + (dump_node) Use struct expr_dump_state * parameter. + (emit) Ditto. + (emit_num_con) Ditto. + (emit_str_con) Ditto. + (emit_var) Ditto. + Mon Mar 15 00:03:51 2004 Ben Pfaff Get rid of static var in COUNT.