mirror of
https://github.com/niri-wm/niri.git
synced 2026-06-23 02:05:33 +07:00
72 lines
1.7 KiB
Rust
72 lines
1.7 KiB
Rust
macro_rules! merge {
|
|
(($self:expr, $part:expr), $($field:ident),+ $(,)*) => {
|
|
$(
|
|
if let Some(x) = &$part.$field {
|
|
$self.$field.merge_with(x);
|
|
}
|
|
)+
|
|
};
|
|
}
|
|
|
|
macro_rules! merge_clone {
|
|
(($self:expr, $part:expr), $($field:ident),+ $(,)*) => {
|
|
$(
|
|
if let Some(x) = &$part.$field {
|
|
$self.$field.clone_from(x);
|
|
}
|
|
)+
|
|
};
|
|
}
|
|
|
|
macro_rules! merge_clone_opt {
|
|
(($self:expr, $part:expr), $($field:ident),+ $(,)*) => {
|
|
$(
|
|
if $part.$field.is_some() {
|
|
$self.$field.clone_from(&$part.$field);
|
|
}
|
|
)+
|
|
};
|
|
}
|
|
|
|
macro_rules! merge_color_gradient {
|
|
(($self:expr, $part:expr), $(($color:ident, $gradient:ident)),+ $(,)*) => {
|
|
$(
|
|
if let Some(x) = $part.$color {
|
|
$self.$color = x;
|
|
$self.$gradient = None;
|
|
}
|
|
if let Some(x) = $part.$gradient {
|
|
$self.$gradient = Some(x);
|
|
}
|
|
)+
|
|
};
|
|
}
|
|
|
|
macro_rules! merge_color_gradient_opt {
|
|
(($self:expr, $part:expr), $(($color:ident, $gradient:ident)),+ $(,)*) => {
|
|
$(
|
|
if let Some(x) = $part.$color {
|
|
$self.$color = Some(x);
|
|
$self.$gradient = None;
|
|
}
|
|
if let Some(x) = $part.$gradient {
|
|
$self.$gradient = Some(x);
|
|
}
|
|
)+
|
|
};
|
|
}
|
|
|
|
macro_rules! merge_on_off {
|
|
(($self:expr, $part:expr)) => {
|
|
if $part.off {
|
|
$self.off = true;
|
|
$self.on = false;
|
|
}
|
|
|
|
if $part.on {
|
|
$self.off = false;
|
|
$self.on = true;
|
|
}
|
|
};
|
|
}
|