change visibility of and rename Signal to SignalEnum

This commit is contained in:
Yehowshua Immanuel 2022-10-25 21:32:22 -04:00
parent 6abcd7ce32
commit 746c25b1ba
4 changed files with 67 additions and 67 deletions

View file

@ -116,7 +116,7 @@ pub(super) fn parse_events<'a>(
let signal = vcd.dealiasing_signal_idx_to_signal_lookup_mut(signal_idx)?; let signal = vcd.dealiasing_signal_idx_to_signal_lookup_mut(signal_idx)?;
match signal { match signal {
Signal::Data { SignalEnum::Data {
name, name,
sig_type, sig_type,
ref mut signal_error, ref mut signal_error,
@ -204,7 +204,7 @@ pub(super) fn parse_events<'a>(
Ok(()) Ok(())
} }
} }
Signal::Alias { .. } => { SignalEnum::Alias { .. } => {
let (f, l) = (file!(), line!()); let (f, l) = (file!(), line!());
let msg = format!( let msg = format!(
"Error near {f}:{l}, a signal alias should not point to a signal alias.\n\ "Error near {f}:{l}, a signal alias should not point to a signal alias.\n\
@ -229,7 +229,7 @@ pub(super) fn parse_events<'a>(
let signal = vcd.dealiasing_signal_idx_to_signal_lookup_mut(signal_idx)?; let signal = vcd.dealiasing_signal_idx_to_signal_lookup_mut(signal_idx)?;
match signal { match signal {
Signal::Data { SignalEnum::Data {
name, name,
sig_type, sig_type,
ref mut signal_error, ref mut signal_error,
@ -296,7 +296,7 @@ pub(super) fn parse_events<'a>(
} }
Ok(()) Ok(())
} }
Signal::Alias { .. } => { SignalEnum::Alias { .. } => {
let (f, l) = (file!(), line!()); let (f, l) = (file!(), line!());
let msg = format!( let msg = format!(
"Error near {f}:{l}, a signal alias should not point to a signal alias.\n\ "Error near {f}:{l}, a signal alias should not point to a signal alias.\n\
@ -320,7 +320,7 @@ pub(super) fn parse_events<'a>(
let signal = vcd.dealiasing_signal_idx_to_signal_lookup_mut(signal_idx)?; let signal = vcd.dealiasing_signal_idx_to_signal_lookup_mut(signal_idx)?;
match signal { match signal {
Signal::Data { SignalEnum::Data {
name, name,
sig_type, sig_type,
ref mut signal_error, ref mut signal_error,
@ -387,7 +387,7 @@ pub(super) fn parse_events<'a>(
} }
Ok(()) Ok(())
} }
Signal::Alias { .. } => { SignalEnum::Alias { .. } => {
let (f, l) = (file!(), line!()); let (f, l) = (file!(), line!());
let msg = format!( let msg = format!(
"Error near {f}:{l}, a signal alias should not point to a signal alias.\n\ "Error near {f}:{l}, a signal alias should not point to a signal alias.\n\
@ -413,7 +413,7 @@ pub(super) fn parse_events<'a>(
let signal = vcd.dealiasing_signal_idx_to_signal_lookup_mut(signal_idx)?; let signal = vcd.dealiasing_signal_idx_to_signal_lookup_mut(signal_idx)?;
match signal { match signal {
Signal::Data { SignalEnum::Data {
name, name,
sig_type, sig_type,
ref mut signal_error, ref mut signal_error,
@ -468,7 +468,7 @@ pub(super) fn parse_events<'a>(
string_vals.push(val); string_vals.push(val);
Ok(()) Ok(())
} }
Signal::Alias { .. } => { SignalEnum::Alias { .. } => {
let (f, l) = (file!(), line!()); let (f, l) = (file!(), line!());
let msg = format!( let msg = format!(
"Error near {f}:{l}, a signal alias should not point to a signal alias.\n\ "Error near {f}:{l}, a signal alias should not point to a signal alias.\n\
@ -492,7 +492,7 @@ pub(super) fn parse_events<'a>(
let signal = vcd.dealiasing_signal_idx_to_signal_lookup_mut(signal_idx)?; let signal = vcd.dealiasing_signal_idx_to_signal_lookup_mut(signal_idx)?;
match signal { match signal {
Signal::Data { SignalEnum::Data {
ref mut signal_error, ref mut signal_error,
string_vals, string_vals,
byte_len_of_string_tmstmp_vals_on_tmln, byte_len_of_string_tmstmp_vals_on_tmln,
@ -513,7 +513,7 @@ pub(super) fn parse_events<'a>(
string_vals.push(val); string_vals.push(val);
Ok(()) Ok(())
} }
Signal::Alias { .. } => { SignalEnum::Alias { .. } => {
let (f, l) = (file!(), line!()); let (f, l) = (file!(), line!());
let msg = format!( let msg = format!(
"Error near {f}:{l}, a signal alias should not point to a signal alias.\n\ "Error near {f}:{l}, a signal alias should not point to a signal alias.\n\

View file

@ -95,7 +95,7 @@ pub(super) fn parse_var<'a>(
let full_signal_name = full_signal_name.join(" "); let full_signal_name = full_signal_name.join(" ");
let num_bytes = if num_bits.is_some() { let num_bytes = if num_bits.is_some() {
let bytes_required = Signal::bytes_required(num_bits.unwrap(), &full_signal_name)?; let bytes_required = SignalEnum::bytes_required(num_bits.unwrap(), &full_signal_name)?;
Some(bytes_required) Some(bytes_required)
} else { } else {
None None
@ -107,7 +107,7 @@ pub(super) fn parse_var<'a>(
let (signal, signal_idx) = match signal_map.get(&signal_alias) { let (signal, signal_idx) = match signal_map.get(&signal_alias) {
Some(ref_signal_idx) => { Some(ref_signal_idx) => {
let signal_idx = SignalIdx(vcd.all_signals.len()); let signal_idx = SignalIdx(vcd.all_signals.len());
let signal = Signal::Alias { let signal = SignalEnum::Alias {
name: full_signal_name, name: full_signal_name,
signal_alias: *ref_signal_idx, signal_alias: *ref_signal_idx,
}; };
@ -116,7 +116,7 @@ pub(super) fn parse_var<'a>(
None => { None => {
let signal_idx = SignalIdx(vcd.all_signals.len()); let signal_idx = SignalIdx(vcd.all_signals.len());
signal_map.insert(signal_alias.to_string(), signal_idx); signal_map.insert(signal_alias.to_string(), signal_idx);
let signal = Signal::Data { let signal = SignalEnum::Data {
name: full_signal_name, name: full_signal_name,
sig_type: var_type, sig_type: var_type,
signal_error: None, signal_error: None,

View file

@ -30,7 +30,7 @@ pub(super) enum TimelineQueryResults {
#[derive(Debug)] #[derive(Debug)]
pub enum Signal { pub(super) enum SignalEnum {
Data { Data {
name: String, name: String,
sig_type: SigType, sig_type: SigType,
@ -100,18 +100,18 @@ type TimeStamp = BigUint;
type SignalValNum = BigUint; type SignalValNum = BigUint;
// getter functions // getter functions
impl Signal { impl SignalEnum {
pub fn name(&self) -> String { pub fn name(&self) -> String {
match self { match self {
Signal::Data { name, ..} => name, SignalEnum::Data { name, ..} => name,
Signal::Alias { name, .. } => name SignalEnum::Alias { name, .. } => name
}.clone() }.clone()
} }
} }
// helper functions ultimately used by Signal's query functions later on // helper functions ultimately used by Signal's query functions later on
impl Signal { impl SignalEnum {
/// Computes the bytes required to store a signal's numerical value /// Computes the bytes required to store a signal's numerical value
/// using the num_bits which another function would provide from /// using the num_bits which another function would provide from
/// the num_bits field of the Signal::Data variant. /// the num_bits field of the Signal::Data variant.
@ -144,7 +144,7 @@ impl Signal {
lsb_indxs_of_string_tmstmp_vals_on_tmln, lsb_indxs_of_string_tmstmp_vals_on_tmln,
byte_len_of_string_tmstmp_vals_on_tmln, byte_len_of_string_tmstmp_vals_on_tmln,
) = match self { ) = match self {
Signal::Data { SignalEnum::Data {
string_vals, string_vals,
lsb_indxs_of_string_tmstmp_vals_on_tmln, lsb_indxs_of_string_tmstmp_vals_on_tmln,
byte_len_of_string_tmstmp_vals_on_tmln, byte_len_of_string_tmstmp_vals_on_tmln,
@ -154,7 +154,7 @@ impl Signal {
lsb_indxs_of_string_tmstmp_vals_on_tmln, lsb_indxs_of_string_tmstmp_vals_on_tmln,
byte_len_of_string_tmstmp_vals_on_tmln, byte_len_of_string_tmstmp_vals_on_tmln,
)), )),
Signal::Alias { .. } => Err(SignalErrors::PointsToAlias), SignalEnum::Alias { .. } => Err(SignalErrors::PointsToAlias),
}?; }?;
// get index // get index
@ -193,7 +193,7 @@ impl Signal {
lsb_indxs_of_num_tmstmp_vals_on_tmln, lsb_indxs_of_num_tmstmp_vals_on_tmln,
byte_len_of_num_tmstmp_vals_on_tmln, byte_len_of_num_tmstmp_vals_on_tmln,
) = match self { ) = match self {
Signal::Data { SignalEnum::Data {
num_bytes, num_bytes,
nums_encoded_as_fixed_width_le_u8, nums_encoded_as_fixed_width_le_u8,
lsb_indxs_of_num_tmstmp_vals_on_tmln, lsb_indxs_of_num_tmstmp_vals_on_tmln,
@ -205,7 +205,7 @@ impl Signal {
lsb_indxs_of_num_tmstmp_vals_on_tmln, lsb_indxs_of_num_tmstmp_vals_on_tmln,
byte_len_of_num_tmstmp_vals_on_tmln, byte_len_of_num_tmstmp_vals_on_tmln,
)), )),
Signal::Alias { .. } => Err(SignalErrors::PointsToAlias), SignalEnum::Alias { .. } => Err(SignalErrors::PointsToAlias),
}?; }?;
// get index // get index
@ -234,12 +234,12 @@ impl Signal {
// Function that take in a desired time on the timeline for a // Function that take in a desired time on the timeline for a
// specific signal and return a numerical or string value in a Result, // specific signal and return a numerical or string value in a Result,
// or an error in a Result. // or an error in a Result.
impl Signal { impl SignalEnum {
pub fn query_string_val_on_tmln( pub fn query_string_val_on_tmln(
&self, &self,
desired_time: &BigUint, desired_time: &BigUint,
tmstmps_encoded_as_u8s: &Vec<u8>, tmstmps_encoded_as_u8s: &Vec<u8>,
all_signals: &Vec<Signal>, all_signals: &Vec<SignalEnum>,
) -> Result<String, SignalErrors> { ) -> Result<String, SignalErrors> {
let signal_idx = match self { let signal_idx = match self {
Self::Data { self_idx, .. } => { Self::Data { self_idx, .. } => {
@ -263,7 +263,7 @@ impl Signal {
// else we propagate Err(..). // else we propagate Err(..).
let (string_vals, lsb_indxs_of_string_tmstmp_vals_on_tmln) = let (string_vals, lsb_indxs_of_string_tmstmp_vals_on_tmln) =
match &all_signals[signal_idx] { match &all_signals[signal_idx] {
Signal::Data { SignalEnum::Data {
ref string_vals, ref string_vals,
ref lsb_indxs_of_string_tmstmp_vals_on_tmln, ref lsb_indxs_of_string_tmstmp_vals_on_tmln,
.. ..
@ -273,7 +273,7 @@ impl Signal {
lsb_indxs_of_string_tmstmp_vals_on_tmln, lsb_indxs_of_string_tmstmp_vals_on_tmln,
)) ))
} }
Signal::Alias { .. } => Err(SignalErrors::PointsToAlias), SignalEnum::Alias { .. } => Err(SignalErrors::PointsToAlias),
}?; }?;
// this signal should at least have some events, otherwise, trying to index into // this signal should at least have some events, otherwise, trying to index into
// an empty vector later on would fail // an empty vector later on would fail
@ -354,7 +354,7 @@ impl Signal {
&self, &self,
desired_time: &BigUint, desired_time: &BigUint,
tmstmps_encoded_as_u8s: &Vec<u8>, tmstmps_encoded_as_u8s: &Vec<u8>,
all_signals: &Vec<Signal>, all_signals: &Vec<SignalEnum>,
) -> Result<BigUint, SignalErrors> { ) -> Result<BigUint, SignalErrors> {
let signal_idx = match self { let signal_idx = match self {
Self::Data { self_idx, .. } => { Self::Data { self_idx, .. } => {
@ -379,7 +379,7 @@ impl Signal {
// else we propagate Err(..). // else we propagate Err(..).
let (nums_encoded_as_fixed_width_le_u8, lsb_indxs_of_num_tmstmp_vals_on_tmln, num_bytes) = let (nums_encoded_as_fixed_width_le_u8, lsb_indxs_of_num_tmstmp_vals_on_tmln, num_bytes) =
match &all_signals[signal_idx] { match &all_signals[signal_idx] {
Signal::Data { SignalEnum::Data {
num_bytes, num_bytes,
ref nums_encoded_as_fixed_width_le_u8, ref nums_encoded_as_fixed_width_le_u8,
ref lsb_indxs_of_num_tmstmp_vals_on_tmln, ref lsb_indxs_of_num_tmstmp_vals_on_tmln,
@ -394,7 +394,7 @@ impl Signal {
num_bytes, num_bytes,
)) ))
} }
Signal::Alias { .. } => Err(SignalErrors::PointsToAlias), SignalEnum::Alias { .. } => Err(SignalErrors::PointsToAlias),
}?; }?;
// this signal should at least have some events, otherwise, trying to index into // this signal should at least have some events, otherwise, trying to index into
// an empty vector later on would fail // an empty vector later on would fail

View file

@ -2,7 +2,7 @@
// This program is distributed under both the GPLV3 license // This program is distributed under both the GPLV3 license
// and the YEHOWSHUA license, both of which can be found at // and the YEHOWSHUA license, both of which can be found at
// the root of the folder containing the sources for this program. // the root of the folder containing the sources for this program.
use super::Signal; use super::SignalEnum;
use chrono::prelude::*; use chrono::prelude::*;
#[derive(Debug)] #[derive(Debug)]
@ -58,7 +58,7 @@ pub struct VCD {
// keep track of all timestamp values, a given signal only needs to keep // keep track of all timestamp values, a given signal only needs to keep
// track of the timestamps at which the given signal value changes. // track of the timestamps at which the given signal value changes.
pub(super) tmstmps_encoded_as_u8s: Vec<u8>, pub(super) tmstmps_encoded_as_u8s: Vec<u8>,
pub(super) all_signals: Vec<Signal>, pub(super) all_signals: Vec<SignalEnum>,
pub(super) all_scopes: Vec<Scope>, pub(super) all_scopes: Vec<Scope>,
pub(super) root_scopes: Vec<ScopeIdx>, pub(super) root_scopes: Vec<ScopeIdx>,
} }
@ -90,23 +90,23 @@ impl VCD {
pub(super) fn dealiasing_signal_idx_to_signal_lookup_mut<'a>( pub(super) fn dealiasing_signal_idx_to_signal_lookup_mut<'a>(
&'a mut self, &'a mut self,
idx: &SignalIdx, idx: &SignalIdx,
) -> Result<&'a mut Signal, String> { ) -> Result<&'a mut SignalEnum, String> {
// get the signal pointed to be SignalIdx from the arena // get the signal pointed to be SignalIdx from the arena
let SignalIdx(idx) = idx; let SignalIdx(idx) = idx;
let signal = &self.all_signals[*idx]; let signal = &self.all_signals[*idx];
// dereference signal if Signal::Alias, or keep idx if Signal::Data // dereference signal if Signal::Alias, or keep idx if Signal::Data
let signal_idx = match signal { let signal_idx = match signal {
Signal::Data { self_idx, .. } => *self_idx, SignalEnum::Data { self_idx, .. } => *self_idx,
Signal::Alias { name, signal_alias } => *signal_alias, SignalEnum::Alias { name, signal_alias } => *signal_alias,
}; };
// Should now point to Signal::Data variant, or else there's an error // Should now point to Signal::Data variant, or else there's an error
let SignalIdx(idx) = signal_idx; let SignalIdx(idx) = signal_idx;
let signal = self.all_signals.get_mut(idx).unwrap(); let signal = self.all_signals.get_mut(idx).unwrap();
match signal { match signal {
Signal::Data { .. } => Ok(signal), SignalEnum::Data { .. } => Ok(signal),
Signal::Alias { .. } => Err(format!( SignalEnum::Alias { .. } => Err(format!(
"Error near {}:{}. A signal alias shouldn't \ "Error near {}:{}. A signal alias shouldn't \
point to a signal alias.", point to a signal alias.",
file!(), file!(),
@ -114,37 +114,37 @@ impl VCD {
)), )),
} }
} }
/// Takes a signal_idx as input and returns the corresponding signal if the // Takes a signal_idx as input and returns the corresponding signal if the
/// corresponding signal is of the Signal::Data variant, else the function the // corresponding signal is of the Signal::Data variant, else the function the
/// SignalIdx in the signal_alias field of Signal::Alias variant to index // SignalIdx in the signal_alias field of Signal::Alias variant to index
/// into the signal arena in the all_signals field of the vcd, and returns // into the signal arena in the all_signals field of the vcd, and returns
/// the resulting signal if that signal is a Signal::Data variant, else, // the resulting signal if that signal is a Signal::Data variant, else,
/// this function returns an Err. // this function returns an Err.
pub fn try_signal_idx_to_signal<'a>( // pub fn try_signal_idx_to_signal<'a>(
&'a self, // &'a self,
idx: SignalIdx, // idx: SignalIdx,
) -> Result<&'a Signal, String> { // ) -> Result<&'a Signal, String> {
// get the signal pointed to be SignalIdx from the arena // // get the signal pointed to be SignalIdx from the arena
let SignalIdx(idx) = idx; // let SignalIdx(idx) = idx;
let signal = &self.all_signals[idx]; // let signal = &self.all_signals[idx];
// dereference signal if Signal::Alias, or keep idx if Signal::Data // // dereference signal if Signal::Alias, or keep idx if Signal::Data
let signal_idx = match signal { // let signal_idx = match signal {
Signal::Data { self_idx, .. } => *self_idx, // Signal::Data { self_idx, .. } => *self_idx,
Signal::Alias { name, signal_alias } => *signal_alias, // Signal::Alias { name, signal_alias } => *signal_alias,
}; // };
// Should now point to Signal::Data variant, or else there's an error // // Should now point to Signal::Data variant, or else there's an error
let SignalIdx(idx) = signal_idx; // let SignalIdx(idx) = signal_idx;
let signal = self.all_signals.get(idx).unwrap(); // let signal = self.all_signals.get(idx).unwrap();
match signal { // match signal {
Signal::Data { .. } => Ok(signal), // Signal::Data { .. } => Ok(signal),
Signal::Alias { .. } => Err(format!( // Signal::Alias { .. } => Err(format!(
"Error near {}:{}. A signal alias shouldn't \ // "Error near {}:{}. A signal alias shouldn't \
point to a signal alias.", // point to a signal alias.",
file!(), // file!(),
line!() // line!()
)), // )),
} // }
} // }
} }