/* PSPP - computes sample statistics.
Copyright (C) 1997-9, 2000, 2006 Free Software Foundation, Inc.
- Written by Ben Pfaff <blp@gnu.org>.
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
/* Returns true if A and B are identical formats,
false otherwise. */
bool
-fmt_equal (const struct fmt_spec *a, const struct fmt_spec *b)
+fmt_equal (const struct fmt_spec *a, const struct fmt_spec *b)
{
return a->type == b->type && a->w == b->w && a->d == b->d;
}
category. Thus, the return value may be tested for equality
or compared bitwise against a mask of FMT_CAT_* values. */
enum fmt_category
-fmt_get_category (enum fmt_type type)
+fmt_get_category (enum fmt_type type)
{
return get_fmt_desc (type)->category;
}
enum fmt_type
fmt_input_to_output (enum fmt_type type)
{
- switch (fmt_get_category (type))
+ switch (fmt_get_category (type))
{
case FMT_CAT_STRING:
return FMT_A;
NOT_REACHED ();
}
}
+
+/* Returns a string of the form "$#,###.##" according to FMT,
+ which must be of type FMT_DOLLAR. The caller must free the
+ string. */
+char *
+fmt_dollar_template (const struct fmt_spec *fmt)
+{
+ struct string s = DS_EMPTY_INITIALIZER;
+ int c;
+
+ assert (fmt->type == FMT_DOLLAR);
+
+ ds_put_char (&s, '$');
+ for (c = MAX (fmt->w - fmt->d - 1, 0); c > 0; )
+ {
+ ds_put_char (&s, '#');
+ if (--c % 4 == 0 && c > 0)
+ {
+ ds_put_char (&s, fmt_grouping_char (fmt->type));
+ --c;
+ }
+ }
+ if (fmt->d > 0)
+ {
+ ds_put_char (&s, fmt_decimal_char (fmt->type));
+ ds_put_char_multiple (&s, '#', fmt->d);
+ }
+
+ return ds_cstr (&s);
+}
\f
/* Returns true if TYPE is a valid format type,
false otherwise. */