From 6637fd31543c8d2c5607f6267ad3204492fb71de Mon Sep 17 00:00:00 2001 From: Ben Pfaff Date: Sun, 3 Jun 2007 22:07:48 +0000 Subject: [PATCH] Implement missing functions for subcommand integer lists. --- src/language/lexer/ChangeLog | 10 +++++++ src/language/lexer/subcommand-list.c | 39 ++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+) diff --git a/src/language/lexer/ChangeLog b/src/language/lexer/ChangeLog index 792bf087..fdc29375 100644 --- a/src/language/lexer/ChangeLog +++ b/src/language/lexer/ChangeLog @@ -1,3 +1,13 @@ +2007-06-03 Ben Pfaff + + Implement missing functions for subcommand integer lists. + + * subcommand-list.c (subc_list_int_create): New function. + (subc_list_int_push): New function. + (subc_list_int_count): New function. + (subc_list_int_at): New function. + (subc_list_int_destroy): New function. + 2007-05-06 Ben Pfaff Abstract the documents within a dictionary a little better. diff --git a/src/language/lexer/subcommand-list.c b/src/language/lexer/subcommand-list.c index 79c373db..4efadf79 100644 --- a/src/language/lexer/subcommand-list.c +++ b/src/language/lexer/subcommand-list.c @@ -38,6 +38,14 @@ subc_list_double_create(subc_list_double *l) l->n_data = 0; } +void +subc_list_int_create(subc_list_int *l) +{ + l->data = xnmalloc (CHUNKSIZE, sizeof *l->data); + l->sz = CHUNKSIZE; + l->n_data = 0; +} + /* Push a value onto the list */ void subc_list_double_push(subc_list_double *l, double d) @@ -52,6 +60,19 @@ subc_list_double_push(subc_list_double *l, double d) } +void +subc_list_int_push(subc_list_int *l, int d) +{ + l->data[l->n_data++] = d; + + if (l->n_data >= l->sz ) + { + l->sz += CHUNKSIZE; + l->data = xnrealloc (l->data, l->sz, sizeof *l->data); + } + +} + /* Return the number of items in the list */ int subc_list_double_count(const subc_list_double *l) @@ -59,6 +80,12 @@ subc_list_double_count(const subc_list_double *l) return l->n_data; } +int +subc_list_int_count(const subc_list_int *l) +{ + return l->n_data; +} + /* Index into the list (array) */ double @@ -67,9 +94,21 @@ subc_list_double_at(const subc_list_double *l, int idx) return l->data[idx]; } +int +subc_list_int_at(const subc_list_int *l, int idx) +{ + return l->data[idx]; +} + /* Free up the list */ void subc_list_double_destroy(subc_list_double *l) { free(l->data); } + +void +subc_list_int_destroy(subc_list_int *l) +{ + free(l->data); +} -- 2.30.2