Refactor AttributeInfo

This commit is contained in:
ktkk 2026-07-03 23:59:28 +02:00
parent 5f23482b1b
commit a18ae9c265
4 changed files with 1122 additions and 905 deletions

File diff suppressed because it is too large Load diff

View file

@ -28,11 +28,11 @@ pub const FieldFlags = enum(u16) {
pub const FieldAccessFlags = EnumFlags(FieldFlags);
pub fn parse(input: *std.Io.Reader, allocator: std.mem.Allocator) !Self {
pub fn parse(input: *std.Io.Reader, constant_pool: []const ?ConstantPoolInfo, allocator: std.mem.Allocator) !Self {
const access_flags: FieldAccessFlags = .{ .mask = try input.takeInt(u16, .big) };
const name_index = try input.takeInt(u16, .big);
const descriptor_index = try input.takeInt(u16, .big);
const attributes = try Class.parseAttributes(input, allocator);
const attributes = try Class.parseAttributes(input, constant_pool, allocator);
return .{
.access_flags = access_flags,
.name_index = name_index,

View file

@ -31,11 +31,11 @@ pub const MethodFlags = enum(u16) {
pub const MethodAccessFlags = EnumFlags(MethodFlags);
pub fn parse(input: *std.Io.Reader, allocator: std.mem.Allocator) !Self {
pub fn parse(input: *std.Io.Reader, constant_pool: []const ?ConstantPoolInfo, allocator: std.mem.Allocator) !Self {
const access_flags: MethodAccessFlags = .{ .mask = try input.takeInt(u16, .big) };
const name_index = try input.takeInt(u16, .big);
const descriptor_index = try input.takeInt(u16, .big);
const attributes = try Class.parseAttributes(input, allocator);
const attributes = try Class.parseAttributes(input, constant_pool, allocator);
return .{
.access_flags = access_flags,
.name_index = name_index,