libsurfer/translation/
event_translator.rs1use surfer_translation_types::{
2 TranslationResult, Translator, ValueKind, VariableInfo, VariableType, VariableValue,
3};
4
5use crate::message::Message;
6use crate::wave_container::{ScopeId, VarId, VariableMeta};
7
8pub struct EventTranslator;
9
10impl Translator<VarId, ScopeId, Message> for EventTranslator {
11 fn name(&self) -> String {
12 "Event".to_string()
13 }
14
15 fn translate(
16 &self,
17 _variable: &VariableMeta,
18 _value: &VariableValue,
19 ) -> eyre::Result<TranslationResult> {
20 Ok(TranslationResult {
21 val: surfer_translation_types::ValueRepr::Event,
22 subfields: vec![],
23 kind: ValueKind::Event,
24 })
25 }
26
27 fn variable_info(&self, _variable: &VariableMeta) -> eyre::Result<VariableInfo> {
28 Ok(VariableInfo::Event)
29 }
30
31 fn translates(&self, variable: &VariableMeta) -> eyre::Result<super::TranslationPreference> {
32 if variable.num_bits == Some(0) {
33 match &variable.variable_type {
34 Some(VariableType::VCDEvent) => Ok(super::TranslationPreference::Prefer),
35 _ => Ok(super::TranslationPreference::No),
36 }
37 } else {
38 Ok(super::TranslationPreference::No)
39 }
40 }
41}