diff options
author | Michael Stahl <mstahl@redhat.com> | 2014-04-29 14:02:47 +0200 |
---|---|---|
committer | Michael Stahl <mstahl@redhat.com> | 2014-04-29 14:18:43 +0200 |
commit | 4d1c4c609bea91141d7960f9a3dd8d779573163f (patch) | |
tree | 1ebfd6365812bc0679c406506384bec92a9e0cf0 /sw | |
parent | a03c88eded807da34d0490ab4e1830e7573338e9 (diff) |
sw: remove SwFormTokensHelper implementation details from header
Change-Id: I9102caec1fec680e55e0ca66a0e1b02f41df5828
Diffstat (limited to 'sw')
-rw-r--r-- | sw/inc/tox.hxx | 43 | ||||
-rw-r--r-- | sw/source/core/tox/tox.cxx | 171 |
2 files changed, 102 insertions, 112 deletions
diff --git a/sw/inc/tox.hxx b/sw/inc/tox.hxx index c626bda2d1b2..cb92306a2150 100644 --- a/sw/inc/tox.hxx +++ b/sw/inc/tox.hxx @@ -30,7 +30,6 @@ #include <calbck.hxx> #include <vector> -#include <boost/optional.hpp> namespace com { namespace sun { namespace star { namespace text { class XDocumentIndexMark; } @@ -265,43 +264,7 @@ typedef std::vector<SwFormToken> SwFormTokens; class SW_DLLPUBLIC SwFormTokensHelper { /// the tokens - SwFormTokens aTokens; - - /** - Builds a token from its string representation. - - @sPattern the whole pattern - @nCurPatternPos starting position of the token - - @return the token - */ - SAL_DLLPRIVATE boost::optional<SwFormToken> BuildToken( const OUString & sPattern, - sal_Int32 & nCurPatternPos ) const; - - /** - Returns the string of a token. - - @param sPattern the whole pattern - @param nStt starting position of the token - - @return the string representation of the token - */ - SAL_DLLPRIVATE OUString SearchNextToken( const OUString & sPattern, - sal_Int32 nStt ) const; - - /** - Returns the type of a token. - - @param sToken the string representation of the token - @param pTokenLen return parameter the length of the head of the token - - If pTokenLen is non-NULL the length of the token's head is - written to *pTokenLen - - @return the type of the token - */ - SAL_DLLPRIVATE FormTokenType GetTokenType(const OUString & sToken, - sal_Int32 * pTokenLen) const; + SwFormTokens m_Tokens; public: /** @@ -309,7 +272,7 @@ public: @param rTokens vector of tokens */ - SwFormTokensHelper(const SwFormTokens & rTokens) : aTokens(rTokens) {} + SwFormTokensHelper(const SwFormTokens & rTokens) : m_Tokens(rTokens) {} /** constructor @@ -323,7 +286,7 @@ public: @return vector of tokens */ - const SwFormTokens & GetTokens() const { return aTokens; } + const SwFormTokens & GetTokens() const { return m_Tokens; } }; class SW_DLLPUBLIC SwForm diff --git a/sw/source/core/tox/tox.cxx b/sw/source/core/tox/tox.cxx index 03c981585a32..df3bd3f7bcc7 100644 --- a/sw/source/core/tox/tox.cxx +++ b/sw/source/core/tox/tox.cxx @@ -695,27 +695,107 @@ OUString SwFormToken::GetString() const } // -> #i21237# -SwFormTokensHelper::SwFormTokensHelper(const OUString & rPattern) + +/** + Returns the type of a token. + + @param sToken the string representation of the token + @param pTokenLen return parameter the length of the head of the token + + If pTokenLen is non-NULL the length of the token's head is + written to *pTokenLen + + @return the type of the token +*/ +static FormTokenType lcl_GetTokenType(const OUString & sToken, + sal_Int32 *const pTokenLen) { - sal_Int32 nCurPatternPos = 0; + static struct + { + OUString sNm; + sal_uInt16 nOffset; + FormTokenType eToken; + } const aTokenArr[] = { + { SwForm::GetFormTab(), 1, TOKEN_TAB_STOP }, + { SwForm::GetFormPageNums(), 1, TOKEN_PAGE_NUMS }, + { SwForm::GetFormLinkStt(), 1, TOKEN_LINK_START }, + { SwForm::GetFormLinkEnd(), 1, TOKEN_LINK_END }, + { SwForm::GetFormEntryNum(), 1, TOKEN_ENTRY_NO }, + { SwForm::GetFormEntryTxt(), 1, TOKEN_ENTRY_TEXT }, + { SwForm::GetFormChapterMark(), 1, TOKEN_CHAPTER_INFO }, + { SwForm::GetFormText(), 1, TOKEN_TEXT }, + { SwForm::GetFormEntry(), 1, TOKEN_ENTRY }, + { SwForm::GetFormAuth(), 3, TOKEN_AUTHORITY } + }; - while (nCurPatternPos < rPattern.getLength()) + for( size_t i = 0; i<SAL_N_ELEMENTS(aTokenArr); ++i ) { - boost::optional<SwFormToken> const oToken( - BuildToken(rPattern, nCurPatternPos)); - if (oToken) - aTokens.push_back(oToken.get()); + const sal_Int32 nLen(aTokenArr[i].sNm.getLength()); + if( sToken.startsWith( aTokenArr[i].sNm.copy(0, nLen - aTokenArr[i].nOffset) )) + { + if (pTokenLen) + *pTokenLen = nLen; + return aTokenArr[ i ].eToken; + } } + + SAL_WARN("sw.core", "SwFormTokensHelper: invalid token"); + return TOKEN_END; } -boost::optional<SwFormToken> -SwFormTokensHelper::BuildToken( const OUString & sPattern, - sal_Int32 & nCurPatternPos ) const +/** + Returns the string of a token. + + @param sPattern the whole pattern + @param nStt starting position of the token + + @return the string representation of the token +*/ +static OUString +lcl_SearchNextToken(const OUString & sPattern, sal_Int32 const nStt) { - OUString sToken( SearchNextToken(sPattern, nCurPatternPos) ); + sal_Int32 nEnd = sPattern.indexOf( '>', nStt ); + if (nEnd >= 0) + { + // apparently the TOX_STYLE_DELIMITER act as a bracketing for + // TOKEN_TEXT tokens so that the user can have '>' inside the text... + const sal_Int32 nTextSeparatorFirst = sPattern.indexOf( TOX_STYLE_DELIMITER, nStt ); + if ( nTextSeparatorFirst >= 0 + && nTextSeparatorFirst + 1 < sPattern.getLength() + && nTextSeparatorFirst < nEnd) + { + const sal_Int32 nTextSeparatorSecond = sPattern.indexOf( TOX_STYLE_DELIMITER, + nTextSeparatorFirst + 1 ); + // Since nEnd>=0 we don't need to check if nTextSeparatorSecond<0! + if( nEnd < nTextSeparatorSecond ) + nEnd = sPattern.indexOf( '>', nTextSeparatorSecond ); + // FIXME: No check to verify that nEnd is still >=0? + assert(nEnd >= 0); + } + + ++nEnd; + + return sPattern.copy( nStt, nEnd - nStt ); + } + + return OUString(); +} + +/** + Builds a token from its string representation. + + @sPattern the whole pattern + @nCurPatternPos starting position of the token + + @return the token + */ +static boost::optional<SwFormToken> +lcl_BuildToken(const OUString & sPattern, sal_Int32 & nCurPatternPos) +{ + OUString sToken( lcl_SearchNextToken(sPattern, nCurPatternPos) ); nCurPatternPos += sToken.getLength(); sal_Int32 nTokenLen = 0; - FormTokenType eTokenType = GetTokenType(sToken, &nTokenLen); + FormTokenType const eTokenType = lcl_GetTokenType(sToken, &nTokenLen); if (TOKEN_END == eTokenType) // invalid input? skip it { nCurPatternPos = sPattern.getLength(); @@ -791,70 +871,17 @@ SwFormTokensHelper::BuildToken( const OUString & sPattern, return eRet; } -OUString SwFormTokensHelper::SearchNextToken( const OUString & sPattern, - sal_Int32 nStt ) const -{ - sal_Int32 nEnd = sPattern.indexOf( '>', nStt ); - if (nEnd >= 0) - { - // apparently the TOX_STYLE_DELIMITER act as a bracketing for - // TOKEN_TEXT tokens so that the user can have '>' inside the text... - const sal_Int32 nTextSeparatorFirst = sPattern.indexOf( TOX_STYLE_DELIMITER, nStt ); - if ( nTextSeparatorFirst >= 0 - && nTextSeparatorFirst + 1 < sPattern.getLength() - && nTextSeparatorFirst < nEnd) - { - const sal_Int32 nTextSeparatorSecond = sPattern.indexOf( TOX_STYLE_DELIMITER, - nTextSeparatorFirst + 1 ); - // Since nEnd>=0 we don't need to check if nTextSeparatorSecond<0! - if( nEnd < nTextSeparatorSecond ) - nEnd = sPattern.indexOf( '>', nTextSeparatorSecond ); - // FIXME: No check to verify that nEnd is still >=0? - assert(nEnd >= 0); - } - - ++nEnd; - - return sPattern.copy( nStt, nEnd - nStt ); - } - - return OUString(); -} - -FormTokenType SwFormTokensHelper::GetTokenType(const OUString & sToken, - sal_Int32 * pTokenLen) const +SwFormTokensHelper::SwFormTokensHelper(const OUString & rPattern) { - static struct - { - OUString sNm; - sal_uInt16 nOffset; - FormTokenType eToken; - } const aTokenArr[] = { - { SwForm::GetFormTab(), 1, TOKEN_TAB_STOP }, - { SwForm::GetFormPageNums(), 1, TOKEN_PAGE_NUMS }, - { SwForm::GetFormLinkStt(), 1, TOKEN_LINK_START }, - { SwForm::GetFormLinkEnd(), 1, TOKEN_LINK_END }, - { SwForm::GetFormEntryNum(), 1, TOKEN_ENTRY_NO }, - { SwForm::GetFormEntryTxt(), 1, TOKEN_ENTRY_TEXT }, - { SwForm::GetFormChapterMark(), 1, TOKEN_CHAPTER_INFO }, - { SwForm::GetFormText(), 1, TOKEN_TEXT }, - { SwForm::GetFormEntry(), 1, TOKEN_ENTRY }, - { SwForm::GetFormAuth(), 3, TOKEN_AUTHORITY } - }; + sal_Int32 nCurPatternPos = 0; - for( size_t i = 0; i<SAL_N_ELEMENTS(aTokenArr); ++i ) + while (nCurPatternPos < rPattern.getLength()) { - const sal_Int32 nLen(aTokenArr[i].sNm.getLength()); - if( sToken.startsWith( aTokenArr[i].sNm.copy(0, nLen - aTokenArr[i].nOffset) )) - { - if (pTokenLen) - *pTokenLen = nLen; - return aTokenArr[ i ].eToken; - } + boost::optional<SwFormToken> const oToken( + lcl_BuildToken(rPattern, nCurPatternPos)); + if (oToken) + m_Tokens.push_back(oToken.get()); } - - SAL_WARN("sw.core", "SwFormTokensHelper: invalid token"); - return TOKEN_END; } // <- #i21237# |