From 93531c2488145666ad0c8a09d552f50c09db8856 Mon Sep 17 00:00:00 2001 From: rlar Date: Wed, 31 Aug 2016 20:01:19 +0200 Subject: [PATCH] introduce line_nconc() --- src/frontend/inp.c | 17 +++++++++++++++++ src/include/ngspice/fteext.h | 2 ++ 2 files changed, 19 insertions(+) diff --git a/src/frontend/inp.c b/src/frontend/inp.c index 3b7aaf432..1284b8570 100644 --- a/src/frontend/inp.c +++ b/src/frontend/inp.c @@ -295,6 +295,23 @@ line_free_x(struct line *deck, bool recurse) } } + +/* concatenate two lists, destructively altering the first one */ +struct line * +line_nconc(struct line *head, struct line *rest) +{ + struct line *p = head; + if (!rest) + return head; + if (!head) + return rest; + while (p->li_next) + p = p->li_next; + p->li_next = rest; + return head; +} + + /* reverse the linked list struct line */ struct line * line_reverse(struct line *head) diff --git a/src/include/ngspice/fteext.h b/src/include/ngspice/fteext.h index a44c6b1e0..0d271192e 100644 --- a/src/include/ngspice/fteext.h +++ b/src/include/ngspice/fteext.h @@ -214,6 +214,8 @@ extern void inp_list(FILE *file, struct line *deck, struct line *extras, int typ extern struct line *inp_readall(FILE *fp, char *dir_name, bool comfile, bool intfile); extern FILE *inp_pathopen(char *name, char *mode); extern char *search_identifier(char *str, const char *identifier, char *str_begin); +extern struct line *line_nconc(struct line *head, struct line *rest); +extern struct line *line_reverse(struct line *head); extern void mc_free(void); void eval_seed_opt(struct line *deck);