summaryrefslogtreecommitdiffstats
path: root/connectivity
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2012-12-15 12:45:36 +0000
committerCaolán McNamara <caolanm@redhat.com>2012-12-17 09:35:24 +0000
commitbba34cfa6df4f8b7ca181d517dca675c0dc23b81 (patch)
tree0ca8b45d2c8909c11092aaba0a950019805cb1c2 /connectivity
parentString::AllocBuffer -> OUStringBuffer (diff)
downloadcore-bba34cfa6df4f8b7ca181d517dca675c0dc23b81.tar.gz
core-bba34cfa6df4f8b7ca181d517dca675c0dc23b81.zip
use return value optimization
Change-Id: I08e6b49c9250d3542777f207e93f1d7b6d1a92a7
Diffstat (limited to 'connectivity')
-rw-r--r--connectivity/source/drivers/file/quotedstring.cxx11
-rw-r--r--connectivity/source/drivers/flat/ETable.cxx25
-rw-r--r--connectivity/source/inc/file/quotedstring.hxx2
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; }