From b09fa00cca1a9baa0327a33d865fc970f77d4db0 Mon Sep 17 00:00:00 2001 From: couriersud Date: Fri, 18 Oct 2019 17:57:55 +0200 Subject: Netlist: code maintenance and improvements. [Couriersud] - Added support for line markers to the preprocessor and parser. - Added support for include processing to the preprocessor. - Moved sources base type to plib to be used for preprocessor includes. This enables to include e.g. from rom memory regions. - Renamed some defines --- src/lib/netlist/plib/putil.cpp | 32 +++++++++++++++++++++++++++----- 1 file changed, 27 insertions(+), 5 deletions(-) (limited to 'src/lib/netlist/plib/putil.cpp') diff --git a/src/lib/netlist/plib/putil.cpp b/src/lib/netlist/plib/putil.cpp index b4824d62738..f6eed734a3e 100644 --- a/src/lib/netlist/plib/putil.cpp +++ b/src/lib/netlist/plib/putil.cpp @@ -13,6 +13,32 @@ namespace plib { namespace util { + #ifdef _WIN32 + static constexpr const char PATH_SEP = '\\'; + #else + static constexpr const char PATH_SEP = '/'; + #endif + + pstring basename(pstring filename) + { + auto p=find_last_of(filename, pstring(1, PATH_SEP)); + if (p == pstring::npos) + return filename; + else + return filename.substr(p+1); + } + + pstring path(pstring filename) + { + auto p=find_last_of(filename, pstring(1, PATH_SEP)); + if (p == pstring::npos) + return ""; + else if (p == 0) // root case + return filename.substr(0, 1); + else + return filename.substr(0, p); + } + pstring buildpath(std::initializer_list list ) { pstring ret = ""; @@ -21,11 +47,7 @@ namespace plib if (ret == "") ret = elem; else - #ifdef _WIN32 - ret = ret + '\\' + elem; - #else - ret += ('/' + elem); - #endif + ret += (PATH_SEP + elem); } return ret; } -- cgit v1.2.3-70-g09d2