#[cfg(feature = "serde")]
use serde::{Deserialize, Serialize};
use crate::utils::{Buildable, Builder};
#[derive(Debug, Clone, Default)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
#[cfg_attr(feature = "specta", derive(specta::Type))]
pub struct EnumEntryMavCmdFlags {
has_location: Option<bool>,
is_destination: Option<bool>,
mission_only: Option<bool>,
}
impl Buildable for EnumEntryMavCmdFlags {
type Builder = EnumEntryMavCmdFlagsBuilder;
fn to_builder(&self) -> EnumEntryMavCmdFlagsBuilder {
EnumEntryMavCmdFlagsBuilder {
flags: self.clone(),
}
}
}
impl EnumEntryMavCmdFlags {
pub fn builder() -> EnumEntryMavCmdFlagsBuilder {
EnumEntryMavCmdFlagsBuilder::new()
}
pub fn has_location(&self) -> Option<bool> {
self.has_location
}
pub fn is_destination(&self) -> Option<bool> {
self.is_destination
}
pub fn mission_only(&self) -> Option<bool> {
self.mission_only
}
}
#[derive(Debug, Clone, Default)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
pub struct EnumEntryMavCmdFlagsBuilder {
flags: EnumEntryMavCmdFlags,
}
impl Builder for EnumEntryMavCmdFlagsBuilder {
type Buildable = EnumEntryMavCmdFlags;
fn build(&self) -> EnumEntryMavCmdFlags {
#[allow(clippy::match_single_binding)]
match self.flags.clone() {
EnumEntryMavCmdFlags {
has_location,
is_destination,
mission_only,
} => EnumEntryMavCmdFlags {
has_location,
is_destination,
mission_only,
},
}
}
}
impl EnumEntryMavCmdFlagsBuilder {
pub fn new() -> Self {
Self::default()
}
pub fn set_has_location(&mut self, has_location: Option<bool>) -> &mut Self {
self.flags.has_location = has_location;
self
}
pub fn set_is_destination(&mut self, is_destination: Option<bool>) -> &mut Self {
self.flags.is_destination = is_destination;
self
}
pub fn set_mission_only(&mut self, mission_only: Option<bool>) -> &mut Self {
self.flags.mission_only = mission_only;
self
}
}