summaryrefslogtreecommitdiffstatshomepage
path: root/src/lib/netlist/plib/putil.cpp
diff options
context:
space:
mode:
author couriersud <couriersud@gmx.org>2019-10-18 17:57:55 +0200
committer couriersud <couriersud@gmx.org>2019-10-18 17:57:55 +0200
commitb09fa00cca1a9baa0327a33d865fc970f77d4db0 (patch)
tree47dd943368aa43a0c0cf4256f88e590960c1e99f /src/lib/netlist/plib/putil.cpp
parentad27643c07d54fc2cc3e56327fe07335e7763d52 (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.cpp32
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;
}