summaryrefslogtreecommitdiffstats
path: root/chrome/browser/safe_browsing/chunk_range.cc
diff options
context:
space:
mode:
authorpaulg@google.com <paulg@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2008-10-08 02:14:08 +0000
committerpaulg@google.com <paulg@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2008-10-08 02:14:08 +0000
commit4f24e87d4c051571744bab377cc356bdef093701 (patch)
tree7da8e990e10f95aabf6cf73670971bc654e3c214 /chrome/browser/safe_browsing/chunk_range.cc
parent6bf766924e2e8dc08ccd248bc128bd6fe29297cd (diff)
downloadchromium_src-4f24e87d4c051571744bab377cc356bdef093701.zip
chromium_src-4f24e87d4c051571744bab377cc356bdef093701.tar.gz
chromium_src-4f24e87d4c051571744bab377cc356bdef093701.tar.bz2
Make chunk ranges searchable.
Review URL: http://codereview.chromium.org/5645 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@2990 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/safe_browsing/chunk_range.cc')
-rw-r--r--chrome/browser/safe_browsing/chunk_range.cc26
1 files changed, 26 insertions, 0 deletions
diff --git a/chrome/browser/safe_browsing/chunk_range.cc b/chrome/browser/safe_browsing/chunk_range.cc
index e40ee72..0781e45 100644
--- a/chrome/browser/safe_browsing/chunk_range.cc
+++ b/chrome/browser/safe_browsing/chunk_range.cc
@@ -94,3 +94,29 @@ bool StringToRanges(const std::string& input,
return true;
}
+
+// Binary search over a series of ChunkRanges.
+bool IsChunkInRange(int chunk_number, const std::vector<ChunkRange>& ranges) {
+ if (ranges.empty())
+ return false;
+
+ int low = 0;
+ int high = ranges.size() - 1;
+
+ while (low <= high) {
+ // http://googleresearch.blogspot.com/2006/06/extra-extra-read-all-about-it-nearly.html
+ int mid = ((unsigned int)low + (unsigned int)high) >> 1;
+ const ChunkRange& chunk = ranges[mid];
+ if ((chunk.stop() >= chunk_number) && (chunk.start() <= chunk_number))
+ return true; // chunk_number is in range.
+
+ // Adjust our mid point.
+ if (chunk.stop() < chunk_number)
+ low = mid + 1;
+ else
+ high = mid - 1;
+ }
+
+ return false;
+}
+