From e213e394d5008cb7bf08bbf875acd494259f5847 Mon Sep 17 00:00:00 2001 From: jsmall-nvidia Date: Tue, 18 Jun 2019 18:22:43 -0400 Subject: * Added Path::combineBuilder, so as two sub paths can be combined into a StringBuilder (#988) * Renamed and improved comments on SharedLibrary --- source/core/slang-platform.cpp | 32 ++++++++++++++++++++------------ 1 file changed, 20 insertions(+), 12 deletions(-) (limited to 'source/core/slang-platform.cpp') 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; -- cgit v1.2.3