summaryrefslogtreecommitdiffstats
path: root/source/core/slang-platform.cpp
diff options
context:
space:
mode:
authorjsmall-nvidia <jsmall@nvidia.com>2019-06-18 18:22:43 -0400
committerTim Foley <tfoleyNV@users.noreply.github.com>2019-06-18 15:22:43 -0700
commite213e394d5008cb7bf08bbf875acd494259f5847 (patch)
tree75a82a19aaf6be8204c1f8b4ceb446d02a1f06d7 /source/core/slang-platform.cpp
parent896e460dc8146bc9a39296ea72f320fe3db28cee (diff)
* Added Path::combineBuilder, so as two sub paths can be combined into a StringBuilder (#988)
* Renamed and improved comments on SharedLibrary
Diffstat (limited to 'source/core/slang-platform.cpp')
-rw-r--r--source/core/slang-platform.cpp32
1 files changed, 20 insertions, 12 deletions
diff --git a/source/core/slang-platform.cpp b/source/core/slang-platform.cpp
index 82f914f7d..8055d3e55 100644
--- a/source/core/slang-platform.cpp
+++ b/source/core/slang-platform.cpp
@@ -19,32 +19,40 @@ namespace Slang
{
// SharedLibrary
-/* static */SlangResult SharedLibrary::load(const char* filename, SharedLibrary::Handle& handleOut)
+/* static */SlangResult SharedLibrary::load(const char* path, SharedLibrary::Handle& handleOut)
{
StringBuilder builder;
- appendPlatformFileName(UnownedStringSlice(filename), builder);
- return loadWithPlatformFilename(builder.begin(), handleOut);
+ calcPlatformPath(UnownedStringSlice(path), builder);
+ return loadWithPlatformPath(builder.begin(), handleOut);
}
-/* static */String SharedLibrary::calcPlatformPath(const UnownedStringSlice& path)
+/* static */void SharedLibrary::calcPlatformPath(const UnownedStringSlice& path, StringBuilder& outPath)
{
// Work out the shared library name
String parent = Path::getParentDirectory(path);
String filename = Path::getFileName(path);
-
- StringBuilder builder;
- SharedLibrary::appendPlatformFileName(filename.getUnownedSlice(), builder);
if (parent.getLength() > 0)
{
- return Path::combine(parent, builder);
+ // Work out the filename platform name (as in add .dll say on windows)
+ StringBuilder platformFileNameBuilder;
+ SharedLibrary::appendPlatformFileName(filename.getUnownedSlice(), platformFileNameBuilder);
+
+ Path::combineBuilder(parent.getUnownedSlice(), platformFileNameBuilder.getUnownedSlice(), outPath);
}
else
- {
- return builder;
+ {
+ appendPlatformFileName(filename.getUnownedSlice(), outPath);
}
}
+/* static */String SharedLibrary::calcPlatformPath(const UnownedStringSlice& path)
+{
+ StringBuilder builder;
+ calcPlatformPath(path, builder);
+ return builder.ToString();
+}
+
#ifdef _WIN32
// Make sure SlangResult match for common standard window HRESULT
@@ -80,7 +88,7 @@ SLANG_COMPILE_TIME_ASSERT(E_OUTOFMEMORY == SLANG_E_OUT_OF_MEMORY);
return SLANG_FAIL;
}
-/* static */SlangResult SharedLibrary::loadWithPlatformFilename(char const* platformFileName, SharedLibrary::Handle& handleOut)
+/* static */SlangResult SharedLibrary::loadWithPlatformPath(char const* platformFileName, SharedLibrary::Handle& handleOut)
{
handleOut = nullptr;
// https://docs.microsoft.com/en-us/windows/desktop/api/libloaderapi/nf-libloaderapi-loadlibrarya
@@ -136,7 +144,7 @@ SLANG_COMPILE_TIME_ASSERT(E_OUTOFMEMORY == SLANG_E_OUT_OF_MEMORY);
return SLANG_E_NOT_IMPLEMENTED;
}
-/* static */SlangResult SharedLibrary::loadWithPlatformFilename(char const* platformFileName, Handle& handleOut)
+/* static */SlangResult SharedLibrary::loadWithPlatformPath(char const* platformFileName, Handle& handleOut)
{
handleOut = nullptr;