inpcom.c remove bug: parens around equation h, f
add equation + temper capability to gain of F-Source
This commit is contained in:
parent
606c98904d
commit
75eee691c4
|
|
@ -4631,9 +4631,83 @@ inp_compat(struct line *card)
|
|||
|
||||
/* F element compatibility */
|
||||
else if (*curr_line == 'f') {
|
||||
char actchar, *beg_tstr, *equastr, *vnamstr;
|
||||
/* Fxxx n1 n2 CCCS vnam gain --> Fxxx n1 n2 vnam gain
|
||||
remove cccs */
|
||||
replace_token(curr_line, "cccs", 4, 6);
|
||||
/* Deal with
|
||||
Fxxx n1 n2 vnam {equation}
|
||||
if equation contains the 'temper' token */
|
||||
beg_tstr = curr_line;
|
||||
while ((beg_tstr = strstr(beg_tstr, "temper")) != NULL) {
|
||||
actchar = *(beg_tstr - 1);
|
||||
if (!isspace(actchar) && !is_arith_char(actchar) && !(actchar == ',') && !(actchar == '{')) {
|
||||
beg_tstr++;
|
||||
continue;
|
||||
}
|
||||
actchar = *(beg_tstr + 6);
|
||||
if (!isspace(actchar) && !is_arith_char(actchar) && !(actchar == ',') && !(actchar == '}')) {
|
||||
beg_tstr++;
|
||||
continue;
|
||||
}
|
||||
/* we have found a true 'temper' */
|
||||
cut_line = curr_line;
|
||||
title_tok = gettok(&cut_line);
|
||||
node1 = gettok(&cut_line);
|
||||
node2 = gettok(&cut_line);
|
||||
vnamstr = gettok(&cut_line);
|
||||
equastr = gettok(&cut_line);
|
||||
/*
|
||||
Fxxx n1 n2 vnam {equation}
|
||||
-->
|
||||
Fxxx n1 n2 vbFxxx -1
|
||||
bFxxx int1 0 i = i(vnam)*{equation}
|
||||
vbFxxx int1 0 0
|
||||
*/
|
||||
xlen = 2*strlen(title_tok) + strlen(node1) + strlen(node2) + 9;
|
||||
ckt_array[0] = TMALLOC(char, xlen);
|
||||
//Fxxx n1 n2 VBFxxx -1
|
||||
sprintf(ckt_array[0], "%s %s %s vb%s -1",
|
||||
title_tok, node1, node2, title_tok);
|
||||
//BFxxx BFxxx_int1 0 I = I(vnam)*{equation}
|
||||
xlen = 2*strlen(title_tok) + strlen(vnamstr) + strlen(equastr)
|
||||
+ 23;
|
||||
ckt_array[1] = TMALLOC(char, xlen);
|
||||
sprintf(ckt_array[1], "b%s %s_int1 0 i = i(%s) * (%s)",
|
||||
title_tok, title_tok, vnamstr, equastr);
|
||||
//VBFxxx int1 0 0
|
||||
xlen = 2*strlen(title_tok)
|
||||
+ 16;
|
||||
ckt_array[2] = TMALLOC(char, xlen);
|
||||
sprintf(ckt_array[2], "vb%s %s_int1 0 dc 0",
|
||||
title_tok, title_tok);
|
||||
// insert new three lines immediately after current line
|
||||
for (i = 0; i < 3; i++) {
|
||||
struct line *x = xx_new_line(NULL, ckt_array[i], 0, 0);
|
||||
|
||||
if (param_end)
|
||||
param_end->li_next = x;
|
||||
else
|
||||
param_beg = x;
|
||||
|
||||
param_end = x;
|
||||
}
|
||||
// comment out current variable f line
|
||||
*(card->li_line) = '*';
|
||||
// insert new param lines immediately after current line
|
||||
param_end->li_next = card->li_next;
|
||||
card->li_next = param_beg;
|
||||
// point 'card' pointer to last in scalar list
|
||||
card = param_end;
|
||||
|
||||
param_beg = param_end = NULL;
|
||||
tfree(title_tok);
|
||||
tfree(vnamstr);
|
||||
tfree(equastr);
|
||||
tfree(node1);
|
||||
tfree(node2);
|
||||
break;
|
||||
}
|
||||
}
|
||||
/* H element compatibility */
|
||||
else if (*curr_line == 'h') {
|
||||
|
|
@ -4677,9 +4751,9 @@ inp_compat(struct line *card)
|
|||
title_tok, node1, node2, title_tok);
|
||||
//BHxxx BHxxx_int1 0 I = I(vnam)*{equation}
|
||||
xlen = 2*strlen(title_tok) + strlen(vnamstr) + strlen(equastr)
|
||||
+ 21;
|
||||
+ 23;
|
||||
ckt_array[1] = TMALLOC(char, xlen);
|
||||
sprintf(ckt_array[1], "b%s %s_int1 0 i = i(%s) * %s",
|
||||
sprintf(ckt_array[1], "b%s %s_int1 0 i = i(%s) * (%s)",
|
||||
title_tok, title_tok, vnamstr, equastr);
|
||||
//VBHxxx int1 0 0
|
||||
xlen = 2*strlen(title_tok)
|
||||
|
|
|
|||
Loading…
Reference in New Issue