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

Unified Diff: sdch/open_vcdiff/depot/opensource/open-vcdiff/src/google/vcdecoder.h

Issue 5203: Transition to pulling open-vcdiff from repository, instead of using snapshot... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 12 years, 3 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
Index: sdch/open_vcdiff/depot/opensource/open-vcdiff/src/google/vcdecoder.h
===================================================================
--- sdch/open_vcdiff/depot/opensource/open-vcdiff/src/google/vcdecoder.h (revision 2678)
+++ sdch/open_vcdiff/depot/opensource/open-vcdiff/src/google/vcdecoder.h (working copy)
@@ -1,189 +0,0 @@
-// Copyright 2008 Google Inc.
-// Author: Lincoln Smith
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#ifndef OPEN_VCDIFF_VCDECODER_H_
-#define OPEN_VCDIFF_VCDECODER_H_
-
-#include <cstddef> // size_t
-#include <string>
-#include "google/output_string.h"
-
-namespace open_vcdiff {
-
-using std::string;
-
-class VCDiffStreamingDecoderImpl;
-
-// A streaming decoder class. Takes a dictionary (source) file and a delta
-// file, and produces the original target file. It is intended to process
-// the partial contents of the delta file as they arrive, in "chunks".
-// As soon as a chunk of bytes is received from a file read or from a network
-// transmission, it can be passed to DecodeChunk(), which will then output
-// as much of the target file as it can.
-//
-// The client should use this class as follows:
-// VCDiffStreamingDecoder v;
-// v.StartDecoding(dictionary_ptr, dictionary_size);
-// while (any data left) {
-// if (!v.DecodeChunk(data, len, &output_string)) {
-// handle error;
-// break;
-// }
-// process(output_string); // might have no new data, though
-// }
-// if (!v.FinishDecoding()) { ... handle error ... }
-//
-// I.e., the allowed pattern of calls is
-// StartDecoding DecodeChunk* FinishDecoding
-//
-// NOTE: It is not necessary to call FinishDecoding if DecodeChunk
-// returns false. When DecodeChunk returns false to signal an
-// error, it resets its state and is ready for a new StartDecoding.
-// If FinishDecoding is called, it will also return false.
-//
-class VCDiffStreamingDecoder {
- public:
- VCDiffStreamingDecoder();
- ~VCDiffStreamingDecoder();
-
- // Resets the dictionary contents to "dictionary_ptr[0,dictionary_size-1]"
- // and sets up the data structures for decoding. Note that the dictionary
- // contents are not copied, and the client is responsible for ensuring that
- // dictionary_ptr is valid until FinishDecoding is called.
- //
- void StartDecoding(const char* dictionary_ptr, size_t dictionary_size);
-
- // Accepts "data[0,len-1]" as additional data received in the
- // compressed stream. If any chunks of data can be fully decoded,
- // they are appended to output_string.
- //
- // Returns true on success, and false if the data was malformed
- // or if there was an error in decoding it (e.g. out of memory, etc.).
- //
- // Note: we *append*, so the old contents of output_string stick around.
- // This convention differs from the non-streaming Encode/Decode
- // interfaces in VCDiffDecoder.
- //
- // output_string is guaranteed to be resized no more than once for each
- // window in the VCDIFF delta file. This rule is irrespective
- // of the number of calls to DecodeString().
- //
- template<class OutputType>
- bool DecodeChunk(const char* data, size_t len, OutputType* output) {
- OutputString<OutputType> output_string(output);
- return DecodeChunkToInterface(data, len, &output_string);
- }
-
- bool DecodeChunkToInterface(const char* data, size_t len,
- OutputStringInterface* output_string);
-
- // Finishes decoding after all data has been received. Returns true
- // if decoding of the entire stream was successful. FinishDecoding()
- // must be called for the current target before StartDecoding() can be
- // called for a different target.
- //
- bool FinishDecoding();
-
- // The decoder can create a version of the output target string with XML tags
- // added to indicate where each section of the decoded text came from. This
- // can assist in debugging the decoder and/or determining the effectiveness of
- // a particular dictionary. The following XML tags will be added. Despite
- // the formatting of this example, newlines will not be added between tags.
- // <dmatch>This text matched with the dictionary</dmatch>
- // <bmatch>This text matched earlier target output</bmatch>
- // <literal>This text found no match</literal>
- //
- // Calling EnableAnnotatedOutput() will enable this feature. The interface
- // GetAnnotatedOutput() can be used to retrieve the annotated text. It is
- // recommended to use this feature only when the target data consists of HTML
- // or other human-readable text.
-
- // Enables the annotated output feature. After this method is called, new
- // target windows added to output_string by DecodeChunk() will also be added
- // to the annotated output, and can be retrieved using GetAnnotatedOutput().
- // If annotated output is already enabled, this function has no effect.
- void EnableAnnotatedOutput();
-
- // Disables the annotated output feature. After calling this method,
- // GetAnnotatedOutput() will produce an empty string until
- // EnableAnnotatedOutput() is called again.
- void DisableAnnotatedOutput();
-
- // Replaces annotated_output with a copy of the annotated output string.
- // Annotated output collection begins when EnableAnnotatedOutput() is called.
- // The annotated output will be cleared each time StartDecoding() is called,
- // but not when FinishDecoding() is called.
- template<class OutputType>
- void GetAnnotatedOutput(OutputType* annotated_output) {
- OutputString<OutputType> output_string(annotated_output);
- GetAnnotatedOutputToInterface(&output_string);
- }
-
- void GetAnnotatedOutputToInterface(OutputStringInterface* annotated_output);
-
- private:
- VCDiffStreamingDecoderImpl* const impl_;
-
- // Make the copy constructor and assignment operator private
- // so that they don't inadvertently get used.
- explicit VCDiffStreamingDecoder(const VCDiffStreamingDecoder&);
- void operator=(const VCDiffStreamingDecoder&);
-};
-
-// A simpler (non-streaming) interface to the VCDIFF decoder that can be used
-// if the entire delta file is available.
-//
-class VCDiffDecoder {
- public:
- VCDiffDecoder() { }
- ~VCDiffDecoder() { }
-
- /***** Simple interface *****/
-
- // Replaces old contents of "*target" with the result of decoding
- // the bytes found in "encoding."
- //
- // Returns true if "encoding" was a well-formed sequence of
- // instructions, and returns false if not.
- //
- template<class OutputType>
- bool Decode(const char* dictionary_ptr,
- size_t dictionary_size,
- const string& encoding,
- OutputType* target) {
- OutputString<OutputType> output_string(target);
- return DecodeToInterface(dictionary_ptr,
- dictionary_size,
- encoding,
- &output_string);
- }
-
- private:
- bool DecodeToInterface(const char* dictionary_ptr,
- size_t dictionary_size,
- const string& encoding,
- OutputStringInterface* target);
-
- VCDiffStreamingDecoder decoder_;
-
- // Make the copy constructor and assignment operator private
- // so that they don't inadvertently get used.
- explicit VCDiffDecoder(const VCDiffDecoder&);
- void operator=(const VCDiffDecoder&);
-};
-
-}; // namespace open_vcdiff
-
-#endif // OPEN_VCDIFF_VCDECODER_H_

Powered by Google App Engine
This is Rietveld 408576698