Adds parsing of the remaining Record arguments

This commit is contained in:
Misha Vicha
2025-09-30 16:53:19 +02:00
parent 8dc16c4210
commit 9abc4399f5

View File

@@ -19,7 +19,7 @@ struct Record {
} }
impl Record { impl Record {
/// Attempts to generate the record information from a string /// Attempts to generate the record information from a string of the argument line
pub fn from_str(argument_line: &str) -> Result<Record, &str> { pub fn from_str(argument_line: &str) -> Result<Record, &str> {
let args: Vec<&str> = argument_line.split(' ').collect(); let args: Vec<&str> = argument_line.split(' ').collect();
if args.len() < 2 { if args.len() < 2 {
@@ -31,10 +31,10 @@ impl Record {
let sampling_freq: u64; let sampling_freq: u64;
// Everything else is initialized with None, this is for sake of me not getting a stroke // Everything else is initialized with None, this is for sake of me not getting a stroke
let mut counter_freq: Option<u64> = None; let mut counter_freq: Option<u64> = None;
let base_counter_val: Option<u64> = None; let mut base_counter_val: Option<u64> = None;
let sample_num: Option<u64> = None; let mut sample_num: Option<u64> = None;
let basetime: Option<String> = None; let mut basetime: Option<String> = None;
let basedate: Option<String> = None; let mut basedate: Option<String> = None;
// Signals and segments are kept in a single argument organized as signal/segment // Signals and segments are kept in a single argument organized as signal/segment
@@ -92,7 +92,31 @@ impl Record {
} }
} }
// Todo: Other arguments in the standard if args.len() <= 3 {break;}
match args[3].parse::<u64>() {
Ok(value) => {
base_counter_val = Some(value);
}
Err(_) => {}
}
if args.len() <= 4 {break;}
match args[4].parse::<u64>() {
Ok(value) => {
sample_num = Some(value);
}
Err(_) => {}
}
if args.len() <= 5 {break;}
basetime = Some(args[5].to_string());
if args.len() <= 6 {break;}
basedate = Some(args[6].to_string());
break; break;
} }
@@ -156,7 +180,7 @@ impl SignalSpec {
let blocksize: Option<u64> = None; let blocksize: Option<u64> = None;
let desc: Option<String> = None; let desc: Option<String> = None;
// TODO: implement samples per frame, skew, and offset
match args[1].parse::<u64>() { match args[1].parse::<u64>() {
Ok(value) => { Ok(value) => {
sigformat = SignalSpec::parse_format(value); sigformat = SignalSpec::parse_format(value);
@@ -166,6 +190,22 @@ impl SignalSpec {
} }
} }
loop {
if args.len() <= 2 {
break;
}
{
let bracket_split: Vec<&str> = args[2].split("(").collect();
}
if args.len() <= 3 {
}
break;
}
Ok( Ok(
SignalSpec { filename: name, SignalSpec { filename: name,