summaryrefslogtreecommitdiffstats
path: root/source/compiler-core/slang-artifact-util.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/compiler-core/slang-artifact-util.cpp')
-rw-r--r--source/compiler-core/slang-artifact-util.cpp20
1 files changed, 18 insertions, 2 deletions
diff --git a/source/compiler-core/slang-artifact-util.cpp b/source/compiler-core/slang-artifact-util.cpp
index f93924afb..fb3157522 100644
--- a/source/compiler-core/slang-artifact-util.cpp
+++ b/source/compiler-core/slang-artifact-util.cpp
@@ -23,10 +23,15 @@ namespace Slang {
return ArtifactContainer::create(ArtifactDesc::make(ArtifactKind::Container, ArtifactPayload::CompileResults));
}
-/* static */ComPtr<IArtifact> ArtifactUtil::createArtifactForCompileTarget(SlangCompileTarget target)
+/* static */ComPtr<IArtifact> ArtifactUtil::createArtifact(const ArtifactDesc& desc, const char* name)
{
- auto desc = ArtifactDescUtil::makeDescFromCompileTarget(target);
+ auto artifact = createArtifact(desc);
+ artifact->setName(name);
+ return artifact;
+}
+/* static */ComPtr<IArtifact> ArtifactUtil::createArtifact(const ArtifactDesc& desc)
+{
if (isDerivedFrom(desc.kind, ArtifactKind::Container))
{
auto container = ArtifactContainer::create(desc);
@@ -41,6 +46,12 @@ namespace Slang {
}
}
+/* static */ComPtr<IArtifact> ArtifactUtil::createArtifactForCompileTarget(SlangCompileTarget target)
+{
+ auto desc = ArtifactDescUtil::makeDescFromCompileTarget(target);
+ return createArtifact(desc);
+}
+
/* static */bool ArtifactUtil::isSignificant(IArtifact* artifact, void* data)
{
SLANG_UNUSED(data);
@@ -79,6 +90,11 @@ namespace Slang {
return true;
}
+/* static */IArtifact* ArtifactUtil::findSignificant(IArtifact* artifact)
+{
+ return artifact->findArtifactByPredicate(IArtifact::FindStyle::SelfOrChildren, &ArtifactUtil::isSignificant, nullptr);
+}
+
/* static */String ArtifactUtil::getBaseName(IArtifact* artifact)
{
if (auto fileRep = findRepresentation<IFileArtifactRepresentation>(artifact))