summaryrefslogtreecommitdiffstatshomepage
path: root/src/lib/netlist/plib/ppreprocessor.cpp
diff options
context:
space:
mode:
author Aaron Giles <aaron@aarongiles.com>2020-05-15 00:32:55 -0700
committer couriersud <couriersud@gmx.org>2020-05-15 13:10:12 +0200
commitcfc3a76d043f5ea2beb692992fb733bcaf5b685e (patch)
tree8cd21e4002042a6fb76d6cbfeef91024b4b568ca /src/lib/netlist/plib/ppreprocessor.cpp
parent88edd7c665358de5c23d42637e4c17f878c1e275 (diff)
netlist: Add support for empty #defines to preprocessor. [Aaron Giles]
Also add detection and reporting of re-definitions.
Diffstat (limited to 'src/lib/netlist/plib/ppreprocessor.cpp')
-rw-r--r--src/lib/netlist/plib/ppreprocessor.cpp13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/lib/netlist/plib/ppreprocessor.cpp b/src/lib/netlist/plib/ppreprocessor.cpp
index 44ad423c8b7..177599da924 100644
--- a/src/lib/netlist/plib/ppreprocessor.cpp
+++ b/src/lib/netlist/plib/ppreprocessor.cpp
@@ -556,7 +556,14 @@ namespace plib {
pstring n = args.next();
if (!is_valid_token(n))
error("define expected identifier");
- if (args.next_ws() == "(")
+ auto prevdef = get_define(n);
+ if (lti.size() == 2)
+ {
+ if (prevdef != nullptr && prevdef->m_replace != "")
+ error("redefinition of " + n);
+ m_defines.insert({n, define_t(n, "")});
+ }
+ else if (args.next_ws() == "(")
{
define_t def(n);
def.m_has_params = true;
@@ -576,6 +583,8 @@ namespace plib {
while (!args.eod())
r += args.next_ws();
def.m_replace = r;
+ if (prevdef != nullptr && prevdef->m_replace != r)
+ error("redefinition of " + n);
m_defines.insert({n, def});
}
else
@@ -583,6 +592,8 @@ namespace plib {
pstring r;
while (!args.eod())
r += args.next_ws();
+ if (prevdef != nullptr && prevdef->m_replace != r)
+ error("redefinition of " + n);
m_defines.insert({n, define_t(n, r)});
}
}