X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;ds=sidebyside;f=src%2Fdata%2FChangeLog;h=e4306829c42d15e51328d2ac63470f8a7f223da3;hb=338fb2a2e84df6427a2fdee6769421f57d5666d8;hp=c77770c404e8b5062343d22c9839e26d24e6e706;hpb=fd0958dc7caa5806b82b9757e2b937c5b7def369;p=pspp-builds.git diff --git a/src/data/ChangeLog b/src/data/ChangeLog index c77770c4..e4306829 100644 --- a/src/data/ChangeLog +++ b/src/data/ChangeLog @@ -1,3 +1,305 @@ +Sat Dec 9 18:05:59 2006 Ben Pfaff + + * data-out.c (output_scientific): Fix bad assumption that "buf" is + null-terminated. + +Sat Dec 9 17:23:23 2006 Ben Pfaff + + Finish converting struct variable to an opaque type. In this + phase, we add remaining setter and getter functions, convert the + remaining PSPP code to use them, and do a bunch of cleanup. The + resulting changes are pervasive but mostly trivial, and only the + notable changes are logged. + + * automake.mk (src_data_libdata_a_SOURCES): Add the new source + files. + + * case.c (case_data): Renamed case_data_idx. + (case_num): Renamed case_num_idx. + (case_str): Renamed case_str_idx. + (case_data_rw): Renamed case_data_rw_idx. + + * case.h (case_data): New function with old name and an interface + that takes a variable instead of an index, which is easier to + use. Updated all callers to use the new interface, or to use the + new *_idx function (see above). + (case_num): Ditto. + (case_str): Ditto. + (case_data_rw): Ditto. + + * category.c (cat_stored_values_destroy): Changed interface to + take a struct cat_vals * instead of a struct variable *. + + * dictionary.c (dict_clone): Use new vector_clone function. + (dict_clear) Use new var_destroy function. + (add_var) New function. + (dict_create_var) Rewrite in terms of dict_create_var_assert. + (dict_create_var_assert) Rewrite in terms of add_var. + (dict_clone_var) Rewrite in terms of dict_clone_var_assert. + (dict_clone_var_assert) Rewrite in terms of var_clone, add_var. + (dict_lookup_var) Use new var_create, var_destroy functions. + (dict_contains_var) Rewrite in terms of new vardict functionality. + (set_var_dict_index) New function. + (set_var_case_index) New function. + (reindex_vars) New function. + (dict_delete_var) Rewrite in terms of new vardict functionality. + (dict_reorder_var) Ditto. + (dict_reorder_vars) Ditto. + (rename_var) New function. + (dict_rename_var) Use rename_var. + (dict_rename_vars) Use pool to simplify code. Use rename_var. + (dict_get_compacted_idx_to_fv) Rename + dict_get_compacted_dict_index_to_case_index, update callers. + (dict_create_vector) Use new vector_create function. + (dict_clear_vectors) Use new vector_destroy function. + (set_var_short_name_suffix) Move here from variable.c, renamed + from var_set_short_name_suffix, make static, update caller. + + * sys-file-private.c: New file. + (sfm_width_to_bytes) Moved here from variable.c, renamed from + width_to_bytes, update callers. + + * sys-file-private.h: New file. Later it will supplant + sfm-private.h; for now it supplements it. + (macro MIN_VERY_LONG_STRING) New macro. + (macro EFFECTIVE_LONG_STRING_LENGTH) New macro, from value.h. + + * sys-file-reader.c: Use MIN_VERY_LONG_STRING - 1 where + MAX_LONG_STRING was used before. + + * sys-file-writer.c: Ditto. + + * value-labels.c: Change the paradigm here to be that a null + pointer is OK for a struct val_labs * in most cases; it just + represents an empty set of value labels. + (val_labs_copy) A copy of a null set is a null set. + (val_labs_count) A null set has 0 labels. + (val_labs_replace) Change return type to void. Rewrite for + simplicity. + (val_labs_find) A null set does not contain the value. + (value_to_string) Moved to variable.c, renamed var_get_value_name, + transposed argument order, updated all callers. + + * value.c: New file. + (value_dup) Moved here from variable.c. + (compare_values) Ditto. + (hash_value) Ditto. + + * value.h: (macro MAX_SHORT_STRING) Rewrote for simplicity. + (macro MAX_LONG_STRING) Removed, because it was only interesting + for system files, not for general code. + (macro MAX_VERY_LONG_STRING) Ditto. + (macro EFFECTIVE_LONG_STRING_LENGTH) Moved to sys-file-private.h. + (macro MAX_ELEMS_PER_VALUE) Removed, as it was unused. + + * vardict.h: New file, for an interface between variables and + their dictionaries. + + * variable.c: A lot of functions were moved around, for better + organization. + (struct variable) Move definition here, from variable.h. + (var_type_adj) Removed--makes i18n hard. + (var_type_noun) Ditto. + (var_create) New function. + (var_clone) New function. + (var_destroy) New function. + (var_set_name) Assert that variable is not in a dictionary. + (compare_var_names) Rename compare_vars_by_name and fix a couple + of callers who thought the args were strings. + (hash_var_name) Rename hash_var_by_name. + (compare_var_ptr_names) Rename compare_var_ptrs_by_name. + (hash_var_ptr_name) Rename hash_var_ptr_by_name. + (var_is_very_long_string) Removed, because it was only interesting + to system file code. + (var_set_missing_values) Allow the argument to be the wrong width, + as long as we can resize it. Simplify callers who were doing the + resizing themselves. + (var_get_value_labels) New function. + (var_has_value_labels) New function. + (var_set_value_labels) New function. + (alloc_value_labels) New function. + (var_add_value_label) New function. + (var_replace_value_label) New function. + (var_clear_value_labels) New function. + (var_lookup_value_label) New function. + (var_get_value_name) Moved here from variable.c, renamed from + var_get_value_name, transposed argument order, updated all + callers. + (var_to_string) Moved here, from variable-label.c. + (var_set_leave) New function. + (var_get_leave) New function. + (var_must_leave) New function. + (var_set_short_name_suffix) Moved to dictionary.c, renamed + set_var_short_name_suffix. + (var_get_dict_index) New function. + (var_get_case_index) New function. + (var_get_obs_vals) New function. + (var_set_obs_vals) New function. + (var_has_obs_vals) New function. + (var_get_vardict) New function. + (var_set_vardict) New function. + (var_has_vardict) New function. + (var_clear_vardict) New function. + (value_dup) Moved to value.c. + (compare_values) Ditto. + (hash_value) Ditto. + + * variable.h: (enum NUMERIC) Rename VAR_NUMERIC, update all users. + (enum ALPHA) Rename VAR_STRING, update all users. + + * vector.c: New file. + (struct vector) Moved here, from variable.h. + (check_widths) New function. + (vector_create) New function. + (vector_clone) New function. + (vector_destroy) New function. + (vector_get_name) New function. + (vector_get_var) New function. + (vector_get_var_cnt) New function. + (compare_vector_ptrs_by_name) New function. + + * vector.h: New file. + +Sun Dec 10 11:32:56 WST 2006 John Darrington + + * casefilter.c (casefilter_variable_missing): Avoided comparision of + string variables to SYSMIS. Thanks to Ben Pfaff for reporting this + problem. + +Sat Dec 9 07:18:03 WST 2006 John Darrington + + * value-labels.c (destroy_atoms): New function. + * value-labels.c (atom_create): Call destroy_atoms in atexit handler. + +Thu Dec 7 17:38:26 2006 Ben Pfaff + + Thanks to Jason Stover for pointing out this problem. + + * data-out.c (output_number): Use gsl_finite from GSL, which is + portable, instead of isfinite, which is not. + (power256) Ditto. + +Thu Dec 7 15:22:38 WST 2006 John Darrington + + * variable.c variable.h (value_dup): New function. + +Mon Dec 4 22:20:17 2006 Ben Pfaff + + Start converting struct variable to an opaque type. In this + phase, we add a bunch of setter and getter functions and convert + most of the PSPP code to use them. The resulting changes are + pervasive but mostly trivial, and only the notable changes are + logged. + + * format.c (fmt_equal): New function. + + * variable.c (var_type_is_valid): New function. + (measure_is_valid) Moved here, from format.c. + (alignment_is_valid) Moved here, from format.c. + (var_get_name) New function. + (var_set_name) New function. + (width_to_type) New function. + (var_get_type) New function. + (var_get_width) New function. + (var_set_width) New function. + (var_is_numeric) New function. + (var_is_alpha) New function. + (var_is_short_string) New function. + (var_is_long_string) New function. + (var_is_very_long_string) New function. + (var_get_missing_values) New function. + (var_set_missing_values) New function. + (var_clear_missing_values) New function. + (var_has_missing_values) New function. + (var_is_value_missing) New function. + (var_is_num_missing) New function. + (var_is_str_missing) New function. + (var_is_value_user_missing) New function. + (var_is_num_user_missing) New function. + (var_is_str_user_missing) New function. + (var_is_value_system_missing) New function. + (var_get_print_format) New function. + (var_set_print_format) New function. + (var_get_write_format) New function. + (var_set_write_format) New function. + (var_set_both_formats) New function. + (var_get_label) New function. + (var_set_label) New function. + (var_clear_label) New function. + (var_has_label) New function. + (var_get_measure) New function. + (var_set_measure) New function. + (var_get_display_width) New function. + (var_set_display_width) New function. + (var_get_alignment) New function. + (var_set_alignment) New function. + (var_get_value_cnt) New function. + (var_get_leave) New function. + (var_get_short_name) New function. + + * variable.h: (struct variable) Removed "type" and "nv" members; + they are now computed from "width" where needed. + +Mon Dec 4 21:38:40 2006 Ben Pfaff + + * missing-values.c (mv_resize): Don't write beyond end of the + allocated buffer when resizing a long string. + +Sat Dec 2 16:28:32 2006 Ben Pfaff + + Clean up identifier code: don't require identifier enumerations to + be in a particular order; make better use of string library; + expose less of the internals. + + * identifier.c: (lex_skip_identifier) Rename lex_id_get_length, + change interface. Updated all callers. + (lex_id_match) Change interface to use struct substring, update + all callers. + (lex_id_match_len) Removed. Update callers to use lex_id_match. + (global array keywords[]) Make static, change form. Update all + users to use lex_id_name instead. + (lex_is_keyword) New function. + (lex_id_to_token) Change interface to use struct substring, update + all callers. + (lex_id_name) New function. + + * identifier.h: (T_FIRST_KEYWORD) Removed. Changed users to call + lex_is_keyword instead. + (T_LAST_KEYWORD) Removed. + (T_N_KEYWORDS) Removed. + +Sat Nov 18 20:46:35 2006 Ben Pfaff + + * format.c: (fmt_date_template) Distinguish characters for which a + space is output and any date delimiter is allowed on input, from + those for which a space is output and only a space is allowed on + input. The former is represented by X, the latter by a space. + Also, drop distinction between h and H, changing the former to the + latter. + + * data-in.c: Completely rewrite internals to conform to SPSS input + formats as closely as possible. + (data_in) Changed external interface by replacing the structure + that was used as a single argument by a set of arguments. Updated + all callers. + (data_in_finite_line) Removed. Converted all callers to use plain + data_in. + (data_in_get_integer_format) New function. + (data_in_set_integer_format) New function. + (data_in_get_float_format) New function. + (data_in_set_float_format) New function. + + * data-in.h: (enums DI_IGNORE_ERROR, DI_IMPLIED_DECIMALS) Removed. + (struct data_in) Removed. + + * data-out.c: (output_date) Drop each component from the input as + it is output, to allow us to drop the distinction between h (a + count of hours) and H (the hour of day) template characters. + Also, handle new X template character. + (output_scientific) Follow more rational rule on when to drop + fraction introduced between SPSS 13 and 15. Updated test case to + match new behavior. + Sat Nov 11 11:41:26 2006 Ben Pfaff Fix buffer overflow reported by John Darrington.