diff options
author | 2019-10-18 17:57:55 +0200 | |
---|---|---|
committer | 2019-10-18 17:57:55 +0200 | |
commit | b09fa00cca1a9baa0327a33d865fc970f77d4db0 (patch) | |
tree | 47dd943368aa43a0c0cf4256f88e590960c1e99f /src/lib/netlist/plib/putil.cpp | |
parent | ad27643c07d54fc2cc3e56327fe07335e7763d52 (diff) |
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
Diffstat (limited to 'src/lib/netlist/plib/putil.cpp')
-rw-r--r-- | src/lib/netlist/plib/putil.cpp | 32 |
1 files changed, 27 insertions, 5 deletions
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<pstring> 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; } |