jvmti_rs/wrapper/objects/
jlocal_variable_entry.rs1use 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}