void setSymbolRecordStreamIndex(uint32_t Index);
Expected<DbiModuleDescriptorBuilder &> addModuleInfo(StringRef ModuleName);
- Error addModuleSourceFile(StringRef Module, StringRef File);
Error addModuleSourceFile(DbiModuleDescriptorBuilder &Module, StringRef File);
Expected<uint32_t> getSourceFileNameIndex(StringRef FileName);
const DbiStreamHeader *Header;
- StringMap<std::unique_ptr<DbiModuleDescriptorBuilder>> ModiMap;
- std::vector<DbiModuleDescriptorBuilder *> ModiList;
+ std::vector<std::unique_ptr<DbiModuleDescriptorBuilder>> ModiList;
StringMap<uint32_t> SourceFileNames;
Expected<DbiModuleDescriptorBuilder &>
DbiStreamBuilder::addModuleInfo(StringRef ModuleName) {
uint32_t Index = ModiList.size();
- auto MIB =
- llvm::make_unique<DbiModuleDescriptorBuilder>(ModuleName, Index, Msf);
- auto M = MIB.get();
- auto Result = ModiMap.insert(std::make_pair(ModuleName, std::move(MIB)));
-
- if (!Result.second)
- return make_error<RawError>(raw_error_code::duplicate_entry,
- "The specified module already exists");
- ModiList.push_back(M);
- return *M;
-}
-
-Error DbiStreamBuilder::addModuleSourceFile(StringRef Module, StringRef File) {
- auto ModIter = ModiMap.find(Module);
- if (ModIter == ModiMap.end())
- return make_error<RawError>(raw_error_code::no_entry,
- "The specified module was not found");
- return addModuleSourceFile(*ModIter->second, File);
+ ModiList.push_back(
+ llvm::make_unique<DbiModuleDescriptorBuilder>(ModuleName, Index, Msf));
+ return *ModiList.back();
}
Error DbiStreamBuilder::addModuleSourceFile(DbiModuleDescriptorBuilder &Module,
ModiBuilder.setObjFileName(MI.Obj);
for (auto S : MI.SourceFiles)
- ExitOnErr(DbiBuilder.addModuleSourceFile(MI.Mod, S));
+ ExitOnErr(DbiBuilder.addModuleSourceFile(ModiBuilder, S));
if (MI.Modi.hasValue()) {
const auto &ModiStream = *MI.Modi;
for (auto Symbol : ModiStream.Symbols) {