Skip to content
This repository was archived by the owner on Dec 30, 2024. It is now read-only.

Commit 21f0682

Browse files
fixed most warnings
1 parent e931d9a commit 21f0682

File tree

10 files changed

+116
-154
lines changed

10 files changed

+116
-154
lines changed

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
[package]
2-
name = "VCDViewer"
2+
name = "fastwave"
33
version = "0.1.0"
44
edition = "2021"
55

src/main.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ use std::{fs::File};
22
use clap::Parser;
33

44
pub mod test;
5-
use test::*;
65

76
pub mod vcd;
87
use vcd::parse_vcd;

src/test/files.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
// TODO: we should eventually be able to only test on just
22
// the files const
3-
pub const files : [&str; 30] = [
3+
pub const FILES : [&str; 30] = [
44
"./test-vcd-files/aldec/SPI_Write.vcd",
55
"./test-vcd-files/ghdl/alu.vcd",
66
"./test-vcd-files/ghdl/idea.vcd",
@@ -34,7 +34,7 @@ pub const files : [&str; 30] = [
3434
"./test-vcd-files/xilinx_isim/test2x2_regex22_string1.vcd"
3535
];
3636

37-
pub const good_date_files : [&str; 24] = [
37+
pub const GOOD_DATE_FILES : [&str; 24] = [
3838
"./test-vcd-files/aldec/SPI_Write.vcd",
3939
"./test-vcd-files/ghdl/alu.vcd",
4040
"./test-vcd-files/ghdl/idea.vcd",
@@ -61,7 +61,7 @@ pub const good_date_files : [&str; 24] = [
6161
"./test-vcd-files/xilinx_isim/test2x2_regex22_string1.vcd"
6262
];
6363

64-
pub const bad_date_files : [&str; 6] = [
64+
pub const BAD_DATE_FILES : [&str; 6] = [
6565
"./test-vcd-files/ncsim/ffdiv_32bit_tb.vcd",
6666
"./test-vcd-files/quartus/mipsHardware.vcd",
6767
"./test-vcd-files/quartus/wave_registradores.vcd",

src/vcd/parse.rs

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,6 @@ use scopes::*;
1919
mod events;
2020
use events::*;
2121

22-
use function_name::named;
23-
2422
pub fn parse_vcd(file : File) -> Result<VCD, String> {
2523
let mut word_gen = WordReader::new(file);
2624

@@ -30,7 +28,7 @@ pub fn parse_vcd(file : File) -> Result<VCD, String> {
3028
// respective signal indexes
3129
let mut signal_map = std::collections::HashMap::new();
3230

33-
// after we parse metadata, we form VCD object
31+
// after we parse metadata, we form the VCD object
3432
let mut vcd = VCD{
3533
metadata : header,
3634
timeline : vec![],
@@ -40,7 +38,7 @@ pub fn parse_vcd(file : File) -> Result<VCD, String> {
4038
scope_roots : vec![],
4139
};
4240

43-
parse_scopes(&mut word_gen, None, &mut vcd, &mut signal_map)?;
41+
parse_scopes(&mut word_gen, &mut vcd, &mut signal_map)?;
4442
parse_events(&mut word_gen, &mut vcd, &mut signal_map)?;
4543

4644
Ok(vcd)
@@ -56,7 +54,7 @@ mod tests {
5654
// TODO: eventually, once all dates pass, merge the following
5755
// two loops
5856
// testing dates
59-
for file in test::good_date_files {
57+
for file in test::GOOD_DATE_FILES {
6058
let metadata = parse_metadata(
6159
&mut WordReader::new(
6260
File::open(file)
@@ -67,7 +65,7 @@ mod tests {
6765
assert!(metadata.unwrap().date.is_some());
6866
}
6967

70-
for file in test::files {
68+
for file in test::FILES {
7169
let metadata = parse_metadata(
7270
&mut WordReader::new(
7371
File::open(file)
@@ -76,7 +74,7 @@ mod tests {
7674
);
7775
assert!(metadata.is_ok());
7876

79-
let (scalar, timescale) = metadata.unwrap().timescale;
77+
let (scalar, _timescale) = metadata.unwrap().timescale;
8078
assert!(scalar.is_some());
8179
}
8280

@@ -85,7 +83,7 @@ mod tests {
8583
#[test]
8684
fn scopes() {
8785
// see if we can parse all signal trees successfully
88-
for file_name in test::files {
86+
for file_name in test::FILES {
8987
let file = File::open(file_name).unwrap();
9088
let vcd = parse_vcd(file);
9189

src/vcd/parse/combinator_atoms.rs

Lines changed: 2 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ pub(super) fn take_until<'a>(word : &'a str, pattern : u8) -> ParseResult<'a> {
1414
let mut new_start = 0;
1515

1616
for chr in word.as_bytes() {
17-
if (*chr == pattern) {
17+
if *chr == pattern {
1818
break
1919
}
2020
else {
@@ -30,25 +30,11 @@ pub(super) fn take_until<'a>(word : &'a str, pattern : u8) -> ParseResult<'a> {
3030

3131
}
3232

33-
// TODO: if I end up using simulator specific date parsers, ``take_until`` may
34-
// suffice rendering this function obselete, at which point I should delete it.
35-
pub(super) fn truncate_last_chr_when<'a>(word : &'a str, cond : fn(u8) -> bool) -> &'a str {
36-
let last_chr = word.as_bytes().last().unwrap();
37-
let mut new_end_index = word.len();
38-
39-
if cond(*last_chr) {
40-
new_end_index -= 1;
41-
}
42-
43-
return &word[0..new_end_index]
44-
45-
}
46-
4733
pub(super) fn take_while<'a>(word : &'a str, cond : fn(u8) -> bool) -> ParseResult<'a> {
4834
let mut new_start = 0;
4935

5036
for chr in word.as_bytes() {
51-
if (cond(*chr)) {
37+
if cond(*chr) {
5238
new_start += 1;
5339
}
5440
else {

src/vcd/parse/events.rs

Lines changed: 33 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,9 @@
11
//! part of the vcd parser that handles parsing the signal tree and
22
//! building the resulting signal tree
3-
use function_name::named;
4-
53
use super::*;
64

75
#[derive(Debug)]
8-
pub(super) enum BinaryParserErrTypes {x_value, z_value, u_value, other_value(char), too_long}
6+
pub(super) enum BinaryParserErrTypes {XValue, ZValue, UValue, OtherValue(char), TooLong}
97

108
// We build a quick and not so dirty bit string parser.
119
fn base2_str_to_byte(word : &[u8]) -> Result<u8, BinaryParserErrTypes> {
@@ -14,10 +12,7 @@ fn base2_str_to_byte(word : &[u8]) -> Result<u8, BinaryParserErrTypes> {
1412
// shouldn't have more than 8 chars in str
1513
let len = word.len();
1614
if len > 8 {
17-
let (f, l )= (file!(), line!());
18-
let err = format!(
19-
"Error near {f}:{l}. Base2 string has length {len} > 8.");
20-
return Err(BinaryParserErrTypes::too_long)
15+
return Err(BinaryParserErrTypes::TooLong)
2116
}
2217

2318
let bit_lut = [
@@ -35,10 +30,10 @@ fn base2_str_to_byte(word : &[u8]) -> Result<u8, BinaryParserErrTypes> {
3530
match chr {
3631
b'1' => {val = bit_lut[idx] | val}
3732
b'0' => {}
38-
b'x' | b'X' => {return Err(BinaryParserErrTypes::x_value)}
39-
b'z' | b'Z' => {return Err(BinaryParserErrTypes::z_value)}
40-
b'u' | b'U' => {return Err(BinaryParserErrTypes::u_value)}
41-
_ => {return Err(BinaryParserErrTypes::other_value(*chr as char))}
33+
b'x' | b'X' => {return Err(BinaryParserErrTypes::XValue)}
34+
b'z' | b'Z' => {return Err(BinaryParserErrTypes::ZValue)}
35+
b'u' | b'U' => {return Err(BinaryParserErrTypes::UValue)}
36+
_ => {return Err(BinaryParserErrTypes::OtherValue(*chr as char))}
4237
}
4338

4439
}
@@ -48,7 +43,7 @@ fn base2_str_to_byte(word : &[u8]) -> Result<u8, BinaryParserErrTypes> {
4843

4944
fn binary_str_to_vec_u8(binary_str : &str) -> Result<Vec<u8>, BinaryParserErrTypes> {
5045
let mut vec_u8 : Vec<u8> = Vec::new();
51-
let mut binary_str_as_bytes = binary_str.as_bytes();
46+
let binary_str_as_bytes = binary_str.as_bytes();
5247

5348
let mut tail_idx = binary_str_as_bytes.len();
5449
// clamp head if provided binary str is less than 8 long
@@ -57,7 +52,7 @@ fn binary_str_to_vec_u8(binary_str : &str) -> Result<Vec<u8>, BinaryParserErrTyp
5752
{binary_str_as_bytes.len() - 8}
5853
else
5954
{0};
60-
while {tail_idx > 0} {
55+
while tail_idx > 0 {
6156
let curr_b_val = &binary_str_as_bytes[head_idx..tail_idx];
6257
let val_u8 = base2_str_to_byte(curr_b_val)?;
6358
vec_u8.push(val_u8);
@@ -81,11 +76,10 @@ fn binary_str_to_vec_u8(binary_str : &str) -> Result<Vec<u8>, BinaryParserErrTyp
8176
Ok(vec_u8)
8277
}
8378

84-
#[named]
8579
pub(super) fn parse_events<'a>(
8680
word_reader : &mut WordReader,
8781
vcd : &'a mut VCD,
88-
signal_map : &mut HashMap<String, Signal_Idx>
82+
signal_map : &mut HashMap<String, SignalIdx>
8983
) -> Result<(), String> {
9084

9185
loop {
@@ -110,7 +104,7 @@ pub(super) fn parse_events<'a>(
110104
// configurable.
111105
let (f, l )= (file!(), line!());
112106
let start_idx = u32::try_from(vcd.timeline.len()).map_err(
113-
|e| format!("Error near {f}:{l}. Failed to convert from usize to u32."))?;
107+
|_| format!("Error near {f}:{l}. Failed to convert from usize to u32."))?;
114108
vcd.timeline_markers.push(StartIdx(start_idx));
115109
vcd.timeline.append(&mut value);
116110
}
@@ -119,7 +113,6 @@ pub(super) fn parse_events<'a>(
119113
"b" => {
120114
let binary_value = &word[1..];
121115
let observed_num_bits = binary_value.len();
122-
let (f, l )= (file!(), line!());
123116

124117
let mut value_u8 : Vec<u8> = Vec::new();
125118
let mut value_string = String::new();
@@ -131,9 +124,9 @@ pub(super) fn parse_events<'a>(
131124
// Or else, we we propagate up other errors.
132125
match binary_str_to_vec_u8(binary_value) {
133126
Ok(result) => {value_u8 = result;}
134-
Err(BinaryParserErrTypes::x_value |
135-
BinaryParserErrTypes::z_value |
136-
BinaryParserErrTypes::u_value
127+
Err(BinaryParserErrTypes::XValue |
128+
BinaryParserErrTypes::ZValue |
129+
BinaryParserErrTypes::UValue
137130
) =>
138131
{
139132
store_as_string = true;
@@ -151,7 +144,7 @@ pub(super) fn parse_events<'a>(
151144

152145
// lookup signal idx
153146
let (f, l )= (file!(), line!());
154-
let Signal_Idx(ref signal_idx) = signal_map.get(word).ok_or(
147+
let SignalIdx(ref signal_idx) = signal_map.get(word).ok_or(
155148
format!("Error near {f}:{l}. Failed to lookup signal {word} at {cursor:?}"))?;
156149

157150
// account for fact that signal idx could be an alias, so there
@@ -161,8 +154,8 @@ pub(super) fn parse_events<'a>(
161154
let signal = vcd.all_signals.get(*signal_idx).unwrap();
162155
match signal {
163156
Signal::Data {..} => {*signal_idx}
164-
Signal::Alias {name, signal_alias} => {
165-
let Signal_Idx(ref signal_idx) = signal_alias;
157+
Signal::Alias {signal_alias, ..} => {
158+
let SignalIdx(ref signal_idx) = signal_alias;
166159
signal_idx.clone()
167160

168161
}
@@ -174,7 +167,7 @@ pub(super) fn parse_events<'a>(
174167
let signal = vcd.all_signals.get_mut(signal_idx).unwrap();
175168
match signal {
176169
Signal::Data {name, sig_type, ref mut signal_error, num_bits,
177-
self_idx, u8_timeline, u8_timeline_markers, string_timeline,
170+
u8_timeline, u8_timeline_markers, string_timeline,
178171
string_timeline_markers, ..} => {
179172

180173
if signal_error.is_some() {continue;}
@@ -210,7 +203,7 @@ pub(super) fn parse_events<'a>(
210203

211204
let (f, l )= (file!(), line!());
212205
let timeline_idx = u32::try_from(vcd.timeline.len()).map_err(
213-
|e| format!("Error near {f}:{l}. Failed to convert from usize to u32."))?;
206+
|_| format!("Error near {f}:{l}. Failed to convert from usize to u32."))?;
214207
let timeline_idx = TimelineIdx(timeline_idx);
215208

216209
if store_as_string {
@@ -264,7 +257,7 @@ pub(super) fn parse_events<'a>(
264257
// lookup signal idx
265258
let hash = &word[1..];
266259
let (f, l )= (file!(), line!());
267-
let Signal_Idx(ref signal_idx) = signal_map.get(hash).ok_or(
260+
let SignalIdx(ref signal_idx) = signal_map.get(hash).ok_or(
268261
format!("Error near {f}:{l}. Failed to lookup signal {hash} at {cursor:?}"))?;
269262

270263
// account for fact that signal idx could be an alias, so there
@@ -274,8 +267,8 @@ pub(super) fn parse_events<'a>(
274267
let signal = vcd.all_signals.get(*signal_idx).unwrap();
275268
match signal {
276269
Signal::Data {..} => {*signal_idx}
277-
Signal::Alias {name, signal_alias} => {
278-
let Signal_Idx(ref signal_idx) = signal_alias;
270+
Signal::Alias {signal_alias, ..} => {
271+
let SignalIdx(ref signal_idx) = signal_alias;
279272
signal_idx.clone()
280273

281274
}
@@ -287,7 +280,7 @@ pub(super) fn parse_events<'a>(
287280
let signal = vcd.all_signals.get_mut(signal_idx).unwrap();
288281
match signal {
289282
Signal::Data {name, sig_type, ref mut signal_error, num_bits,
290-
self_idx, u8_timeline, u8_timeline_markers, ..} => {
283+
u8_timeline, u8_timeline_markers, ..} => {
291284

292285
// if this is a bad signal, go ahead and skip it
293286
if signal_error.is_some() {continue;}
@@ -321,7 +314,7 @@ pub(super) fn parse_events<'a>(
321314

322315
let (f, l )= (file!(), line!());
323316
let timeline_idx = u32::try_from(vcd.timeline.len()).map_err(
324-
|e| format!("Error near {f}:{l}. Failed to convert from usize to u32."))?;
317+
|_| format!("Error near {f}:{l}. Failed to convert from usize to u32."))?;
325318
let timeline_idx = TimelineIdx(timeline_idx);
326319

327320
u8_timeline_markers.push(timeline_idx);
@@ -342,7 +335,7 @@ pub(super) fn parse_events<'a>(
342335
// lokup signal idx
343336
let hash = &word[1..];
344337
let (f, l )= (file!(), line!());
345-
let Signal_Idx(ref signal_idx) = signal_map.get(hash).ok_or(
338+
let SignalIdx(ref signal_idx) = signal_map.get(hash).ok_or(
346339
format!("Error near {f}:{l}. Failed to lookup signal {hash} at {cursor:?}"))?;
347340

348341
// account for fact that signal idx could be an alias, so there
@@ -352,8 +345,8 @@ pub(super) fn parse_events<'a>(
352345
let signal = vcd.all_signals.get(*signal_idx).unwrap();
353346
match signal {
354347
Signal::Data {..} => {*signal_idx}
355-
Signal::Alias {name, signal_alias} => {
356-
let Signal_Idx(ref signal_idx) = signal_alias;
348+
Signal::Alias {signal_alias, ..} => {
349+
let SignalIdx(ref signal_idx) = signal_alias;
357350
signal_idx.clone()
358351

359352
}
@@ -365,7 +358,7 @@ pub(super) fn parse_events<'a>(
365358
let signal = vcd.all_signals.get_mut(signal_idx).unwrap();
366359
match signal {
367360
Signal::Data {name, sig_type, ref mut signal_error, num_bits,
368-
self_idx, u8_timeline, u8_timeline_markers, scope_parent, ..} => {
361+
u8_timeline, u8_timeline_markers, ..} => {
369362

370363
// if this is a bad signal, go ahead and skip it
371364
if signal_error.is_some() {continue;}
@@ -399,7 +392,7 @@ pub(super) fn parse_events<'a>(
399392

400393
let (f, l )= (file!(), line!());
401394
let timeline_idx = u32::try_from(vcd.timeline.len()).map_err(
402-
|e| format!("Error near {f}:{l}. Failed to convert from usize to u32."))?;
395+
|_| format!("Error near {f}:{l}. Failed to convert from usize to u32."))?;
403396
let timeline_idx = TimelineIdx(timeline_idx);
404397

405398
u8_timeline_markers.push(timeline_idx);
@@ -421,7 +414,7 @@ pub(super) fn parse_events<'a>(
421414
// lokup signal idx
422415
let hash = &word[1..];
423416
let (f, l )= (file!(), line!());
424-
let Signal_Idx(ref signal_idx) = signal_map.get(hash).ok_or(
417+
let SignalIdx(ref signal_idx) = signal_map.get(hash).ok_or(
425418
format!("Error near {f}:{l}. Failed to lookup signal {hash} at {cursor:?}"))?;
426419

427420
// account for fact that signal idx could be an alias, so there
@@ -431,8 +424,8 @@ pub(super) fn parse_events<'a>(
431424
let signal = vcd.all_signals.get(*signal_idx).unwrap();
432425
match signal {
433426
Signal::Data {..} => {*signal_idx}
434-
Signal::Alias {name, signal_alias} => {
435-
let Signal_Idx(ref signal_idx) = signal_alias;
427+
Signal::Alias {signal_alias, ..} => {
428+
let SignalIdx(ref signal_idx) = signal_alias;
436429
signal_idx.clone()
437430

438431
}
@@ -444,8 +437,7 @@ pub(super) fn parse_events<'a>(
444437
let signal = vcd.all_signals.get_mut(signal_idx).unwrap();
445438
match signal {
446439
Signal::Data {name, sig_type, ref mut signal_error, num_bits,
447-
self_idx, u8_timeline, u8_timeline_markers, string_timeline,
448-
string_timeline_markers, ..} => {
440+
string_timeline, string_timeline_markers, ..} => {
449441

450442
// if this is a bad signal, go ahead and skip it
451443
if signal_error.is_some() {continue;}
@@ -479,7 +471,7 @@ pub(super) fn parse_events<'a>(
479471

480472
let (f, l )= (file!(), line!());
481473
let timeline_idx = u32::try_from(vcd.timeline.len()).map_err(
482-
|e| format!("Error near {f}:{l}. Failed to convert from usize to u32."))?;
474+
|_| format!("Error near {f}:{l}. Failed to convert from usize to u32."))?;
483475
let timeline_idx = TimelineIdx(timeline_idx);
484476

485477
string_timeline_markers.push(timeline_idx);

0 commit comments

Comments
 (0)