summaryrefslogtreecommitdiffstatshomepage
path: root/src/lib/netlist/plib/pparser.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/netlist/plib/pparser.h')
-rw-r--r--src/lib/netlist/plib/pparser.h31
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;
};