LCOV - code coverage report
Current view: top level - src/elf/note - android_ident.rs (source / functions) Coverage Total Hit
Test: lief.lcov Lines: 100.0 % 27 27
Test Date: 2026-04-12:00:00:00 Functions: 100.0 % 6 6

            Line data    Source code
       1              : use lief_ffi as ffi;
       2              : use std::marker::PhantomData;
       3              : 
       4              : use super::NoteBase;
       5              : use crate::common::FromFFI;
       6              : 
       7              : /// Note representing the `.note.android.ident` section
       8              : pub struct AndroidIdent<'a> {
       9              :     ptr: cxx::UniquePtr<ffi::ELF_AndroidIdent>,
      10              :     _owner: PhantomData<&'a ffi::ELF_Binary>,
      11              : }
      12              : 
      13              : impl AndroidIdent<'_> {
      14              :     /// Target SDK version (or 0 if it can't be resolved)
      15           26 :     pub fn sdk_version(&self) -> u32 {
      16           26 :         self.ptr.sdk_version()
      17           26 :     }
      18              : 
      19              :     /// NDK version used (or an empty string if it can't be parsed)
      20           26 :     pub fn ndk_version(&self) -> String {
      21           26 :         self.ptr.ndk_version().to_string()
      22           26 :     }
      23              : 
      24              :     /// NDK build number (or an empty string if it can't be parsed)
      25           26 :     pub fn ndk_build_number(&self) -> String {
      26           26 :         self.ptr.ndk_build_number().to_string()
      27           26 :     }
      28              : }
      29              : 
      30              : impl NoteBase for AndroidIdent<'_> {
      31           52 :     fn get_base(&self) -> &ffi::ELF_Note {
      32           52 :         self.ptr.as_ref().unwrap().as_ref()
      33           52 :     }
      34              : }
      35              : 
      36              : impl FromFFI<ffi::ELF_AndroidIdent> for AndroidIdent<'_> {
      37           26 :     fn from_ffi(ptr: cxx::UniquePtr<ffi::ELF_AndroidIdent>) -> Self {
      38           26 :         Self {
      39           26 :             ptr,
      40           26 :             _owner: PhantomData,
      41           26 :         }
      42           26 :     }
      43              : }
      44              : 
      45              : impl std::fmt::Debug for AndroidIdent<'_> {
      46           13 :     fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
      47           13 :         let base = self as &dyn NoteBase;
      48           13 :         f.debug_struct("AndroidIdent")
      49           13 :             .field("base", &base)
      50           13 :             .field("sdk_version", &self.sdk_version())
      51           13 :             .field("ndk_version", &self.ndk_version())
      52           13 :             .field("ndk_build_number", &self.ndk_build_number())
      53           13 :             .finish()
      54           13 :     }
      55              : }
        

Generated by: LCOV version 2.1-1