1 /* PSPP - a program for statistical analysis.
2 Copyright (C) 2004, 2011 Free Software Foundation, Inc.
4 This program is free software: you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by
6 the Free Software Foundation, either version 3 of the License, or
7 (at your option) any later version.
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
14 You should have received a copy of the GNU General Public License
15 along with this program. If not, see <http://www.gnu.org/licenses/>. */
19 #include "language/lexer/subcommand-list.h"
21 #include "language/lexer/lexer.h"
22 #include "gl/xalloc.h"
25 #define _(msgid) gettext (msgid)
27 /* I call these objects `lists' but they are in fact simple dynamic arrays */
33 subc_list_double_create(subc_list_double *l)
35 l->data = xnmalloc (CHUNKSIZE, sizeof *l->data);
41 subc_list_int_create(subc_list_int *l)
43 l->data = xnmalloc (CHUNKSIZE, sizeof *l->data);
48 /* Push a value onto the list */
50 subc_list_double_push(subc_list_double *l, double d)
52 l->data[l->n_data++] = d;
54 if (l->n_data >= l->sz )
57 l->data = xnrealloc (l->data, l->sz, sizeof *l->data);
63 subc_list_int_push(subc_list_int *l, int d)
65 l->data[l->n_data++] = d;
67 if (l->n_data >= l->sz )
70 l->data = xnrealloc (l->data, l->sz, sizeof *l->data);
75 /* Return the number of items in the list */
77 subc_list_double_count(const subc_list_double *l)
83 subc_list_int_count(const subc_list_int *l)
89 /* Index into the list (array) */
91 subc_list_double_at(const subc_list_double *l, int idx)
97 subc_list_int_at(const subc_list_int *l, int idx)
102 /* Free up the list */
104 subc_list_double_destroy(subc_list_double *l)
110 subc_list_int_destroy(subc_list_int *l)
116 subc_list_error (struct lexer *lexer, const char *sbc, int max_list)
118 lex_error (lexer, _("No more than %d %s subcommands allowed."),