X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fdata%2Fformat.c;h=2a0092fc7d98adf6526534557632515a2ae6fc86;hb=0fa141762183890ebd139ccd9264f08db9011539;hp=3ce41ee0a3089cd9940b9ed048eed6049c14354b;hpb=3a61659a8fc11c51ad5af02b20f5613dcde50382;p=pspp diff --git a/src/data/format.c b/src/data/format.c index 3ce41ee0a3..2a0092fc7d 100644 --- a/src/data/format.c +++ b/src/data/format.c @@ -60,10 +60,15 @@ fmt_init (void) } } +static struct fmt_number_style *styles[FMT_NUMBER_OF_FORMATS]; + /* Deinitialize the format module. */ void fmt_done (void) { + int t; + for (t = 0 ; t < FMT_NUMBER_OF_FORMATS ; ++t ) + fmt_number_style_destroy (styles[t]); } /* Returns an input format specification with type TYPE, width W, @@ -456,7 +461,7 @@ fmt_max_output_decimals (enum fmt_type type, int width) int fmt_step_width (enum fmt_type type) { - return fmt_get_category (type) & FMT_CAT_HEXADECIMAL ? 2 : 1; + return fmt_get_category (type) == FMT_CAT_HEXADECIMAL ? 2 : 1; } /* Returns true if TYPE is used for string fields, @@ -464,7 +469,7 @@ fmt_step_width (enum fmt_type type) bool fmt_is_string (enum fmt_type type) { - return fmt_get_category (type) & FMT_CAT_STRING; + return fmt_get_category (type) == FMT_CAT_STRING; } /* Returns true if TYPE is used for numeric fields, @@ -491,10 +496,19 @@ fmt_get_category (enum fmt_type type) enum fmt_type fmt_input_to_output (enum fmt_type type) { - enum fmt_category category = fmt_get_category (type); - return (category & FMT_CAT_STRING ? FMT_A - : category & (FMT_CAT_BASIC | FMT_CAT_HEXADECIMAL) ? FMT_F - : type); + switch (fmt_get_category (type)) + { + case FMT_CAT_STRING: + return FMT_A; + + case FMT_CAT_LEGACY: + case FMT_CAT_BINARY: + case FMT_CAT_HEXADECIMAL: + return FMT_F; + + default: + return type; + } } /* Returns the SPSS format type corresponding to the given PSPP @@ -503,7 +517,7 @@ int fmt_to_io (enum fmt_type type) { return get_fmt_desc (type)->io; -}; +} /* Determines the PSPP format corresponding to the given SPSS format type. If successful, sets *FMT_TYPE to the PSPP format @@ -551,13 +565,13 @@ fmt_date_template (enum fmt_type type) case FMT_QYR: return "q Q yy"; case FMT_MOYR: - return "mmm yy"; + return "mmmXyy"; case FMT_WKYR: return "ww WK yy"; case FMT_DATETIME: return "dd-mmm-yyyy HH:MM"; case FMT_TIME: - return "h:MM"; + return "H:MM"; case FMT_DTIME: return "D HH:MM"; default: @@ -736,7 +750,6 @@ max_digits_for_bytes (int bytes) return map[bytes - 1]; } -static struct fmt_number_style *styles[FMT_NUMBER_OF_FORMATS]; /* Creates and returns a new struct fmt_number_style, initializing all affixes to empty strings. */