jvmti_rs/wrapper/enums/
heap_reference_kind.rs1use 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}