subckt.c, introduce translate_mod_name()

This commit is contained in:
rlar 2016-11-19 12:36:34 +01:00
parent 83943e7cd6
commit bd46195d43
1 changed files with 25 additions and 57 deletions

View File

@ -1641,6 +1641,23 @@ modtranslate(struct line *c, char *subname, wordlist *new_modnames)
* Q1 c b e 2N3904
* after: Q1 c b e U1:2N3904
*-------------------------------------------------------------------*/
static void
translate_mod_name(struct bxx_buffer *buffer, char *modname, char *subname, struct wordlist *orig_modnames)
{
/*
* Note that we compare against orig_modnames,
* which is the list of untranslated names of models.
*/
wordlist *wlsub = wl_find(modname, orig_modnames);
if (!wlsub)
bxx_printf(buffer, "%s", modname);
else
bxx_printf(buffer, "%s:%s", subname, modname);
}
static void
devmodtranslate(struct line *s, char *subname, wordlist * const orig_modnames)
{
@ -1708,18 +1725,7 @@ devmodtranslate(struct line *s, char *subname, wordlist * const orig_modnames)
}
} /* while */
/*
* Note that we compare against orig_modnames,
* which is the list of untranslated names of models.
*/
wlsub = wl_find(name, orig_modnames);
if (!wlsub)
bxx_printf(&buffer, "%s", name);
else
bxx_printf(&buffer, "%s:%s", subname, name);
translate_mod_name(&buffer, name, subname, orig_modnames);
tfree(name);
bxx_putc(&buffer, ' ');
@ -1750,24 +1756,14 @@ devmodtranslate(struct line *s, char *subname, wordlist * const orig_modnames)
if (*t) { /* if there is a model, process it. . . . */
name = gettok(&t);
wlsub = wl_find(name, orig_modnames);
if (!wlsub)
bxx_printf(&buffer, "%s", name);
else
bxx_printf(&buffer, "%s:%s", subname, name);
translate_mod_name(&buffer, name, subname, orig_modnames);
tfree(name);
bxx_putc(&buffer, ' ');
}
if (*t) {
name = gettok(&t);
wlsub = wl_find(name, orig_modnames);
if (!wlsub)
bxx_printf(&buffer, "%s", name);
else
bxx_printf(&buffer, "%s:%s", subname, name);
translate_mod_name(&buffer, name, subname, orig_modnames);
tfree(name);
bxx_putc(&buffer, ' ');
}
@ -1789,12 +1785,7 @@ devmodtranslate(struct line *s, char *subname, wordlist * const orig_modnames)
tfree(name);
name = gettok(&t);
wlsub = wl_find(name, orig_modnames);
if (!wlsub)
bxx_printf(&buffer, "%s", name);
else
bxx_printf(&buffer, "%s:%s", subname, name);
translate_mod_name(&buffer, name, subname, orig_modnames);
tfree(name);
bxx_putc(&buffer, ' ');
@ -1822,13 +1813,7 @@ devmodtranslate(struct line *s, char *subname, wordlist * const orig_modnames)
tfree(name);
name = gettok(&t);
wlsub = wl_find(name, orig_modnames);
if (!wlsub)
bxx_printf(&buffer, "%s", name);
else
bxx_printf(&buffer, "%s:%s", subname, name);
translate_mod_name(&buffer, name, subname, orig_modnames);
tfree(name);
bxx_putc(&buffer, ' ');
bxx_put_cstring(&buffer, t);
@ -1861,13 +1846,7 @@ devmodtranslate(struct line *s, char *subname, wordlist * const orig_modnames)
tfree(name);
name = gettok(&t);
wlsub = wl_find(name, orig_modnames);
if (!wlsub)
bxx_printf(&buffer, "%s", name);
else
bxx_printf(&buffer, "%s:%s", subname, name);
translate_mod_name(&buffer, name, subname, orig_modnames);
bxx_putc(&buffer, ' ');
bxx_put_cstring(&buffer, t);
tfree(s->li_line);
@ -1961,12 +1940,7 @@ devmodtranslate(struct line *s, char *subname, wordlist * const orig_modnames)
}
#endif
wlsub = wl_find(name, orig_modnames);
if (!wlsub) /* Fallback w/o subckt name before */
bxx_printf(&buffer, "%s", name);
else
bxx_printf(&buffer, "%s:%s", subname, name);
translate_mod_name(&buffer, name, subname, orig_modnames);
tfree(name);
bxx_putc(&buffer, ' ');
@ -1997,13 +1971,7 @@ devmodtranslate(struct line *s, char *subname, wordlist * const orig_modnames)
}
} /* while */
wlsub = wl_find(name, orig_modnames);
if (!wlsub)
bxx_printf(&buffer, "%s", name);
else
bxx_printf(&buffer, "%s:%s", subname, name);
translate_mod_name(&buffer, name, subname, orig_modnames);
tfree(name);
bxx_putc(&buffer, ' ');