/* 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
{
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. */
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);
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, bool for_input);
-void fmt_change_decimals (struct fmt_spec *, int decimals, bool for_input);
+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);
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;
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.
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 */