|
|
|
@ -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 { |
|
|
|
/* |
|
|
|
|