diff options
| author | skallweitNV <64953474+skallweitNV@users.noreply.github.com> | 2024-06-27 17:35:17 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-06-27 17:35:17 +0200 |
| commit | cb610113605f62e784b63012b31b751acb6fac72 (patch) | |
| tree | 9fce38e85f8de960461c535dd47a7a458b2b3713 /source | |
| parent | 1d4db4224bd981b54b1e5f260a232a1183bbdcda (diff) | |
Add API for querying dependency files on IModule (#4493)
* Add API for querying dependency files on IModule
* return nullptr
Diffstat (limited to 'source')
| -rw-r--r-- | source/slang-capture-replay/slang-module.cpp | 16 | ||||
| -rw-r--r-- | source/slang-capture-replay/slang-module.h | 3 | ||||
| -rw-r--r-- | source/slang/slang-compiler.cpp | 12 | ||||
| -rwxr-xr-x | source/slang/slang-compiler.h | 9 |
4 files changed, 40 insertions, 0 deletions
diff --git a/source/slang-capture-replay/slang-module.cpp b/source/slang-capture-replay/slang-module.cpp index 0b5ed47f1..8a1a80126 100644 --- a/source/slang-capture-replay/slang-module.cpp +++ b/source/slang-capture-replay/slang-module.cpp @@ -189,6 +189,22 @@ namespace SlangCapture return res; } + SLANG_NO_THROW SlangInt32 ModuleCapture::getDependencyFileCount() + { + // No need to capture this call as it is just a query. + slangCaptureLog(LogLevel::Verbose, "%s\n", __PRETTY_FUNCTION__); + SlangInt32 res = m_actualModule->getDependencyFileCount(); + return res; + } + + SLANG_NO_THROW char const* ModuleCapture::getDependencyFilePath(SlangInt32 index) + { + // No need to capture this call as it is just a query. + slangCaptureLog(LogLevel::Verbose, "%s\n", __PRETTY_FUNCTION__); + const char* res = m_actualModule->getDependencyFilePath(index); + return res; + } + SLANG_NO_THROW slang::ISession* ModuleCapture::getSession() { slangCaptureLog(LogLevel::Verbose, "%s\n", __PRETTY_FUNCTION__); diff --git a/source/slang-capture-replay/slang-module.h b/source/slang-capture-replay/slang-module.h index dd19a0b71..5243b8777 100644 --- a/source/slang-capture-replay/slang-module.h +++ b/source/slang-capture-replay/slang-module.h @@ -36,6 +36,9 @@ namespace SlangCapture virtual SLANG_NO_THROW const char* SLANG_MCALL getUniqueIdentity() override; virtual SLANG_NO_THROW SlangResult SLANG_MCALL findAndCheckEntryPoint( char const* name, SlangStage stage, slang::IEntryPoint** outEntryPoint, ISlangBlob** outDiagnostics) override; + virtual SLANG_NO_THROW SlangInt32 SLANG_MCALL getDependencyFileCount() override; + virtual SLANG_NO_THROW char const* SLANG_MCALL getDependencyFilePath( + SlangInt32 index) override; // Interfaces for `IComponentType` virtual SLANG_NO_THROW slang::ISession* SLANG_MCALL getSession() override; diff --git a/source/slang/slang-compiler.cpp b/source/slang/slang-compiler.cpp index cee104dc9..e61c0f220 100644 --- a/source/slang/slang-compiler.cpp +++ b/source/slang/slang-compiler.cpp @@ -2471,6 +2471,18 @@ namespace Slang return nullptr; } + SLANG_NO_THROW SlangInt32 SLANG_MCALL Module::getDependencyFileCount() + { + return (SlangInt32)getFileDependencies().getCount(); + } + + SLANG_NO_THROW char const* SLANG_MCALL Module::getDependencyFilePath( + SlangInt32 index) + { + SourceFile* sourceFile = getFileDependencies()[index]; + return sourceFile->getPathInfo().hasFoundPath() ? sourceFile->getPathInfo().foundPath.getBuffer() : nullptr; + } + void validateEntryPoint( EntryPoint* entryPoint, DiagnosticSink* sink); diff --git a/source/slang/slang-compiler.h b/source/slang/slang-compiler.h index 056e6ea21..46724119b 100755 --- a/source/slang/slang-compiler.h +++ b/source/slang/slang-compiler.h @@ -1453,6 +1453,15 @@ namespace Slang /// Get the unique identity of the module. virtual SLANG_NO_THROW const char* SLANG_MCALL getUniqueIdentity() override; + /// Get the number of dependency files that this module depends on. + /// This includes both the explicit source files, as well as any + /// additional files that were transitively referenced (e.g., via + /// a `#include` directive). + virtual SLANG_NO_THROW SlangInt32 SLANG_MCALL getDependencyFileCount() override; + + /// Get the path to a file this module depends on. + virtual SLANG_NO_THROW char const* SLANG_MCALL getDependencyFilePath( + SlangInt32 index) override; virtual void buildHash(DigestBuilder<SHA1>& builder) SLANG_OVERRIDE; |
