John Darrington [Sun, 19 Jul 2009 11:35:35 +0000 (13:35 +0200)]
Fix cleanup of ROC command.
Properly deallocate variables, and use correct
symbols for parser return values. Also, delete
roc.h which is unnecessary. Thanks to Ben Pfaff
for pointing out these problems.
John Darrington [Sat, 18 Jul 2009 10:08:04 +0000 (12:08 +0200)]
Use data_out_pool in crosstabs.q
We were erroneously allocating a buffer before
the size of the contents were known. Using
data_out_pool avoids this problem. Thanks to
Ben Pfaff for pointing this out.
Jason Stover [Fri, 17 Jul 2009 20:02:02 +0000 (16:02 -0400)]
pspp_linreg(): Use cache->n_coeffs to set the dimensions of sw, instead of
cache->n_indeps, which may give incorrect dimension in the case
of categorical variables. Fixes bug referenced in bug report
26861.
Ben Pfaff [Thu, 16 Jul 2009 05:12:07 +0000 (22:12 -0700)]
i18n: Reduce translatable strings in SHOW command.
All the output from the SHOW command is of the form "%s is %s." but the
translators were being asked to translate similar strings over and over
again. Reduce their load by getting rid of many translatable strings.
Ben Pfaff [Thu, 16 Jul 2009 05:10:17 +0000 (22:10 -0700)]
i18n: Change some strings to reduce work of translation.
PSPP has a number of strings that happen to be phrased differently for no
particular reason. This commit changes some of those strings to be
exactly the same as other ones, to make the work of translators easier.
Ben Pfaff [Thu, 16 Jul 2009 04:15:39 +0000 (21:15 -0700)]
Separate table functions that format their arguments from those that don't.
The tab_text, tab_joint_text, and tab_output_text functions, until now,
had an option bit TAT_PRINTF that specified whether they passed their text
argument through sprintf. This interface was bad because it made it
impossible for GCC to tell whether it needed to verify a printf format
string or not.
This commit solves the problem by breaking each of these functions into one
that does format its argument and one that doesn't.
John Darrington [Sun, 12 Jul 2009 14:13:44 +0000 (22:13 +0800)]
Added a dict parameter to data_in and dealt with the consequences.
The data_in function now takes a pointer to a struct dictionary,
which must be the dictionary with which the output value is
associated. Data_in now ensures that the data of string values
is converted to the dictionary's encoding if necessary.
John Darrington [Tue, 7 Jul 2009 16:50:57 +0000 (00:50 +0800)]
Change union value type to contain uint8_t types instead of char.
Make the members of the union value type in src/data/value.h be
uint8_t instead of char. This is more logical since the contents
of values cannot be considered "strings" until they have been
formatted. The unformatted values are merely arrays of bytes.
This has the added advantage of provoking compiler warnings when
a char * type is being implicitly cast to a uint8_t * or vici-versa.
When such a warning is encountered, is probably means that the
data needs to be re-encoded using recode_string.
John Darrington [Tue, 7 Jul 2009 04:19:17 +0000 (12:19 +0800)]
Add dictionary argument to tab_value.
In order to properly display values, tab_value needs
to know the dictionary from whence the value comes.
This is necessary so that string values can be properly
decoded.
This change adds this argument to tab_value and updates
all callers.
John Darrington [Mon, 6 Jul 2009 11:51:34 +0000 (19:51 +0800)]
data_out function to dynamically allocate return value.
Preparation for i18n of values. Instead of asking the
caller to prepare the buffer for output, data_out now
dynamically allocates the output value, and expects the
caller to free it. This is necessary since for utf8
strings, the caller cannot reasonably know the length of
the required output buffer. It also simplifies some uses
of data_out.
John Darrington [Sun, 5 Jul 2009 12:45:12 +0000 (20:45 +0800)]
Change enum legacy_encoding to const char *.
Preparation for i18n of union values. Remove the
legacy_encoding enum and substitute it with a const
char *. This makes it easier to integrate recoding
of union values in the data parsing stage.
John Darrington [Sun, 5 Jul 2009 09:33:29 +0000 (17:33 +0800)]
Store variable names, labels and value labels as UTF8.
This change converts long variable names, variable labels
and value labels to utf8 encoding when system files are
loaded. It is therefore no longer necessary (nor correct)
to convert them when displaying.
Ben Pfaff [Mon, 15 Jun 2009 03:09:42 +0000 (20:09 -0700)]
Allow variables created by var_create_internal to have any width.
Until now, var_create_internal has always created a numeric variable.
In the long run we wish to phase out the use of internal variables
entirely, but this change should help Jason get some work done in the
short term.
Ben Pfaff [Sat, 30 May 2009 04:26:13 +0000 (21:26 -0700)]
datasheet-test: Check duplicate states before discarding them.
By failing to check states whose hashes already appeared in the model
checker table, the datasheet test was missing some bugs. This commit
changes the datasheet test code to check the state before it checks for
the hash.
Ben Pfaff [Sat, 30 May 2009 04:45:28 +0000 (21:45 -0700)]
datasheet-test: Don't test null operations.
By not testing null operations (such as inserting or deleting 0 rows or
columns) the duration of the test is cut roughly in half, with little if
any reduction in test coverage.
Ben Pfaff [Wed, 27 May 2009 05:02:48 +0000 (22:02 -0700)]
Move datasheet test out of PSPP into a separate binary.
When it's not difficult to do so, it is better to put tests in separate
binaries instead of in the PSPP binaries, so that the binaries are not
burdened with code that is not of real interest to users and to make the
main PSPP binaries build faster.