jvmti_rs/wrapper/objects/
jlocal_variable_entry.rs

1use crate::errors::*;
2
3use crate::sys::{jvmtiLocalVariableEntry, jlocation};
4use crate::objects::JvmtiString;
5use crate::{JVMTIEnv, JSignature, stringify};
6
7#[derive(Clone)]
8pub struct JLocalVariableEntry<'a> {
9    pub start_location: jlocation,
10    pub length: i32,
11    pub name: String,
12    pub signature: JSignature<'a>,
13    pub slot: i32,
14}
15
16impl<'a> JLocalVariableEntry<'a> {
17    pub fn new<'b>(env: &JVMTIEnv<'b>, entry: &jvmtiLocalVariableEntry) -> Result<JLocalVariableEntry<'a>> {
18        let signature = JvmtiString::with_pointer(entry.signature, env);
19        let generic = JvmtiString::with_pointer(entry.generic_signature, env);
20        let signature = JSignature::new(signature, generic)?;
21
22        Ok(JLocalVariableEntry {
23            start_location: entry.start_location.into(),
24            length: entry.length,
25            name: stringify(entry.name),
26            signature,
27            slot: entry.slot,
28        })
29    }
30}