Commit a846ddd7 authored by kouhei@chromium.org's avatar kouhei@chromium.org

Make members of SegmentedSubstring private

Before this CL, SegmentedSubstring::{m_length,m_data} was declared public.
This CL makes them private and adds public accessors to them.

BUG=None
TESTS=Refactoring only. Shouldn't change any behaviour.

Review URL: https://codereview.chromium.org/1317693006

git-svn-id: svn://svn.chromium.org/blink/trunk@201221 bbb929c8-8fbe-4397-9dbb-9b2b20218538
parent aba91b8a
...@@ -24,7 +24,7 @@ namespace blink { ...@@ -24,7 +24,7 @@ namespace blink {
unsigned SegmentedString::length() const unsigned SegmentedString::length() const
{ {
unsigned length = m_currentString.m_length; unsigned length = m_currentString.length();
if (m_pushedChar1) { if (m_pushedChar1) {
++length; ++length;
if (m_pushedChar2) if (m_pushedChar2)
...@@ -34,7 +34,7 @@ unsigned SegmentedString::length() const ...@@ -34,7 +34,7 @@ unsigned SegmentedString::length() const
Deque<SegmentedSubstring>::const_iterator it = m_substrings.begin(); Deque<SegmentedSubstring>::const_iterator it = m_substrings.begin();
Deque<SegmentedSubstring>::const_iterator e = m_substrings.end(); Deque<SegmentedSubstring>::const_iterator e = m_substrings.end();
for (; it != e; ++it) for (; it != e; ++it)
length += it->m_length; length += it->length();
} }
return length; return length;
} }
...@@ -70,10 +70,10 @@ void SegmentedString::clear() ...@@ -70,10 +70,10 @@ void SegmentedString::clear()
void SegmentedString::append(const SegmentedSubstring& s) void SegmentedString::append(const SegmentedSubstring& s)
{ {
ASSERT(!m_closed); ASSERT(!m_closed);
if (!s.m_length) if (!s.length())
return; return;
if (!m_currentString.m_length) { if (!m_currentString.length()) {
m_numberOfCharactersConsumedPriorToCurrentString += m_currentString.numberOfCharactersConsumed(); m_numberOfCharactersConsumedPriorToCurrentString += m_currentString.numberOfCharactersConsumed();
m_currentString = s; m_currentString = s;
updateAdvanceFunctionPointers(); updateAdvanceFunctionPointers();
...@@ -87,7 +87,7 @@ void SegmentedString::prepend(const SegmentedSubstring& s) ...@@ -87,7 +87,7 @@ void SegmentedString::prepend(const SegmentedSubstring& s)
{ {
ASSERT(!escaped()); ASSERT(!escaped());
ASSERT(!s.numberOfCharactersConsumed()); ASSERT(!s.numberOfCharactersConsumed());
if (!s.m_length) if (!s.length())
return; return;
// FIXME: We're assuming that the prepend were originally consumed by // FIXME: We're assuming that the prepend were originally consumed by
...@@ -96,8 +96,8 @@ void SegmentedString::prepend(const SegmentedSubstring& s) ...@@ -96,8 +96,8 @@ void SegmentedString::prepend(const SegmentedSubstring& s)
// current use, but we might need to handle the more elaborate // current use, but we might need to handle the more elaborate
// cases in the future. // cases in the future.
m_numberOfCharactersConsumedPriorToCurrentString += m_currentString.numberOfCharactersConsumed(); m_numberOfCharactersConsumedPriorToCurrentString += m_currentString.numberOfCharactersConsumed();
m_numberOfCharactersConsumedPriorToCurrentString -= s.m_length; m_numberOfCharactersConsumedPriorToCurrentString -= s.length();
if (!m_currentString.m_length) { if (!m_currentString.length()) {
m_currentString = s; m_currentString = s;
updateAdvanceFunctionPointers(); updateAdvanceFunctionPointers();
} else { } else {
...@@ -134,7 +134,7 @@ void SegmentedString::append(const SegmentedString& s) ...@@ -134,7 +134,7 @@ void SegmentedString::append(const SegmentedString& s)
for (; it != e; ++it) for (; it != e; ++it)
append(*it); append(*it);
} }
m_currentChar = m_pushedChar1 ? m_pushedChar1 : (m_currentString.m_length ? m_currentString.getCurrentChar() : 0); m_currentChar = m_pushedChar1 ? m_pushedChar1 : (m_currentString.length() ? m_currentString.getCurrentChar() : 0);
} }
void SegmentedString::prepend(const SegmentedString& s) void SegmentedString::prepend(const SegmentedString& s)
...@@ -148,7 +148,7 @@ void SegmentedString::prepend(const SegmentedString& s) ...@@ -148,7 +148,7 @@ void SegmentedString::prepend(const SegmentedString& s)
prepend(*it); prepend(*it);
} }
prepend(s.m_currentString); prepend(s.m_currentString);
m_currentChar = m_currentString.m_length ? m_currentString.getCurrentChar() : 0; m_currentChar = m_currentString.length() ? m_currentString.getCurrentChar() : 0;
} }
void SegmentedString::advanceSubstring() void SegmentedString::advanceSubstring()
...@@ -247,8 +247,9 @@ void SegmentedString::advanceSlowCase() ...@@ -247,8 +247,9 @@ void SegmentedString::advanceSlowCase()
} }
updateAdvanceFunctionPointers(); updateAdvanceFunctionPointers();
} else if (m_currentString.m_length) { } else if (m_currentString.length()) {
if (!--m_currentString.m_length) m_currentString.decrementLength();
if (!m_currentString.length())
advanceSubstring(); advanceSubstring();
} else if (!isComposite()) { } else if (!isComposite()) {
m_currentString.clear(); m_currentString.clear();
...@@ -257,7 +258,7 @@ void SegmentedString::advanceSlowCase() ...@@ -257,7 +258,7 @@ void SegmentedString::advanceSlowCase()
m_advanceFunc = &SegmentedString::advanceEmpty; m_advanceFunc = &SegmentedString::advanceEmpty;
m_advanceAndUpdateLineNumberFunc = &SegmentedString::advanceEmpty; m_advanceAndUpdateLineNumberFunc = &SegmentedString::advanceEmpty;
} }
m_currentChar = m_currentString.m_length ? m_currentString.getCurrentChar() : 0; m_currentChar = m_currentString.length() ? m_currentString.getCurrentChar() : 0;
} }
void SegmentedString::advanceAndUpdateLineNumberSlowCase() void SegmentedString::advanceAndUpdateLineNumberSlowCase()
...@@ -272,13 +273,14 @@ void SegmentedString::advanceAndUpdateLineNumberSlowCase() ...@@ -272,13 +273,14 @@ void SegmentedString::advanceAndUpdateLineNumberSlowCase()
} }
updateAdvanceFunctionPointers(); updateAdvanceFunctionPointers();
} else if (m_currentString.m_length) { } else if (m_currentString.length()) {
if (m_currentString.getCurrentChar() == '\n' && m_currentString.doNotExcludeLineNumbers()) { if (m_currentString.getCurrentChar() == '\n' && m_currentString.doNotExcludeLineNumbers()) {
++m_currentLine; ++m_currentLine;
// Plus 1 because numberOfCharactersConsumed value hasn't incremented yet; it does with m_length decrement below. // Plus 1 because numberOfCharactersConsumed value hasn't incremented yet; it does with length() decrement below.
m_numberOfCharactersConsumedPriorToCurrentLine = numberOfCharactersConsumed() + 1; m_numberOfCharactersConsumedPriorToCurrentLine = numberOfCharactersConsumed() + 1;
} }
if (!--m_currentString.m_length) m_currentString.decrementLength();
if (!m_currentString.length())
advanceSubstring(); advanceSubstring();
else else
m_currentString.incrementAndGetCurrentChar(); // Only need the ++ m_currentString.incrementAndGetCurrentChar(); // Only need the ++
...@@ -290,12 +292,12 @@ void SegmentedString::advanceAndUpdateLineNumberSlowCase() ...@@ -290,12 +292,12 @@ void SegmentedString::advanceAndUpdateLineNumberSlowCase()
m_advanceAndUpdateLineNumberFunc = &SegmentedString::advanceEmpty; m_advanceAndUpdateLineNumberFunc = &SegmentedString::advanceEmpty;
} }
m_currentChar = m_currentString.m_length ? m_currentString.getCurrentChar() : 0; m_currentChar = m_currentString.length() ? m_currentString.getCurrentChar() : 0;
} }
void SegmentedString::advanceEmpty() void SegmentedString::advanceEmpty()
{ {
ASSERT(!m_currentString.m_length && !isComposite()); ASSERT(!m_currentString.length() && !isComposite());
m_currentChar = 0; m_currentChar = 0;
} }
......
...@@ -125,14 +125,21 @@ public: ...@@ -125,14 +125,21 @@ public:
return incrementAndGetCurrentChar16(); return incrementAndGetCurrentChar16();
} }
public: ALWAYS_INLINE bool haveOneCharacterLeft() const
{
return m_length == 1;
}
ALWAYS_INLINE void decrementLength() { --m_length; }
ALWAYS_INLINE int length() const { return m_length; }
private:
union { union {
const LChar* string8Ptr; const LChar* string8Ptr;
const UChar* string16Ptr; const UChar* string16Ptr;
} m_data; } m_data;
int m_length; int m_length;
private:
bool m_doNotExcludeLineNumbers; bool m_doNotExcludeLineNumbers;
bool m_is8Bit; bool m_is8Bit;
String m_string; String m_string;
...@@ -167,7 +174,7 @@ public: ...@@ -167,7 +174,7 @@ public:
, m_empty(!str.length()) , m_empty(!str.length())
, m_fastPathFlags(NoFastPath) , m_fastPathFlags(NoFastPath)
{ {
if (m_currentString.m_length) if (m_currentString.length())
m_currentChar = m_currentString.getCurrentChar(); m_currentChar = m_currentString.getCurrentChar();
updateAdvanceFunctionPointers(); updateAdvanceFunctionPointers();
} }
...@@ -211,10 +218,9 @@ public: ...@@ -211,10 +218,9 @@ public:
{ {
if (m_fastPathFlags & Use8BitAdvance) { if (m_fastPathFlags & Use8BitAdvance) {
ASSERT(!m_pushedChar1); ASSERT(!m_pushedChar1);
bool haveOneCharacterLeft = (--m_currentString.m_length == 1);
m_currentChar = m_currentString.incrementAndGetCurrentChar8(); m_currentChar = m_currentString.incrementAndGetCurrentChar8();
m_currentString.decrementLength();
if (!haveOneCharacterLeft) if (!m_currentString.haveOneCharacterLeft())
return; return;
updateSlowCaseFunctionPointers(); updateSlowCaseFunctionPointers();
...@@ -231,12 +237,9 @@ public: ...@@ -231,12 +237,9 @@ public:
ASSERT(!m_pushedChar1); ASSERT(!m_pushedChar1);
bool haveNewLine = (m_currentChar == '\n') & !!(m_fastPathFlags & Use8BitAdvanceAndUpdateLineNumbers); bool haveNewLine = (m_currentChar == '\n') & !!(m_fastPathFlags & Use8BitAdvanceAndUpdateLineNumbers);
bool haveOneCharacterLeft = (--m_currentString.m_length == 1);
m_currentChar = m_currentString.incrementAndGetCurrentChar8(); m_currentChar = m_currentString.incrementAndGetCurrentChar8();
m_currentString.decrementLength();
if (!(haveNewLine | haveOneCharacterLeft)) bool haveOneCharacterLeft = m_currentString.haveOneCharacterLeft();
return;
if (haveNewLine) { if (haveNewLine) {
++m_currentLine; ++m_currentLine;
...@@ -273,7 +276,7 @@ public: ...@@ -273,7 +276,7 @@ public:
void advancePastNewlineAndUpdateLineNumber() void advancePastNewlineAndUpdateLineNumber()
{ {
ASSERT(currentChar() == '\n'); ASSERT(currentChar() == '\n');
if (!m_pushedChar1 && m_currentString.m_length > 1) { if (!m_pushedChar1 && m_currentString.length() > 1) {
int newLineFlag = m_currentString.doNotExcludeLineNumbers(); int newLineFlag = m_currentString.doNotExcludeLineNumbers();
m_currentLine += newLineFlag; m_currentLine += newLineFlag;
if (newLineFlag) if (newLineFlag)
...@@ -336,14 +339,15 @@ private: ...@@ -336,14 +339,15 @@ private:
void decrementAndCheckLength() void decrementAndCheckLength()
{ {
ASSERT(m_currentString.m_length > 1); ASSERT(m_currentString.length() > 1);
if (--m_currentString.m_length == 1) m_currentString.decrementLength();
if (m_currentString.haveOneCharacterLeft())
updateSlowCaseFunctionPointers(); updateSlowCaseFunctionPointers();
} }
void updateAdvanceFunctionPointers() void updateAdvanceFunctionPointers()
{ {
if ((m_currentString.m_length > 1) && !m_pushedChar1) { if ((m_currentString.length() > 1) && !m_pushedChar1) {
if (m_currentString.is8Bit()) { if (m_currentString.is8Bit()) {
m_advanceFunc = &SegmentedString::advance8; m_advanceFunc = &SegmentedString::advance8;
m_fastPathFlags = Use8BitAdvance; m_fastPathFlags = Use8BitAdvance;
...@@ -365,7 +369,7 @@ private: ...@@ -365,7 +369,7 @@ private:
return; return;
} }
if (!m_currentString.m_length && !isComposite()) { if (!m_currentString.length() && !isComposite()) {
m_advanceFunc = &SegmentedString::advanceEmpty; m_advanceFunc = &SegmentedString::advanceEmpty;
m_fastPathFlags = NoFastPath; m_fastPathFlags = NoFastPath;
m_advanceAndUpdateLineNumberFunc = &SegmentedString::advanceEmpty; m_advanceAndUpdateLineNumberFunc = &SegmentedString::advanceEmpty;
...@@ -376,7 +380,7 @@ private: ...@@ -376,7 +380,7 @@ private:
inline LookAheadResult lookAheadInline(const String& string, TextCaseSensitivity caseSensitivity) inline LookAheadResult lookAheadInline(const String& string, TextCaseSensitivity caseSensitivity)
{ {
if (!m_pushedChar1 && string.length() <= static_cast<unsigned>(m_currentString.m_length)) { if (!m_pushedChar1 && string.length() <= static_cast<unsigned>(m_currentString.length())) {
String currentSubstring = m_currentString.currentSubString(string.length()); String currentSubstring = m_currentString.currentSubString(string.length());
if (currentSubstring.startsWith(string, caseSensitivity)) if (currentSubstring.startsWith(string, caseSensitivity))
return DidMatch; return DidMatch;
......
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