Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fc866baa authored by Pierre Lecesne's avatar Pierre Lecesne Committed by Android (Google) Code Review
Browse files

Merge "Iterate over the zip entries in order."

parents 265066c5 880d65b4
Loading
Loading
Loading
Loading
+8 −6
Original line number Diff line number Diff line
@@ -70,7 +70,7 @@ ZipFileCollectionIterator::ZipFileCollectionIterator(
bool ZipFileCollectionIterator::HasNext() { return current_ != end_; }

IFile* ZipFileCollectionIterator::Next() {
  IFile* result = current_->second.get();
  IFile* result = current_->get();
  ++current_;
  return result;
}
@@ -114,8 +114,10 @@ std::unique_ptr<ZipFileCollection> ZipFileCollection::Create(
        std::string(reinterpret_cast<const char*>(zip_entry_name.name),
                    zip_entry_name.name_length);
    std::string nested_path = path.to_string() + "@" + zip_entry_path;
    collection->files_[zip_entry_path] = util::make_unique<ZipFile>(
        collection->handle_, zip_data, Source(nested_path));
    std::unique_ptr<IFile> file =
        util::make_unique<ZipFile>(collection->handle_, zip_data, Source(nested_path));
    collection->files_by_name_[zip_entry_path] = file.get();
    collection->files_.push_back(std::move(file));
  }

  if (result != -1) {
@@ -126,9 +128,9 @@ std::unique_ptr<ZipFileCollection> ZipFileCollection::Create(
}

IFile* ZipFileCollection::FindFile(const StringPiece& path) {
  auto iter = files_.find(path.to_string());
  if (iter != files_.end()) {
    return iter->second.get();
  auto iter = files_by_name_.find(path.to_string());
  if (iter != files_by_name_.end()) {
    return iter->second;
  }
  return nullptr;
}
+3 −2
Original line number Diff line number Diff line
@@ -58,7 +58,7 @@ class ZipFileCollectionIterator : public IFileCollectionIterator {
  io::IFile* Next() override;

 private:
  std::map<std::string, std::unique_ptr<IFile>>::const_iterator current_, end_;
  std::vector<std::unique_ptr<IFile>>::const_iterator current_, end_;
};

/**
@@ -79,7 +79,8 @@ class ZipFileCollection : public IFileCollection {
  ZipFileCollection();

  ZipArchiveHandle handle_;
  std::map<std::string, std::unique_ptr<IFile>> files_;
  std::vector<std::unique_ptr<IFile>> files_;
  std::map<std::string, IFile*> files_by_name_;
};

}  // namespace io