Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(91)

Unified Diff: courgette/third_party/bsdiff/bsdiff_create.cc

Issue 2031193002: [Courgette] Refactor BSDiff namespaces and bsdiff::search() interface. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Sync. Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « courgette/third_party/bsdiff/bsdiff_apply.cc ('k') | courgette/third_party/bsdiff/bsdiff_search.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: courgette/third_party/bsdiff/bsdiff_create.cc
diff --git a/courgette/third_party/bsdiff/bsdiff_create.cc b/courgette/third_party/bsdiff/bsdiff_create.cc
index b89c2f1a57a997fef35fdf1d881c9b4a7e29aa94..4b7aeade2b6a6d3c9db7aa82653e443d828225d4 100644
--- a/courgette/third_party/bsdiff/bsdiff_create.cc
+++ b/courgette/third_party/bsdiff/bsdiff_create.cc
@@ -65,7 +65,18 @@
#include "courgette/third_party/bsdiff/paged_array.h"
#include "courgette/third_party/bsdiff/qsufsort.h"
-namespace courgette {
+namespace {
+
+using courgette::CalculateCrc;
+using courgette::PagedArray;
+using courgette::SinkStream;
+using courgette::SinkStreamSet;
+using courgette::SourceStream;
+using courgette::SourceStreamSet;
+
+} // namespace
+
+namespace bsdiff {
static CheckBool WriteHeader(SinkStream* stream, MBSPatchHeader* header) {
bool ok = stream->Write(header->tag, sizeof(header->tag));
@@ -165,26 +176,26 @@ BSDiffStatus CreateBinaryPatch(SourceStream* old_stream,
int lastscan = 0, lastpos = 0, lastoffset = 0;
int scan = 0;
- int match_length = 0;
+ SearchResult match(0, 0);
while (scan < newsize) {
- int pos = 0;
int oldscore = 0; // Count of how many bytes of the current match at |scan|
// extend the match at |lastscan|.
+ match.pos = 0;
- scan += match_length;
+ scan += match.size;
for (int scsc = scan; scan < newsize; ++scan) {
- match_length = courgette::search<PagedArray<int>&>(
- I, old, oldsize, newbuf + scan, newsize - scan, &pos);
+ match = search<PagedArray<int>&>(
+ I, old, oldsize, newbuf + scan, newsize - scan);
- for (; scsc < scan + match_length; scsc++)
+ for (; scsc < scan + match.size; scsc++)
if ((scsc + lastoffset < oldsize) &&
(old[scsc + lastoffset] == newbuf[scsc]))
oldscore++;
- if ((match_length == oldscore) && (match_length != 0))
+ if ((match.size == oldscore) && (match.size != 0))
break; // Good continuing match, case (1)
- if (match_length > oldscore + 8)
+ if (match.size > oldscore + 8)
break; // New seed match, case (2)
if ((scan + lastoffset < oldsize) &&
@@ -193,7 +204,7 @@ BSDiffStatus CreateBinaryPatch(SourceStream* old_stream,
// Case (3) continues in this loop until we fall out of the loop (4).
}
- if ((match_length != oldscore) || (scan == newsize)) { // Cases (2) and (4)
+ if ((match.size != oldscore) || (scan == newsize)) { // Cases (2) and (4)
// This next chunk of code finds the boundary between the bytes to be
// copied as part of the current triple, and the bytes to be copied as
// part of the next triple. The |lastscan| match is extended forwards as
@@ -206,8 +217,8 @@ BSDiffStatus CreateBinaryPatch(SourceStream* old_stream,
int lenb = 0;
if (scan < newsize) { // i.e. not case (4); there is a match to extend.
int score = 0, Sb = 0;
- for (int i = 1; (scan >= lastscan + i) && (pos >= i); i++) {
- if (old[pos - i] == newbuf[scan - i])
+ for (int i = 1; (scan >= lastscan + i) && (match.pos >= i); i++) {
+ if (old[match.pos - i] == newbuf[scan - i])
score++;
if (score * 2 - i > Sb * 2 - lenb) {
Sb = score;
@@ -247,7 +258,7 @@ BSDiffStatus CreateBinaryPatch(SourceStream* old_stream,
old[lastpos + lenf - overlap + i]) {
score++;
}
- if (newbuf[scan - lenb + i] == old[pos - lenb + i]) {
+ if (newbuf[scan - lenb + i] == old[match.pos - lenb + i]) {
score--;
}
if (score > Ss) {
@@ -284,7 +295,7 @@ BSDiffStatus CreateBinaryPatch(SourceStream* old_stream,
uint32_t copy_count = lenf;
uint32_t extra_count = gap;
- int32_t seek_adjustment = ((pos - lenb) - (lastpos + lenf));
+ int32_t seek_adjustment = ((match.pos - lenb) - (lastpos + lenf));
if (!control_stream_copy_counts->WriteVarint32(copy_count) ||
!control_stream_extra_counts->WriteVarint32(extra_count) ||
@@ -300,7 +311,7 @@ BSDiffStatus CreateBinaryPatch(SourceStream* old_stream,
#endif
lastscan = scan - lenb; // Include the backward extension in seed.
- lastpos = pos - lenb; // ditto.
+ lastpos = match.pos - lenb; // ditto.
lastoffset = lastpos - lastscan;
}
}
@@ -339,4 +350,4 @@ BSDiffStatus CreateBinaryPatch(SourceStream* old_stream,
return OK;
}
-} // namespace courgette
+} // namespace bsdiff
« no previous file with comments | « courgette/third_party/bsdiff/bsdiff_apply.cc ('k') | courgette/third_party/bsdiff/bsdiff_search.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698