Commit 1414e78b authored by tfarina@chromium.org's avatar tfarina@chromium.org

base/i18n: Pass |str| as const reference in BreakIterator::Init().

BUG=None
TEST=out/Debug/base_unittests --gtest_filter=BreakIteratorTest.*

R=tsepez@chromium.org,evan@chromium.org

Review URL: http://codereview.chromium.org/7008005

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@86689 0039d316-1c4b-4281-b951-d872f2087c98
parent d3afcdab
...@@ -14,7 +14,7 @@ namespace i18n { ...@@ -14,7 +14,7 @@ namespace i18n {
const size_t npos = -1; const size_t npos = -1;
BreakIterator::BreakIterator(const string16* str, BreakType break_type) BreakIterator::BreakIterator(const string16& str, BreakType break_type)
: iter_(NULL), : iter_(NULL),
string_(str), string_(str),
break_type_(break_type), break_type_(break_type),
...@@ -43,7 +43,7 @@ bool BreakIterator::Init() { ...@@ -43,7 +43,7 @@ bool BreakIterator::Init() {
return false; return false;
} }
iter_ = ubrk_open(break_type, NULL, iter_ = ubrk_open(break_type, NULL,
string_->data(), static_cast<int32_t>(string_->size()), string_.data(), static_cast<int32_t>(string_.size()),
&status); &status);
if (U_FAILURE(status)) { if (U_FAILURE(status)) {
NOTREACHED() << "ubrk_open failed"; NOTREACHED() << "ubrk_open failed";
...@@ -96,7 +96,7 @@ bool BreakIterator::IsWord() const { ...@@ -96,7 +96,7 @@ bool BreakIterator::IsWord() const {
string16 BreakIterator::GetString() const { string16 BreakIterator::GetString() const {
DCHECK(prev_ != npos && pos_ != npos); DCHECK(prev_ != npos && pos_ != npos);
return string_->substr(prev_, pos_ - prev_); return string_.substr(prev_, pos_ - prev_);
} }
} // namespace i18n } // namespace i18n
......
...@@ -67,7 +67,7 @@ class BreakIterator { ...@@ -67,7 +67,7 @@ class BreakIterator {
}; };
// Requires |str| to live as long as the BreakIterator does. // Requires |str| to live as long as the BreakIterator does.
BreakIterator(const string16* str, BreakType break_type); BreakIterator(const string16& str, BreakType break_type);
~BreakIterator(); ~BreakIterator();
// Init() must be called before any of the iterators are valid. // Init() must be called before any of the iterators are valid.
...@@ -106,7 +106,7 @@ class BreakIterator { ...@@ -106,7 +106,7 @@ class BreakIterator {
void* iter_; void* iter_;
// The string we're iterating over. // The string we're iterating over.
const string16* string_; const string16& string_;
// The breaking style (word/space/newline). // The breaking style (word/space/newline).
BreakType break_type_; BreakType break_type_;
......
...@@ -14,7 +14,7 @@ namespace i18n { ...@@ -14,7 +14,7 @@ namespace i18n {
TEST(BreakIteratorTest, BreakWordEmpty) { TEST(BreakIteratorTest, BreakWordEmpty) {
string16 empty; string16 empty;
BreakIterator iter(&empty, BreakIterator::BREAK_WORD); BreakIterator iter(empty, BreakIterator::BREAK_WORD);
ASSERT_TRUE(iter.Init()); ASSERT_TRUE(iter.Init());
EXPECT_FALSE(iter.Advance()); EXPECT_FALSE(iter.Advance());
EXPECT_FALSE(iter.IsWord()); EXPECT_FALSE(iter.IsWord());
...@@ -25,7 +25,7 @@ TEST(BreakIteratorTest, BreakWordEmpty) { ...@@ -25,7 +25,7 @@ TEST(BreakIteratorTest, BreakWordEmpty) {
TEST(BreakIteratorTest, BreakWord) { TEST(BreakIteratorTest, BreakWord) {
string16 space(UTF8ToUTF16(" ")); string16 space(UTF8ToUTF16(" "));
string16 str(UTF8ToUTF16(" foo bar! \npouet boom")); string16 str(UTF8ToUTF16(" foo bar! \npouet boom"));
BreakIterator iter(&str, BreakIterator::BREAK_WORD); BreakIterator iter(str, BreakIterator::BREAK_WORD);
ASSERT_TRUE(iter.Init()); ASSERT_TRUE(iter.Init());
EXPECT_TRUE(iter.Advance()); EXPECT_TRUE(iter.Advance());
EXPECT_FALSE(iter.IsWord()); EXPECT_FALSE(iter.IsWord());
...@@ -70,7 +70,7 @@ TEST(BreakIteratorTest, BreakWide16) { ...@@ -70,7 +70,7 @@ TEST(BreakIteratorTest, BreakWide16) {
L"\x03bf\x03c2\x0020\x0399\x03c3\x03c4\x03cc\x03c2")); L"\x03bf\x03c2\x0020\x0399\x03c3\x03c4\x03cc\x03c2"));
const string16 word1(str.substr(0, 10)); const string16 word1(str.substr(0, 10));
const string16 word2(str.substr(11, 5)); const string16 word2(str.substr(11, 5));
BreakIterator iter(&str, BreakIterator::BREAK_WORD); BreakIterator iter(str, BreakIterator::BREAK_WORD);
ASSERT_TRUE(iter.Init()); ASSERT_TRUE(iter.Init());
EXPECT_TRUE(iter.Advance()); EXPECT_TRUE(iter.Advance());
EXPECT_TRUE(iter.IsWord()); EXPECT_TRUE(iter.IsWord());
...@@ -94,7 +94,7 @@ TEST(BreakIteratorTest, BreakWide32) { ...@@ -94,7 +94,7 @@ TEST(BreakIteratorTest, BreakWide32) {
UTF8ToUTF16(base::StringPrintf("%s a", very_wide_char))); UTF8ToUTF16(base::StringPrintf("%s a", very_wide_char)));
const string16 very_wide_word(str.substr(0, 2)); const string16 very_wide_word(str.substr(0, 2));
BreakIterator iter(&str, BreakIterator::BREAK_WORD); BreakIterator iter(str, BreakIterator::BREAK_WORD);
ASSERT_TRUE(iter.Init()); ASSERT_TRUE(iter.Init());
EXPECT_TRUE(iter.Advance()); EXPECT_TRUE(iter.Advance());
EXPECT_TRUE(iter.IsWord()); EXPECT_TRUE(iter.IsWord());
...@@ -113,7 +113,7 @@ TEST(BreakIteratorTest, BreakWide32) { ...@@ -113,7 +113,7 @@ TEST(BreakIteratorTest, BreakWide32) {
TEST(BreakIteratorTest, BreakSpaceEmpty) { TEST(BreakIteratorTest, BreakSpaceEmpty) {
string16 empty; string16 empty;
BreakIterator iter(&empty, BreakIterator::BREAK_SPACE); BreakIterator iter(empty, BreakIterator::BREAK_SPACE);
ASSERT_TRUE(iter.Init()); ASSERT_TRUE(iter.Init());
EXPECT_FALSE(iter.Advance()); EXPECT_FALSE(iter.Advance());
EXPECT_FALSE(iter.IsWord()); EXPECT_FALSE(iter.IsWord());
...@@ -123,7 +123,7 @@ TEST(BreakIteratorTest, BreakSpaceEmpty) { ...@@ -123,7 +123,7 @@ TEST(BreakIteratorTest, BreakSpaceEmpty) {
TEST(BreakIteratorTest, BreakSpace) { TEST(BreakIteratorTest, BreakSpace) {
string16 str(UTF8ToUTF16(" foo bar! \npouet boom")); string16 str(UTF8ToUTF16(" foo bar! \npouet boom"));
BreakIterator iter(&str, BreakIterator::BREAK_SPACE); BreakIterator iter(str, BreakIterator::BREAK_SPACE);
ASSERT_TRUE(iter.Init()); ASSERT_TRUE(iter.Init());
EXPECT_TRUE(iter.Advance()); EXPECT_TRUE(iter.Advance());
EXPECT_FALSE(iter.IsWord()); EXPECT_FALSE(iter.IsWord());
...@@ -148,7 +148,7 @@ TEST(BreakIteratorTest, BreakSpace) { ...@@ -148,7 +148,7 @@ TEST(BreakIteratorTest, BreakSpace) {
TEST(BreakIteratorTest, BreakSpaceSP) { TEST(BreakIteratorTest, BreakSpaceSP) {
string16 str(UTF8ToUTF16(" foo bar! \npouet boom ")); string16 str(UTF8ToUTF16(" foo bar! \npouet boom "));
BreakIterator iter(&str, BreakIterator::BREAK_SPACE); BreakIterator iter(str, BreakIterator::BREAK_SPACE);
ASSERT_TRUE(iter.Init()); ASSERT_TRUE(iter.Init());
EXPECT_TRUE(iter.Advance()); EXPECT_TRUE(iter.Advance());
EXPECT_FALSE(iter.IsWord()); EXPECT_FALSE(iter.IsWord());
...@@ -178,7 +178,7 @@ TEST(BreakIteratorTest, BreakSpacekWide16) { ...@@ -178,7 +178,7 @@ TEST(BreakIteratorTest, BreakSpacekWide16) {
L"\x03bf\x03c2\x0020\x0399\x03c3\x03c4\x03cc\x03c2")); L"\x03bf\x03c2\x0020\x0399\x03c3\x03c4\x03cc\x03c2"));
const string16 word1(str.substr(0, 11)); const string16 word1(str.substr(0, 11));
const string16 word2(str.substr(11, 5)); const string16 word2(str.substr(11, 5));
BreakIterator iter(&str, BreakIterator::BREAK_SPACE); BreakIterator iter(str, BreakIterator::BREAK_SPACE);
ASSERT_TRUE(iter.Init()); ASSERT_TRUE(iter.Init());
EXPECT_TRUE(iter.Advance()); EXPECT_TRUE(iter.Advance());
EXPECT_FALSE(iter.IsWord()); EXPECT_FALSE(iter.IsWord());
...@@ -199,7 +199,7 @@ TEST(BreakIteratorTest, BreakSpaceWide32) { ...@@ -199,7 +199,7 @@ TEST(BreakIteratorTest, BreakSpaceWide32) {
UTF8ToUTF16(base::StringPrintf("%s a", very_wide_char))); UTF8ToUTF16(base::StringPrintf("%s a", very_wide_char)));
const string16 very_wide_word(str.substr(0, 3)); const string16 very_wide_word(str.substr(0, 3));
BreakIterator iter(&str, BreakIterator::BREAK_SPACE); BreakIterator iter(str, BreakIterator::BREAK_SPACE);
ASSERT_TRUE(iter.Init()); ASSERT_TRUE(iter.Init());
EXPECT_TRUE(iter.Advance()); EXPECT_TRUE(iter.Advance());
EXPECT_FALSE(iter.IsWord()); EXPECT_FALSE(iter.IsWord());
...@@ -215,7 +215,7 @@ TEST(BreakIteratorTest, BreakSpaceWide32) { ...@@ -215,7 +215,7 @@ TEST(BreakIteratorTest, BreakSpaceWide32) {
TEST(BreakIteratorTest, BreakLineEmpty) { TEST(BreakIteratorTest, BreakLineEmpty) {
string16 empty; string16 empty;
BreakIterator iter(&empty, BreakIterator::BREAK_NEWLINE); BreakIterator iter(empty, BreakIterator::BREAK_NEWLINE);
ASSERT_TRUE(iter.Init()); ASSERT_TRUE(iter.Init());
EXPECT_FALSE(iter.Advance()); EXPECT_FALSE(iter.Advance());
EXPECT_FALSE(iter.IsWord()); EXPECT_FALSE(iter.IsWord());
...@@ -226,7 +226,7 @@ TEST(BreakIteratorTest, BreakLineEmpty) { ...@@ -226,7 +226,7 @@ TEST(BreakIteratorTest, BreakLineEmpty) {
TEST(BreakIteratorTest, BreakLine) { TEST(BreakIteratorTest, BreakLine) {
string16 nl(UTF8ToUTF16("\n")); string16 nl(UTF8ToUTF16("\n"));
string16 str(UTF8ToUTF16("\nfoo bar!\n\npouet boom")); string16 str(UTF8ToUTF16("\nfoo bar!\n\npouet boom"));
BreakIterator iter(&str, BreakIterator::BREAK_NEWLINE); BreakIterator iter(str, BreakIterator::BREAK_NEWLINE);
ASSERT_TRUE(iter.Init()); ASSERT_TRUE(iter.Init());
EXPECT_TRUE(iter.Advance()); EXPECT_TRUE(iter.Advance());
EXPECT_FALSE(iter.IsWord()); EXPECT_FALSE(iter.IsWord());
...@@ -249,7 +249,7 @@ TEST(BreakIteratorTest, BreakLine) { ...@@ -249,7 +249,7 @@ TEST(BreakIteratorTest, BreakLine) {
TEST(BreakIteratorTest, BreakLineNL) { TEST(BreakIteratorTest, BreakLineNL) {
string16 nl(UTF8ToUTF16("\n")); string16 nl(UTF8ToUTF16("\n"));
string16 str(UTF8ToUTF16("\nfoo bar!\n\npouet boom\n")); string16 str(UTF8ToUTF16("\nfoo bar!\n\npouet boom\n"));
BreakIterator iter(&str, BreakIterator::BREAK_NEWLINE); BreakIterator iter(str, BreakIterator::BREAK_NEWLINE);
ASSERT_TRUE(iter.Init()); ASSERT_TRUE(iter.Init());
EXPECT_TRUE(iter.Advance()); EXPECT_TRUE(iter.Advance());
EXPECT_FALSE(iter.IsWord()); EXPECT_FALSE(iter.IsWord());
...@@ -276,7 +276,7 @@ TEST(BreakIteratorTest, BreakLineWide16) { ...@@ -276,7 +276,7 @@ TEST(BreakIteratorTest, BreakLineWide16) {
L"\x03bf\x03c2\x000a\x0399\x03c3\x03c4\x03cc\x03c2")); L"\x03bf\x03c2\x000a\x0399\x03c3\x03c4\x03cc\x03c2"));
const string16 line1(str.substr(0, 11)); const string16 line1(str.substr(0, 11));
const string16 line2(str.substr(11, 5)); const string16 line2(str.substr(11, 5));
BreakIterator iter(&str, BreakIterator::BREAK_NEWLINE); BreakIterator iter(str, BreakIterator::BREAK_NEWLINE);
ASSERT_TRUE(iter.Init()); ASSERT_TRUE(iter.Init());
EXPECT_TRUE(iter.Advance()); EXPECT_TRUE(iter.Advance());
EXPECT_FALSE(iter.IsWord()); EXPECT_FALSE(iter.IsWord());
...@@ -296,7 +296,7 @@ TEST(BreakIteratorTest, BreakLineWide32) { ...@@ -296,7 +296,7 @@ TEST(BreakIteratorTest, BreakLineWide32) {
const string16 str( const string16 str(
UTF8ToUTF16(base::StringPrintf("%s\na", very_wide_char))); UTF8ToUTF16(base::StringPrintf("%s\na", very_wide_char)));
const string16 very_wide_line(str.substr(0, 3)); const string16 very_wide_line(str.substr(0, 3));
BreakIterator iter(&str, BreakIterator::BREAK_NEWLINE); BreakIterator iter(str, BreakIterator::BREAK_NEWLINE);
ASSERT_TRUE(iter.Init()); ASSERT_TRUE(iter.Init());
EXPECT_TRUE(iter.Advance()); EXPECT_TRUE(iter.Advance());
EXPECT_FALSE(iter.IsWord()); EXPECT_FALSE(iter.IsWord());
......
...@@ -487,7 +487,7 @@ InMemoryURLIndex::String16Vector InMemoryURLIndex::WordVectorFromString16( ...@@ -487,7 +487,7 @@ InMemoryURLIndex::String16Vector InMemoryURLIndex::WordVectorFromString16(
const string16& uni_string, const string16& uni_string,
bool break_on_space) { bool break_on_space) {
base::i18n::BreakIterator iter( base::i18n::BreakIterator iter(
&uni_string, uni_string,
break_on_space ? base::i18n::BreakIterator::BREAK_SPACE break_on_space ? base::i18n::BreakIterator::BREAK_SPACE
: base::i18n::BreakIterator::BREAK_WORD); : base::i18n::BreakIterator::BREAK_WORD);
String16Vector words; String16Vector words;
......
...@@ -354,7 +354,7 @@ bool QueryParser::DoesQueryMatch(const string16& text, ...@@ -354,7 +354,7 @@ bool QueryParser::DoesQueryMatch(const string16& text,
} }
bool QueryParser::ParseQueryImpl(const string16& query, QueryNodeList* root) { bool QueryParser::ParseQueryImpl(const string16& query, QueryNodeList* root) {
base::i18n::BreakIterator iter(&query, base::i18n::BreakIterator::BREAK_WORD); base::i18n::BreakIterator iter(query, base::i18n::BreakIterator::BREAK_WORD);
// TODO(evanm): support a locale here // TODO(evanm): support a locale here
if (!iter.Init()) if (!iter.Init())
return false; return false;
...@@ -395,7 +395,7 @@ bool QueryParser::ParseQueryImpl(const string16& query, QueryNodeList* root) { ...@@ -395,7 +395,7 @@ bool QueryParser::ParseQueryImpl(const string16& query, QueryNodeList* root) {
void QueryParser::ExtractQueryWords(const string16& text, void QueryParser::ExtractQueryWords(const string16& text,
std::vector<QueryWord>* words) { std::vector<QueryWord>* words) {
base::i18n::BreakIterator iter(&text, base::i18n::BreakIterator::BREAK_WORD); base::i18n::BreakIterator iter(text, base::i18n::BreakIterator::BREAK_WORD);
// TODO(evanm): support a locale here // TODO(evanm): support a locale here
if (!iter.Init()) if (!iter.Init())
return; return;
......
...@@ -1043,7 +1043,7 @@ void DownloadItemView::SizeLabelToMinWidth() { ...@@ -1043,7 +1043,7 @@ void DownloadItemView::SizeLabelToMinWidth() {
// Using BREAK_WORD can work in most cases, but it can also break // Using BREAK_WORD can work in most cases, but it can also break
// lines where it should not. Using BREAK_LINE is safer although // lines where it should not. Using BREAK_LINE is safer although
// slower for Chinese/Japanese. This is not perf-critical at all, though. // slower for Chinese/Japanese. This is not perf-critical at all, though.
base::i18n::BreakIterator iter(&text, base::i18n::BreakIterator::BREAK_LINE); base::i18n::BreakIterator iter(text, base::i18n::BreakIterator::BREAK_LINE);
bool status = iter.Init(); bool status = iter.Init();
DCHECK(status); DCHECK(status);
......
...@@ -576,7 +576,7 @@ class RectangleString { ...@@ -576,7 +576,7 @@ class RectangleString {
}; };
void RectangleString::AddString(const string16& input) { void RectangleString::AddString(const string16& input) {
base::i18n::BreakIterator lines(&input, base::i18n::BreakIterator lines(input,
base::i18n::BreakIterator::BREAK_NEWLINE); base::i18n::BreakIterator::BREAK_NEWLINE);
if (lines.Init()) { if (lines.Init()) {
while (lines.Advance()) while (lines.Advance())
...@@ -598,7 +598,7 @@ void RectangleString::AddLine(const string16& line) { ...@@ -598,7 +598,7 @@ void RectangleString::AddLine(const string16& line) {
if (line.length() < max_cols_) { if (line.length() < max_cols_) {
Append(line); Append(line);
} else { } else {
base::i18n::BreakIterator words(&line, base::i18n::BreakIterator words(line,
base::i18n::BreakIterator::BREAK_SPACE); base::i18n::BreakIterator::BREAK_SPACE);
if (words.Init()) { if (words.Init()) {
while (words.Advance()) while (words.Advance())
......
...@@ -431,7 +431,7 @@ void TextfieldViewsModel::MoveCursorToPreviousWord(bool select) { ...@@ -431,7 +431,7 @@ void TextfieldViewsModel::MoveCursorToPreviousWord(bool select) {
// This is probably fast enough for our usage, but we may // This is probably fast enough for our usage, but we may
// want to modify WordIterator so that it can start from the // want to modify WordIterator so that it can start from the
// middle of string and advance backwards. // middle of string and advance backwards.
base::i18n::BreakIterator iter(&text_, base::i18n::BreakIterator::BREAK_WORD); base::i18n::BreakIterator iter(text_, base::i18n::BreakIterator::BREAK_WORD);
bool success = iter.Init(); bool success = iter.Init();
DCHECK(success); DCHECK(success);
if (!success) if (!success)
...@@ -463,7 +463,7 @@ void TextfieldViewsModel::MoveCursorToPreviousWord(bool select) { ...@@ -463,7 +463,7 @@ void TextfieldViewsModel::MoveCursorToPreviousWord(bool select) {
void TextfieldViewsModel::MoveCursorToNextWord(bool select) { void TextfieldViewsModel::MoveCursorToNextWord(bool select) {
if (HasCompositionText()) if (HasCompositionText())
ConfirmCompositionText(); ConfirmCompositionText();
base::i18n::BreakIterator iter(&text_, base::i18n::BreakIterator::BREAK_WORD); base::i18n::BreakIterator iter(text_, base::i18n::BreakIterator::BREAK_WORD);
bool success = iter.Init(); bool success = iter.Init();
DCHECK(success); DCHECK(success);
if (!success) if (!success)
......
...@@ -98,7 +98,7 @@ void DrawTextStartingFrom(gfx::Canvas* canvas, ...@@ -98,7 +98,7 @@ void DrawTextStartingFrom(gfx::Canvas* canvas,
// Iterate through line breaking opportunities (which in English would be // Iterate through line breaking opportunities (which in English would be
// spaces and such). This tells us where to wrap. // spaces and such). This tells us where to wrap.
string16 text16(WideToUTF16(text)); string16 text16(WideToUTF16(text));
base::i18n::BreakIterator iter(&text16, base::i18n::BreakIterator iter(text16,
base::i18n::BreakIterator::BREAK_SPACE); base::i18n::BreakIterator::BREAK_SPACE);
if (!iter.Init()) if (!iter.Init())
return; return;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment