Exemple #1
0
        public override void select_u(int id)  //template<int HighBits, int Width, int AddrShift> void handler_entry_read_dispatch<HighBits, Width, AddrShift>::select_u(int id)
        {
            u32 i = (u32)id + 1;

            if (i > m_dispatch_array.size())
            {
                fatalerror("out-of-range view update selection.");
            }
            else if (i == m_dispatch_array.size())
            {
                u32 aid = (u32)(m_a_dispatch.Offset - m_dispatch_array.data().Offset);  //u32 aid = (handler_array *)(m_a_dispatch) - m_dispatch_array.data();

                m_dispatch_array.resize(i + 1);
                m_ranges_array.resize(i + 1);
                m_a_ranges   = m_ranges_array[aid].data();
                m_a_dispatch = m_dispatch_array[aid].data();
                m_u_ranges   = m_ranges_array[i].data();
                m_u_dispatch = m_dispatch_array[i].data();

                for (u32 entry = 0; entry != COUNT; entry++)
                {
                    if (m_dispatch_array[0][entry] != null)
                    {
                        m_u_dispatch[entry] = m_dispatch_array[0][entry].dup();
                        m_u_ranges[entry]   = m_ranges_array[0][entry];
                    }
                }
            }
            else
            {
                m_u_ranges   = m_ranges_array[i].data();
                m_u_dispatch = m_dispatch_array[i].data();
            }
        }