jvmti_rs/wrapper/enums/
heap_reference_kind.rs

1use crate::sys;
2
3#[derive(Debug)]
4pub enum JvmtiHeapReferenceKind {
5    Class,
6    Field,
7    ArrayElement,
8    ClassLoader,
9    Signers,
10    ProtectionDomain,
11    Interface,
12    StaticField,
13    ConstantPool,
14    Superclass,
15    JniGlobal,
16    SystemClass,
17    Monitor,
18    StackLocal,
19    JniLocal,
20    Thread,
21    Other,
22    Unsupported(sys::jvmtiHeapReferenceKind),
23}
24
25
26impl From<sys::jvmtiHeapReferenceKind> for JvmtiHeapReferenceKind {
27    fn from(value: sys::jvmtiHeapReferenceKind) -> Self {
28        match value {
29            sys::JVMTI_HEAP_REFERENCE_CLASS => JvmtiHeapReferenceKind::Class,
30            sys::JVMTI_HEAP_REFERENCE_FIELD => JvmtiHeapReferenceKind::Field,
31            sys::JVMTI_HEAP_REFERENCE_ARRAY_ELEMENT => JvmtiHeapReferenceKind::ArrayElement,
32            sys::JVMTI_HEAP_REFERENCE_CLASS_LOADER => JvmtiHeapReferenceKind::ClassLoader,
33            sys::JVMTI_HEAP_REFERENCE_SIGNERS => JvmtiHeapReferenceKind::Signers,
34            sys::JVMTI_HEAP_REFERENCE_PROTECTION_DOMAIN => JvmtiHeapReferenceKind::ProtectionDomain,
35            sys::JVMTI_HEAP_REFERENCE_INTERFACE => JvmtiHeapReferenceKind::Interface,
36            sys::JVMTI_HEAP_REFERENCE_STATIC_FIELD => JvmtiHeapReferenceKind::StaticField,
37            sys::JVMTI_HEAP_REFERENCE_CONSTANT_POOL => JvmtiHeapReferenceKind::ConstantPool,
38            sys::JVMTI_HEAP_REFERENCE_SUPERCLASS => JvmtiHeapReferenceKind::Superclass,
39            sys::JVMTI_HEAP_REFERENCE_JNI_GLOBAL => JvmtiHeapReferenceKind::JniGlobal,
40            sys::JVMTI_HEAP_REFERENCE_SYSTEM_CLASS => JvmtiHeapReferenceKind::SystemClass,
41            sys::JVMTI_HEAP_REFERENCE_MONITOR => JvmtiHeapReferenceKind::Monitor,
42            sys::JVMTI_HEAP_REFERENCE_STACK_LOCAL => JvmtiHeapReferenceKind::StackLocal,
43            sys::JVMTI_HEAP_REFERENCE_JNI_LOCAL => JvmtiHeapReferenceKind::JniLocal,
44            sys::JVMTI_HEAP_REFERENCE_THREAD => JvmtiHeapReferenceKind::Thread,
45            sys::JVMTI_HEAP_REFERENCE_OTHER => JvmtiHeapReferenceKind::Other,
46            _ => JvmtiHeapReferenceKind::Unsupported(value)
47        }
48    }
49}
50
51impl From<JvmtiHeapReferenceKind> for sys::jvmtiHeapReferenceKind {
52    fn from(value: JvmtiHeapReferenceKind) -> Self {
53        match value {
54            JvmtiHeapReferenceKind::Class => sys::JVMTI_HEAP_REFERENCE_CLASS,
55            JvmtiHeapReferenceKind::Field => sys::JVMTI_HEAP_REFERENCE_FIELD,
56            JvmtiHeapReferenceKind::ArrayElement => sys::JVMTI_HEAP_REFERENCE_ARRAY_ELEMENT,
57            JvmtiHeapReferenceKind::ClassLoader => sys::JVMTI_HEAP_REFERENCE_CLASS_LOADER,
58            JvmtiHeapReferenceKind::Signers => sys::JVMTI_HEAP_REFERENCE_SIGNERS,
59            JvmtiHeapReferenceKind::ProtectionDomain => sys::JVMTI_HEAP_REFERENCE_PROTECTION_DOMAIN,
60            JvmtiHeapReferenceKind::Interface => sys::JVMTI_HEAP_REFERENCE_INTERFACE,
61            JvmtiHeapReferenceKind::StaticField => sys::JVMTI_HEAP_REFERENCE_STATIC_FIELD,
62            JvmtiHeapReferenceKind::ConstantPool => sys::JVMTI_HEAP_REFERENCE_CONSTANT_POOL,
63            JvmtiHeapReferenceKind::Superclass => sys::JVMTI_HEAP_REFERENCE_SUPERCLASS,
64            JvmtiHeapReferenceKind::JniGlobal => sys::JVMTI_HEAP_REFERENCE_JNI_GLOBAL,
65            JvmtiHeapReferenceKind::SystemClass => sys::JVMTI_HEAP_REFERENCE_SYSTEM_CLASS,
66            JvmtiHeapReferenceKind::Monitor => sys::JVMTI_HEAP_REFERENCE_MONITOR,
67            JvmtiHeapReferenceKind::StackLocal => sys::JVMTI_HEAP_REFERENCE_STACK_LOCAL,
68            JvmtiHeapReferenceKind::JniLocal => sys::JVMTI_HEAP_REFERENCE_JNI_LOCAL,
69            JvmtiHeapReferenceKind::Thread => sys::JVMTI_HEAP_REFERENCE_THREAD,
70            JvmtiHeapReferenceKind::Other => sys::JVMTI_HEAP_REFERENCE_OTHER,
71            _ => sys::JVMTI_CONSTANT_UNSUPPORTED,
72        }
73    }
74}