Previous 199869 Revisions Next

r30703 Thursday 29th May, 2014 at 00:17:27 UTC by Couriersud
More cleanups and one bug: resize should never have been public in plists.h
[src/emu/netlist]plists.h
[src/emu/netlist/analog]nld_solver.c nld_solver.h

trunk/src/emu/netlist/analog/nld_solver.h
r30702r30703
6262
6363   netlist_solver_parameters_t m_params;
6464
65    ATTR_COLD int get_net_idx(netlist_net_t *net);
6566   ATTR_COLD virtual void log_stats() {};
6667
6768protected:
r30702r30703
157158    double m_RHS[_storage_N];
158159    double m_last_RHS[_storage_N]; // right hand side - contains currents
159160
160private:
161   ATTR_COLD int get_net_idx(netlist_net_t *net);
162
163161   struct terms_t{
164162
165163       terms_t(netlist_terminal_t *term, int net_this, int net_other)
trunk/src/emu/netlist/analog/nld_solver.c
r30702r30703
3737{
3838   NL_VERBOSE_OUT(("New solver setup\n"));
3939
40   m_nets.resize(nets.count());
40   m_nets.clear();
4141
4242   for (int k = 0; k < nets.count(); k++)
4343   {
44        m_nets.add(net_entry(nets[k]));
45    }
46
47   for (int k = 0; k < nets.count(); k++)
48   {
4449      NL_VERBOSE_OUT(("setting up net\n"));
4550
46        m_nets[k].m_net = nets[k];
4751      netlist_analog_net_t *net = nets[k];
4852
4953      net->m_solver = this;
r30702r30703
316320// netlist_matrix_solver - Direct base
317321// ----------------------------------------------------------------------------------------
318322
319
320template <int m_N, int _storage_N>
321ATTR_COLD int netlist_matrix_solver_direct_t<m_N, _storage_N>::get_net_idx(netlist_net_t *net)
323ATTR_COLD int netlist_matrix_solver_t::get_net_idx(netlist_net_t *net)
322324{
323   for (int k = 0; k < N(); k++)
325   for (int k = 0; k < m_nets.count(); k++)
324326      if (m_nets[k].m_net == net)
325327         return k;
326328   return -1;
trunk/src/emu/netlist/plists.h
r30702r30703
7676      m_list[m_count++] = elem;
7777   }
7878
79   ATTR_HOT inline void resize(const int new_size)
80   {
81      int cnt = count();
82      if (new_size > 0)
83      {
84           _ListClass *m_new = new _ListClass[new_size];
85           _ListClass *pd = m_new;
86
87           if (cnt > new_size)
88               cnt = new_size;
89           for (_ListClass *ps = m_list; ps < m_list + cnt; ps++, pd++)
90               *pd = *ps;
91            if (m_list != NULL)
92                delete[] m_list;
93           m_list = m_new;
94           m_count = cnt;
95      }
96      else
97      {
98          if (m_list != NULL)
99               delete[] m_list;
100          m_list = NULL;
101          m_count = 0;
102      }
103      m_num_elements = new_size;
104   }
105
10679   ATTR_HOT inline void remove(const _ListClass &elem)
10780   {
10881      for (int i = 0; i < m_count; i++)
r30702r30703
171144   ATTR_HOT inline const _ListClass& operator[](const int & index) const { return m_list[index]; }
172145
173146private:
174   int m_count;
147    ATTR_HOT inline void resize(const int new_size)
148    {
149        int cnt = count();
150        if (new_size > 0)
151        {
152            _ListClass *m_new = new _ListClass[new_size];
153            _ListClass *pd = m_new;
154
155            if (cnt > new_size)
156                cnt = new_size;
157            for (_ListClass *ps = m_list; ps < m_list + cnt; ps++, pd++)
158                *pd = *ps;
159            if (m_list != NULL)
160                delete[] m_list;
161            m_list = m_new;
162            m_count = cnt;
163        }
164        else
165        {
166            if (m_list != NULL)
167                delete[] m_list;
168            m_list = NULL;
169            m_count = 0;
170        }
171        m_num_elements = new_size;
172    }
173
174    int m_count;
175175   _ListClass * m_list;
176176   int m_num_elements;
177177};

Previous 199869 Revisions Next


© 1997-2024 The MAME Team