Chromium Code Reviews| Index: chrome/common/string_index.h |
| diff --git a/chrome/common/string_index.h b/chrome/common/string_index.h |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..ddf66f5909131624aac5ff3efa64d1dbcb6bacf1 |
| --- /dev/null |
| +++ b/chrome/common/string_index.h |
| @@ -0,0 +1,66 @@ |
| +// Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#ifndef CHROME_COMMON_STRING_INDEX_H_ |
| +#define CHROME_COMMON_STRING_INDEX_H_ |
| +#pragma once |
| + |
| +#include <string> |
| + |
| +#include "base/basictypes.h" |
|
akalin
2011/10/14 10:16:29
what is this for?
if this is for size_t, #include
|
| + |
| +class StringIndex { |
|
akalin
2011/10/14 10:16:29
add comment explaining what the class is for
|
| + public: |
| + // Create a valid StringIndex if the str matches [A-Z]*[B-Z], |
|
akalin
2011/10/14 10:16:29
str -> string
|
| + // otherwise create an invalid StringIndex |
|
akalin
2011/10/14 10:16:29
end with period
|
| + explicit StringIndex(const std::string& str); |
| + |
| + // Create an invalid StringIndex |
|
akalin
2011/10/14 10:16:29
end with period
|
| + StringIndex(); |
| + |
| + // Check to see if this matches [A-Z]*[B-Z] |
|
akalin
2011/10/14 10:16:29
Returns true iff this was initialized with a strin
|
| + bool IsValid() const; |
| + |
| + bool LessThan(const StringIndex& other) const; |
|
akalin
2011/10/14 10:16:29
probably should include an Equals() mem-fn for con
akalin
2011/10/14 10:16:29
add comment
|
| + |
| + // LessThan(other) must hold. Returns a StringIndex x s.t. LessThan(x) |
|
akalin
2011/10/14 10:16:29
clean up this comment (e.g., s.t. -> such that)
|
| + // holds, and x.LessThan(other) holds. |
| + StringIndex CreateBetween(const StringIndex& other) const; |
| + |
| + // Returns a StringIndex x s.t. x.LessThan(*this) holds. |
|
akalin
2011/10/14 10:16:29
clean up
|
| + StringIndex CreateBefore() const; |
| + |
| + // Returns a StringIndex x s.t. LessThan(x) holds. |
|
akalin
2011/10/14 10:16:29
clean up
|
| + StringIndex CreateAfter() const; |
| + |
| + std::string ToString() const; |
|
akalin
2011/10/14 10:16:29
add a comment like copy constructor and default as
|
| + |
| + private: |
| + // Return the digit value at position i, padding with kZeroDigit if required. |
| + int GetPositionValue(size_t i) const; |
| + |
| + // Create a StringIndex that is lexigraphically greater than start and |
| + // lexigraphically less than end, ideally the StringIndex will be a |
| + // middle value between the two StringIndexs. |
| + static StringIndex CreateStringIndexBetween(const StringIndex& start, |
|
akalin
2011/10/14 10:16:29
is there are a reason why these functions are expo
|
| + const StringIndex& end); |
| + |
| + // Compute the midpoint string that is between start and end. |
| + static std::string ComputeMidpoint(const StringIndex& start, |
| + const StringIndex& end); |
| + |
| + // Check if two strings have the same value. |
| + static bool EqualValueIndexs(const std::string& rhs, const std::string& lhs); |
| + |
| + // Add kMidDigitValue to the value at position index because |
| + // the previous index values had an odd difference, so their correct |
| + // middle value is x and a half, so the half is now inserted. |
| + static void AddHalf(size_t position, std::string& value); |
| + |
| + // Remove all trailing zeros from a value as they provide no value. |
| + static std::string RemoveTrailingZeros(const std::string& value); |
| + |
| + std::string string_index_; |
|
akalin
2011/10/14 10:16:29
const
|
| +}; |
| +#endif // CHROME_COMMON_STRING_INDEX_H_ |