diff options
| author | jsmall-nvidia <jsmall@nvidia.com> | 2022-09-01 10:06:19 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-09-01 10:06:19 -0400 |
| commit | 3c0177134d126956336865623ea3d6861be59cfa (patch) | |
| tree | 920ba158afe75edde6f5254617dfa22ffeb98403 /source/compiler-core/slang-artifact-helper.cpp | |
| parent | cd8715a7760189c54b36c0c250efbe1db5b8635c (diff) | |
Make FileSystem files and OS files distinct (#2383)
* #include an absolute path didn't work - because paths were taken to always be relative.
* Make DownstreamCompileOptions use POD types.
* CharSliceAllocator -> SliceAllocator
Added SliceConverter
CharSliceCaster -> SliceCaster
* First attempt at zero terminating around blobs.
* Fix clang warning.
* Add SlangTerminatedChars
Make Blob implementations support it.
Make most blobs 'terminated'.
* Fix bug setting up sourceFiles for CommandLineDownstreamCompiler.
* Traffic in TerminatedCharSlice for sourceFiles.
Use ArtifactDesc to generate temporary file names for source.
* Fix typo in testing for shared library/C++.
* Working with source being passed as artifacts to DownstreamCompiler.
* Use artifacts in SourceManager/SourceFile.
* Support infering extension from the original file extension.
* * Infer extension if can't determine from the artifact type
* Split IOSFile/IExtFile representations
* Move responsibility for creating OS file to the handler.
* Disable the check memory path.
Diffstat (limited to 'source/compiler-core/slang-artifact-helper.cpp')
| -rw-r--r-- | source/compiler-core/slang-artifact-helper.cpp | 38 |
1 files changed, 14 insertions, 24 deletions
diff --git a/source/compiler-core/slang-artifact-helper.cpp b/source/compiler-core/slang-artifact-helper.cpp index 27965b0cc..c3b007d28 100644 --- a/source/compiler-core/slang-artifact-helper.cpp +++ b/source/compiler-core/slang-artifact-helper.cpp @@ -87,26 +87,12 @@ ArtifactStyle DefaultArtifactHelper::getStyleParent(ArtifactStyle style) { retur UnownedStringSlice DefaultArtifactHelper::getStyleName(ArtifactStyle style) { return getName(style); } bool DefaultArtifactHelper::isStyleDerivedFrom(ArtifactStyle style, ArtifactStyle base) { return isDerivedFrom(style, base); } -SlangResult DefaultArtifactHelper::createLockFile(const char* inNameBase, ISlangMutableFileSystem* fileSystem, IFileArtifactRepresentation** outLockFile) +SlangResult DefaultArtifactHelper::createLockFile(const CharSlice& inNameBase, IOSFileArtifactRepresentation** outLockFile) { - if (fileSystem) - { - if (fileSystem != OSFileSystem::getMutableSingleton()) - { - // We can only create lock files, on the global OS file system - return SLANG_E_NOT_AVAILABLE; - } - fileSystem = nullptr; - } - - const UnownedStringSlice nameBase = (inNameBase && inNameBase[0] != 0) ? UnownedStringSlice(inNameBase) : UnownedStringSlice("unknown"); - + const UnownedStringSlice nameBase = inNameBase.count ? asStringSlice(inNameBase) : UnownedStringSlice("unknown"); String lockPath; SLANG_RETURN_ON_FAIL(File::generateTemporary(nameBase, lockPath)); - - ComPtr<IFileArtifactRepresentation> lockFile(new FileArtifactRepresentation(IFileArtifactRepresentation::Kind::Lock, lockPath.getUnownedSlice(), nullptr, fileSystem)); - - *outLockFile = lockFile.detach(); + *outLockFile = OSFileArtifactRepresentation::create(IOSFileArtifactRepresentation::Kind::Lock, lockPath.getUnownedSlice(), nullptr).detach(); return SLANG_OK; } @@ -151,22 +137,26 @@ SlangResult DefaultArtifactHelper::createCastableList(const Guid& guid, ICastabl return SLANG_E_NO_INTERFACE; } -SlangResult DefaultArtifactHelper::createFileArtifactRepresentation( - IFileArtifactRepresentation::Kind kind, const CharSlice& path, IFileArtifactRepresentation* lockFile, ISlangMutableFileSystem* fileSystem, IFileArtifactRepresentation** outRep) +SlangResult DefaultArtifactHelper::createOSFileArtifactRepresentation( + IOSFileArtifactRepresentation::Kind kind, const CharSlice& path, IOSFileArtifactRepresentation* lockFile, IOSFileArtifactRepresentation** outRep) { - *outRep = FileArtifactRepresentation::create(kind, asStringSlice(path), lockFile, fileSystem).detach(); + *outRep = OSFileArtifactRepresentation::create(kind, asStringSlice(path), lockFile).detach(); return SLANG_OK; } +SlangResult DefaultArtifactHelper::createExtFileArtifactRepresentation(const CharSlice& path, ISlangFileSystemExt* system, IExtFileArtifactRepresentation** outRep) +{ + *outRep = ExtFileArtifactRepresentation::create(asStringSlice(path), system).detach(); + return SLANG_OK; +} -SlangResult DefaultArtifactHelper::createFileArtifact(const ArtifactDesc& desc, const CharSlice& path, IArtifact** outArtifact) +SlangResult DefaultArtifactHelper::createOSFileArtifact(const ArtifactDesc& desc, const CharSlice& path, IArtifact** outArtifact) { auto artifact = Artifact::create(desc); - auto fileRep = new FileArtifactRepresentation(IFileArtifactRepresentation::Kind::Reference, asStringSlice(path), nullptr, nullptr); - + auto fileRep = new OSFileArtifactRepresentation(IOSFileArtifactRepresentation::Kind::Reference, asStringSlice(path), nullptr); artifact->addRepresentation(fileRep); - + *outArtifact = artifact.detach(); return SLANG_OK; } |
