Added result_class parameter to tab_double and updated all callers. Removed tab_fixed
[pspp] / src / data / format.h
index 88a82ee970c11647cee853579ed8edd566c4d673..d05e4436215b8d17a76507bcf9cda3be2da77186 100644 (file)
@@ -1,5 +1,5 @@
 /* PSPP - a program for statistical analysis.
-   Copyright (C) 1997-9, 2000, 2006, 2010, 2011 Free Software Foundation, Inc.
+   Copyright (C) 1997-9, 2000, 2006, 2010, 2011, 2012 Free Software Foundation, Inc.
 
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
 #include "data/val-type.h"
 #include "libpspp/str.h"
 
+/* How a format is going to be used. */
+enum fmt_use
+  {
+    FMT_FOR_INPUT,           /* For parsing data input, e.g. data_in(). */
+    FMT_FOR_OUTPUT           /* For formatting data output, e.g. data_out(). */
+  };
+
 /* Format type categories.
 
    Each format is in exactly one category.  We give categories
@@ -66,7 +73,7 @@ struct fmt_spec
   {
     enum fmt_type type;                /* One of FMT_*. */
     int w;                     /* Width. */
-    int d;                     /* Number of implied decimal places. */
+    int d;                     /* Number of decimal places. */
   };
 
 /* Maximum width of any numeric format. */
@@ -79,7 +86,7 @@ struct fmt_spec fmt_for_output_from_input (const struct fmt_spec *);
 struct fmt_spec fmt_default_for_width (int width);
 
 /* Verifying formats. */
-bool fmt_check (const struct fmt_spec *, bool for_input);
+bool fmt_check (const struct fmt_spec *, enum fmt_use);
 bool fmt_check_input (const struct fmt_spec *);
 bool fmt_check_output (const struct fmt_spec *);
 bool fmt_check_type_compat (const struct fmt_spec *, enum val_type);
@@ -89,12 +96,15 @@ bool fmt_check_width_compat (const struct fmt_spec *, int var_width);
 int fmt_var_width (const struct fmt_spec *);
 char *fmt_to_string (const struct fmt_spec *, char s[FMT_STRING_LEN_MAX + 1]);
 bool fmt_equal (const struct fmt_spec *, const struct fmt_spec *);
-void fmt_resize (struct fmt_spec *, int new_width);
+bool fmt_resize (struct fmt_spec *, int new_width);
 
-void fmt_fix (struct fmt_spec *, bool for_input);
+void fmt_fix (struct fmt_spec *, enum fmt_use);
 void fmt_fix_input (struct fmt_spec *);
 void fmt_fix_output (struct fmt_spec *);
 
+void fmt_change_width (struct fmt_spec *, int width, enum fmt_use);
+void fmt_change_decimals (struct fmt_spec *, int decimals, enum fmt_use);
+
 /* Format types. */
 bool is_fmt_type (enum fmt_type);
 
@@ -103,9 +113,9 @@ bool fmt_from_name (const char *name, enum fmt_type *);
 
 bool fmt_takes_decimals (enum fmt_type) PURE_FUNCTION;
 
-int fmt_min_width (enum fmt_type, bool for_input) PURE_FUNCTION;
-int fmt_max_width (enum fmt_type, bool for_input) PURE_FUNCTION;
-int fmt_max_decimals (enum fmt_type, int width, bool for_input) PURE_FUNCTION;
+int fmt_min_width (enum fmt_type, enum fmt_use) PURE_FUNCTION;
+int fmt_max_width (enum fmt_type, enum fmt_use) PURE_FUNCTION;
+int fmt_max_decimals (enum fmt_type, int width, enum fmt_use) PURE_FUNCTION;
 int fmt_min_input_width (enum fmt_type) PURE_FUNCTION;
 int fmt_max_input_width (enum fmt_type) PURE_FUNCTION;
 int fmt_max_input_decimals (enum fmt_type, int width) PURE_FUNCTION;
@@ -124,7 +134,7 @@ bool fmt_usable_for_input (enum fmt_type) PURE_FUNCTION;
 int fmt_to_io (enum fmt_type) PURE_FUNCTION;
 bool fmt_from_io (int io, enum fmt_type *);
 
-const char *fmt_date_template (enum fmt_type) PURE_FUNCTION;
+const char *fmt_date_template (enum fmt_type, int width) PURE_FUNCTION;
 const char *fmt_gui_name (enum fmt_type);
 \f
 /* Format settings.
@@ -175,5 +185,8 @@ int fmt_affix_width (const struct fmt_number_style *);
 int fmt_neg_affix_width (const struct fmt_number_style *);
 
 extern const struct fmt_spec F_8_0 ;
+extern const struct fmt_spec F_8_2 ;
+extern const struct fmt_spec F_4_3 ;
+extern const struct fmt_spec F_5_1 ;
 
 #endif /* data/format.h */