input: vcd: support 1 bit vectors

Use the new process_bit() function to parse 1 bit vectors, too.

This is the first step to fix bug #723. Minimal testcase vcd:

$timescale 1 ns $end
$var wire 1 n0 addr_0 $end
$var wire 1 n1 addr_1 $end
$enddefinitions $end
#0
0n0
b1 n1
#1
1n0
b0 n1
#2
0n0
b1 n1
#3
1n0
b0 n1

Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
This commit is contained in:
Wolfram Sang 2016-01-09 23:17:02 +01:00 committed by Uwe Hermann
parent 36dacf17bc
commit 34724ffa34
1 changed files with 16 additions and 2 deletions

View File

@ -428,14 +428,28 @@ static void parse_contents(const struct sr_input *in, char *data)
inc->skip_until_end = TRUE; inc->skip_until_end = TRUE;
break; break;
} }
} else if (strchr("bBrR", tokens[i][0]) != NULL) { } else if (strchr("rR", tokens[i][0]) != NULL) {
sr_dbg("Vector values not supported yet"); sr_dbg("Real type vector values not supported yet!");
if (!tokens[++i]) if (!tokens[++i])
/* No tokens left, bail out */ /* No tokens left, bail out */
break; break;
else else
/* Process next token */ /* Process next token */
continue; continue;
} else if (strchr("bB", tokens[i][0]) != NULL) {
bit = (tokens[i][1] == '1');
/*
* Bail out if a) char after 'b' is NUL, or b) there is
* a second character after 'b', or c) there is no
* identifier.
*/
if (!tokens[i][1] || tokens[i][2] || !tokens[++i]) {
sr_dbg("Unexpected vector format!");
break;
}
process_bit(inc, tokens[i], bit);
} else if (strchr("01xXzZ", tokens[i][0]) != NULL) { } else if (strchr("01xXzZ", tokens[i][0]) != NULL) {
char *identifier; char *identifier;