26 : Modules(&Modules), Modi(Modi), Filei(Filei) {
37 if (isEnd() &&
R.isEnd())
41 if (isEnd() !=
R.isEnd())
55 return (Filei ==
R.Filei);
68 return Filei <
R.Filei;
77 if (isEnd() &&
R.isEnd())
89 Thisi =
R.Modules->getSourceFileCount(RealModi);
93 return Thisi -
R.Filei;
101 assert(Filei <= Modules->getSourceFileCount(Modi));
110 assert(!isUniversalEnd());
118 void DbiModuleSourceFilesIterator::setValue() {
124 uint32_t Off = Modules->ModuleInitialFileIndex[Modi] + Filei;
126 if (!ExpectedValue) {
130 ThisValue = *ExpectedValue;
133 bool DbiModuleSourceFilesIterator::isEnd()
const {
134 if (isUniversalEnd())
138 assert(Modi <= Modules->getModuleCount());
139 assert(Filei <= Modules->getSourceFileCount(Modi));
148 bool DbiModuleSourceFilesIterator::isUniversalEnd()
const {
return !Modules; }
150 bool DbiModuleSourceFilesIterator::isCompatible(
153 if (isUniversalEnd() ||
R.isUniversalEnd())
160 return Modi ==
R.Modi;
165 if (
auto EC = initializeModInfo(ModInfo))
167 if (
auto EC = initializeFileInfo(FileInfo))
174 ModInfoSubstream = ModInfo;
181 if (
auto EC = Reader.readArray(Descriptors, ModInfo.
getLength()))
188 FileInfoSubstream = FileInfo;
194 if (
auto EC = FISR.readObject(FileInfoHeader))
200 if (
auto EC = FISR.readArray(ModuleIndices, FileInfoHeader->
NumModules))
202 if (
auto EC = FISR.readArray(ModFileCountArray, FileInfoHeader->
NumModules))
210 for (
auto Count : ModFileCountArray)
211 NumSourceFiles += Count;
217 if (
auto EC = FISR.readArray(FileNameOffsets, NumSourceFiles))
220 if (
auto EC = FISR.readStreamRef(NamesBuffer))
223 auto DescriptorIter = Descriptors.begin();
225 ModuleInitialFileIndex.resize(FileInfoHeader->
NumModules);
226 ModuleDescriptorOffsets.resize(FileInfoHeader->
NumModules);
228 assert(DescriptorIter != Descriptors.end());
229 ModuleInitialFileIndex[
I] = NextFileIndex;
230 ModuleDescriptorOffsets[
I] = DescriptorIter.offset();
232 NextFileIndex += ModFileCountArray[
I];
236 assert(DescriptorIter == Descriptors.end());
237 assert(NextFileIndex == NumSourceFiles);
247 return FileNameOffsets.size();
251 return ModFileCountArray[Modi];
257 auto Iter = Descriptors.at(
Offset);
258 assert(Iter != Descriptors.end());
264 return make_range<DbiModuleSourceFilesIterator>(