summaryrefslogtreecommitdiffstatshomepage
path: root/src/lib/netlist/plib/pstate.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/netlist/plib/pstate.h')
-rw-r--r--src/lib/netlist/plib/pstate.h46
1 files changed, 30 insertions, 16 deletions
diff --git a/src/lib/netlist/plib/pstate.h b/src/lib/netlist/plib/pstate.h
index 659c6991c42..71db3b97bb6 100644
--- a/src/lib/netlist/plib/pstate.h
+++ b/src/lib/netlist/plib/pstate.h
@@ -28,16 +28,22 @@ public:
struct datatype_t
{
datatype_t(std::size_t bsize, bool bintegral, bool bfloat)
- : size(bsize), is_integral(bintegral), is_float(bfloat), is_custom(false)
+ : m_size(bsize), m_is_integral(bintegral), m_is_float(bfloat), m_is_custom(false)
{}
explicit datatype_t(bool bcustom)
- : size(0), is_integral(false), is_float(false), is_custom(bcustom)
+ : m_size(0), m_is_integral(false), m_is_float(false), m_is_custom(bcustom)
{}
- const std::size_t size;
- const bool is_integral;
- const bool is_float;
- const bool is_custom;
+ std::size_t size() const noexcept { return m_size; }
+ bool is_integral() const noexcept { return m_is_integral; }
+ bool is_float() const noexcept { return m_is_float; }
+ bool is_custom() const noexcept { return m_is_custom; }
+
+ private:
+ std::size_t m_size;
+ bool m_is_integral;
+ bool m_is_float;
+ bool m_is_custom;
};
template<typename T>
@@ -64,7 +70,7 @@ public:
struct entry_t
{
- using list_t = std::vector<plib::unique_ptr<entry_t>>;
+ using list_t = std::vector<entry_t>;
entry_t(const pstring &stname, const datatype_t &dt, const void *owner,
const std::size_t count, void *ptr)
@@ -73,11 +79,19 @@ public:
entry_t(const pstring &stname, const void *owner, callback_t *callback)
: m_name(stname), m_dt(datatype_t(true)), m_owner(owner), m_callback(callback), m_count(0), m_ptr(nullptr) { }
+ pstring name() const noexcept { return m_name; }
+ datatype_t dt() const noexcept { return m_dt; }
+ const void * owner() const noexcept { return m_owner; }
+ callback_t * callback() const noexcept { return m_callback; }
+ std::size_t count() const noexcept { return m_count; }
+ void * ptr() const noexcept { return m_ptr; }
+
+ private:
pstring m_name;
- const datatype_t m_dt;
+ datatype_t m_dt;
const void * m_owner;
callback_t * m_callback;
- const std::size_t m_count;
+ std::size_t m_count;
void * m_ptr;
};
@@ -115,19 +129,19 @@ public:
void save_state_ptr(const void *owner, const pstring &stname, const datatype_t &dt, const std::size_t count, void *ptr)
{
- m_save.push_back(plib::make_unique<entry_t>(stname, dt, owner, count, ptr));
+ m_save.emplace_back(stname, dt, owner, count, ptr);
}
void pre_save()
{
for (auto & s : m_custom)
- s->m_callback->on_pre_save(*this);
+ s.callback()->on_pre_save(*this);
}
void post_load()
{
for (auto & s : m_custom)
- s->m_callback->on_post_load(*this);
+ s.callback()->on_post_load(*this);
}
void remove_save_items(const void *owner)
@@ -136,14 +150,14 @@ public:
while (i != m_save.begin())
{
i--;
- if (i->get()->m_owner == owner)
+ if (i->owner() == owner)
i = m_save.erase(i);
}
i = m_custom.end();
while (i > m_custom.begin())
{
i--;
- if (i->get()->m_owner == owner)
+ if (i->owner() == owner)
i = m_custom.erase(i);
}
}
@@ -152,7 +166,7 @@ public:
{
std::vector<const entry_t *> ret;
for (auto &i : m_save)
- ret.push_back(i.get());
+ ret.push_back(&i);
return ret;
}
@@ -166,7 +180,7 @@ private:
template<> inline void state_manager_t::save_item(const void *owner, callback_t &state, const pstring &stname)
{
- m_custom.push_back(plib::make_unique<entry_t>(stname, owner, &state));
+ m_custom.emplace_back(stname, owner, &state);
state.register_state(*this, stname);
}