public handler_entry_read_dispatch(int HighBits, int Width, int AddrShift, int Endian, address_space space, handler_entry.range init, handler_entry_read handler) : base(Width, AddrShift, Endian, space, handler_entry.F_DISPATCH) { this.HighBits = HighBits; LowBits = (u32)handler_entry_dispatch_lowbits(HighBits, Width, AddrShift); BITCOUNT = (u32)HighBits > LowBits ? (u32)HighBits - LowBits : 0; COUNT = 1U << (int)BITCOUNT; BITMASK = make_bitmask32(BITCOUNT); LOWMASK = make_bitmask32(LowBits); HIGHMASK = make_bitmask32((u32)HighBits) ^ LOWMASK; if (handler == null) { handler = space.get_unmap_r(); } handler.ref_((s32)COUNT); m_dispatch = new handler_entry_read[COUNT]; m_ranges = new handler_entry.range[COUNT]; for (UInt32 i = 0; i != COUNT; i++) { m_dispatch[i] = handler; m_ranges[i] = init; } }
Pointer <handler_entry.range> m_u_ranges; //handler_entry::range *m_u_ranges; public handler_entry_read_dispatch(address_space space, handler_entry.range init, handler_entry_read <int_Width, int_AddrShift> handler) : base(space, handler_entry.F_DISPATCH) { m_ranges_array.resize(1); m_ranges_array[0] = new range_array(); m_dispatch_array.resize(1); m_dispatch_array[0] = new handler_array(); m_a_ranges = m_ranges_array[0].data(); m_a_dispatch = m_dispatch_array[0].data(); m_u_ranges = m_ranges_array[0].data(); m_u_dispatch = m_dispatch_array[0].data(); if (handler == null) { handler = space.get_unmap_r <int_Width, int_AddrShift>(); } handler.ref_((s32)COUNT); for (unsigned i = 0; i != COUNT; i++) { m_u_dispatch[i] = handler; m_u_ranges[i] = new range(init); } }