#include <data/settings.h>
#include <libpspp/str.h>
#include <data/variable.h>
-#include <procedure.h>
\f
/* Declarations. */
case T_STRING:
{
- union any_node *node = expr_allocate_string_buffer (e, ds_c_str (&tokstr),
- ds_length (&tokstr));
+ union any_node *node = expr_allocate_string_buffer (
+ e, ds_cstr (&tokstr), ds_length (&tokstr));
lex_get ();
return node;
}
{
size_t i;
- ds_printf (s, "%s(", func_name);
+ ds_put_format (s, "%s(", func_name);
for (i = 0; i < arg_cnt; i++)
{
if (i > 0)
- ds_puts (s, ", ");
- ds_puts (s, operations[expr_node_returns (args[i])].prototype);
+ ds_put_cstr (s, ", ");
+ ds_put_cstr (s, operations[expr_node_returns (args[i])].prototype);
}
- ds_putc (s, ')');
+ ds_put_char (s, ')');
}
static void
struct string s;
const struct operation *f;
- ds_init (&s, 128);
+ ds_init_empty (&s);
if (last - first == 1)
{
- ds_printf (&s, _("Type mismatch invoking %s as "), first->prototype);
+ ds_put_format (&s, _("Type mismatch invoking %s as "), first->prototype);
put_invocation (&s, func_name, args, arg_cnt);
}
else
{
- ds_puts (&s, _("Function invocation "));
+ ds_put_cstr (&s, _("Function invocation "));
put_invocation (&s, func_name, args, arg_cnt);
- ds_puts (&s, _(" does not match any known function. Candidates are:"));
+ ds_put_cstr (&s, _(" does not match any known function. Candidates are:"));
for (f = first; f < last; f++)
- ds_printf (&s, "\n%s", f->prototype);
+ ds_put_format (&s, "\n%s", f->prototype);
}
- ds_putc (&s, '.');
+ ds_put_char (&s, '.');
- msg (SE, "%s", ds_c_str (&s));
+ msg (SE, "%s", ds_cstr (&s));
ds_destroy (&s);
}
int arg_cnt = 0;
int arg_cap = 0;
- struct fixed_string func_name;
+ struct string func_name;
union any_node *n;
- ls_create (&func_name, ds_c_str (&tokstr));
- min_valid = extract_min_valid (ds_c_str (&tokstr));
- if (!lookup_function (ds_c_str (&tokstr), &first, &last))
+ ds_init_string (&func_name, &tokstr);
+ min_valid = extract_min_valid (ds_cstr (&tokstr));
+ if (!lookup_function (ds_cstr (&tokstr), &first, &last))
{
- msg (SE, _("No function or vector named %s."), ds_c_str (&tokstr));
- ls_destroy (&func_name);
+ msg (SE, _("No function or vector named %s."), ds_cstr (&tokstr));
+ ds_destroy (&func_name);
return NULL;
}
lex_get ();
if (!lex_force_match ('('))
{
- ls_destroy (&func_name);
+ ds_destroy (&func_name);
return NULL;
}
break;
if (f >= last)
{
- no_match (ls_c_str (&func_name), args, arg_cnt, first, last);
+ no_match (ds_cstr (&func_name), args, arg_cnt, first, last);
goto fail;
}
msg (SE, _("%s is not yet implemented."), f->prototype);
goto fail;
}
- if ((f->flags & OPF_PERM_ONLY) && temporary != 0)
+ if ((f->flags & OPF_PERM_ONLY) && proc_in_temporary_transformations ())
{
msg (SE, _("%s may not appear after TEMPORARY."), f->prototype);
goto fail;
}
free (args);
- ls_destroy (&func_name);
+ ds_destroy (&func_name);
return n;
fail:
free (args);
- ls_destroy (&func_name);
+ ds_destroy (&func_name);
return NULL;
}
\f
{
union any_node *n = pool_alloc (e->expr_pool, sizeof n->string);
n->type = OP_string;
- if (length > 255)
- length = 255;
+ if (length > MAX_STRING)
+ length = MAX_STRING;
n->string.s = copy_string (e, string, length);
return n;
}
union any_node *
-expr_allocate_string (struct expression *e, struct fixed_string s)
+expr_allocate_string (struct expression *e, struct substring s)
{
union any_node *n = pool_alloc (e->expr_pool, sizeof n->string);
n->type = OP_string;