const Class = @import("../../Class.zig"); const ConstantPoolInfo = Class.ConstantPoolInfo; const ResolveError = Class.ResolveError; class_index: u16, name_and_type_index: u16, const Self = @This(); pub fn class(self: *const Self, constant_pool: []const ?ConstantPoolInfo) ResolveError!ConstantPoolInfo { const class_index = self.class_index - 1; if (class_index >= constant_pool.len) return ResolveError.InvalidConstantPoolIndex; const cp_info = constant_pool[class_index]; if (cp_info == null or @as(ConstantPoolInfo.Tag, cp_info.?) != .class) return ResolveError.InvalidConstantType; return cp_info.?; } pub fn nameAndType(self: *const Self, constant_pool: []const ?ConstantPoolInfo) ResolveError!ConstantPoolInfo { const name_and_type_index = self.name_and_type_index - 1; if (name_and_type_index >= constant_pool.len) return ResolveError.InvalidConstantPoolIndex; const cp_info = constant_pool[name_and_type_index]; if (cp_info == null or @as(ConstantPoolInfo.Tag, cp_info.?) != .name_and_type) return ResolveError.InvalidConstantType; return cp_info.?; }