jvmti_rs/wrapper/jvmtifns/
capability.rs1use crate::{
2 errors::*,
3 JVMTIEnv,
4 objects::*,
5};
6use crate::sys::jvmtiCapabilities;
7
8impl<'a> JVMTIEnv<'a> {
9 pub fn get_capabilities(&self) -> Result<JCapabilities> {
10 let mut capabilities: jvmtiCapabilities = jvmtiCapabilities {
11 _bitfield_1: jvmtiCapabilities::newEmptyBitfield(),
12 };
13 let res = jvmti_call_result!(self.jvmti_raw(), GetCapabilities,
14 &mut capabilities
15 );
16 jvmti_error_code_to_result(res)?;
17 Ok(JCapabilities::merge(capabilities))
18 }
19
20 pub fn get_potential_capabilities(&self) -> Result<JCapabilities> {
21 let mut capabilities: jvmtiCapabilities = jvmtiCapabilities {
22 _bitfield_1: jvmtiCapabilities::newEmptyBitfield(),
23 };
24 let res = jvmti_call_result!(self.jvmti_raw(), GetPotentialCapabilities,
25 &mut capabilities
26 );
27 jvmti_error_code_to_result(res)?;
28 Ok(JCapabilities::merge(capabilities))
29 }
30
31 pub fn add_capabilities(&self, caps: &JCapabilities) -> Result<()> {
32 let capabilities_ptr: jvmtiCapabilities = (*caps).into();
33 jvmti_call!(self.jvmti_raw(), AddCapabilities,
34 &capabilities_ptr
35 )
36 }
37
38 pub fn relinquish_capabilities(&self, caps: &JCapabilities) -> Result<()> {
39 let capabilities_ptr: jvmtiCapabilities = (*caps).into();
40 jvmti_call!(self.jvmti_raw(), RelinquishCapabilities,
41 &capabilities_ptr
42 )
43 }
44}