diff options
Diffstat (limited to 'source/slang/slang.cpp')
| -rw-r--r-- | source/slang/slang.cpp | 39 |
1 files changed, 25 insertions, 14 deletions
diff --git a/source/slang/slang.cpp b/source/slang/slang.cpp index ab1b0e489..6632f2fa3 100644 --- a/source/slang/slang.cpp +++ b/source/slang/slang.cpp @@ -3041,21 +3041,14 @@ SLANG_API void spSetDefaultModuleName( frontEndReq->m_defaultModuleName = namePool->getName(defaultModuleName); } - -SLANG_API SlangResult spAddLibraryReference( - SlangCompileRequest* request, - const void* libData, - size_t libDataSize) +namespace Slang +{ +SlangResult _addLibraryReference(EndToEndCompileRequest* req, Stream* stream) { - using namespace Slang; - auto req = Slang::asInternal(request); - - // We need to deserialize and add the modules - MemoryStreamBase fileStream(FileAccess::Read, libData, libDataSize); - // Read all of the contained modules List<RefPtr<IRModule>> irModules; - if (SLANG_FAILED(IRSerialReader::readStreamModules(&fileStream, req->getSession(), req->getFrontEndReq()->getSourceManager(), irModules))) + List<FrontEndCompileRequest::ExtraEntryPointInfo> entryPointMangledNames; + if (SLANG_FAILED(IRSerialReader::readStreamModules(stream, req->getSession(), req->getFrontEndReq()->getSourceManager(), irModules, entryPointMangledNames))) { req->getSink()->diagnose(SourceLoc(), Diagnostics::unableToAddReferenceToModuleContainer); return SLANG_FAIL; @@ -3064,10 +3057,28 @@ SLANG_API SlangResult spAddLibraryReference( // TODO(JS): May be better to have a ITypeComponent that encapsulates a collection of modules // For now just add to the linkage auto linkage = req->getLinkage(); - linkage->m_libModules.addRange(irModules.getBuffer(), irModules.getCount()); + linkage->m_libModules.addRange(irModules); + + req->getFrontEndReq()->m_extraEntryPoints.addRange(entryPointMangledNames); return SLANG_OK; } +} + + +SLANG_API SlangResult spAddLibraryReference( + SlangCompileRequest* request, + const void* libData, + size_t libDataSize) +{ + using namespace Slang; + auto req = Slang::asInternal(request); + + // We need to deserialize and add the modules + MemoryStreamBase fileStream(FileAccess::Read, libData, libDataSize); + + return _addLibraryReference(req, &fileStream); +} SLANG_API void spTranslationUnit_addPreprocessorDefine( SlangCompileRequest* request, @@ -3417,7 +3428,7 @@ SLANG_API void const* spGetEntryPointCode( if(entryPointIndex < 0) return nullptr; - if(Index(entryPointIndex) >= req->entryPoints.getCount()) return nullptr; + if(Index(entryPointIndex) >= program->getEntryPointCount()) return nullptr; auto entryPoint = program->getEntryPoint(entryPointIndex); auto targetProgram = program->getTargetProgram(targetReq); |
