diff options
Diffstat (limited to 'src/lib/netlist/plib/pparser.h')
-rw-r--r-- | src/lib/netlist/plib/pparser.h | 31 |
1 files changed, 9 insertions, 22 deletions
diff --git a/src/lib/netlist/plib/pparser.h b/src/lib/netlist/plib/pparser.h index db88299d85c..321dad2f608 100644 --- a/src/lib/netlist/plib/pparser.h +++ b/src/lib/netlist/plib/pparser.h @@ -11,18 +11,16 @@ #include <unordered_map> #include <cstdint> -#include "pconfig.h" #include "pstring.h" #include "plists.h" -#include "putil.h" +//#include "putil.h" #include "pstream.h" namespace plib { -class ptokenizer +class ptokenizer : nocopyassignmove { - P_PREVENT_COPYING(ptokenizer) public: - explicit ptokenizer(pistream &strm); + explicit ptokenizer(plib::putf8_reader &strm); virtual ~ptokenizer(); @@ -126,7 +124,7 @@ private: bool eof() { return m_strm.eof(); } - pistream &m_strm; + putf8_reader &m_strm; int m_lineno; pstring m_cur_line; @@ -148,9 +146,8 @@ private: }; -class ppreprocessor +class ppreprocessor : plib::nocopyassignmove { - P_PREVENT_COPYING(ppreprocessor) public: struct define_t @@ -165,22 +162,12 @@ public: ppreprocessor(std::vector<define_t> *defines = nullptr); virtual ~ppreprocessor() {} - template<class ISTR, class OSTR> - OSTR &process(ISTR &istrm, OSTR &ostrm) - { - return dynamic_cast<OSTR &>(process_i(istrm, ostrm)); - } + void process(putf8_reader &istrm, putf8_writer &ostrm); protected: - - postream &process_i(pistream &istrm, postream &ostrm); - - double expr(const plib::pstring_vector_t &sexpr, std::size_t &start, int prio); - + double expr(const std::vector<pstring> &sexpr, std::size_t &start, int prio); define_t *get_define(const pstring &name); - pstring replace_macros(const pstring &line); - virtual void error(const pstring &err); private: @@ -188,9 +175,9 @@ private: pstring process_line(const pstring &line); std::unordered_map<pstring, define_t> m_defines; - plib::pstring_vector_t m_expr_sep; + std::vector<pstring> m_expr_sep; - std::uint_least32_t m_ifflag; // 31 if levels + std::uint_least64_t m_ifflag; // 31 if levels int m_level; int m_lineno; }; |