projects
/
pspp-builds.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge commit 'origin/data-encoding'
[pspp-builds.git]
/
src
/
output
/
table.c
diff --git
a/src/output/table.c
b/src/output/table.c
index 5686e2bf18dd128d4d3d11bdc2572a5e48da5053..72edf17f08b7f6e9e0dec91ad8b56f5b9e87b88b 100644
(file)
--- a/
src/output/table.c
+++ b/
src/output/table.c
@@
-29,6
+29,7
@@
#include <data/data-out.h>
#include <data/format.h>
#include <data/value.h>
#include <data/data-out.h>
#include <data/format.h>
#include <data/value.h>
+#include <data/dictionary.h>
#include <libpspp/assertion.h>
#include <libpspp/compiler.h>
#include <libpspp/misc.h>
#include <libpspp/assertion.h>
#include <libpspp/compiler.h>
#include <libpspp/misc.h>
@@
-506,7
+507,8
@@
tab_natural_dimensions (struct tab_table *t, struct outp_driver *d,
from V, displayed with format spec F. */
void
tab_value (struct tab_table *table, int c, int r, unsigned char opt,
from V, displayed with format spec F. */
void
tab_value (struct tab_table *table, int c, int r, unsigned char opt,
- const union value *v, const struct fmt_spec *f)
+ const union value *v, const struct dictionary *dict,
+ const struct fmt_spec *f)
{
char *contents;
{
char *contents;
@@
-525,11
+527,10
@@
tab_value (struct tab_table *table, int c, int r, unsigned char opt,
}
#endif
}
#endif
- contents = pool_alloc (table->container, f->w);
- table->cc[c + r * table->cf] = ss_buffer (contents, f->w);
- table->ct[c + r * table->cf] = opt;
+ contents = data_out_pool (v, dict_get_encoding (dict), f, table->container);
- data_out (v, f, contents);
+ table->cc[c + r * table->cf] = ss_cstr (contents);
+ table->ct[c + r * table->cf] = opt;
}
/* Sets cell (C,R) in TABLE, with options OPT, to have value VAL
}
/* Sets cell (C,R) in TABLE, with options OPT, to have value VAL
@@
-538,8
+539,7
@@
void
tab_fixed (struct tab_table *table, int c, int r, unsigned char opt,
double val, int w, int d)
{
tab_fixed (struct tab_table *table, int c, int r, unsigned char opt,
double val, int w, int d)
{
- char *contents;
- char buf[40], *cp;
+ char *s, *cp;
struct fmt_spec f;
union value double_value;
struct fmt_spec f;
union value double_value;
@@
-568,17
+568,15
@@
tab_fixed (struct tab_table *table, int c, int r, unsigned char opt,
#endif
double_value.f = val;
#endif
double_value.f = val;
-
data_out (&double_value, &f, buf
);
+
s = data_out_pool (&double_value, LEGACY_NATIVE, &f, table->container
);
- cp =
buf
;
- while (isspace ((unsigned char) *cp) && cp < &
buf
[w])
+ cp =
s
;
+ while (isspace ((unsigned char) *cp) && cp < &
s
[w])
cp++;
cp++;
- f.w = w - (cp -
buf
);
+ f.w = w - (cp -
s
);
- contents = pool_alloc (table->container, f.w);
- table->cc[c + r * table->cf] = ss_buffer (contents, f.w);
+ table->cc[c + r * table->cf] = ss_buffer (cp, f.w);
table->ct[c + r * table->cf] = opt;
table->ct[c + r * table->cf] = opt;
- memcpy (contents, cp, f.w);
}
/* Sets cell (C,R) in TABLE, with options OPT, to have value VAL as
}
/* Sets cell (C,R) in TABLE, with options OPT, to have value VAL as
@@
-589,11
+587,8
@@
void
tab_double (struct tab_table *table, int c, int r, unsigned char opt,
double val, const struct fmt_spec *fmt)
{
tab_double (struct tab_table *table, int c, int r, unsigned char opt,
double val, const struct fmt_spec *fmt)
{
- int w;
- char *contents;
- char buf[40], *cp;
-
- union value double_value;
+ struct substring ss;
+ union value double_value ;
assert (table != NULL);
assert (table != NULL);
@@
-622,17
+617,12
@@
tab_double (struct tab_table *table, int c, int r, unsigned char opt,
#endif
double_value.f = val;
#endif
double_value.f = val;
-
data_out (&double_value, fmt, buf
);
+
ss = ss_cstr (data_out_pool (&double_value, LEGACY_NATIVE, fmt, table->container)
);
- cp = buf;
- while (isspace ((unsigned char) *cp) && cp < &buf[fmt->w])
- cp++;
- w = fmt->w - (cp - buf);
+ ss_ltrim (&ss, ss_cstr (" "));
- contents = pool_alloc (table->container, w);
- table->cc[c + r * table->cf] = ss_buffer (contents, w);
+ table->cc[c + r * table->cf] = ss;
table->ct[c + r * table->cf] = opt;
table->ct[c + r * table->cf] = opt;
- memcpy (contents, cp, w);
}
}