netlist: code maintenance. (nw)

Fix visibility of classes in nlid_system.h.
Fix tidy warning for penum.
This commit is contained in:
couriersud 2020-06-06 20:41:37 +02:00
parent 3f9bb5d1ea
commit e3901f419c
5 changed files with 72 additions and 74 deletions

View File

@ -26,7 +26,7 @@ DOC = $(SRC)/documentation
TIDY_FLAGSX = -checks=*,-google*,-hicpp*,readability*,-fuchsia*,cert-*,-android-*,
TIDY_FLAGSX += -llvm-header-guard,-cppcoreguidelines-pro-type-reinterpret-cast,
#TIDY_FLAGSX += -cppcoreguidelines-pro-bounds-pointer-arithmetic,
TIDY_FLAGSX += -cppcoreguidelines-pro-bounds-pointer-arithmetic,
#TIDY_FLAGSX += -cppcoreguidelines-owning-memory,
TIDY_FLAGSX += -modernize-use-default-member-init,-cppcoreguidelines-pro-bounds-constant-array-index,
TIDY_FLAGSX += -modernize-pass-by-value,-cppcoreguidelines-pro-type-static-cast-downcast,
@ -39,7 +39,7 @@ TIDY_FLAGSX += -bugprone-too-small-loop-variable,
TIDY_FLAGSX += -modernize-use-trailing-return-type,
TIDY_FLAGSX += -cppcoreguidelines-pro-bounds-array-to-pointer-decay,
TIDY_FLAGSX += -readability-magic-numbers,-readability-braces-around-statements,
#TIDY_FLAGSX += -readability-implicit-bool-conversion,
TIDY_FLAGSX += -readability-implicit-bool-conversion,
TIDY_FLAGSX += -readability-named-parameter,-readability-function-size,
TIDY_FLAGSX += -llvmlibc-restrict-system-libc-headers,-llvmlibc-implementation-in-namespace,-llvmlibc-callee-namespace,
#TIDY_FLAGSX += -cppcoreguidelines-avoid-non-const-global-variables
@ -232,7 +232,7 @@ ALL_TIDY_FILES = $(ALL_OBJS:.o=.json)
SOURCES = $(patsubst $(OBJ)%, $(SRC)%, $(ALL_OBJS:.o=.cpp))
ALLFILES = $(SOURCES) $(VSBUILDS) $(DOCS)
MAKEFILE_TARGETS_WITHOUT_INCLUDE := gcc9 clang clang-5 mingw doc native maketree
MAKEFILE_TARGETS_WITHOUT_INCLUDE := gcc9 clang clang-5 mingw doc native maketree tidy
# git archive HEAD --prefix=project-name-version/ \

View File

@ -35,16 +35,16 @@ namespace netlist
, m_RI(*this, "RI", nlconst::magic(400.0)) // around 250 for HC series, 400 on LS/TTL, estimated from datasheets
{
register_subalias("GND", m_RN.m_R.N());
register_subalias("VCC", m_RP.m_R.P());
register_subalias("C", m_RN.m_R.N());
register_subalias("RC", m_RN.m_R.P());
register_subalias("GND", m_RN.N());
register_subalias("VCC", m_RP.P());
register_subalias("C", m_RN.N());
register_subalias("RC", m_RN.P());
connect(m_RP_Q, m_RP.m_I);
connect(m_RN_Q, m_RN.m_I);
connect(m_RP_Q, m_RP.I());
connect(m_RN_Q, m_RN.I());
connect(m_RN.m_R.P(), m_RP.m_R.N());
connect(m_CV, m_RN.m_R.P());
connect(m_RN.P(), m_RP.N());
connect(m_CV, m_RN.P());
m_RP.m_RON.set(m_RI());
m_RN.m_RON.set(m_RI());
@ -102,7 +102,7 @@ namespace netlist
if (m_state == 1)
{
const nl_fptype vLow = m_KP * m_RP.m_R.P()();
const nl_fptype vLow = m_KP * m_RP.P()();
if (m_CV() < vLow)
{
m_RN_Q.push(0, NLTIME_FROM_NS(10)); // R_OFF
@ -111,7 +111,7 @@ namespace netlist
}
if (m_state == 2)
{
const nl_fptype vHigh = m_RP.m_R.P()() * (nlconst::one() - m_KP);
const nl_fptype vHigh = m_RP.P()() * (nlconst::one() - m_KP);
if (m_CV() > vHigh)
{
m_RP_Q.push(0, NLTIME_FROM_NS(10)); // R_OFF
@ -172,20 +172,20 @@ namespace netlist
register_subalias("3", m_A.m_CLRQ);
register_subalias("4", m_A.m_QQ);
register_subalias("5", m_B.m_Q);
register_subalias("6", m_B.m_RN.m_R.N());
register_subalias("7", m_B.m_RN.m_R.P());
register_subalias("8", m_A.m_RN.m_R.N());
connect(m_A.m_RN.m_R.N(), m_B.m_RN.m_R.N());
register_subalias("6", m_B.m_RN.N());
register_subalias("7", m_B.m_RN.P());
register_subalias("8", m_A.m_RN.N());
connect(m_A.m_RN.N(), m_B.m_RN.N());
register_subalias("9", m_B.m_A);
register_subalias("10", m_B.m_B);
register_subalias("11", m_B.m_CLRQ);
register_subalias("12", m_B.m_QQ);
register_subalias("13", m_A.m_Q);
register_subalias("14", m_A.m_RN.m_R.N());
register_subalias("15", m_A.m_RN.m_R.P());
register_subalias("16", m_A.m_RP.m_R.P());
connect(m_A.m_RP.m_R.P(), m_B.m_RP.m_R.P());
register_subalias("14", m_A.m_RN.N());
register_subalias("15", m_A.m_RN.P());
register_subalias("16", m_A.m_RP.P());
connect(m_A.m_RP.P(), m_B.m_RP.P());
}
NETLIB_RESETI() {}
NETLIB_UPDATEI() {}
@ -200,25 +200,25 @@ namespace netlist
, m_A(*this, "A")
, m_B(*this, "B")
{
register_subalias("1", m_A.m_RN.m_R.N()); // C1
register_subalias("2", m_A.m_RN.m_R.P()); // RC1
register_subalias("1", m_A.m_RN.N()); // C1
register_subalias("2", m_A.m_RN.P()); // RC1
register_subalias("3", m_A.m_CLRQ);
register_subalias("4", m_A.m_B);
register_subalias("5", m_A.m_A);
register_subalias("6", m_A.m_Q);
register_subalias("7", m_A.m_QQ);
register_subalias("8", m_A.m_RN.m_R.N());
connect(m_A.m_RN.m_R.N(), m_B.m_RN.m_R.N());
register_subalias("8", m_A.m_RN.N());
connect(m_A.m_RN.N(), m_B.m_RN.N());
register_subalias("9", m_B.m_QQ);
register_subalias("10", m_B.m_Q);
register_subalias("11", m_B.m_A);
register_subalias("12", m_B.m_B);
register_subalias("13", m_B.m_CLRQ);
register_subalias("14", m_B.m_RN.m_R.P()); // RC2
register_subalias("15", m_B.m_RN.m_R.N()); // C2
register_subalias("16", m_A.m_RP.m_R.P());
connect(m_A.m_RP.m_R.P(), m_B.m_RP.m_R.P());
register_subalias("14", m_B.m_RN.P()); // RC2
register_subalias("15", m_B.m_RN.N()); // C2
register_subalias("16", m_A.m_RP.P());
connect(m_A.m_RP.P(), m_B.m_RP.P());
}
NETLIB_RESETI() { }
NETLIB_UPDATEI() { }
@ -233,25 +233,25 @@ namespace netlist
, m_A(*this, "A")
, m_B(*this, "B")
{
register_subalias("1", m_A.m_RN.m_R.N()); // C1
register_subalias("2", m_A.m_RN.m_R.P()); // RC1
register_subalias("1", m_A.m_RN.N()); // C1
register_subalias("2", m_A.m_RN.P()); // RC1
register_subalias("3", m_A.m_CLRQ);
register_subalias("4", m_A.m_A);
register_subalias("5", m_A.m_B);
register_subalias("6", m_A.m_Q);
register_subalias("7", m_A.m_QQ);
register_subalias("8", m_A.m_RN.m_R.N());
connect(m_A.m_RN.m_R.N(), m_B.m_RN.m_R.N());
register_subalias("8", m_A.m_RN.N());
connect(m_A.m_RN.N(), m_B.m_RN.N());
register_subalias("9", m_B.m_QQ);
register_subalias("10", m_B.m_Q);
register_subalias("11", m_B.m_B);
register_subalias("12", m_B.m_A);
register_subalias("13", m_B.m_CLRQ);
register_subalias("14", m_B.m_RN.m_R.P()); // RC2
register_subalias("15", m_B.m_RN.m_R.N()); // C2
register_subalias("16", m_A.m_RP.m_R.P());
connect(m_A.m_RP.m_R.P(), m_B.m_RP.m_R.P());
register_subalias("14", m_B.m_RN.P()); // RC2
register_subalias("15", m_B.m_RN.N()); // C2
register_subalias("16", m_A.m_RP.P());
connect(m_A.m_RP.P(), m_B.m_RP.P());
}
NETLIB_RESETI();
NETLIB_UPDATEI();

View File

@ -395,10 +395,10 @@ namespace devices
{
public:
NETLIB_CONSTRUCTOR(sys_dsw1)
, m_R(*this, "_R")
, m_I(*this, "I")
, m_RON(*this, "RON", nlconst::one())
, m_ROFF(*this, "ROFF", nlconst::magic(1.0E20))
, m_R(*this, "_R")
, m_I(*this, "I")
, m_last_state(*this, "m_last_state", 0)
{
register_subalias("1", m_R.P());
@ -428,13 +428,19 @@ namespace devices
//NETLIB_UPDATE_PARAMI();
// used by 74123
analog::NETLIB_SUB(R_base) m_R;
logic_input_t m_I;
//FIXME: used by 74123
const terminal_t &P() const noexcept { return m_R.P(); }
const terminal_t &N() const noexcept { return m_R.N(); }
const logic_input_t &I() const noexcept { return m_I; }
param_fp_t m_RON;
param_fp_t m_ROFF;
private:
analog::NETLIB_SUB(R_base) m_R;
logic_input_t m_I;
state_var<netlist_sig_t> m_last_state;
};
@ -451,7 +457,6 @@ namespace devices
, m_I(*this, "I")
, m_GON(*this, "GON", nlconst::magic(1e9)) // FIXME: all switches should have some on value
, m_GOFF(*this, "GOFF", nlconst::cgmin())
, m_last_state(*this, "m_last_state", 0)
, m_power_pins(*this)
{
// connect and register pins
@ -463,7 +468,6 @@ namespace devices
NETLIB_RESETI()
{
m_last_state = 1;
m_R1.set_G(m_GOFF());
m_R2.set_G(m_GON());
}
@ -471,10 +475,7 @@ namespace devices
NETLIB_UPDATEI()
{
const netlist_sig_t state = m_I();
// FIXME: update should only be called if m_I changes
if (true || (state != m_last_state))
{
m_last_state = state;
//printf("Here %d\n", state);
const nl_fptype G1 = (state != 0) ? m_GON() : m_GOFF();
const nl_fptype G2 = (state != 0) ? m_GOFF() : m_GON();
@ -498,18 +499,16 @@ namespace devices
});
}
}
}
//NETLIB_UPDATE_PARAMI();
private:
analog::NETLIB_SUB(R_base) m_R1;
analog::NETLIB_SUB(R_base) m_R2;
logic_input_t m_I;
param_fp_t m_GON;
param_fp_t m_GOFF;
private:
state_var<netlist_sig_t> m_last_state;
nld_power_pins m_power_pins;
};
@ -550,13 +549,13 @@ namespace devices
//NETLIB_UPDATE_PARAMI();
private:
analog_input_t m_IP;
analog_input_t m_IN;
logic_output_t m_Q;
logic_output_t m_QQ;
nld_power_pins m_power_pins;
private:
state_var<netlist_sig_t> m_last_state;
};

View File

@ -1053,13 +1053,13 @@ namespace netlist
/// templatized generic device models do not have to do tons of
/// template magic.
///
/// This function throws an exception if actually called.
/// This function terminates if actually called.
///
[[noreturn]] static void set_tristate(netlist_sig_t v,
netlist_time ts_off_on, netlist_time ts_on_off)
{
plib::unused_var(v, ts_off_on, ts_on_off);
throw nl_exception("set_tristate on logic_output should never be called!");
plib::terminate("set_tristate on logic_output should never be called!");
}
private:
logic_net_t m_my_net;

View File

@ -33,7 +33,6 @@ namespace plib
struct ename : public plib::penum_base { \
enum E { __VA_ARGS__ }; \
constexpr ename (const E &v) : m_v(v) { } \
constexpr ename (E && v) : m_v(v) { } \
template <typename T> explicit constexpr ename(const T &val) { m_v = static_cast<E>(val); } \
template <typename T> explicit constexpr ename(T && val) { m_v = static_cast<E>(val); } \
bool set_from_string (const pstring &s) { \