subckt.c, introduce translate_node_name()
This commit is contained in:
parent
bab59844ff
commit
a54a535dd5
|
|
@ -873,6 +873,26 @@ bxx_buffer(struct bxx_buffer *t)
|
|||
* scname = refdes (- first letter) used at invocation (e.g. "example") (string)
|
||||
* subname = copy of the subcircuit name
|
||||
*-------------------------------------------------------------------------------------------*/
|
||||
|
||||
static void
|
||||
translate_node_name(struct bxx_buffer *buffer, const char *scname, const char *name, const char *name_e)
|
||||
{
|
||||
|
||||
const char *t;
|
||||
if (!name_e)
|
||||
name_e = strchr(name, '\0');
|
||||
|
||||
t = gettrans(name, name_e);
|
||||
if (t) {
|
||||
bxx_put_cstring(buffer, t);
|
||||
} else {
|
||||
bxx_put_cstring(buffer, scname);
|
||||
bxx_putc(buffer, '.');
|
||||
bxx_put_substring(buffer, name, name_e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static int
|
||||
translate(struct line *deck, char *formal, char *actual, char *scname, const char *subname, struct subs *subs, wordlist const *modnames)
|
||||
{
|
||||
|
|
@ -919,13 +939,7 @@ translate(struct line *deck, char *formal, char *actual, char *scname, const cha
|
|||
}
|
||||
|
||||
bxx_put_substring(&buffer, s, name);
|
||||
|
||||
t = gettrans(name, paren_ptr);
|
||||
if (t) {
|
||||
bxx_put_cstring(&buffer, t);
|
||||
} else {
|
||||
bxx_printf(&buffer, "%s.%.*s", scname, (int) (paren_ptr - name), name);
|
||||
}
|
||||
translate_node_name(&buffer, scname, name, paren_ptr);
|
||||
|
||||
s = paren_ptr;
|
||||
}
|
||||
|
|
@ -1006,12 +1020,7 @@ translate(struct line *deck, char *formal, char *actual, char *scname, const cha
|
|||
default:
|
||||
|
||||
/* must be a node name at this point, so translate it */
|
||||
t = gettrans(name, NULL);
|
||||
if (t) {
|
||||
bxx_printf(&buffer, "%s", t);
|
||||
} else {
|
||||
bxx_printf(&buffer, "%s.%s", scname, name);
|
||||
}
|
||||
translate_node_name(&buffer, scname, name, NULL);
|
||||
bxx_putc(&buffer, ' ');
|
||||
break;
|
||||
|
||||
|
|
@ -1078,16 +1087,7 @@ translate(struct line *deck, char *formal, char *actual, char *scname, const cha
|
|||
goto quit;
|
||||
}
|
||||
|
||||
/* call gettrans and see if netname was used in the invocation */
|
||||
t = gettrans(name, NULL);
|
||||
|
||||
if (t) { /* the netname was used during the invocation; print it into the buffer */
|
||||
bxx_printf(&buffer, "%s", t);
|
||||
} else {
|
||||
/* net netname was not used during the invocation; place a
|
||||
* translated name into the buffer.*/
|
||||
bxx_printf(&buffer, "%s.%s", scname, name);
|
||||
}
|
||||
translate_node_name(&buffer, scname, name, NULL);
|
||||
tfree(name);
|
||||
bxx_putc(&buffer, ' ');
|
||||
} /* while (nnodes-- . . . . */
|
||||
|
|
@ -1166,18 +1166,7 @@ translate(struct line *deck, char *formal, char *actual, char *scname, const cha
|
|||
printf("In translate, found type e or g\n");
|
||||
#endif
|
||||
|
||||
/* call gettrans and see if netname was used in the invocation */
|
||||
t = gettrans(name, NULL);
|
||||
|
||||
if (t) { /* the netname was used during the invocation; print it into the buffer */
|
||||
bxx_printf(&buffer, "%s", t);
|
||||
} else {
|
||||
/* net netname was not used during the invocation; place a
|
||||
* translated name into the buffer.
|
||||
*/
|
||||
bxx_printf(&buffer, "%s.%s", scname, name);
|
||||
/* From netname and Urefdes creates Urefdes:netname */
|
||||
}
|
||||
translate_node_name(&buffer, scname, name, NULL);
|
||||
}
|
||||
tfree(nametofree);
|
||||
bxx_putc(&buffer, ' ');
|
||||
|
|
@ -1223,17 +1212,7 @@ translate(struct line *deck, char *formal, char *actual, char *scname, const cha
|
|||
goto quit;
|
||||
}
|
||||
|
||||
/* call gettrans and see if netname was used in the invocation */
|
||||
t = gettrans(name, NULL);
|
||||
|
||||
if (t) { /* the netname was used during the invocation; print it into the buffer */
|
||||
bxx_printf(&buffer, "%s", t);
|
||||
} else {
|
||||
/* net netname was not used during the invocation; place a
|
||||
* translated name into the buffer.
|
||||
*/
|
||||
bxx_printf(&buffer, "%s.%s", scname, name);
|
||||
}
|
||||
translate_node_name(&buffer, scname, name, NULL);
|
||||
tfree(name);
|
||||
bxx_putc(&buffer, ' ');
|
||||
} /* while (nnodes-- . . . . */
|
||||
|
|
@ -1333,14 +1312,8 @@ finishLine(struct bxx_buffer *t, char *src, char *scname)
|
|||
buf_end = src;
|
||||
|
||||
if ((which == 'v') || (which == 'V')) {
|
||||
s = gettrans(buf, buf_end);
|
||||
if (s) {
|
||||
bxx_put_cstring(t, s);
|
||||
} else {
|
||||
bxx_put_cstring(t, scname);
|
||||
bxx_putc(t, '.');
|
||||
bxx_put_substring(t, buf, buf_end);
|
||||
}
|
||||
translate_node_name(t, scname, buf, buf_end);
|
||||
|
||||
/* translate the reference node, as in the "2" in "v(4,2)" */
|
||||
while (*src && (isspace_c(*src) || *src == ',')) {
|
||||
src++;
|
||||
|
|
@ -1349,14 +1322,7 @@ finishLine(struct bxx_buffer *t, char *src, char *scname)
|
|||
for (buf = src; *src && !isspace_c(*src) && (*src != ')'); )
|
||||
src++;
|
||||
bxx_putc(t, ',');
|
||||
s = gettrans(buf, buf_end = src);
|
||||
if (s) {
|
||||
bxx_put_cstring(t, s);
|
||||
} else {
|
||||
bxx_put_cstring(t, scname);
|
||||
bxx_putc(t, '.');
|
||||
bxx_put_substring(t, buf, buf_end);
|
||||
}
|
||||
translate_node_name(t, scname, buf, buf_end = src);
|
||||
}
|
||||
} else {
|
||||
/*
|
||||
|
|
|
|||
Loading…
Reference in New Issue