1use nnapi_sys::{
2 ANeuralNetworksBurst, ANeuralNetworksBurst_create, ANeuralNetworksBurst_free, ResultCode,
3};
4use std::{
5 ops::{Deref, DerefMut},
6 ptr::{null_mut, NonNull},
7};
8
9use crate::{Compilation, IntoResult};
10
11pub struct Burst {
12 inner: NonNull<ANeuralNetworksBurst>,
13}
14
15impl Burst {
16 pub fn new(compilation: &mut Compilation) -> crate::Result<Burst> {
17 let mut burst = null_mut();
18 unsafe { ANeuralNetworksBurst_create(&mut **compilation, &mut burst) }.into_result()?;
19
20 Ok(Burst {
21 inner: NonNull::new(burst).ok_or(ResultCode::ANEURALNETWORKS_UNEXPECTED_NULL)?,
22 })
23 }
24}
25
26impl Deref for Burst {
27 type Target = ANeuralNetworksBurst;
28
29 #[inline]
30 fn deref(&self) -> &Self::Target {
31 unsafe { self.inner.as_ref() }
32 }
33}
34
35impl DerefMut for Burst {
36 #[inline]
37 fn deref_mut(&mut self) -> &mut Self::Target {
38 unsafe { self.inner.as_mut() }
39 }
40}
41
42impl Drop for Burst {
43 fn drop(&mut self) {
44 unsafe {
45 ANeuralNetworksBurst_free(self.inner.as_mut());
46 }
47 }
48}