Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7f38cf97 authored by Andrei Homescu's avatar Andrei Homescu
Browse files

libbinder_rs: Add enum_values function to AIDL enums

This auto-generates an enum_values function for all
Rust AIDL enums that works very similarly to enum_range()
in C++.

Bug: 179438017
Test: m
Change-Id: Ice74682dc9e1119aca2a932c3d5644665963dad8
parent 07ac6eef
Loading
Loading
Loading
Loading
+6 −1
Original line number Original line Diff line number Diff line
@@ -897,7 +897,7 @@ macro_rules! declare_binder_interface {
#[macro_export]
#[macro_export]
macro_rules! declare_binder_enum {
macro_rules! declare_binder_enum {
    {
    {
        $enum:ident : $backing:ty {
        $enum:ident : [$backing:ty; $size:expr] {
            $( $name:ident = $value:expr, )*
            $( $name:ident = $value:expr, )*
        }
        }
    } => {
    } => {
@@ -905,6 +905,11 @@ macro_rules! declare_binder_enum {
        pub struct $enum(pub $backing);
        pub struct $enum(pub $backing);
        impl $enum {
        impl $enum {
            $( pub const $name: Self = Self($value); )*
            $( pub const $name: Self = Self($value); )*

            #[inline(always)]
            pub const fn enum_values() -> [Self; $size] {
                [$(Self::$name),*]
            }
        }
        }


        impl $crate::parcel::Serialize for $enum {
        impl $crate::parcel::Serialize for $enum {