diff options
| author | 2020-07-28 20:42:44 +0200 | |
|---|---|---|
| committer | 2020-07-28 20:42:47 +0200 | |
| commit | 0cbbbdc846f7efdc47df0639bb1ce72f0e8e79e8 (patch) | |
| tree | 713ebc6b405d657dc9ca05c3be34392a3f57d734 /src/lib/netlist/nl_setup.cpp | |
| parent | 09e987486a38e9e9f94e468b77f4cd7f4aa5259c (diff) | |
netlist: source stream refactoring
* This is an infrastructure change to enable better error reporting
including file/source and line numbers in the future
Diffstat (limited to 'src/lib/netlist/nl_setup.cpp')
| -rw-r--r-- | src/lib/netlist/nl_setup.cpp | 26 |
1 files changed, 15 insertions, 11 deletions
diff --git a/src/lib/netlist/nl_setup.cpp b/src/lib/netlist/nl_setup.cpp index e399d5c28a9..ffddffeb594 100644 --- a/src/lib/netlist/nl_setup.cpp +++ b/src/lib/netlist/nl_setup.cpp @@ -422,10 +422,10 @@ namespace netlist plib::psource_t::stream_ptr nlparse_t::get_data_stream(const pstring &name) { auto strm = m_sources.get_stream<source_data_t>(name); - if (strm) + if (!strm.empty()) return strm; log().warning(MW_DATA_1_NOT_FOUND(name)); - return plib::psource_t::stream_ptr(nullptr); + return plib::psource_t::stream_ptr(); } // ---------------------------------------------------------------------------------------- @@ -1650,30 +1650,35 @@ void setup_t::prepare_to_run() bool source_netlist_t::parse(nlparse_t &setup, const pstring &name) { auto strm(stream(name)); - return (strm) ? setup.parse_stream(std::move(strm), name) : false; + return (!strm.empty()) ? setup.parse_stream(std::move(strm), name) : false; } source_string_t::stream_ptr source_string_t::stream(const pstring &name) { plib::unused_var(name); - source_string_t::stream_ptr ret(std::make_unique<std::istringstream>(m_str)); - ret->imbue(std::locale::classic()); + source_string_t::stream_ptr ret(std::make_unique<std::istringstream>(m_str), name); + ret.stream().imbue(std::locale::classic()); return ret; } source_mem_t::stream_ptr source_mem_t::stream(const pstring &name) { plib::unused_var(name); - source_mem_t::stream_ptr ret(std::make_unique<std::istringstream>(m_str, std::ios_base::binary)); - ret->imbue(std::locale::classic()); + source_mem_t::stream_ptr ret(std::make_unique<std::istringstream>(m_str, std::ios_base::binary), name); + ret.stream().imbue(std::locale::classic()); return ret; } source_file_t::stream_ptr source_file_t::stream(const pstring &name) { plib::unused_var(name); - auto ret(std::make_unique<plib::ifstream>(plib::filesystem::u8path(m_filename))); - return (ret->is_open()) ? std::move(ret) : stream_ptr(nullptr); + auto f = std::make_unique<plib::ifstream>(plib::filesystem::u8path(m_filename)); + if (f->is_open()) + { + return stream_ptr(std::move(f), m_filename); + } + else + return stream_ptr(); } bool source_proc_t::parse(nlparse_t &setup, const pstring &name) @@ -1690,8 +1695,7 @@ bool source_proc_t::parse(nlparse_t &setup, const pstring &name) source_proc_t::stream_ptr source_proc_t::stream(const pstring &name) { plib::unused_var(name); - stream_ptr p(nullptr); - return p; + return stream_ptr(); } } // namespace netlist |
