summaryrefslogtreecommitdiff
path: root/ecs/src/util.rs
diff options
context:
space:
mode:
authorHampusM <hampus@hampusmat.com>2025-10-15 18:40:19 +0200
committerHampusM <hampus@hampusmat.com>2025-10-15 19:13:21 +0200
commit7f3072ed7e016dff359439d7580403e36ad6b325 (patch)
tree706ae1a2e019c577229f1bdc7d1d22cbf1ca9086 /ecs/src/util.rs
parentb3bc691aedb46519e36db8e9eba0e37ac3cefb4a (diff)
feat(ecs): add EventMatch convenience fns for component eventsHEADmaster
Diffstat (limited to 'ecs/src/util.rs')
-rw-r--r--ecs/src/util.rs33
1 files changed, 27 insertions, 6 deletions
diff --git a/ecs/src/util.rs b/ecs/src/util.rs
index c18fd49..27e9748 100644
--- a/ecs/src/util.rs
+++ b/ecs/src/util.rs
@@ -303,8 +303,15 @@ pub(crate) use gen_mask_64;
macro_rules! impl_multiple {
(
$type: ident,
- ($(impl$(<$($generic: tt$(: $bound: ident)?),*>)? _<$($type_param: ty),*>),*)
- ($($ty_param_matcher: ident),*) => {
+ ($(
+ impl$(<$($generic: tt$(: $bound: ident)?),*>)?
+ _<$($lt_param: lifetime),*><$($type_param: ty),*>
+ $(($($extra_cb_arg: expr),*))?
+ ),*)
+ cb=(
+ type_params=($($ty_param_matcher: ident),*)
+ $(, $($extra_matcher: ident),+)?
+ ) => {
$($item_tt: tt)*
}
) => {
@@ -313,13 +320,17 @@ macro_rules! impl_multiple {
@(make_gen_item_macro)
_gen_multiple_impl_item,
($($ty_param_matcher),*),
+ ($($($extra_matcher),+)?),
($($item_tt)*)
);
$(
- impl $(<$($generic$(: $bound)?,)*>)? $type<$($type_param),*>
+ impl $(<$($generic$(: $bound)?,)*>)? $type<$($lt_param,)* $($type_param),*>
{
- _gen_multiple_impl_item!($($type_param),*);
+ _gen_multiple_impl_item!(
+ type_params=($($type_param),*),
+ $($($extra_cb_arg),*)?
+ );
}
)*
};
@@ -329,11 +340,16 @@ macro_rules! impl_multiple {
@(make_gen_item_macro)
$name: ident,
($($ty_param_matcher: ident),*),
+ ($($extra_matcher: ident),*),
($($transcriber: tt)*)
) => {
$crate::util::impl_multiple!(
@(make_gen_item_macro)
- ($), $name, ($($ty_param_matcher),*), ($($transcriber)*)
+ ($),
+ $name,
+ ($($ty_param_matcher),*),
+ ($($extra_matcher),*),
+ ($($transcriber)*)
);
};
@@ -342,11 +358,16 @@ macro_rules! impl_multiple {
($dollar: tt),
$name: ident,
($($ty_param_matcher: ident),*),
+ ($($extra_matcher: ident),*),
($($transcriber: tt)*)
) => {
$crate::util::impl_multiple!(
@(make_gen_item_macro)
- $name, ($($dollar$ty_param_matcher: ty),*) => {
+ $name,
+ (
+ type_params=($($dollar$ty_param_matcher: ty),*),
+ $($dollar$extra_matcher: expr),*
+ ) => {
$($transcriber)*
}
);