projects
/
pspp
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Rewrite formatted data input routines to conform to SPSS data formats
[pspp]
/
src
/
data
/
format.c
diff --git
a/src/data/format.c
b/src/data/format.c
index 3ce41ee0a3089cd9940b9ed048eed6049c14354b..2a0092fc7d98adf6526534557632515a2ae6fc86 100644
(file)
--- 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)
{
/* 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,
}
/* 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)
{
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,
}
/* 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)
{
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,
}
/* 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_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
}
/* 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;
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
/* 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:
case FMT_QYR:
return "q Q yy";
case FMT_MOYR:
- return "mmm
yy";
+ return "mmm
X
yy";
case FMT_WKYR:
return "ww WK yy";
case FMT_DATETIME:
return "dd-mmm-yyyy HH:MM";
case FMT_TIME:
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:
case FMT_DTIME:
return "D HH:MM";
default:
@@
-736,7
+750,6
@@
max_digits_for_bytes (int bytes)
return map[bytes - 1];
}
\f
return map[bytes - 1];
}
\f
-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. */
/* Creates and returns a new struct fmt_number_style,
initializing all affixes to empty strings. */