X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fformat.h;h=470c45cbf7117308702130afca56223a034098a2;hb=25fae0555073f526e5d5825133a2f62454a7b4c6;hp=ad6d2f7ba5d39caf45a6f887a8ed699f0bb15d86;hpb=4944c86a9318bc5b5578ab145a95c116ffd2c9fd;p=pspp diff --git a/src/format.h b/src/format.h index ad6d2f7ba5..470c45cbf7 100644 --- a/src/format.h +++ b/src/format.h @@ -21,12 +21,14 @@ #define format_h 1 /* Display format types. */ + +#include "bool.h" + /* See the definitions of these functions and variables when modifying this list: misc.c:convert_fmt_ItoO() sfm-read.c:parse_format_spec() - data-in.c:parse_string_as_format() - data-out.c:convert_format_to_string(). */ + data-in.c:parse_string_as_format() */ #define DEFFMT(LABEL, NAME, N_ARGS, IMIN_W, IMAX_W, OMIN_W, OMAX_W, \ CAT, OUTPUT, SPSS_FMT) \ LABEL, @@ -72,20 +74,31 @@ struct fmt_spec /* Descriptions of all the display formats above. */ extern struct fmt_desc formats[]; -/* Translates SPSS formats to PSPP formats. */ -extern const int translate_fmt[40]; - union value; -int parse_format_specifier (struct fmt_spec *input, int allow_xt); -int parse_format_specifier_name (const char **cp, int allow_xt); -int check_input_specifier (const struct fmt_spec *spec); -int check_output_specifier (const struct fmt_spec *spec); -int check_string_specifier (const struct fmt_spec *spec, int min_len); +/* Maximum length of formatted value, in characters. */ +#define MAX_FORMATTED_LEN 256 + +/* Flags for parsing formats. */ +enum fmt_parse_flags + { + FMTP_ALLOW_XT = 001, /* 1=Allow X and T formats. */ + FMTP_SUPPRESS_ERRORS = 002 /* 1=Do not emit error messages. */ + }; + +int parse_format_specifier (struct fmt_spec *input, enum fmt_parse_flags); +int parse_format_specifier_name (const char **cp, enum fmt_parse_flags); +int check_input_specifier (const struct fmt_spec *spec, int emit_error); +int check_output_specifier (const struct fmt_spec *spec, int emit_error); +bool check_specifier_type (const struct fmt_spec *, int type, bool emit_error); +bool check_specifier_width (const struct fmt_spec *, + int width, bool emit_error); void convert_fmt_ItoO (const struct fmt_spec *input, struct fmt_spec *output); +int get_format_var_width (const struct fmt_spec *); int parse_string_as_format (const char *s, int len, const struct fmt_spec *fp, int fc, union value *v); -int data_out (char *s, const struct fmt_spec *fp, const union value *v); +int translate_fmt (int spss); +void data_out (char *s, const struct fmt_spec *fp, const union value *v); char *fmt_to_string (const struct fmt_spec *); void num_to_string (double v, char *s, int w, int d);