"Fossies" - the Fresh Open Source Software Archive 
Member "xdelta3-3.0.11/testing/cmp.h" (24 Mar 2015, 1162 Bytes) of package /linux/misc/xdelta3-3.0.11.tar.gz:
As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) C and C++ source code syntax highlighting (style:
standard) with prefixed line numbers and
code folding option.
Alternatively you can here
view or
download the uninterpreted source code file.
1 /* -*- Mode: C++ -*- */
2 static size_t CmpDifferentBlockBytes(const Block &a, const Block &b) {
3 size_t total = 0;
4 size_t i = 0;
5 size_t m = min(a.Size(), b.Size());
6
7 for (; i < m; i++) {
8 if (a[i] != b[i]) {
9 total++;
10 }
11 }
12
13 total += a.Size() - i;
14 total += b.Size() - i;
15
16 return total;
17 }
18
19 static xoff_t CmpDifferentBytes(const FileSpec &a, const FileSpec &b) {
20 Block block_a, block_b;
21 xoff_t total = 0;
22 typename FileSpec::iterator a_i(a), b_i(b);
23
24 for (; !a_i.Done() && !b_i.Done(); a_i.Next(), b_i.Next()) {
25
26 a_i.Get(&block_a);
27 b_i.Get(&block_b);
28
29 total += CmpDifferentBlockBytes(block_a, block_b);
30 }
31
32 for (; !a_i.Done(); a_i.Next()) {
33 total += a_i.BytesOnBlock();
34 }
35 for (; !b_i.Done(); b_i.Next()) {
36 total += b_i.BytesOnBlock();
37 }
38
39 return total;
40 }
41
42 static size_t CmpDifferentBlockBytesAtOffset(const Block &a,
43 const FileSpec &b_spec,
44 xoff_t offset) {
45 Block b;
46 size_t size = a.Size();
47 CHECK_LE(offset, b_spec.Size());
48 if (b_spec.Size() < offset + size) {
49 size = b_spec.Size() - offset;
50 }
51 b_spec.Get(&b, offset, size);
52 return CmpDifferentBlockBytes(a, b);
53 }