summaryrefslogtreecommitdiffstatshomepage
path: root/src/lib/netlist
diff options
context:
space:
mode:
author couriersud <couriersud@gmx.org>2020-09-17 19:45:10 +0200
committer couriersud <couriersud@gmx.org>2020-09-17 19:45:10 +0200
commite62e2d759b1a952390e0fe7a7ed36e33d2676ba5 (patch)
treea06e78b0827582fe2872b2fb633bee8fcac5202f /src/lib/netlist
parentc1278110833de6e4a1cf166ecddd9d4628f91856 (diff)
netlist: optimize headers.
* where possible rely on forward declarations to optimiuze compile time.
Diffstat (limited to 'src/lib/netlist')
-rw-r--r--src/lib/netlist/analog/nld_generic_models.h1
-rw-r--r--src/lib/netlist/core/setup.h19
-rw-r--r--src/lib/netlist/devices/net_lib.h2
-rw-r--r--src/lib/netlist/nl_base.cpp4
-rw-r--r--src/lib/netlist/nl_parser.cpp22
-rw-r--r--src/lib/netlist/nl_parser.h23
-rw-r--r--src/lib/netlist/nl_setup.cpp19
-rw-r--r--src/lib/netlist/nl_setup.h3
-rw-r--r--src/lib/netlist/nltypes.h16
-rw-r--r--src/lib/netlist/plib/ptokenizer.h46
-rw-r--r--src/lib/netlist/plib/ptypes.h24
11 files changed, 101 insertions, 78 deletions
diff --git a/src/lib/netlist/analog/nld_generic_models.h b/src/lib/netlist/analog/nld_generic_models.h
index 781dc2a16bb..bb8adc466eb 100644
--- a/src/lib/netlist/analog/nld_generic_models.h
+++ b/src/lib/netlist/analog/nld_generic_models.h
@@ -9,7 +9,6 @@
///
#include "nl_base.h"
-//#include "../nl_setup.h"
//
// Set to 0 to use a linearized diode model in the range exceeding
diff --git a/src/lib/netlist/core/setup.h b/src/lib/netlist/core/setup.h
index 61ab79de545..8b8a49dbc34 100644
--- a/src/lib/netlist/core/setup.h
+++ b/src/lib/netlist/core/setup.h
@@ -340,25 +340,6 @@ namespace netlist
pstring m_setup_func_name;
};
- class source_token_t : public source_netlist_t
- {
- public:
- source_token_t(const pstring &name, const parser_t::token_store &store)
- : m_store(store)
- , m_name(name)
- {
- }
-
- bool parse(nlparse_t &setup, const pstring &name) override;
-
- protected:
- plib::istream_uptr stream(const pstring &name) override;
-
- private:
- parser_t::token_store m_store;
- pstring m_name;
- };
-
} // namespace netlist
diff --git a/src/lib/netlist/devices/net_lib.h b/src/lib/netlist/devices/net_lib.h
index db3f9c1519d..1a8b72fcd5a 100644
--- a/src/lib/netlist/devices/net_lib.h
+++ b/src/lib/netlist/devices/net_lib.h
@@ -28,8 +28,6 @@
#define IND_P(ind) ((ind) * 1e-12)
#endif
-NETLIST_EXTERNAL(base_lib)
-
#include "../generated/nld_devinc.h"
diff --git a/src/lib/netlist/nl_base.cpp b/src/lib/netlist/nl_base.cpp
index a4510fe5765..d0a0e707aaf 100644
--- a/src/lib/netlist/nl_base.cpp
+++ b/src/lib/netlist/nl_base.cpp
@@ -16,10 +16,10 @@
#include "nl_errstr.h"
-#include "devices/net_lib.h"
-
#include <limits>
+NETLIST_EXTERNAL(base_lib)
+
namespace netlist
{
diff --git a/src/lib/netlist/nl_parser.cpp b/src/lib/netlist/nl_parser.cpp
index 32a5c542a16..3e7ff32e804 100644
--- a/src/lib/netlist/nl_parser.cpp
+++ b/src/lib/netlist/nl_parser.cpp
@@ -561,4 +561,26 @@ pstring parser_t::stringify_expression(token_t &tok)
return ret;
}
+// ----------------------------------------------------------------------------------------
+// source_token_t
+// ----------------------------------------------------------------------------------------
+
+bool source_token_t::parse(nlparse_t &setup, const pstring &name)
+{
+ if (name == m_name)
+ {
+ auto ret = setup.parse_tokens(m_store, name);
+ return ret;
+ }
+
+ return false;
+}
+
+plib::istream_uptr source_token_t::stream(const pstring &name)
+{
+ plib::unused_var(name);
+ return plib::istream_uptr();
+}
+
+
} // namespace netlist
diff --git a/src/lib/netlist/nl_parser.h b/src/lib/netlist/nl_parser.h
index 077f1b10792..cbc757307d5 100644
--- a/src/lib/netlist/nl_parser.h
+++ b/src/lib/netlist/nl_parser.h
@@ -9,6 +9,7 @@
#define NL_PARSER_H_
#include "nltypes.h" // for setup_t
+#include "core/setup.h"
#include "plib/ptokenizer.h"
#include <unordered_map>
@@ -89,7 +90,27 @@ namespace netlist
std::unordered_map<pstring, token_store> m_local;
token_store *m_cur_local;
-};
+ };
+
+ class source_token_t : public source_netlist_t
+ {
+ public:
+ source_token_t(const pstring &name, const parser_t::token_store &store)
+ : m_store(store)
+ , m_name(name)
+ {
+ }
+
+ bool parse(nlparse_t &setup, const pstring &name) override;
+
+ protected:
+ plib::istream_uptr stream(const pstring &name) override;
+
+ private:
+ parser_t::token_store m_store;
+ pstring m_name;
+ };
+
} // namespace netlist
diff --git a/src/lib/netlist/nl_setup.cpp b/src/lib/netlist/nl_setup.cpp
index fcea082a036..9af1ec92d51 100644
--- a/src/lib/netlist/nl_setup.cpp
+++ b/src/lib/netlist/nl_setup.cpp
@@ -352,7 +352,7 @@ namespace netlist
return false;
}
- bool nlparse_t::parse_tokens(const parser_t::token_store &tokens, const pstring &name)
+ bool nlparse_t::parse_tokens(const plib::detail::token_store &tokens, const pstring &name)
{
parser_t parser(*this);
return parser.parse(tokens, name);
@@ -1762,22 +1762,5 @@ plib::istream_uptr source_proc_t::stream(const pstring &name)
return plib::istream_uptr();
}
-bool source_token_t::parse(nlparse_t &setup, const pstring &name)
-{
- if (name == m_name)
- {
- auto ret = setup.parse_tokens(m_store, name);
- return ret;
- }
-
- return false;
-}
-
-plib::istream_uptr source_token_t::stream(const pstring &name)
-{
- plib::unused_var(name);
- return plib::istream_uptr();
-}
-
} // namespace netlist
diff --git a/src/lib/netlist/nl_setup.h b/src/lib/netlist/nl_setup.h
index 7f6988f2951..fd9cb11afab 100644
--- a/src/lib/netlist/nl_setup.h
+++ b/src/lib/netlist/nl_setup.h
@@ -14,7 +14,6 @@
#include "plib/pstring.h"
#include "nl_config.h"
-#include "nl_parser.h"
#include "nltypes.h"
#include <initializer_list>
@@ -229,7 +228,7 @@ namespace netlist
// FIXME: used by source_t - need a different approach at some time
bool parse_stream(plib::istream_uptr &&istrm, const pstring &name);
- bool parse_tokens(const parser_t::token_store &tokens, const pstring &name);
+ bool parse_tokens(const plib::detail::token_store &tokens, const pstring &name);
template <typename S, typename... Args>
void add_include(Args&&... args)
diff --git a/src/lib/netlist/nltypes.h b/src/lib/netlist/nltypes.h
index 422a9ddfac4..5781619af1a 100644
--- a/src/lib/netlist/nltypes.h
+++ b/src/lib/netlist/nltypes.h
@@ -22,22 +22,6 @@
#include <memory>
-// FIXME: Move to ptypes
-namespace plib
-{
- // FORWARD declarations
- template <typename BASEARENA, std::size_t MINALIGN>
- class mempool_arena;
-
- struct aligned_arena;
- class dynlib_base;
-
- template<bool debug_enabled>
- class plog_base;
-
- struct plog_level;
-} // namespace plib
-
namespace netlist
{
// -----------------------------------------------------------------------------
diff --git a/src/lib/netlist/plib/ptokenizer.h b/src/lib/netlist/plib/ptokenizer.h
index 717d3fcd550..9a194a542d5 100644
--- a/src/lib/netlist/plib/ptokenizer.h
+++ b/src/lib/netlist/plib/ptokenizer.h
@@ -19,22 +19,7 @@
namespace plib {
- class ptokenizer
- {
- public:
- explicit ptokenizer() // NOLINT(misc-forwarding-reference-overload, bugprone-forwarding-reference-overload)
- : m_strm(nullptr)
- , m_unget(0)
- , m_string('"')
- , m_support_line_markers(true) // FIXME
- , m_token_queue(nullptr)
- {
- clear();
- }
-
- PCOPYASSIGNMOVE(ptokenizer, delete)
-
- virtual ~ptokenizer() = default;
+ namespace detail {
PENUM(token_type,
IDENTIFIER,
@@ -109,7 +94,34 @@ namespace plib {
pstring m_token;
};
- using token_store = std::vector<token_t>;
+ class token_store : public std::vector<token_t>
+ {
+ using std::vector<token_t>::vector;
+ };
+
+ } // namespace detail
+
+ class ptokenizer
+ {
+ public:
+ explicit ptokenizer() // NOLINT(misc-forwarding-reference-overload, bugprone-forwarding-reference-overload)
+ : m_strm(nullptr)
+ , m_unget(0)
+ , m_string('"')
+ , m_support_line_markers(true) // FIXME
+ , m_token_queue(nullptr)
+ {
+ clear();
+ }
+
+ PCOPYASSIGNMOVE(ptokenizer, delete)
+
+ virtual ~ptokenizer() = default;
+
+ using token_type = detail::token_type;
+ using token_id_t = detail::token_id_t;
+ using token_t = detail::token_t;
+ using token_store = detail::token_store;
// tokenizer stuff follows ...
diff --git a/src/lib/netlist/plib/ptypes.h b/src/lib/netlist/plib/ptypes.h
index 5c5cb37695a..544b8ab0eff 100644
--- a/src/lib/netlist/plib/ptypes.h
+++ b/src/lib/netlist/plib/ptypes.h
@@ -39,6 +39,30 @@
#undef EMSCRIPTEN
#endif
+// -----------------------------------------------------------------------------
+// forward definitions
+// -----------------------------------------------------------------------------
+
+namespace plib
+{
+ template <typename BASEARENA, std::size_t MINALIGN>
+ class mempool_arena;
+
+ struct aligned_arena;
+ class dynlib_base;
+
+ template<bool debug_enabled>
+ class plog_base;
+
+ struct plog_level;
+
+ namespace detail
+ {
+ class token_store;
+ } // namespace detail
+
+} // namespace plib
+
namespace plib
{
//============================================================