aboutsummaryrefslogtreecommitdiff
path: root/src/tagr.h
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org.ua>2009-04-26 12:42:11 +0300
committerSergey Poznyakoff <gray@gnu.org.ua>2009-04-26 12:42:11 +0300
commitd50fc04ded36255465184a16c70eb4c50acdb199 (patch)
tree02a568794c2a211621d1fe39868eaad7963bdc43 /src/tagr.h
parent099a946ad4465c42db4737b247f1e89bd03c83ae (diff)
downloadtagr-d50fc04ded36255465184a16c70eb4c50acdb199.tar.gz
tagr-d50fc04ded36255465184a16c70eb4c50acdb199.tar.bz2
Introduce formats in preprocessor variables.
* configure.ac: Version 1.9.90 * NEWS: Likewise. * etc/Makefile.am (EXTRA_DIST): Add logfilter.awk uptmpl.sed * etc/logfilter.awk: New file * etc/uptmpl.sed: New file * etc/tagr.tmpl: Update * etc/upgrade.awk: Add copyleft header * gnulib.modules: Add fprintftime. * src/graph.c (rate_unit): Change to "Bytes per Second". (number_suffix, number_suffix_count): Move to grid.c * src/html.gram.y: Work with formats. * src/html.lex.l: Likewise. * src/output.c (update_output): Store NOW as a number and provide a formatting function for it. * src/tagr.h (union value, value_format_fn): New types. (pp_value_t): New members: fmt, format (add_numeric_value, add_string_value): Change return type. (init_value): New proto.
Diffstat (limited to 'src/tagr.h')
-rw-r--r--src/tagr.h23
1 files changed, 16 insertions, 7 deletions
diff --git a/src/tagr.h b/src/tagr.h
index b65b8d4..96035f2 100644
--- a/src/tagr.h
+++ b/src/tagr.h
@@ -97,15 +97,21 @@ int yyerror (char *s);
typedef enum { unspecified_value, numeric_value, string_value } value_type;
+union value
+{
+ double number;
+ char *string;
+};
+
+typedef void (*value_format_fn) (FILE *, union value, const char *, int);
+
typedef struct
{
value_type type;
int prec;
- union
- {
- double number;
- char *string;
- } v;
+ char *fmt;
+ value_format_fn format;
+ union value v;
} pp_value_t;
typedef struct pp_value_list
@@ -117,8 +123,11 @@ typedef struct pp_value_list
int read_symtab (pp_tab_t **tab, const char *name);
int write_symtab (pp_tab_t *tab, const char *name);
-void add_numeric_value (pp_tab_t ** ptab, const char *name, double number);
-void add_string_value (pp_tab_t ** ptab, const char *name, const char *string);
+void init_value (pp_value_t *p, value_type type, union value *v);
+pp_value_t *add_numeric_value (pp_tab_t ** ptab,
+ const char *name, double number);
+pp_value_t *add_string_value (pp_tab_t ** ptab,
+ const char *name, const char *string);
int find_value (char *name, pp_value_t * val);
void free_tab (pp_tab_t ** ptab);
int create_html (pp_tab_t * tab, char *file, char *dest);

Return to:

Send suggestions and report system problems to the System administrator.