diff options
author | Caolán McNamara <caolanm@redhat.com> | 2012-12-15 12:45:36 +0000 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2012-12-17 09:35:24 +0000 |
commit | bba34cfa6df4f8b7ca181d517dca675c0dc23b81 (patch) | |
tree | 0ca8b45d2c8909c11092aaba0a950019805cb1c2 /connectivity | |
parent | 7b028f4aaefe626edfa5283363e21146ceca4acf (diff) |
use return value optimization
Change-Id: I08e6b49c9250d3542777f207e93f1d7b6d1a92a7
Diffstat (limited to 'connectivity')
-rw-r--r-- | connectivity/source/drivers/file/quotedstring.cxx | 11 | ||||
-rw-r--r-- | connectivity/source/drivers/flat/ETable.cxx | 25 | ||||
-rw-r--r-- | connectivity/source/inc/file/quotedstring.hxx | 2 |
3 files changed, 17 insertions, 21 deletions
diff --git a/connectivity/source/drivers/file/quotedstring.cxx b/connectivity/source/drivers/file/quotedstring.cxx index ffb468a729d0..b8d9c6bc03f2 100644 --- a/connectivity/source/drivers/file/quotedstring.cxx +++ b/connectivity/source/drivers/file/quotedstring.cxx @@ -85,10 +85,10 @@ namespace connectivity } //------------------------------------------------------------------ - void QuotedTokenizedString::GetTokenSpecial( String& _rStr,xub_StrLen& nStartPos, sal_Unicode cTok, sal_Unicode cStrDel ) const + String QuotedTokenizedString::GetTokenSpecial(xub_StrLen& nStartPos, sal_Unicode cTok, sal_Unicode cStrDel) const { RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "file", "Ocke.Janssen@sun.com", "QuotedTokenizedString::GetTokenCount" ); - _rStr.Erase(); + String aStr; const xub_StrLen nLen = m_sString.Len(); if ( nLen ) { @@ -98,9 +98,9 @@ namespace connectivity if (bInString ) ++nStartPos; // skip this character! if ( nStartPos >= nLen ) - return; + return aStr; - sal_Unicode* pData = _rStr.AllocBuffer( nLen - nStartPos + 1 ); + sal_Unicode* pData = aStr.AllocBuffer( nLen - nStartPos + 1 ); const sal_Unicode* pStart = pData; // Search until end of string for the first not matching character for( xub_StrLen i = nStartPos; i < nLen; ++i ) @@ -147,8 +147,9 @@ namespace connectivity } } // for( xub_StrLen i = nStartPos; i < nLen; ++i ) *pData = 0; - _rStr.ReleaseBufferAccess(xub_StrLen(pData - pStart)); + aStr.ReleaseBufferAccess(xub_StrLen(pData - pStart)); } + return aStr; } } diff --git a/connectivity/source/drivers/flat/ETable.cxx b/connectivity/source/drivers/flat/ETable.cxx index 7982417f7be5..6f13d6d222a8 100644 --- a/connectivity/source/drivers/flat/ETable.cxx +++ b/connectivity/source/drivers/flat/ETable.cxx @@ -132,7 +132,7 @@ void OFlatTable::fillColumns(const ::com::sun::star::lang::Locale& _aLocale) { if ( bHasHeaderLine ) { - aHeaderLine.GetTokenSpecial(aColumnName,nStartPosHeaderLine,m_cFieldDelimiter,m_cStringDelimiter); + aColumnName = aHeaderLine.GetTokenSpecial(nStartPosHeaderLine,m_cFieldDelimiter,m_cStringDelimiter); if ( !aColumnName.Len() ) { aColumnName = 'C'; @@ -192,14 +192,13 @@ void OFlatTable::impl_fillColumnInfo_nothrow(QuotedTokenizedString& aFirstLine,x if ( bNumeric ) { // first without fielddelimiter - String aField; - aFirstLine.GetTokenSpecial(aField,nStartPosFirstLine,m_cFieldDelimiter,'\0'); + String aField = aFirstLine.GetTokenSpecial(nStartPosFirstLine,m_cFieldDelimiter,'\0'); if (aField.Len() == 0 || (m_cStringDelimiter && m_cStringDelimiter == aField.GetChar(0))) { bNumeric = sal_False; if ( m_cStringDelimiter != '\0' ) - aFirstLine.GetTokenSpecial(aField,nStartPosFirstLine2,m_cFieldDelimiter,m_cStringDelimiter); + aField = aFirstLine.GetTokenSpecial(nStartPosFirstLine2,m_cFieldDelimiter,m_cStringDelimiter); else nStartPosFirstLine2 = nStartPosFirstLine; } @@ -207,7 +206,7 @@ void OFlatTable::impl_fillColumnInfo_nothrow(QuotedTokenizedString& aFirstLine,x { String aField2; if ( m_cStringDelimiter != '\0' ) - aFirstLine.GetTokenSpecial(aField2,nStartPosFirstLine2,m_cFieldDelimiter,m_cStringDelimiter); + aField2 = aFirstLine.GetTokenSpecial(nStartPosFirstLine2,m_cFieldDelimiter,m_cStringDelimiter); else aField2 = aField; @@ -284,8 +283,7 @@ void OFlatTable::impl_fillColumnInfo_nothrow(QuotedTokenizedString& aFirstLine,x } else if ( io_nType == DataType::DATE || io_nType == DataType::TIMESTAMP || io_nType == DataType::TIME) { - String aField; - aFirstLine.GetTokenSpecial(aField,nStartPosFirstLine,m_cFieldDelimiter,'\0'); + String aField = aFirstLine.GetTokenSpecial(nStartPosFirstLine,m_cFieldDelimiter,'\0'); if (aField.Len() == 0 || (m_cStringDelimiter && m_cStringDelimiter == aField.GetChar(0))) { @@ -294,7 +292,7 @@ void OFlatTable::impl_fillColumnInfo_nothrow(QuotedTokenizedString& aFirstLine,x { String aField2; if ( m_cStringDelimiter != '\0' ) - aFirstLine.GetTokenSpecial(aField2,nStartPosFirstLine2,m_cFieldDelimiter,m_cStringDelimiter); + aField2 = aFirstLine.GetTokenSpecial(nStartPosFirstLine2,m_cFieldDelimiter,m_cStringDelimiter); else aField2 = aField; if (aField2.Len() ) @@ -375,21 +373,19 @@ void OFlatTable::impl_fillColumnInfo_nothrow(QuotedTokenizedString& aFirstLine,x } else { - String aField; - aFirstLine.GetTokenSpecial(aField,nStartPosFirstLine,m_cFieldDelimiter,'\0'); + String aField = aFirstLine.GetTokenSpecial(nStartPosFirstLine,m_cFieldDelimiter,'\0'); if (aField.Len() == 0 || (m_cStringDelimiter && m_cStringDelimiter == aField.GetChar(0))) { if ( m_cStringDelimiter != '\0' ) - aFirstLine.GetTokenSpecial(aField,nStartPosFirstLine2,m_cFieldDelimiter,m_cStringDelimiter); + aField = aFirstLine.GetTokenSpecial(nStartPosFirstLine2,m_cFieldDelimiter,m_cStringDelimiter); else nStartPosFirstLine2 = nStartPosFirstLine; } else { - String aField2; if ( m_cStringDelimiter != '\0' ) - aFirstLine.GetTokenSpecial(aField2,nStartPosFirstLine2,m_cFieldDelimiter,m_cStringDelimiter); + aFirstLine.GetTokenSpecial(nStartPosFirstLine2,m_cFieldDelimiter,m_cStringDelimiter); } } } @@ -614,14 +610,13 @@ sal_Bool OFlatTable::fetchRow(OValueRefRow& _rRow,const OSQLColumns & _rCols,sal const sal_Unicode cThousandDelimiter = pConnection->getThousandDelimiter(); // Fields: xub_StrLen nStartPos = 0; - String aStr; OSQLColumns::Vector::const_iterator aIter = _rCols.get().begin(); OSQLColumns::Vector::const_iterator aEnd = _rCols.get().end(); const OValueRefVector::Vector::size_type nCount = _rRow->get().size(); for (OValueRefVector::Vector::size_type i = 1; aIter != aEnd && i < nCount; ++aIter, i++) { - m_aCurrentLine.GetTokenSpecial(aStr,nStartPos,m_cFieldDelimiter,m_cStringDelimiter); + String aStr = m_aCurrentLine.GetTokenSpecial(nStartPos,m_cFieldDelimiter,m_cStringDelimiter); if (aStr.Len() == 0) (_rRow->get())[i]->setNull(); diff --git a/connectivity/source/inc/file/quotedstring.hxx b/connectivity/source/inc/file/quotedstring.hxx index fe498a0b6530..b7b13d7d8bcc 100644 --- a/connectivity/source/inc/file/quotedstring.hxx +++ b/connectivity/source/inc/file/quotedstring.hxx @@ -37,7 +37,7 @@ namespace connectivity QuotedTokenizedString(const String& _sString) : m_sString(_sString){} xub_StrLen GetTokenCount( sal_Unicode cTok , sal_Unicode cStrDel ) const; - void GetTokenSpecial( String& _rStr,xub_StrLen& nStartPos, sal_Unicode cTok = ';', sal_Unicode cStrDel = '\0' ) const; + String GetTokenSpecial(xub_StrLen& nStartPos, sal_Unicode cTok = ';', sal_Unicode cStrDel = '\0') const; inline String& GetString() { return m_sString; } inline xub_StrLen Len() const { return m_sString.Len(); } inline operator String&() { return m_sString; } |