jvmti_rs/wrapper/objects/
jallocate.rs1use crate::{objects::*, JVMTIEnv};
2use jni_sys::jlong;
3use crate::sys::jmemory;
4
5#[derive(Clone)]
6pub struct JMemoryAllocate<'a> {
7 pub ptr: jmemory,
8 pub size: usize,
9 env: &'a JVMTIEnv<'a>,
10}
11
12impl<'a> JMemoryAllocate<'a> {
13 pub fn new<'b: 'a>(ptr: jmemory,
14 size: jlong,
15 env: &'b JVMTIEnv<'a>) -> JMemoryAllocate<'a> {
16 JMemoryAllocate {
17 ptr,
18 size: size as usize,
19 env,
20 }
21 }
22
23 pub fn deallocate(&self) {
24 if !self.ptr.is_null() {
25 self.env.deallocate(self).unwrap()
26 }
27 }
28}
29
30impl<'a> Drop for JMemoryAllocate<'a> {
31 fn drop(&mut self) {
32 self.deallocate()
33 }
34}
35
36impl<'a> JDeallocate<'a> for JMemoryAllocate<'a> {
37 fn as_deallocate_ptr(&self) -> jmemory {
38 self.ptr
39 }
40}