diff options
| author | jsmall-nvidia <jsmall@nvidia.com> | 2019-06-18 18:22:43 -0400 |
|---|---|---|
| committer | Tim Foley <tfoleyNV@users.noreply.github.com> | 2019-06-18 15:22:43 -0700 |
| commit | e213e394d5008cb7bf08bbf875acd494259f5847 (patch) | |
| tree | 75a82a19aaf6be8204c1f8b4ceb446d02a1f06d7 /source/core/slang-platform.cpp | |
| parent | 896e460dc8146bc9a39296ea72f320fe3db28cee (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.cpp | 32 |
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; |
