X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fdata%2Fformat.h;h=4cde16b17a0b1352356f6b522c602bc18150b70e;hb=be14f24529e64b7d1dad2b148b4d254da38160de;hp=8cc1b8718a78e9fa0ef6e4444f2d5dfa0cedb4db;hpb=81e3a36c830463d97ff4f5937a670206cc26e193;p=pspp diff --git a/src/data/format.h b/src/data/format.h index 8cc1b8718a..4cde16b17a 100644 --- a/src/data/format.h +++ b/src/data/format.h @@ -24,6 +24,8 @@ #include "data/val-type.h" #include "libpspp/str.h" +struct fmt_settings; + /* How a format is going to be used. */ enum fmt_use { @@ -54,7 +56,7 @@ enum fmt_category }; /* Format type. */ -enum fmt_type +enum ATTRIBUTE ((packed)) fmt_type { #define FMT(NAME, METHOD, IMIN, OMIN, IO, CATEGORY) FMT_##NAME, #include "format.def" @@ -73,8 +75,8 @@ enum fmt_type struct fmt_spec { enum fmt_type type; /* One of FMT_*. */ - int w; /* Width. */ - int d; /* Number of decimal places. */ + uint8_t d; /* Number of decimal places. */ + uint16_t w; /* Width. */ }; /* Maximum width of any numeric format. */ @@ -83,7 +85,8 @@ struct fmt_spec /* Constructing formats. */ struct fmt_spec fmt_for_input (enum fmt_type, int w, int d) PURE_FUNCTION; struct fmt_spec fmt_for_output (enum fmt_type, int w, int d) PURE_FUNCTION; -struct fmt_spec fmt_for_output_from_input (const struct fmt_spec *); +struct fmt_spec fmt_for_output_from_input (const struct fmt_spec *, + const struct fmt_settings *); struct fmt_spec fmt_default_for_width (int width); /* Verifying formats. */ @@ -172,6 +175,8 @@ struct fmt_number_style *fmt_number_style_clone ( const struct fmt_number_style *); void fmt_number_style_destroy (struct fmt_number_style *); +char *fmt_number_style_to_string (const struct fmt_number_style *); + int fmt_affix_width (const struct fmt_number_style *); int fmt_neg_affix_width (const struct fmt_number_style *); @@ -188,7 +193,7 @@ struct fmt_settings void fmt_settings_init (struct fmt_settings *); void fmt_settings_uninit (struct fmt_settings *); -void fmt_settings_copy (struct fmt_settings *, const struct fmt_settings *); +struct fmt_settings fmt_settings_copy (const struct fmt_settings *); const struct fmt_number_style *fmt_settings_get_style ( const struct fmt_settings *, enum fmt_type);