Files
pmomusic/pmoupnp/src/state_variables/variable_trait.rs

74 lines
2.0 KiB
Rust
Raw Normal View History

2025-09-16 21:07:44 +02:00
use crate::{
state_variables::StateVariable,
variable_types::{StateValue, UpnpVarType},
};
pub trait UpnpVariable {
fn get_definition(&self) -> &StateVariable;
fn has_step(&self) -> bool {
return self.get_definition().step.is_some();
}
fn get_step(&self) -> Option<StateValue> {
return self.get_definition().step.clone();
}
fn has_range(&self) -> bool {
return self.get_definition().value_range.is_some();
}
fn is_modifiable(&self) -> bool {
return self.get_definition().modifiable;
}
fn has_event_conditions(&self) -> bool {
return self.get_definition().event_conditions.read().unwrap().len() > 0;
}
fn has_event_condition(&self, name: &String) -> bool {
let guard = self.get_definition().event_conditions.read().unwrap();
return guard.contains_key(name);
}
fn has_description(&self) -> bool {
return !String::is_empty(&self.get_definition().description);
}
fn get_description(&self) -> String {
return self.get_definition().description.clone();
}
fn has_default(&self) -> bool {
return self.get_definition().default_value.is_some();
}
fn get_default(&self) -> StateValue {
self.get_definition()
.default_value
.clone()
.unwrap_or_else(|| self.get_definition().as_state_var_type().default_value())
}
2025-10-01 07:42:16 +02:00
2025-09-16 21:07:44 +02:00
fn has_allowed_values(&self) -> bool {
return self.get_definition().allowed_values.read().unwrap().len() > 0;
}
fn is_an_allowed_values(&self, value: &StateValue) -> bool {
let guard = self.get_definition().allowed_values.read().unwrap();
return guard.contains(value);
}
fn is_sending_notification(&self) -> bool {
self.get_definition().send_events
}
fn has_value_parser(&self) -> bool {
self.get_definition().parse.is_some()
}
fn has_value_marshaler(&self) -> bool {
self.get_definition().marshal.is_some()
}
}