X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2FChangeLog;h=d463a5139e8681c8b37c0a39113eda146f473b92;hb=6429e116f1cacfe4be0ec6aae341cd712ca58463;hp=8b6f4dedf3f30e816e8e60dd58666d3f8b455a65;hpb=ecd77539d8be24ba673becc0f25bb453f4e2944d;p=pspp diff --git a/src/ChangeLog b/src/ChangeLog index 8b6f4dedf3..d463a5139e 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,1061 @@ +Thu Feb 12 19:24:53 WST 2004 John Darrington + + * t-test.q: Added calculations for independent samples. (But no Levene + test yet!) + + * Makefile.am: Moved q_sources_c into own variable + +Wed Feb 11 23:56:51 2004 Ben Pfaff + + Miscellaneous cleanups. + + * Change unused to UNUSED in many source files to reflect modified + pref.h. Change use of __WIN32__, __MSDOS, __DJGPP__, + __CYGWIN32__, __unix__, and unix not to assume that they're + defined to a nonzero value. Change use of __attribute__ to use + NO_RETURN or PRINTF_FORMAT instead. + + * alloc.h: Move definitions for local_alloc(), local_free() here + from ../pref.h.orig and simplify. + + * expr-evl.c: Instead of working differently based on PAGED_STACK, + use a pool allocator unconditionally. + (CHECK_STRING_SPACE) Removed. + (ALLOC_STRING_SPACE) Removed. + (expr_evaluate) Use e->pool instead of CHECK_STRING_SPACE and + ALLOC_STRING_SPACE. + + * expr-opt.c: (dump_expression) Allocate string pool. + + * expr-prs.c: (expr_free) Free string pool. + + * pool.c: (pool_destroy) This pool must be removed from its + parent's list of gizmos, not from its own. Use free_all_gizmos(). + (pool_clear) New function. + (free_all_gizmos) New function. + (pool_alloc) Use space in empty block after this one if any. + (pool_release) Only empty out blocks, don't actually free() them. + + * print.c: Get rid of PAGED_STACK special case by always + dynamically allocating line buffers. + (struct print_trns) Always include the `line' member. + (internal_cmd_print) Always initialize the `line' member. + (alloc_line) Always allocate memory for `line'. + (print_trns_proc) Always initialize buf from `line' member. + (print_trns_free) Always free `line' memory. + + * sort.c: (allocate_file_handles) Special-case MS-DOS for mkdir() + call. + +Wed Feb 11 20:33:18 2004 Ben Pfaff + + * flip.c: Fixed crash from FLIP when a numeric variable is + specified on NEWNAMES and a large value is used, and a couple of + other minor bugs besides. + (struct varname) Make name a 9-character fixed-size array + instead of a 1-character variable size array. + (make_new_var) Allow digits in variable names. + (flip_stream_write) Limit numeric values to 8 characters and + format system missing and very large and small values more + appropriately. + +Thu Feb 5 13:19:06 WAST 2004 John Darrington + + * command.c: Fixed test on command return status for the correct + value, which had been causing a crash under certain invalid input. + +Wed Feb 4 15:34:11 WST 2004 John Darrington + + * t-test.q: Added calculations for the one sample variant of the T-TEST + +Tue Feb 3 20:09:54 2004 Ben Pfaff + + * tab.c: (render_strip) Fix bug that sometimes caused joined text + in joined cells to be rendered outside box boundaries. + +Tue Feb 3 18:56:45 WST 2004 John Darrington + + * random.c (rng_create): Fixed seeding so that it gets reseeded after + SET seed=xx has been called. + +Mon Jan 19 14:08:09 2004 Ben Pfaff + + * random.c (rng_get_double): Fix always-returning-zero bug in my + preferred way, and at the same time make sure rounding doesn't + bite us. + +Thu Jan 1 23:16:41 2004 Ben Pfaff + + * html.c: (change_attributes) Dead code, removed. + (escape_string) Eliminate code to call change_attributes() that + never actually called it. + (output_tab_table) Get rid of dependence on tab_hit + and struct tab_joined_cell's hit member, which are abominations. + + * tab.c: (tab_output_text) Don't call + d->class->text_set_font_by_name if it's a null pointer. + (macro UNROLL_LOOP) Eliminate. + (macro UNROLL_3_LOOPS) Eliminate. + (tabi_render) Rewrite not to use the above macros. + +Thu Jan 1 23:09:07 2004 Ben Pfaff + + Start working on a new output driver system, one that doesn't suck + so much, by adding a "device-independent" output driver. The idea + is to write out only a single output stream, then use separate + processes to translate them into whatever formats we want. This + is similar to how "groff" works with its various output drivers + (grops, grotty, grodvi, ...). + + * Makefile.am: (pspp_SOURCES) Add devind.c, devind.h. + + * list.q: (write_all_headers) Stub out devind class. + (clean_up) Ditto. + (determine_layout) Ditto. + (list_cases) Ditto. + + * output.c: (outp_init) Add devind class. + + * devind.c: New file. + + * devind.h: New file. + +Thu Jan 1 23:08:14 2004 Ben Pfaff + + * frequencies.q: (hash_value_alpha) Fixed up the previous change + to use the proper string length. + +Wed Dec 31 16:27:33 WAST 2003 John Darrington + + * Fixed bug where FREQ would crash on alpha values + +Tue Dec 30 22:42:57 2003 Ben Pfaff + + * Removed bletcherous alloca() workarounds for AIX from top of + many files. AIX can use the alternative alloca() implementation + instead. + +Tue Dec 30 22:35:16 2003 Ben Pfaff + + * ascii.c: (ascii_option) Fix implementation of headers option. + +Tue Dec 30 22:32:53 2003 Ben Pfaff + + * ascii.c: Add a "squeeze" option to the ASCII driver to squeeze + multiple blank lines into one. + (struct ascii_driver_ext) Add squeeze_blank_lines option. + (ascii_preopen_driver) Initialize squeeze_blank_lines. + (static var option_tab) Add squeeze entry. + (ascii_option) Set squeeze_blank_lines. + (output_lines) Implement squeezing blank lines. + +Wed Dec 31 07:19:46 WST 2003 John Darrington + + * Removed redundant code from output.h + +Sat Dec 27 22:17:52 2003 Ben Pfaff + + Dictionary classes: each variable is "ordinary", "system", or + "scratch". + + * var.h: (enum dict_class) New enum. + + * vars-prs.c: (dict_class_from_id) New function. + (dict_class_to_name) New function. + +Sat Dec 27 22:16:06 2003 Ben Pfaff + + * var.h: (struct freq_tab_set) Removed (not used). + +Sat Dec 27 22:15:21 2003 Ben Pfaff + + * value-labels.c: (val_labs_destroy) vls needs to be freed too. + +Sat Dec 27 22:10:49 2003 Ben Pfaff + + * stats.c: (hypercube) Rename pow4(). All references updated. + +Sat Dec 27 22:05:49 2003 Ben Pfaff + + * rename-vars.c: (cmd_rename_variables) Rewritten. + (compare_name) Removed. + +Sat Dec 27 22:03:51 2003 Ben Pfaff + + var_set feature, and code taking advantage of it. + + * crosstabs.q: (static var var_dict) Removed. + (static var variables) New variable. + (static var variables_cnt) New variable. + (cmd_crosstabs) Free variables instead of var_dict. + (internal_cmd_crosstabs) Initialize and use variables, + variables_cnt instead of var_dict. + (free_var_dict) Removed. + (crs_custom_tables) Use var_set instead of a copied dictionary. + (crs_custom_variables) Set up variables, variables_cnt instead of + var_dict. + [DEBUGGING] (debug_print) Ditto. + + * means.q: (mns_custom_tables) Use var_set instead of a copied + dictionary. + + * vars-prs.c: (parse_vs_variable) New function. + (parse_dict_variable) Rewritten. + (parse_variable) Rewritten. + (parse_variables) Renamed parse_var_set_vars(), rewritten. + (parse_variables) New function in terms of parse_var_set_vars(). + Now requires its first argument to be non-null. All references + that passed a null pointer updated to pass default_dict instead. + (macro id_dict) Removed. + (parse_DATA_LIST_vars) Add assertions. + (parse_mixed_vars) Ditto. + (struct var_set) New structure. + (var_set_get_cnt) New function. + (var_set_get_var) New function. + (var_set_lookup_var) New function. + (var_set_destroy) New function. + (dict_var_set_get_cnt) New function. + (dict_var_set_get_var) New function. + (dict_var_set_lookup_var) New function. + (dict_var_set_destroy) New function. + (var_set_create_from_dict) New function. + (struct array_var_set) New structure. + (array_var_set_get_cnt) New function. + (array_var_set_get_var) New function. + (array_var_set_lookup_var) New function. + (array_var_set_destroy) New function. + (var_set_create_from_array) New function. + + * q2c.c: (dump_parser) Use parse_variables(default_dict, ...) + instead of parse_variables(NULL, ...) in output code. + +Sat Dec 27 21:38:53 2003 Ben Pfaff + + Change inp_init from a 2-bit vector to an ordinary array. + Initialize it all in cmd_end_input_program() instead of in + create_variable(). + + * inpt-pgm.c: (enum value_init_type) New enum. + (global var inp_init) Change to `enum value_init_type *', make + static. + (inp_init_size) Removed. + (inp_nval) Change to `size_t', make static. + (cmd_input_program) Don't initialize inp_init or inp_init_size. + (cmd_end_input_program) Initialize inp_init, inp_nval. + (init_case) Rewrite. + (clear_case) Rewrite. + + * inpt-pgm.h: Removed. + +Sat Dec 27 21:36:38 2003 Ben Pfaff + + * hash.c: (hsh_hash_bytes) Use Fowler-Noll-Vo hash instead of + Colin Plumb hash. It is simpler and should better resist + collisions. + (hsh_hash_string) Ditto. + +Sat Dec 27 21:34:57 2003 Ben Pfaff + + * get.c: (export_write_case_func) Remove debug printing code. + +Sat Dec 27 21:11:09 2003 Ben Pfaff + + * get.c: (cmd_save_internal) Rename parameter. Use &t->h instead + of cast. + (save_write_case_func) Use &trns->h instead of cast. + (cmd_export) Use &t->h instead of cast. + +Sat Dec 27 20:57:42 2003 Ben Pfaff + + Moved vectors into the dictionary. + + * var.h: (struct vector) Moved here from vector.h. `index' member + renamed `idx', `v' renamed `var', `nv' renamed `cnt'. All + references updated. + + * vector.h: Removed. + + * vector.c: (global var vec) Removed. + (global var nvec) Removed. + (cmd_vector) Rewritten. + (find_vector) Removed. + + * dictionary.c: (dict_create_vector) New function. + (dict_get_vector) New function, replaces reading global vec[] + array. + (dict_get_vector_cnt) New function, replaces reading global nvec + variable. + (dict_lookup_vector) New function, replaces find_vector(). + (dict_clear_vectors) New function. + +Sat Dec 27 20:54:01 2003 Ben Pfaff + + Start to move away from `struct variable' p `union' member to void + * aux member. + + * var.h: (struct variable) Add `aux' member. + +Sat Dec 27 20:36:25 2003 Ben Pfaff + + Get rid of struct variable `foo' member. + + * frequencies.q: (internal_cmd_frequencies) Use p.frq.used instead + of foo. + (frq_custom_variables) Ditto. + (frq_custom_grouped) Ditto. + + * get.c: (struct save_trns) Change `var' member from `int *' to + `struct variable **'. + (cmd_save_internal) Use aux instead of foo. + (save_trns_proc) Use revised `var' member. + (static var mtf_seq_no) Renamed mtf_seq_num. + (static var mtf_seq_nums) New static var. + (cmd_match_files) Initialize mtf_seq_nums. + (mtf_free) Free mtf_seq_nums. + (mtf_processing) Use mtf_seq_nums instead of foo. + (mtf_merge_dictionary) No need to initialize mv->foo. + (cmd_export) Use aux instead of foo. Use revised `var' member. + (mns_custom_tables) Don't use foo to check for duplicates, that's + what PV_NO_DUPLICATE is for. + + * var.h: (struct variable) Remove `foo' member. + (struct frequencies_proc) New member. + +Sat Dec 27 19:46:13 2003 Ben Pfaff + + Clean up COMPUTE and IF. + + * compute.c: More or less rewrite the darn thing. + (struct compute_trns) Rename and reorder and add and delete + members. + (cmd_compute) Rewrite. + (compute_num) Make conditional on test expression. Now used for + both COMPUTE and IF. + (compute_num_vec) Ditto. + (compute_str) Ditto. + (compute_str_vec) Ditto. + (cmd_if) Rewrite. + (if_num) Removed. + (if_num_vec) Removed. + (if_str) Removed. + (if_str_vec) Removed. + (parse_target_expression) Renamed parse_rvalue_expression(), + rewritten. + (new_trns) Renamed compute_trns_create(), rewritten. + (delete_trns) Removed. + (free_trns) Renamed compute_trns_free(), rewritten. + (struct lvalue) New structure. + (parse_var_or_vec) Renamed lvalue_parse(), rewritten. + (lvalue_get_type) New function. + (lvalue_is_vector) New function. + (lvalue_finalize) New function. + (lvalue_destroy) New function. + +Sat Dec 27 19:44:14 2003 Ben Pfaff + + * command.def: Disallow MODIFY VARS in input mode, so that + variables can't get dropped and confuse cmd_end_input_program()'s + attempt to fill inp_init[]. + + * modify-vars.c: (static var forward_positional_ordering) New + variable. + (struct var_modification) Entirely changed. + (rearrange_dict) Interface changed, rewritten. + (cmd_modify_vars) Deal with modified struct var_modification, much + rewritten. + (struct var_renaming) New structure. + (compare_var_renaming_by_new_name) New function. + (validate_var_modification) New function. + + * var.h: (struct modify_vars_proc) Removed. + (struct variable) Removed member p.mfv. + +Sat Dec 27 19:40:26 2003 Ben Pfaff + + Make EVALUATE a valid command whether we're debugging or not, so + that `make check' can succeed regardless of whether debugging is + turned on. + + * command.def: [GLOBAL_DEBUGGING] Drop the #if. + + * compute.c: [GLOBAL_DEBUGGING] (cmd_evaluate) Drop the #if. + +Sat Dec 27 19:34:40 2003 Ben Pfaff + + * apply-dict.c: (cmd_apply_dictionary) Replace a ghastly switch + statement by a simple if test. + + * dfm.c: (dfm_get_record) Add assertion. + +Sat Dec 27 17:51:26 2003 Ben Pfaff + + For each file x.c, move #include "x.h" to the very top of the + include list, to catch x.h failing to include the proper headers. + +Sat Dec 27 17:50:19 2003 Ben Pfaff + + * algorithm.c: (find) New function. + (remove_equal) New function. + (set_difference) New function. + (adjacent_find_equal) New function. + [TEST_UNIQUE] Removed test case. + (copy_if) Find end test. + +Sat Dec 27 17:42:45 2003 Ben Pfaff + + * dictionary.c: (dict_get_case_weight) New convenience function. + + * aggregate.c: (accumulate_aggregate_info) Use + dict_get_case_weight(). + + * frequencies.q: (calc_general) Ditto. + (calc_integer) Ditto. + (calc) Ditto. + + * t-test.q: (groups_calc) Ditto. + (z_calc) Ditto. + +Sat Dec 27 17:29:45 2003 Ben Pfaff + + * glob.c: (global var default_dict) Change from `struct + dictionary' to `struct dictionary *'. All references changed. + (init_glob) Initialize default_dict with dict_create(). + +Sat Dec 27 17:06:06 2003 Ben Pfaff + + struct dictionary now made opaque. All related functions: + + * get.c: (rename_variables) Removed. + (dict_delete_run) Removed. + + * temporary.c: (copy_variable) Removed. + (new_dictionary) Removed. + (save_dictionary) Removed. + (restore_dictionary) Removed. + (free_dictionary) Removed. + + * vars-atr.c: (clear_default_dict) Removed. + (find_variable) Removed. + (find_dict_variable) Removed. + (create_variable) Removed. + (delete_variable) Removed. + (common_init_stuff) Removed. + (init_variable) Removed. Updating of inp_init moved into + cmd_end_input_program(). + (replace_variable) Removed. + (rename_variable) Removed. + (clear_variable) Removed. + (dup_variable) Removed. + + * vars-prs.c: (is_varname) Removed. + (is_dict_varname) Removed. + (fill_all_vars) Removed. + + * vector.c: (find_vector) Removed. + + * weight.c: (stop_weighting) Removed. + + * dictionary.c: New file. + (dict_create) New, replaces new_dictionary(). + (dict_clone) New, replaces save_dictionary() and + restore_dictionary(). + (dict_clear) New, replaces clear_default_dict(). + (dict_destroy) New, replaces free_dictionary(). + (dict_get_var_cnt) New function, replaces references to + dict->nvar. + (dict_get_var) New function, replaces references to dict->var[i]. + (dict_get_vars) New function, replaces fill_all_vars(). + (dict_create_var) New, replaces create_variable(). Interface + drops `type' parameter, using a zero `width' to designate numeric. + (dict_clone_var) New, replaces dup_variable(). + (dict_rename_var) New, replaces rename_variable(). + (dict_lookup_var) New, replaces find_variable(), + find_dict_variable(), is_varname(). + (dict_contains_var) New function. + (compare_variable_dblptrs) New function. + (dict_delete_var) New function, replaces clear_variable(). + (dict_delete_vars) New function, replaces dict_delete_run(). + (dict_reorder_vars) New function. + (dict_rename_vars) New function, replaces rename_variables(). + (dict_get_weight) New function, replaces reading dict->weight_var. + (dict_set_weight) New function, replaces writing dict->weight_var + or calling stop_weight(dict). + (dict_get_filter) New function, replaces reading dict->filter_var. + (dict_set_filter) New function, replaces writing dict->filter_var. + (dict_get_case_limit) New function, replaces reading dict->N. + (dict_set_case_limit) New function, replaces writing dict->N. + (dict_get_value_cnt) New function, replaces reading dict->nval. + (dict_compact_values) New function, replaces a loop that was + replicated in several places. + (dict_get_split_vars) New function, replaces reading dict->splits. + (dict_get_split_cnt) New function, replaces reading + dict->n_splits. + (dict_set_split_vars) New function, replaces writing dict->splits. + (dict_get_label) New function, replaces reading dict->label. + (dict_set_label) New function, replaces writing dict->label. + (dict_get_documents) New function, replaces reading + dict->documents. + (dict_set_documents) New function, replaces writing + dict->documents. + + All references to above functions updated. + + * aggregate.c: (cmd_aggregate) Copy file label and documents from + old dictionary to new by hand, because dict_create() can't do it + itself. Use dict_set_documents(), dict_set_split_vars(). + + * temporary.c: (cancel_temporary) Also set temp_dict to NULL after + calling dict_destroy(). + + * data-list.c: (dls_var_spec) Remove `type' member, replace by + `width'. + (fixed_parse_compatible) Some slightly nontrivial changes for + dict_create_var(). + (dump_fmt_list) Ditto. + (parse_free) Ditto. + + * file-type.c: (create_col_var) Ditto. + + * get.c: (cmd_get) Use dict_compact_values() instead of a loop. + (trim_dictionary) Use dict_delete_vars(), dict_reorder_vars(). + (rename_variables) Use dict_rename_vars(). + (mtf_merge_dictionary) Use dict_get_documents(), + dict_set_documents(), dict_compact_values(). + + * pfm-read.c: (read_variables) Deal with changes to weighting. + + * q2c.c: (dump_parser) Use dict_lookup_var() instead of + is_varname() in output code. + + * sfm-read.c: (read_header) Use dict_create(), dict_set_label(), + other dictionary functions. + + * title.c: (add_document_line) Use dict_get_documents(), + dict_set_documents(). + + * vars-atr.c: (discard_variables) Use dict_clear(default_dict), + reset default_handle by hand. dict_clear() will clear vectors so + there's no need for that by hand. + + * vfm.c: (close_active_file) Move call to finish_compaction() + earlier, so that we can do the compaction as a single step using + dict_compact_values(). Use dict_clear_vectors(). + (finish_compaction) Use dict_delete_var(), dict_compact_values(). + + Some functions don't have replacements: + + * vars-atr.c: (force_create_variable) Removed. All references + updated to dict_create_var() followed by an assertion. + (force_dup_variable) Removed. All references updated to + dict_clone_var() followed by an assertion. + + * weight.c: (update_weighting) Removed. No longer necessary, so + all references removed. + +Sat Dec 27 16:43:01 2003 Ben Pfaff + + Clean up AGGREGATE. + + * aggregate.c: Eliminate separation of weighted and unweighted + case. It made the code too obscure and I doubt it was actually + faster. Instead, all code uses the "weighted" code, because + that's a generalization of the "unweighted" code. + (FWEIGHT) Removed. + (FOPTIONS) Ditto. + (parse_aggregate_functions) No need to set FWEIGHT. + (accumulate_aggregate_info) Get rid of FWEIGHT cases. + (dump_aggregate_info) Ditto. + (initialize_aggregate_info) No need for special plain_function + that gets rid of FWEIGHT option. + + * aggregate.c: Get rid of approximations. + (accumulate_aggregate_info) Don't use approx_gt(), approx_lt(), + approx_in_range(). + (aggregate_single_case) Don't use approx_ne(). + +Sat Dec 27 16:19:36 2003 Ben Pfaff + + * ascii.c (ascii_line_width): Dead code, removed. + + * postscript.c (ps_line_width): Ditto. + + * q2c.c (xrealloc): Ditto. + + * count.c (internal_cmd_count): Ditto. + + * means.q (validate_dependent_endpoint): Ditto. + + * set.q: (cmd_gset) Ditto. + + * weight.c: [0] (weight_trns_proc) Ditto. + +Sat Dec 27 16:18:16 2003 Ben Pfaff + + Make the code -Wmissing-prototypes clean. + + * Makefile.am (version.c): Add #include "version.h". + + * ascii.c: (ascii_open_global) Make static. + (ascii_close_page) Ditto. + (ascii_font_sizes) Ditto. + (ascii_postopen_driver) Ditto. + (ascii_close_driver) Ditto. + (ascii_option) Ditto. + (ascii_open_page) Ditto. + (ascii_line_horz) Ditto. + (ascii_line_vert) Ditto. + (ascii_line_intersection) Ditto. + (ascii_box) Ditto. + (ascii_polyline_begin) Ditto. + (ascii_polyline_point) Ditto. + (ascii_polyline_end) Ditto. + (ascii_text_set_font_by_name) Ditto. + (ascii_text_set_font_by_position) Ditto. + (ascii_text_set_font_by_family) Ditto. + (ascii_text_get_font_name) Ditto. + (ascii_text_get_font_family) Ditto. + (ascii_text_set_size) Ditto. + (ascii_text_get_size) Ditto. + (ascii_text_metrics) Ditto. + (ascii_text_draw) Ditto. + (ascii_close_page) Ditto. + + * cmdline.h: New header for parse_command_line(). Used where + needed. + + * command.c: Move prototypes for cmd_*() functions to command.h. + + * command.h: Prototypes for cmd_*() functions moved here from + command.c. + + * crosstabs.q: (gamma_int) Ditto. + + * file-handle.h: Add fh_init_files() prototype. + + * getline.c: (welcome) Ditto. + + * glob.h: New header for init_glob(). Used where appropriate. + + * hash.c: (comparison_helper) Ditto. + + * html.c: (html_open_global) Ditto. + (html_close_global) Ditto. + (html_preopen_driver) Ditto. + (html_postopen_driver) Ditto. + (html_close_driver) Ditto. + (html_option) Ditto. + (html_open_page) Ditto. + (html_close_page) Ditto. + (html_submit) Ditto. + + * inpt-pgm.c: (input_program_source_read) Ditto. + + * output.c: (find_defn_value) Ditto. + (destroy_list) Ditto. + + * pfm-read.c: (read_int) Ditto. + + * postscript.c: (ps_open_global) Ditto. + (ps_close_global) Ditto. + (ps_font_sizes) Ditto. + (ps_preopen_driver) Ditto. + (ps_postopen_driver) Ditto. + (ps_close_driver) Ditto. + (ps_option) Ditto. + (ps_open_page) Ditto. + (ps_close_page) Ditto. + (ps_line_horz) Ditto. + (ps_line_vert) Ditto. + (ps_line_intersection) Ditto. + (ps_box) Ditto. + (ps_polyline_begin) Ditto. + (ps_polyline_point) Ditto. + (ps_polyline_end) Ditto. + (ps_text_set_font_by_name) Ditto. + (ps_text_set_font_by_position) Ditto. + (ps_text_set_font_family) Ditto. + (ps_text_get_font_name) Ditto. + (ps_text_get_font_family) Ditto. + (ps_text_set_size) Ditto. + (ps_text_get_size) Ditto. + (ps_text_metrics) Ditto. + (ps_text_draw) Ditto. + + * q2c.c: (finish_up) Ditto. + (xmalloc) Ditto. + (xstrdup) Ditto. + (get_buffer) Ditto. + (st_lower) Ditto. + (st_upper) Ditto. + (skip_ws) Ditto. + (get_line) Ditto. + (add_symbol) Ditto. + (find_symbol) Ditto. + (lex_get) Ditto. + (force_id) Ditto. + (force_string) Ditto. + (match_id) Ditto. + (match_token) Ditto. + (skip_token) Ditto. + (parse) Ditto. + (parse_setting) Ditto. + (parse_specifier) Ditto. + (parse_specifiers) Ditto. + (parse_subcommand) Ditto. + (dump_specifier_vars) Ditto. + (is_keyword) Ditto. + (make_identifier) Ditto. + (dump_declarations) Ditto. + (dump_specifier_init) Ditto. + (dump_vars_init) Ditto. + (make_match) Ditto. + (dump_specifier_parse) Ditto. + (dump_subcommand) Ditto. + (dump_parser) Ditto. + (dump_header) Ditto. + (dump_free) Ditto. + (recognize_directive) Ditto. + + * recode.c: (string_to_long) Ditto. + + * repeat.c: (find_DO_REPEAT_substitution) Ditto. + + * repeat.h: New header for perform_DO_REPEAT_substitutions, used + where appropriate. + + * sort.c: (sort_stream_read) Ditto. + (sort_stream_mode) Ditto. + +Fri Dec 19 23:35:04 2003 Ben Pfaff + + * algorithm.c (binary_search): Fix comparison. + +Fri Dec 19 23:27:45 2003 Ben Pfaff + + * algorithm.c: (binary_search) Fix assertion. + +Fri Dec 19 21:31:48 2003 Ben Pfaff + + * sysfile-info.c: (compare_vectors_by_name) Rewrite. + +Fri Dec 19 21:30:24 2003 Ben Pfaff + + * sort.c: (compare_case_lists) Rewrite. + +Fri Dec 19 16:44:22 2003 Ben Pfaff + + * quicksort.c: Removed (not used). + + * quicksort.h: Removed (not used). + + * sort.c: Removed blp_quicksort() prototype. + +Fri Dec 19 16:42:13 2003 Ben Pfaff + + * postscript.c: (int_2_compare) Rewrite. + (compare_line) Rewrite. + +Fri Dec 19 16:38:35 2003 Ben Pfaff + + * matrix-data.c (compare_factors) Use lexicographical_compare() + algorithm. + (compare_doubles) New function. + + * algorithm.c: (lexicographical_compare) New algorithm. + +Fri Dec 19 16:23:45 2003 Ben Pfaff + + * matrix-data.c (compare_variables_by_mxd_vartype): Rewrite. + +Fri Dec 19 15:54:45 2003 Ben Pfaff + + * expr-prs.c: (cmp_func) Removed. + (parse_function) Use binary_search() algorithm. + (compare_functions) New function. + (init_func_tab) Use sort() algorithm. + + * algorithm.c: (binary_search) New algorithm. + +Fri Dec 19 15:50:45 2003 Ben Pfaff + + * descript.q: (display) Use sort() algorithm instead of qsort(). + (compare_func) Removed. + (descriptives_compare_variables) New function. + +Fri Dec 19 15:08:38 2003 Ben Pfaff + + Get rid of AVL trees. Hashes are more appropriate for everything + PSPP does. + + * Makefile.am: (pspp_SOURCES) Remove avl.c, avl.h. + + * avl.c: Removed. + + * avl.h: Removed. + +Fri Dec 19 14:33:31 2003 Ben Pfaff + + Much code can be clarified by using C++ STL-like algorithms. Not + all uses of these algorithms are listed below, only the ones where + the change to an algorithm was the only change of interest. + + * Makefile.am: (pspp_SOURCES) Add algorithm.c, algorithm.h. + + * algorithm.c: New file. + + * algorithm.h: New file. + + * modify-vars.c: (static var forward) Removed. + (static var positional) Removed. + (compare_variables) Removed. + (struct ordering) New. + (cmd_modify_vars) Use sort() algorithm. + (compare_variables_given_ordering) New function. + (rearrange_dict) Use sort() algorithm. + + * sysfile-info.c: (cmd_display) Use sort() algorithm. + (cmp_var_by_name) Removed. + +Fri Dec 19 14:26:17 2003 Ben Pfaff + + Make file handles use a hash table. + + * file-handle.q: (files) Change to hash table, make static. + (cmd_file_handle) Use hash table functions. + (fh_get_handle_by_filename) Ditto. + (fh_get_handle_by_name) Ditto. + (hash_file_handle) New function. + (cmp_file_handle) Rewrite. + (fh_init_files) Use hash table functions. + +Fri Dec 19 14:24:38 2003 Ben Pfaff + + Clean up FREQUENCIES. + + * Makefile.am: (pspp_SOURCES) Remove frequencies.g. + + * frequencies.q: Remove a lot of old #if'd out code at the end. + (internal_cmd_frequencies) Use calc() instead of calc_no_weight() + or calc_weight(). Initialize percentile_values. + (calc) New function based on calc_weight() from frequencies.g. + (precalc) Use hash functions. + (static var comparison_func) Removed. + (static var comparison_param) Removed. + (comparison_helper) Removed. + (get_freq_comparator) New function. + (not_missing) New function. + (add_freq) Removed. + (postprocess_freq_tab) Use hash table functions, algorithms, + get_freq_comparator(). Rewrite. + (cleanup_freq_tab) Rephrase. + (add_percentile) Clean up spacing. + (hash_value_numeric) New function. + (hash_value_alpha) New function. + (compare_value_numeric_a) Rewrite. + (compare_value_alpha_a) Rewrite. + (compare_value_numeric_d) Rewrite. + (compare_value_alpha_d) Rewrite. + (compare_freq_numeric_a) Rewrite. + (compare_freq_alpha_a) Rewrite. + (compare_freq_numeric_d) Rewrite. + (compare_freq_alpha_d) Rewrite. + (calc_stats) Clean up mode, percentiles, max. + (dump_statistics) Clean up spacing. + + * frequencies.g: Removed. + + * var.h: (struct freq_tab) Change `data' to hash table. + +Fri Dec 19 14:15:46 2003 Ben Pfaff + + * file-handle.h: Remove declaration of global variable `files', + which wasn't used anywhere. + + * postscript.c: (add_encoding) Remove superfluous cast. + (line) Ditto. + + * sfm-read.c: [linux] (bswap_int32) Drop ntohl() non-portable + version. + + * temporary.c: [0] (display_tree) Removed. + +Fri Dec 19 14:13:04 2003 Ben Pfaff + + Implement a new random number generator based on the alleged RC4 + algorithm. + + * expr-evl.c: (expr_evaluate) Use rng_get_double_normal() instead + of rand_normal(). + + * random.c: [!HAVE_GOOD_RANDOM] (real_rand) Removed. + [!HAVE_GOOD_RANDOM] (real_srand) Removed. + (macro k) Removed. + (static var V[]) Removed. + (static var Y) Removed. + (static var X2) Removed. + (setup_randomize) Removed. + (shuffle) Removed. + (rand_uniform) Removed. + (rand_normal) Removed. + (struct rng) New structure. + (rng_create) New function. + (rng_destroy) New function. + (swap_byte) New static function. + (rng_seed) New function. + (rng_get_bytes) New function. + (rng_get_int) New function. + (rng_get_unsigned) New function. + (rng_get_double) New function. + (rng_get_double_normal) New function. + (pspp_rng) New function. + + * random.h: Sync up to random.c. + + * sample.c: (struct sample_trns) Make `frac' unsigned and a + fraction of UINT_MAX, not 65536. + (cmd_sample) Use rng_get_unsigned(), rng_get_double(), UINT_MAX + fraction. + + * vfm.c: (open_active_file) No need to call setup_randomize() any + longer. + +Fri Dec 19 12:05:56 2003 Ben Pfaff + + Change dictionary name indexes to use hash tables instead of AVL + trees. + + * crosstabs.q: (free_var_dict) Use hash tables. + (crs_custom_tables) Ditto. + (calc_general) Ditto. + (compare_table_entry) Rewrite. + (enum_var_values) Reorder parameters. All references updated. + Rewrite. + + * get.c: (rename_variable) Use hash tables. + (mtf_merge_dictionary) Ditto. + + * glob.c: (init_glob) Use hash tables. + (cmp_variable) Removed. + + * means.q: (mns_custom_tables) Use hash tables. + + * modify-vars.c: (rearrange_dict) Use hash tables. + + * rename-vars.c: (cmd_rename_variables) Use hash tables. + + * sfm-read.c: (read_header) Use hash tables. + (read_variables) Ditto. + + * temporary.c: (new_dictionary) Use hash tables. + (save_dictionary) Ditto. + (restore_dictionary) Ditto. + + * var.h: (struct dictionary) Change AVL tree `var_by_name' into + hash table `name_tab'. + + * vars-atr.c: [DEBUGGING] (dump_one_var_node) Removed. + [DEBUGGING] (dump_var_tree) Removed. + (find_variable) Use hash tables. + (find_dict_variable) Ditto. + (common_init_stuff) Ditto. + (rename_variable) Ditto. + (clear_variable) Ditto. Also, remove debug code. + (dup_variable) Use hash tables. + + * vars-prs.c: (fill_all_vars) Use hash tables. + (is_dict_varname) Ditto. + (parse_dict_variable) Ditto. + +Fri Dec 19 11:46:23 2003 Ben Pfaff + + Change value labels to use hash tables instead of AVL trees, and + change value labels into an ADT. + + * Makefile.am: (pspp_SOURCES) Add value-labels.c, value-labels.h. + + * value-labels.c: New file. + + * value-labels.h: New file. + + * apply-dict.c: (cmd_apply_dictionary) Use value label ADT. + Get rid of a stupid use of goto. + + * autorecode.c: (compare_alpha_value) Rewrite. + (hash_alpha_value) Ditto. + (compare_numeric_value) Rewrite. + (hash_numeric_value) Ditto. + + * frequencies.q: (dump_full) Use value label ADT. + + * pfm-read.c: (read_value_label) Use value label ADT. + + * pfm-write.c: (write_value_labels) Use value label ADT. + + * sfm-read.c: (read_variables) Use value label ADT. + (read_value_labels) Rewrite. + + * sfm-write.c: (write_value_labels) Rewrite. + + * sysfile-info.c: (cmd_sysfile_info) Use value label ADT. + (display_variables) Ditto. + (describe_variable) Ditto. + + * t-test.q: (print_t_groups) Use value label ADT. + + * temporary.c: (copy_variable) Use value label ADT. + (free_dictionary) Ditto. + + * val-labs.c: (verify_val_labs) Use value label ADT. + (get_label) Ditto. + (debug_print) Ditto. + (val_lab_cmp) Removed. + (inc_ref_count) Removed. + (copy_value_labels) Removed. + + * var.h: (struct value_label) Removed. + (struct variable) Change AVL tree `val_lab' into hash table + `val_labs'. + + * vars-atr.c: (init_variable) Use value label ADT. + (clear_variable) Ditto. + (free_value_label) Removed. + (free_val_lab) Removed. + (get_val_lab) Removed. + (compare_variables) New function. + (hash_variable) New function. + + * vfm.c: (dump_splits) Use value label ADT. + +Fri Dec 19 11:18:11 2003 Ben Pfaff + + Add to the hash table interface. + + * hash.c: (hsh_hash_bytes) Add assertion. + (hsh_hash_string) Ditto. + (hsh_clear) Ditto. + (hsh_rehash) Ditto. + (hsh_probe) Ditto. + (hsh_create) Ditto. Also make minimum `size'. + (hsh_destroy) Rephrase. + (sort_nulls_last) Removed. + (not_null) New function. + (hsh_data) Ditto. + (comparison_helper) Ditto. + (hsh_sort) Rewritten. + (hsh_data_copy) New function. + (hsh_sort_copy) Ditto. + (hsh_insert) Ditto. + (hsh_replace) Ditto. + (hsh_hash_double) Ditto. + (hsh_delete) Fix stupid bug. + +Thu Dec 18 12:27:03 WAST 2003 John Darrington + * added a calculation of the mode to FREQUENCIES + +Wed Dec 17 12:53:01 WAST 2003 John Darrington + + * moved (un)defs of DEBUGGING to config.h + Mon Dec 15 21:35:59 2003 Ben Pfaff * groff-font.c: (add_kern) Fix indentation.