hack to allow paths in type names

gui-branch
an 2019-04-01 04:28:01 -04:00
parent 90f5d88c20
commit fb0ecffd74
2 changed files with 8 additions and 8 deletions

View File

@ -68,16 +68,16 @@ macro_rules! rd_impl {
let $nam = usize_from_u32($nam);
};
($e:ident, $b:expr, $at:expr, $n:expr;
$nam:ident, enum, $et:ident, $t:ident
$nam:ident, enum, $et:ident$(::$etc:ident)*, $t:ident
) => {
$crate::rd_impl!($e, $b, $at, $n; $nam, $t);
let $nam = $et::try_from($nam)?;
let $nam = $et$(::$etc)*::try_from($nam)?;
};
($e:ident, $b:expr, $at:expr, $n:expr;
$nam:ident, flag, $ft:ident, $t:ident
$nam:ident, flag, $ft:ident$(::$ftc:ident)*, $t:ident
) => {
$crate::rd_impl!($e, $b, $at, $n; $nam, $t);
let $nam = flag_ok!($ft, $nam)?;
let $nam = flag_ok!($ft$(::$ftc)*, $nam)?;
};
// no endianness
@ -186,12 +186,12 @@ macro_rules! read_data {
(
endian: $e:ident, buf: $b:expr, size: $sz:expr, start: $at:expr, data {
$(let $nam:ident = $t:ident$(::$tc:ident)*[$n:expr $(; $rn:expr)?]
$($ex:ident)*;)*
$($ex:ident$(::$exc:ident)*)*;)*
}
) => {
$crate::check_data!($at + $sz, $b);
$($crate::rd_impl!($e, $b, $at, $n;
$($rn;)? $nam, $($ex,)* $t$(::$tc)*);)*
$($rn;)? $nam, $($ex$(::$exc)*,)* $t$(::$tc)*);)*
};
}

View File

@ -14,8 +14,8 @@ macro_rules! ok {
}
macro_rules! flag_ok {
($t:ident, $v:expr) => {
match $t::from_bits($v) {
($t:ident$(::$tc:ident)*, $v:expr) => {
match $t$(::$tc)*::from_bits($v) {
Some(v) => Ok(v),
None => Err(err_msg(concat!("bad ", stringify!($t)))),
}