inpcom.c, inp_add_levels(), add level info to each line in deck

This commit is contained in:
h_vogt 2016-04-23 18:19:04 +02:00 committed by rlar
parent 663ceee808
commit 33048cc51f
1 changed files with 20 additions and 7 deletions

View File

@ -6713,8 +6713,9 @@ inp_meas_current(struct line *deck)
static void
inp_add_levels(struct line *deck)
{
struct line *card, *subc_start = NULL, *subc_prev = NULL;
int skip_control = 0, subs = 0;
struct line *card, *card_prev = deck;
int skip_control = 0, subs = 0, i;
static unsigned short levelinfo[NESTINGDEPTH];
for (card = deck; card; card = card->li_next) {
@ -6739,15 +6740,27 @@ inp_add_levels(struct line *deck)
if (*curr_line == '.') {
if (ciprefix(".subckt", curr_line)) {
subs++;
subc_prev = subc_start;
subc_start = card;
levelinfo[subs - 1]++;
for (i = 0; i < NESTINGDEPTH; i++)
card->level[i] = levelinfo[i];
card_prev = card;
}
else if (ciprefix(".ends", curr_line)) {
subs--;
subc_start = subc_prev;
for (i = 0; i < NESTINGDEPTH; i++)
card->level[i] = card_prev->level[i];
card_prev = card;
}
else
continue;
else {
for (i = 0; i < NESTINGDEPTH; i++)
card->level[i] = card_prev->level[i];
card_prev = card;
}
}
else {
for (i = 0; i < NESTINGDEPTH; i++)
card->level[i] = card_prev->level[i];
card_prev = card;
}
}
}