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

Commit c9c370c1 authored by Martin Geisler's avatar Martin Geisler
Browse files

pdl: Update getter names as per C-GETTER

The Rust API Guidelines say that getters should not be prefixed with
‘get_’ in most cases[1].

[1]: https://rust-lang.github.io/api-guidelines/naming.html#getter-names-follow-rust-convention-c-getter

Test: atest pdl_rust_generator_tests_{le,be} pdl_tests
Change-Id: If47c2f032b57075e17f803ae036ea5fb435afad3
parent ada3d9a0
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -137,7 +137,7 @@ fn generate_packet_decl(

    let mut chunk_width = 0;
    let chunks = fields.split_inclusive(|field| {
        chunk_width += field.get_width();
        chunk_width += field.width();
        chunk_width % 8 == 0
    });
    let mut field_parsers = Vec::new();
@@ -148,9 +148,9 @@ fn generate_packet_decl(
        field_writers.push(chunk.generate_write(file.endianness.value));
    }

    let field_names = fields.iter().map(Field::get_ident).collect::<Vec<_>>();
    let field_names = fields.iter().map(Field::ident).collect::<Vec<_>>();

    let packet_size_bits = Chunk::new(fields).get_width();
    let packet_size_bits = Chunk::new(fields).width();
    if packet_size_bits % 8 != 0 {
        panic!("packet {id} does not end on a byte boundary, size: {packet_size_bits} bits",);
    }
+14 −14
Original line number Diff line number Diff line
@@ -85,21 +85,21 @@ impl Chunk<'_> {
    /// Generate a name for this chunk.
    ///
    /// The name is `"chunk"` if there is more than one field.
    pub fn get_name(&self) -> proc_macro2::Ident {
    pub fn name(&self) -> proc_macro2::Ident {
        match self.fields {
            [field] => field.get_ident(),
            [field] => field.ident(),
            _ => format_ident!("chunk"),
        }
    }

    /// Return the width in bits.
    pub fn get_width(&self) -> usize {
        self.fields.iter().map(|field| field.get_width()).sum()
    pub fn width(&self) -> usize {
        self.fields.iter().map(|field| field.width()).sum()
    }

    /// Generate length checks for this chunk.
    pub fn generate_length_check(&self, packet_name: &str) -> proc_macro2::TokenStream {
        let wanted_length = proc_macro2::Literal::usize_unsuffixed(self.get_width() / 8);
        let wanted_length = proc_macro2::Literal::usize_unsuffixed(self.width() / 8);
        quote! {
            if bytes.remaining() < #wanted_length {
                return Err(Error::InvalidLengthError {
@@ -117,8 +117,8 @@ impl Chunk<'_> {
        packet_name: &str,
        endianness_value: ast::EndiannessValue,
    ) -> proc_macro2::TokenStream {
        let chunk_name = self.get_name();
        let chunk_width = self.get_width();
        let chunk_name = self.name();
        let chunk_width = self.width();
        assert!(chunk_width % 8 == 0, "Chunks must have a byte size, got width: {chunk_width}");

        let length_check = self.generate_length_check(packet_name);
@@ -139,14 +139,14 @@ impl Chunk<'_> {
            return quote! {};
        }

        let chunk_width = self.get_width();
        let chunk_width = self.width();
        let chunk_type = Integer::new(chunk_width);

        let mut field_parsers = Vec::new();
        let mut field_offset = 0;
        for field in self.fields {
            field_parsers.push(field.generate_read_adjustment(field_offset, chunk_type));
            field_offset += field.get_width();
            field_offset += field.width();
        }

        quote! {
@@ -158,8 +158,8 @@ impl Chunk<'_> {
        &self,
        endianness_value: ast::EndiannessValue,
    ) -> proc_macro2::TokenStream {
        let chunk_width = self.get_width();
        let chunk_name = self.get_name();
        let chunk_width = self.width();
        let chunk_name = self.name();
        assert!(chunk_width % 8 == 0, "Chunks must have a byte size, got width: {chunk_width}");

        // TODO(mgeisler): let slice = (chunk_type_width > chunk_width).then( ... )
@@ -176,20 +176,20 @@ impl Chunk<'_> {
        if let [field] = self.fields {
            // If there is a single field in the chunk, then we don't have to
            // shift, mask, or cast.
            let field_name = field.get_ident();
            let field_name = field.ident();
            return quote! {
                let #field_name = self.#field_name;
            };
        }

        let chunk_width = self.get_width();
        let chunk_width = self.width();
        let chunk_type = Integer::new(chunk_width);

        let mut field_parsers = Vec::new();
        let mut field_offset = 0;
        for field in self.fields {
            field_parsers.push(field.generate_write_adjustment(field_offset, chunk_type));
            field_offset += field.get_width();
            field_offset += field.width();
        }

        quote! {
+13 −13
Original line number Diff line number Diff line
@@ -16,26 +16,26 @@ impl ScalarField {
        ScalarField { id: String::from(id), width }
    }

    fn get_ident(&self) -> proc_macro2::Ident {
    fn ident(&self) -> proc_macro2::Ident {
        format_ident!("{}", self.id)
    }

    fn get_type(&self) -> types::Integer {
    fn type_(&self) -> types::Integer {
        types::Integer::new(self.width)
    }

    fn generate_decl(&self, visibility: syn::Visibility) -> proc_macro2::TokenStream {
        let field_name = self.get_ident();
        let field_type = self.get_type();
        let field_name = self.ident();
        let field_type = self.type_();
        quote! {
            #visibility #field_name: #field_type
        }
    }

    fn generate_getter(&self, packet_name: &syn::Ident) -> proc_macro2::TokenStream {
        let field_name = self.get_ident();
        let field_name = self.ident();
        let getter_name = format_ident!("get_{}", self.id);
        let field_type = self.get_type();
        let field_type = self.type_();
        quote! {
            pub fn #getter_name(&self) -> #field_type {
                self.#packet_name.as_ref().#field_name
@@ -48,8 +48,8 @@ impl ScalarField {
        offset: usize,
        chunk_type: types::Integer,
    ) -> proc_macro2::TokenStream {
        let field_name = self.get_ident();
        let field_type = self.get_type();
        let field_name = self.ident();
        let field_type = self.type_();
        let mut field = quote! {
            chunk
        };
@@ -84,8 +84,8 @@ impl ScalarField {
        offset: usize,
        chunk_type: types::Integer,
    ) -> proc_macro2::TokenStream {
        let field_name = self.get_ident();
        let field_type = self.get_type();
        let field_name = self.ident();
        let field_type = self.type_();

        let mut field = quote! {
            self.#field_name
@@ -135,15 +135,15 @@ impl From<&ast::Field> for Field {
}

impl Field {
    pub fn get_width(&self) -> usize {
    pub fn width(&self) -> usize {
        match self {
            Field::Scalar(field) => field.width,
        }
    }

    pub fn get_ident(&self) -> proc_macro2::Ident {
    pub fn ident(&self) -> proc_macro2::Ident {
        match self {
            Field::Scalar(field) => field.get_ident(),
            Field::Scalar(field) => field.ident(),
        }
    }