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

Unified Diff: sdch/open_vcdiff/depot/opensource/open-vcdiff/src/varint_bigendian.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/varint_bigendian.h
===================================================================
--- sdch/open_vcdiff/depot/opensource/open-vcdiff/src/varint_bigendian.h (revision 2678)
+++ sdch/open_vcdiff/depot/opensource/open-vcdiff/src/varint_bigendian.h (working copy)
@@ -1,140 +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_VARINT_BIGENDIAN_H_
-#define OPEN_VCDIFF_VARINT_BIGENDIAN_H_
-
-// Functions for manipulating variable-length integers as described in
-// RFC 3284, section 2. (See http://www.ietf.org/rfc/rfc3284.txt)
-// This is the same format used by the Sfio library
-// and by the public-domain Sqlite package.
-//
-// The implementation found in this file contains buffer bounds checks
-// (not available in sqlite) and its goal is to improve speed
-// by using as few test-and-branch instructions as possible.
-//
-// The Sqlite format has the refinement that, if a 64-bit value is expected,
-// the ninth byte of the varint does not have a continuation bit, but instead
-// encodes 8 bits of information. This allows 64 bits to be encoded compactly
-// in nine bytes. However, that refinement does not appear in the format
-// description in RFC 3284, and so it is not used here. In any case,
-// this header file deals only with *signed* integer types, and so a
-// "64-bit" integer is allowed to have only 63 significant bits; an additional
-// 64th bit would indicate a negative value and therefore an error.
-//
-
-#include <config.h>
-#include <stdint.h> // int32_t, int64_t
-#include <string>
-#include "vcdiff_defs.h" // RESULT_ERROR
-
-namespace open_vcdiff {
-
-using std::string;
-
-class OutputStringInterface;
-
-// This helper class is needed in order to ensure that
-// VarintBE<SignedIntegerType>::kMaxBytes is treated
-// as a compile-time constant when it is used as the size
-// of a static array.
-template <typename SignedIntegerType> class VarintMaxBytes;
-
-// 31 bits of data / 7 bits per byte <= 5 bytes
-template<> class VarintMaxBytes<int32_t> {
- public:
- static const int kMaxBytes = 5;
-};
-
-// 63 bits of data / 7 bits per byte == 9 bytes
-template<> class VarintMaxBytes<int64_t> {
- public:
- static const int kMaxBytes = 9;
-};
-
-// Objects of type VarintBE should not be instantiated. The class is a
-// container for big-endian constant values and functions used to parse
-// and write a particular signed integer type.
-// Example: to parse a 32-bit integer value stored as a big-endian varint, use
-// int32_t value = VarintBE<int32_t>::Parse(&ptr, limit);
-// Only 32-bit and 64-bit signed integers (int32_t and int64_t) are supported.
-// Using a different type as the template argument will likely result
-// in a link-time error for an undefined Parse() or Append() function.
-//
-template <typename SignedIntegerType>
-class VarintBE { // BE stands for Big-Endian
- public:
- // The maximum positive value represented by a SignedIntegerType.
- static const SignedIntegerType kMaxVal;
-
- // Returns the maximum number of bytes needed to store a varint
- // representation of a <SignedIntegerType> value.
- static const int kMaxBytes = VarintMaxBytes<SignedIntegerType>::kMaxBytes;
-
- // Attempts to parse a big-endian varint from a prefix of the bytes
- // in [ptr,limit-1] and convert it into a signed, non-negative 32-bit
- // integer. Never reads a character at or beyond limit, and never reads
- // a character at or beyond (*ptr + kMaxBytes).
- // If a parsed varint would exceed the maximum value of
- // a <SignedIntegerType>, returns RESULT_ERROR and does not modify *ptr.
- // If parsing a varint at *ptr (without exceeding the capacity of
- // a <SignedIntegerType>) would require reading past limit,
- // returns RESULT_END_OF_DATA and does not modify *ptr.
- // If limit == NULL, or limit < *ptr, no error will be signalled, but it is
- // recommended that a limit always be supplied for security reasons.
- static SignedIntegerType Parse(const char* limit, const char** ptr);
-
- // Returns the encoding length of the specified value.
- static int Length(SignedIntegerType v);
-
- // Encodes "v" into "ptr" (which points to a buffer of length sufficient
- // to hold "v")and returns the length of the encoding.
- // The value of v must not be negative.
- static int Encode(SignedIntegerType v, char* ptr);
-
- // Appends the varint representation of "value" to "*s".
- // The value of v must not be negative.
- static void AppendToString(SignedIntegerType value, string* s);
-
- // Appends the varint representation of "value" to output_string.
- // The value of v must not be negative.
- static void AppendToOutputString(SignedIntegerType value,
- OutputStringInterface* output_string);
-
- private:
- // Encodes "v" into the LAST few bytes of varint_buf (which is a char array
- // of size kMaxBytes) and returns the length of the encoding.
- // The result will be stored in buf[(kMaxBytes - length) : (kMaxBytes - 1)],
- // rather than in buf[0 : length].
- // The value of v must not be negative.
- static int EncodeInternal(SignedIntegerType v, char* varint_buf);
-
- // Returns true if bytes_left <= kMaxBytes AND the next bytes_left bytes
- // starting at parse_ptr all have their continuation bit (most significant
- // bit) set. This means that there may or may not be a valid encoded
- // varint at parse_ptr, but it cannot be read or validated until more
- // input is available.
- static inline bool ReachedEndOfData(const char* parse_ptr,
- const char* limit);
-
- // These are private to avoid constructing any objects of this type
- VarintBE();
- VarintBE(const VarintBE&); // NOLINT
- void operator=(const VarintBE&);
-};
-
-} // namespace open_vcdiff
-
-#endif // OPEN_VCDIFF_VARINT_BIGENDIAN_H_

Powered by Google App Engine
This is Rietveld 408576698