subckt.c, introduce translate_mod_name()

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

View File

@ -1605,6 +1605,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)
{
@ -1672,18 +1689,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, ' ');
@ -1714,24 +1720,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, ' ');
}
@ -1753,12 +1749,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, ' ');
@ -1786,13 +1777,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);
@ -1825,13 +1810,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);
@ -1924,12 +1903,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, ' ');
@ -1960,13 +1934,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, ' ');