Skip to content

Commit edad527

Browse files
committed
review
1 parent 241b3f7 commit edad527

File tree

1 file changed

+43
-38
lines changed

1 file changed

+43
-38
lines changed

src/generate/register.rs

Lines changed: 43 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -535,64 +535,63 @@ impl<'a> From<&'a (EnumeratedValues, Option<EnumPath>)> for EV<'a> {
535535

536536
#[derive(Clone, Copy, Debug)]
537537
pub enum RWEnum<'a> {
538-
ReadAndWriteEnum(EV<'a>),
539-
ReadEnumWriteEnum(EV<'a>, EV<'a>),
540-
ReadEnumWriteRaw(EV<'a>),
541-
ReadRawWriteEnum(EV<'a>),
542-
ReadEnum(EV<'a>),
543-
ReadRaw,
544-
WriteEnum(EV<'a>),
545-
WriteRaw,
546-
ReadRawWriteRaw,
538+
ReadWriteCommon(EV<'a>),
539+
ReadWrite(ReadEnum<'a>, WriteEnum<'a>),
540+
Read(ReadEnum<'a>),
541+
Write(WriteEnum<'a>),
547542
}
543+
544+
#[derive(Clone, Copy, Debug)]
545+
pub enum ReadEnum<'a> {
546+
Enum(EV<'a>),
547+
Raw,
548+
}
549+
550+
#[derive(Clone, Copy, Debug)]
551+
pub enum WriteEnum<'a> {
552+
Enum(EV<'a>),
553+
Raw,
554+
}
555+
548556
impl<'a> RWEnum<'a> {
549557
pub fn different_enums(&self) -> bool {
550-
matches!(self, Self::ReadEnumWriteEnum(_, _))
558+
matches!(self, Self::ReadWrite(ReadEnum::Enum(_), WriteEnum::Enum(_)))
551559
}
552560
pub fn read_write(&self) -> bool {
553-
matches!(
554-
self,
555-
Self::ReadAndWriteEnum(_)
556-
| Self::ReadEnumWriteEnum(_, _)
557-
| Self::ReadEnumWriteRaw(_)
558-
| Self::ReadRawWriteEnum(_)
559-
| Self::ReadRawWriteRaw
560-
)
561+
matches!(self, Self::ReadWriteCommon(_) | Self::ReadWrite(_, _))
561562
}
562563
pub fn read_only(&self) -> bool {
563-
matches!(self, Self::ReadEnum(_) | Self::ReadRaw)
564+
matches!(self, Self::Read(_))
564565
}
565566
pub fn can_read(&self) -> bool {
566567
self.read_write() || self.read_only()
567568
}
568569
pub fn write_only(&self) -> bool {
569-
matches!(self, Self::WriteEnum(_) | Self::WriteRaw)
570+
matches!(self, Self::Write(_))
570571
}
571572
pub fn can_write(&self) -> bool {
572573
self.read_write() || self.write_only()
573574
}
574575
pub fn read_enum(&self) -> Option<EV<'a>> {
575576
match self {
576-
Self::ReadAndWriteEnum(e)
577-
| Self::ReadEnumWriteEnum(e, _)
578-
| Self::ReadEnumWriteRaw(e)
579-
| Self::ReadEnum(e) => Some(*e),
577+
Self::ReadWriteCommon(e)
578+
| Self::ReadWrite(ReadEnum::Enum(e), _)
579+
| Self::Read(ReadEnum::Enum(e)) => Some(*e),
580580
_ => None,
581581
}
582582
}
583583
pub fn write_enum(&self) -> Option<EV<'a>> {
584584
match self {
585-
Self::ReadAndWriteEnum(e)
586-
| Self::ReadEnumWriteEnum(_, e)
587-
| Self::ReadRawWriteEnum(e)
588-
| Self::WriteEnum(e) => Some(*e),
585+
Self::ReadWriteCommon(e)
586+
| Self::ReadWrite(_, WriteEnum::Enum(e))
587+
| Self::Write(WriteEnum::Enum(e)) => Some(*e),
589588
_ => None,
590589
}
591590
}
592591
pub fn generate_write_enum(&self) -> bool {
593592
matches!(
594593
self,
595-
Self::ReadEnumWriteEnum(_, _) | Self::ReadRawWriteEnum(_) | Self::WriteEnum(_)
594+
Self::ReadWrite(_, WriteEnum::Enum(_)) | Self::Write(WriteEnum::Enum(_))
596595
)
597596
}
598597
}
@@ -705,15 +704,21 @@ pub fn fields(
705704
can_write,
706705
lookup_filter(&lookup_results, Usage::Write),
707706
) {
708-
(true, Some(e1), true, Some(e2)) if e1.0 == e2.0 => RWEnum::ReadAndWriteEnum(e1.into()),
709-
(true, Some(e1), true, Some(e2)) => RWEnum::ReadEnumWriteEnum(e1.into(), e2.into()),
710-
(true, Some(e), true, None) => RWEnum::ReadEnumWriteRaw(e.into()),
711-
(true, None, true, Some(e)) => RWEnum::ReadRawWriteEnum(e.into()),
712-
(true, Some(e), false, _) => RWEnum::ReadEnum(e.into()),
713-
(true, None, false, _) => RWEnum::ReadRaw,
714-
(false, _, true, Some(e)) => RWEnum::WriteEnum(e.into()),
715-
(false, _, true, None) => RWEnum::WriteRaw,
716-
(true, None, true, None) => RWEnum::ReadRawWriteRaw,
707+
(true, Some(e1), true, Some(e2)) if e1.0 == e2.0 => RWEnum::ReadWriteCommon(e1.into()),
708+
(true, Some(e1), true, Some(e2)) => {
709+
RWEnum::ReadWrite(ReadEnum::Enum(e1.into()), WriteEnum::Enum(e2.into()))
710+
}
711+
(true, Some(e), true, None) => {
712+
RWEnum::ReadWrite(ReadEnum::Enum(e.into()), WriteEnum::Raw)
713+
}
714+
(true, None, true, Some(e)) => {
715+
RWEnum::ReadWrite(ReadEnum::Raw, WriteEnum::Enum(e.into()))
716+
}
717+
(true, Some(e), false, _) => RWEnum::Read(ReadEnum::Enum(e.into())),
718+
(true, None, false, _) => RWEnum::Read(ReadEnum::Raw),
719+
(false, _, true, Some(e)) => RWEnum::Write(WriteEnum::Enum(e.into())),
720+
(false, _, true, None) => RWEnum::Write(WriteEnum::Raw),
721+
(true, None, true, None) => RWEnum::ReadWrite(ReadEnum::Raw, WriteEnum::Raw),
717722
(false, _, false, _) => {
718723
return Err(anyhow!("Field {fpath} is not writtable or readable"))
719724
}

0 commit comments

Comments
 (0)