summaryrefslogtreecommitdiffstatshomepage
path: root/src/lib/netlist/plib/ptokenizer.cpp
diff options
context:
space:
mode:
author couriersud <couriersud@users.noreply.github.com>2022-06-20 20:01:03 +0200
committer GitHub <noreply@github.com>2022-06-20 20:01:03 +0200
commit0dad442511fc3e96bae721c38fe8040a222cc21a (patch)
treeb0eb0732f9e7f438a41a889621d36193d16d6e1b /src/lib/netlist/plib/ptokenizer.cpp
parent3fbfe0b1d76573ee8971eaaee6b37b4024575624 (diff)
netlist: fix bug, prepare for future changes and improve readability (#9947)
* netlist: fix bug, prepare for future changes and improve readability - fix a bug where a net processing error may trigger a nullptr access - applied some clang-tidy recommendations - add no_return to plib::terminate - properly encapsulate dynamic_cast usage - more review of noexcept - added a clang-format file. Over time, all source files will be processed with clang-format - Used clang format on a number of files - Rewrote 74174 - all device constructors now use a struct to pass data on to base classes. Neither netlist state nor the name are intended to be used in a constructor. After the base class was constructed, they can be accessed by state() and name(). - The device construction macros can now be removed. Changes to the core will not need to be reflected in constructors. - Change truth table macros so that going forward NETLIST_END and TRUTH_TABLE_END can be replaced by a closing curly brace. netlists can than use curly braces enclosed blocks. - more clang-format - removed some macros completely - all derived classes from base_device_t now don't use macros any longer. - as a result, delegator_t was removed. This class was only used to support macros :-(
Diffstat (limited to 'src/lib/netlist/plib/ptokenizer.cpp')
-rw-r--r--src/lib/netlist/plib/ptokenizer.cpp40
1 files changed, 19 insertions, 21 deletions
diff --git a/src/lib/netlist/plib/ptokenizer.cpp b/src/lib/netlist/plib/ptokenizer.cpp
index 98be18b6419..59468bf84cd 100644
--- a/src/lib/netlist/plib/ptokenizer.cpp
+++ b/src/lib/netlist/plib/ptokenizer.cpp
@@ -69,16 +69,16 @@ namespace plib {
m_unget = c;
}
- void tokenizer_t::append_to_store(putf8_reader *reader, token_store_t &tokstor)
+ void tokenizer_t::append_to_store(putf8_reader *reader, token_store_t &store)
{
clear();
m_strm = reader;
// Process tokens into queue
token_t ret(token_type::UNKNOWN);
- m_token_queue = &tokstor;
+ m_token_queue = &store;
do {
ret = get_token_comment();
- tokstor.push_back(ret);
+ store.push_back(ret);
} while (!ret.is_type(token_type::token_type::ENDOFFILE));
m_token_queue = nullptr;
}
@@ -300,28 +300,26 @@ namespace plib {
}
return { token_type::STRING, tokstr };
}
- else
+
+ // read identifier till first identifier char or ws
+ pstring tokstr = "";
+ while ((m_identifier_chars.find(c) == pstring::npos) && (m_whitespace.find(c) == pstring::npos))
{
- // read identifier till first identifier char or ws
- pstring tokstr = "";
- while ((m_identifier_chars.find(c) == pstring::npos) && (m_whitespace.find(c) == pstring::npos))
+ tokstr += c;
+ // expensive, check for single char tokens
+ if (tokstr.length() == 1)
{
- tokstr += c;
- // expensive, check for single char tokens
- if (tokstr.length() == 1)
- {
- auto id = m_tokens.find(tokstr);
- if (id != m_tokens.end())
- return { id->second, tokstr };
- }
- c = getc();
+ auto id = m_tokens.find(tokstr);
+ if (id != m_tokens.end())
+ return { id->second, tokstr };
}
- ungetc(c);
- auto id = m_tokens.find(tokstr);
- return (id != m_tokens.end()) ?
- token_t(id->second, tokstr)
- : token_t(token_type::UNKNOWN, tokstr);
+ c = getc();
}
+ ungetc(c);
+ auto id = m_tokens.find(tokstr);
+ return (id != m_tokens.end()) ?
+ token_t(id->second, tokstr)
+ : token_t(token_type::UNKNOWN, tokstr);
}
token_reader_t::token_t tokenizer_t::get_token_comment()