#include "language/expressions/public.h"
#include "language/lexer/lexer.h"
#include "libpspp/message.h"
-#include "output/text-item.h"
+#include "output/driver.h"
#include "gl/xalloc.h"
struct expression *expr; /* Number of lines; NULL means 1. */
};
-static trns_proc_func print_space_trns_proc;
-static trns_free_func print_space_trns_free;
+static const struct trns_class print_space_class;
int
cmd_print_space (struct lexer *lexer, struct dataset *ds)
if (lex_token (lexer) != T_ENDCMD)
{
- expr = expr_parse (lexer, ds, EXPR_NUMBER);
+ expr = expr_parse (lexer, ds, VAL_NUMERIC);
if (lex_token (lexer) != T_ENDCMD)
{
lex_error (lexer, _("expecting end of command"));
trns->writer = writer;
trns->expr = expr;
- add_transformation (ds,
- print_space_trns_proc, print_space_trns_free, trns);
+ add_transformation (ds, &print_space_class, trns);
fh_unref (handle);
return CMD_SUCCESS;
}
/* Executes a PRINT SPACE transformation. */
-static int
+static enum trns_result
print_space_trns_proc (void *t_, struct ccase **c,
casenumber case_num UNUSED)
{
{
double f = expr_evaluate_num (trns->expr, *c, case_num);
if (f == SYSMIS)
- msg (SW, _("The expression on PRINT SPACE evaluated to the "
- "system-missing value."));
+ msg (SW, _("The expression on %s evaluated to the "
+ "system-missing value."), "PRINT SPACE");
else if (f < 0 || f > INT_MAX)
- msg (SW, _("The expression on PRINT SPACE evaluated to %g."), f);
+ msg (SW, _("The expression on %s evaluated to %g."), "PRINT SPACE", f);
else
n = f;
}
while (n--)
if (trns->writer == NULL)
- text_item_submit (text_item_create (TEXT_ITEM_BLANK_LINE, ""));
+ output_log ("%s", "");
else
dfm_put_record (trns->writer, " ", 1); /* XXX */
free (trns);
return ok;
}
+
+static const struct trns_class print_space_class = {
+ .name = "PRINT SPACE",
+ .execute = print_space_trns_proc,
+ .destroy = print_space_trns_free,
+};