/* PSPP - a program for statistical analysis.
- Copyright (C) 1997, 1998, 1999, 2000, 2009 Free Software Foundation, Inc.
+ Copyright (C) 1997, 1998, 1999, 2000, 2009, 2011, 2014 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
Some of the features of this type of table are obsolete but have not yet
been removed, because some code still uses them. These features are:
- - The title. The title (or caption, actually) is a property of the
- table_item (see output/table-item.h) in which a table is embedded,
- not a property of the table itself.
+ - The title and caption. These are properties of the table_item (see
+ output/table-item.h) in which a table is embedded, not properties of
+ the table itself.
- Row and columns offsets (via tab_offset(), tab_next_row()). This
feature simply isn't used enough to justify keeping it.
the table code here.
*/
-#include <libpspp/compiler.h>
-#include <output/table.h>
+#include "libpspp/compiler.h"
+#include "output/table.h"
+#include "data/format.h"
+
+enum result_class
+ {
+ RC_INTEGER,
+ RC_WEIGHT,
+ RC_PVALUE,
+ RC_OTHER,
+ n_RC
+ };
/* A table. */
struct tab_table
struct table table;
struct pool *container;
- /* Table title, or a null pointer if no title has been set.
-
- The table title is properly part of struct table_item, not struc*/
- char *title;
+ /* Table title and caption, or null. */
+ char *title, *caption;
int cf; /* Column factor for indexing purposes. */
/* Table contents.
/* X and Y offsets. */
int col_ofs, row_ofs;
+
+ struct fmt_spec fmtmap [n_RC];
};
struct tab_table *tab_cast (const struct table *);
void tab_headers (struct tab_table *, int l, int r, int t, int b);
void tab_title (struct tab_table *, const char *, ...)
PRINTF_FORMAT (2, 3);
+void tab_caption (struct tab_table *, const char *, ...)
+ PRINTF_FORMAT (2, 3);
void tab_submit (struct tab_table *);
/* Rules. */
/* Obsolete cell options. */
#define TAT_TITLE TAB_EMPH /* Title attributes. */
+void tab_set_format (struct tab_table *, enum result_class, const struct fmt_spec *);
+
+
/* Cells. */
struct fmt_spec;
struct dictionary;
union value;
void tab_value (struct tab_table *, int c, int r, unsigned char opt,
- const union value *, const struct dictionary *dict,
+ const union value *, const struct variable *,
const struct fmt_spec *);
-void tab_fixed (struct tab_table *, int c, int r, unsigned char opt,
- double v, int w, int d);
-
void tab_double (struct tab_table *, int c, int r, unsigned char opt,
- double v, const struct fmt_spec *);
+ double v, const struct fmt_spec *, enum result_class );
void tab_text (struct tab_table *, int c, int r, unsigned opt, const char *);
void tab_text_format (struct tab_table *, int c, int r, unsigned opt,
unsigned opt, const char *, ...)
PRINTF_FORMAT (7, 8);
+void tab_footnote (struct tab_table *, int x, int y, const char *format, ...)
+ PRINTF_FORMAT (4, 5);
+
+void tab_subtable (struct tab_table *, int x1, int y1, int x2, int y2,
+ unsigned opt, struct table_item *subtable);
+void tab_subtable_bare (struct tab_table *, int x1, int y1, int x2, int y2,
+ unsigned opt, struct table_item *subtable);
+
bool tab_cell_is_empty (const struct tab_table *, int c, int r);
/* Editing. */