Skip to content

Commit 334967e

Browse files
committed
Fix naming and ordering of class access info print
1 parent be89817 commit 334967e

File tree

3 files changed

+18
-10
lines changed

3 files changed

+18
-10
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ Classfile /home/chris/Code/jvm-class-file-parser/classes/Dummy.class
88
class Dummy
99
minor version: 0
1010
major version: 52
11-
flags: PUBLIC_FLAG, SUPER_FLAG
11+
flags: ACC_PUBLIC, ACC_SUPER
1212
Constant pool:
1313
#1 = Methodref #3.#10 // java/lang/Object."<init>":()V
1414
#2 = Class #11 // Dummy

src/class_access.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,13 @@ const MODULE_FLAG: u16 = 0x8000;
2121
/// details.
2222
///
2323
/// https://docs.oracle.com/javase/specs/jvms/se11/html/jvms-4.html#jvms-4.1-200-E
24+
#[derive(Clone)]
2425
#[derive(Debug)]
2526
#[derive(Eq)]
2627
#[derive(Hash)]
28+
#[derive(Ord)]
2729
#[derive(PartialEq)]
30+
#[derive(PartialOrd)]
2831
pub enum ClassAccess {
2932
Public,
3033
Final,

src/main.rs

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,11 @@ fn to_absolute_filepath(filepath: &str) -> io::Result<PathBuf> {
6767
}
6868

6969
fn print_access_flags(access_flags: &HashSet<ClassAccess>) {
70+
let mut access_flags = access_flags.iter()
71+
.cloned()
72+
.collect::<Vec<ClassAccess>>();
73+
access_flags.sort();
74+
7075
let flags_str = access_flags.iter()
7176
.map(access_flag_to_name)
7277
.collect::<Vec<&str>>()
@@ -79,15 +84,15 @@ fn access_flag_to_name(flag: &ClassAccess) -> &'static str {
7984
use ClassAccess::*;
8085

8186
match flag {
82-
Public => "PUBLIC_FLAG",
83-
Final => "FINAL_FLAG",
84-
Super => "SUPER_FLAG",
85-
Interface => "INTERFACE_FLAG",
86-
Abstract => "ABSTRACT_FLAG",
87-
Synthetic => "SYNTHETIC_FLAG",
88-
Annotation => "ANNOTATION_FLAG",
89-
Enum => "ENUM_FLAG",
90-
Module => "MODULE_FLAG",
87+
Public => "ACC_PUBLIC",
88+
Final => "ACC_FINAL",
89+
Super => "ACC_SUPER",
90+
Interface => "ACC_INTERFACE",
91+
Abstract => "ACC_ABSTRACT",
92+
Synthetic => "ACC_SYNTHETIC",
93+
Annotation => "ACC_ANNOTATION",
94+
Enum => "ACC_ENUM",
95+
Module => "ACC_MODULE",
9196
}
9297
}
9398

0 commit comments

Comments
 (0)