Kaydet (Commit) b326c1d7 authored tarafından Noel Power's avatar Noel Power

some const correctness tweaks to various signatures in new formulabuffer

Change-Id: Ic6570608ac98c51438b583b7a75fa940b29b7473
üst d212cbd9
...@@ -45,14 +45,14 @@ struct TokenAddressItem ...@@ -45,14 +45,14 @@ struct TokenAddressItem
{ {
::rtl::OUString maTokenStr; ::rtl::OUString maTokenStr;
::com::sun::star::table::CellAddress maCellAddress; ::com::sun::star::table::CellAddress maCellAddress;
TokenAddressItem( rtl::OUString& rTokenStr, ::com::sun::star::table::CellAddress& rCellAddress ) : maTokenStr( rTokenStr ), maCellAddress( rCellAddress ) {} TokenAddressItem( const rtl::OUString& rTokenStr, const ::com::sun::star::table::CellAddress& rCellAddress ) : maTokenStr( rTokenStr ), maCellAddress( rCellAddress ) {}
}; };
struct TokenRangeAddressItem struct TokenRangeAddressItem
{ {
TokenAddressItem maTokenAndAddress; TokenAddressItem maTokenAndAddress;
::com::sun::star::table::CellRangeAddress maCellRangeAddress; ::com::sun::star::table::CellRangeAddress maCellRangeAddress;
TokenRangeAddressItem( TokenAddressItem& rTokenAndAddress, ::com::sun::star::table::CellRangeAddress& rCellRangeAddress ) : maTokenAndAddress( rTokenAndAddress ), maCellRangeAddress( rCellRangeAddress ) {} TokenRangeAddressItem( const TokenAddressItem& rTokenAndAddress, const ::com::sun::star::table::CellRangeAddress& rCellRangeAddress ) : maTokenAndAddress( rTokenAndAddress ), maCellRangeAddress( rCellRangeAddress ) {}
}; };
typedef ::std::map< sal_Int32, std::vector< TokenAddressItem > > FormulaDataMap; typedef ::std::map< sal_Int32, std::vector< TokenAddressItem > > FormulaDataMap;
...@@ -69,8 +69,8 @@ typedef ::std::map< sal_Int32, SharedIdToTokenIndex > SheetToSharedIdToTokenInde ...@@ -69,8 +69,8 @@ typedef ::std::map< sal_Int32, SharedIdToTokenIndex > SheetToSharedIdToTokenInde
typedef ::std::pair< ::com::sun::star::table::CellAddress, double > ValueAddressPair; typedef ::std::pair< ::com::sun::star::table::CellAddress, double > ValueAddressPair;
typedef ::std::map< sal_Int32, std::vector< ValueAddressPair > > FormulaValueMap; typedef ::std::map< sal_Int32, std::vector< ValueAddressPair > > FormulaValueMap;
void createSharedFormula( ::com::sun::star::table::CellAddress& rAddress, sal_Int32 nSharedId, const rtl::OUString& rTokens ); void createSharedFormula( const ::com::sun::star::table::CellAddress& rAddress, sal_Int32 nSharedId, const rtl::OUString& rTokens );
::com::sun::star::uno::Reference< com::sun::star::table::XCellRange > getRange( ::com::sun::star::table::CellRangeAddress& rRange); ::com::sun::star::uno::Reference< com::sun::star::table::XCellRange > getRange( const ::com::sun::star::table::CellRangeAddress& rRange);
::com::sun::star::uno::Reference< com::sun::star::table::XCell > getCell( ::com::sun::star::table::CellAddress& rAddress ); ::com::sun::star::uno::Reference< com::sun::star::table::XCell > getCell( ::com::sun::star::table::CellAddress& rAddress );
com::sun::star::uno::Reference< com::sun::star::sheet::XSpreadsheet > mxCurrSheet; com::sun::star::uno::Reference< com::sun::star::sheet::XSpreadsheet > mxCurrSheet;
FormulaDataMap cellFormulas; FormulaDataMap cellFormulas;
...@@ -80,18 +80,19 @@ typedef ::std::map< sal_Int32, std::vector< ValueAddressPair > > FormulaValueMap ...@@ -80,18 +80,19 @@ typedef ::std::map< sal_Int32, std::vector< ValueAddressPair > > FormulaValueMap
SheetToSharedIdToTokenIndex tokenIndexes; SheetToSharedIdToTokenIndex tokenIndexes;
FormulaValueMap cellFormulaValues; FormulaValueMap cellFormulaValues;
void applyArrayFormulas( std::vector< TokenRangeAddressItem >& rVector ); void applyArrayFormulas( const std::vector< TokenRangeAddressItem >& rVector );
void applyCellFormulas( std::vector< TokenAddressItem >& rVector ); void applyCellFormula( ScDocument& rDoc, const ApiTokenSequence& rTokens, const ::com::sun::star::table::CellAddress& rAddress );
void applyCellFormulaValues( std::vector< ValueAddressPair >& rVector ); void applyCellFormulas( const std::vector< TokenAddressItem >& rVector );
void applyCellFormulaValues( const std::vector< ValueAddressPair >& rVector );
public: public:
explicit FormulaBuffer( const WorkbookHelper& rHelper ); explicit FormulaBuffer( const WorkbookHelper& rHelper );
void finalizeImport(); void finalizeImport();
void setCellFormula( ::com::sun::star::table::CellAddress& rAddress, rtl::OUString& ); void setCellFormula( const ::com::sun::star::table::CellAddress& rAddress, const rtl::OUString& );
void setCellFormula( ::com::sun::star::table::CellAddress& rAddress, sal_Int32 nSharedId ); void setCellFormula( const ::com::sun::star::table::CellAddress& rAddress, sal_Int32 nSharedId );
void setCellFormulaValue( ::com::sun::star::table::CellAddress& rAddress, double fValue ); void setCellFormulaValue( const ::com::sun::star::table::CellAddress& rAddress, double fValue );
void setCellArrayFormula( ::com::sun::star::table::CellRangeAddress& rRangeAddress, ::com::sun::star::table::CellAddress& rTokenAddress, rtl::OUString& ); void setCellArrayFormula( const ::com::sun::star::table::CellRangeAddress& rRangeAddress, const ::com::sun::star::table::CellAddress& rTokenAddress, const rtl::OUString& );
void createSharedFormulaMapEntry(::com::sun::star::table::CellAddress& rAddress, sal_Int32 nSharedId, const rtl::OUString& rTokens ); void createSharedFormulaMapEntry( const ::com::sun::star::table::CellAddress& rAddress, sal_Int32 nSharedId, const rtl::OUString& rTokens );
}; };
} }
} }
......
...@@ -35,7 +35,7 @@ FormulaBuffer::FormulaBuffer( const WorkbookHelper& rHelper ) : WorkbookHelper( ...@@ -35,7 +35,7 @@ FormulaBuffer::FormulaBuffer( const WorkbookHelper& rHelper ) : WorkbookHelper(
{ {
} }
Reference< XCellRange > FormulaBuffer::getRange( CellRangeAddress& rRange) Reference< XCellRange > FormulaBuffer::getRange( const CellRangeAddress& rRange)
{ {
Reference< XCellRange > xRange; Reference< XCellRange > xRange;
try try
...@@ -101,10 +101,7 @@ void FormulaBuffer::finalizeImport() ...@@ -101,10 +101,7 @@ void FormulaBuffer::finalizeImport()
if ( itTokenId != rTokenIdMap.end() ) if ( itTokenId != rTokenIdMap.end() )
{ {
ApiTokenSequence aTokens = getFormulaParser().convertNameToFormula( itTokenId->second ); ApiTokenSequence aTokens = getFormulaParser().convertNameToFormula( itTokenId->second );
Reference< XFormulaTokens > xTokens( getCell( rAddress ), UNO_QUERY ); applyCellFormula( rDoc, aTokens, rAddress );
OSL_ENSURE( xTokens.is(), "FormulaBuffer::finalizeImport - missing token interface" );
if( xTokens.is() ) xTokens->setTokens( aTokens );
} }
} }
} }
...@@ -132,27 +129,31 @@ void FormulaBuffer::finalizeImport() ...@@ -132,27 +129,31 @@ void FormulaBuffer::finalizeImport()
rDoc.SetAutoNameCache( NULL ); rDoc.SetAutoNameCache( NULL );
xFormulaBar->setPosition( 1.0 ); xFormulaBar->setPosition( 1.0 );
} }
void FormulaBuffer::applyCellFormula( ScDocument& rDoc, const ApiTokenSequence& rTokens, const ::com::sun::star::table::CellAddress& rAddress )
void FormulaBuffer::applyCellFormulas( std::vector< TokenAddressItem >& rVector )
{ {
ScDocument& rDoc = getScDocument();
for ( std::vector< TokenAddressItem >::iterator it = rVector.begin(), it_end = rVector.end(); it != it_end; ++it )
{
::com::sun::star::table::CellAddress& rAddress = it->maCellAddress;
ApiTokenSequence rTokens = getFormulaParser().importFormula( rAddress, it->maTokenStr );
ScTokenArray aTokenArray; ScTokenArray aTokenArray;
ScAddress aCellPos; ScAddress aCellPos;
ScUnoConversion::FillScAddress( aCellPos, rAddress ); ScUnoConversion::FillScAddress( aCellPos, rAddress );
ScTokenConversion::ConvertToTokenArray( rDoc, aTokenArray, rTokens ); ScTokenConversion::ConvertToTokenArray( rDoc, aTokenArray, rTokens );
ScBaseCell* pNewCell = new ScFormulaCell( &rDoc, aCellPos, &aTokenArray ); ScBaseCell* pNewCell = new ScFormulaCell( &rDoc, aCellPos, &aTokenArray );
rDoc.PutCell( aCellPos, pNewCell, sal_True ); rDoc.PutCell( aCellPos, pNewCell, sal_True );
}
void FormulaBuffer::applyCellFormulas( const std::vector< TokenAddressItem >& rVector )
{
ScDocument& rDoc = getScDocument();
for ( std::vector< TokenAddressItem >::const_iterator it = rVector.begin(), it_end = rVector.end(); it != it_end; ++it )
{
const ::com::sun::star::table::CellAddress& rAddress = it->maCellAddress;
ApiTokenSequence aTokens = getFormulaParser().importFormula( rAddress, it->maTokenStr );
applyCellFormula( rDoc, aTokens, rAddress );
} }
} }
void FormulaBuffer::applyCellFormulaValues( std::vector< ValueAddressPair >& rVector ) void FormulaBuffer::applyCellFormulaValues( const std::vector< ValueAddressPair >& rVector )
{ {
ScDocument& rDoc = getScDocument(); ScDocument& rDoc = getScDocument();
for ( std::vector< ValueAddressPair >::iterator it = rVector.begin(), it_end = rVector.end(); it != it_end; ++it ) for ( std::vector< ValueAddressPair >::const_iterator it = rVector.begin(), it_end = rVector.end(); it != it_end; ++it )
{ {
ScAddress aCellPos; ScAddress aCellPos;
ScUnoConversion::FillScAddress( aCellPos, it->first ); ScUnoConversion::FillScAddress( aCellPos, it->first );
...@@ -167,55 +168,55 @@ void FormulaBuffer::applyCellFormulaValues( std::vector< ValueAddressPair >& rVe ...@@ -167,55 +168,55 @@ void FormulaBuffer::applyCellFormulaValues( std::vector< ValueAddressPair >& rVe
} }
} }
void FormulaBuffer::applyArrayFormulas( std::vector< TokenRangeAddressItem >& rVector ) void FormulaBuffer::applyArrayFormulas( const std::vector< TokenRangeAddressItem >& rVector )
{ {
for ( std::vector< TokenRangeAddressItem >::iterator it = rVector.begin(), it_end = rVector.end(); it != it_end; ++it ) for ( std::vector< TokenRangeAddressItem >::const_iterator it = rVector.begin(), it_end = rVector.end(); it != it_end; ++it )
{ {
Reference< XArrayFormulaTokens > xTokens( getRange( it->maCellRangeAddress ), UNO_QUERY ); Reference< XArrayFormulaTokens > xTokens( getRange( it->maCellRangeAddress ), UNO_QUERY );
OSL_ENSURE( xTokens.is(), "SheetDataBuffer::finalizeArrayFormula - missing formula token interface" ); OSL_ENSURE( xTokens.is(), "SheetDataBuffer::finalizeArrayFormula - missing formula token interface" );
ApiTokenSequence rTokens = getFormulaParser().importFormula( it->maTokenAndAddress.maCellAddress, it->maTokenAndAddress.maTokenStr ); ApiTokenSequence aTokens = getFormulaParser().importFormula( it->maTokenAndAddress.maCellAddress, it->maTokenAndAddress.maTokenStr );
if( xTokens.is() ) if( xTokens.is() )
xTokens->setArrayTokens( rTokens ); xTokens->setArrayTokens( aTokens );
} }
} }
void FormulaBuffer::createSharedFormulaMapEntry(::com::sun::star::table::CellAddress& rAddress, sal_Int32 nSharedId, const rtl::OUString& rTokens ) void FormulaBuffer::createSharedFormulaMapEntry( const ::com::sun::star::table::CellAddress& rAddress, sal_Int32 nSharedId, const rtl::OUString& rTokens )
{ {
std::vector<SharedFormulaEntry>& rSharedFormulas = sharedFormulas[ rAddress.Sheet ]; std::vector<SharedFormulaEntry>& rSharedFormulas = sharedFormulas[ rAddress.Sheet ];
SharedFormulaEntry aEntry( rAddress, rTokens, nSharedId ); SharedFormulaEntry aEntry( rAddress, rTokens, nSharedId );
rSharedFormulas.push_back( aEntry ); rSharedFormulas.push_back( aEntry );
} }
void FormulaBuffer::setCellFormula( ::com::sun::star::table::CellAddress& rAddress, rtl::OUString& rTokenStr ) void FormulaBuffer::setCellFormula( const ::com::sun::star::table::CellAddress& rAddress, const rtl::OUString& rTokenStr )
{ {
cellFormulas[ rAddress.Sheet ].push_back( TokenAddressItem( rTokenStr, rAddress ) ); cellFormulas[ rAddress.Sheet ].push_back( TokenAddressItem( rTokenStr, rAddress ) );
} }
void FormulaBuffer::setCellFormula( ::com::sun::star::table::CellAddress& rAddress, sal_Int32 nSharedId ) void FormulaBuffer::setCellFormula( const ::com::sun::star::table::CellAddress& rAddress, sal_Int32 nSharedId )
{ {
sharedFormulaIds[ rAddress.Sheet ].push_back( SharedFormulaDesc( rAddress, nSharedId ) ); sharedFormulaIds[ rAddress.Sheet ].push_back( SharedFormulaDesc( rAddress, nSharedId ) );
} }
void FormulaBuffer::setCellArrayFormula( ::com::sun::star::table::CellRangeAddress& rRangeAddress, ::com::sun::star::table::CellAddress& rTokenAddress, rtl::OUString& rTokenStr ) void FormulaBuffer::setCellArrayFormula( const ::com::sun::star::table::CellRangeAddress& rRangeAddress, const ::com::sun::star::table::CellAddress& rTokenAddress, const rtl::OUString& rTokenStr )
{ {
TokenAddressItem tokenPair( rTokenStr, rTokenAddress ); TokenAddressItem tokenPair( rTokenStr, rTokenAddress );
cellArrayFormulas[ rRangeAddress.Sheet ].push_back( TokenRangeAddressItem( tokenPair, rRangeAddress ) ); cellArrayFormulas[ rRangeAddress.Sheet ].push_back( TokenRangeAddressItem( tokenPair, rRangeAddress ) );
} }
void FormulaBuffer::setCellFormulaValue( ::com::sun::star::table::CellAddress& rAddress, double fValue ) void FormulaBuffer::setCellFormulaValue( const ::com::sun::star::table::CellAddress& rAddress, double fValue )
{ {
cellFormulaValues[ rAddress.Sheet ].push_back( ValueAddressPair( rAddress, fValue ) ); cellFormulaValues[ rAddress.Sheet ].push_back( ValueAddressPair( rAddress, fValue ) );
} }
void FormulaBuffer::createSharedFormula(::com::sun::star::table::CellAddress& rAddress, sal_Int32 nSharedId, const rtl::OUString& rTokenStr ) void FormulaBuffer::createSharedFormula( const ::com::sun::star::table::CellAddress& rAddress, sal_Int32 nSharedId, const rtl::OUString& rTokenStr )
{ {
ApiTokenSequence rTokens = getFormulaParser().importFormula( rAddress, rTokenStr ); ApiTokenSequence aTokens = getFormulaParser().importFormula( rAddress, rTokenStr );
rtl::OUString aName = rtl::OUStringBuffer().appendAscii( RTL_CONSTASCII_STRINGPARAM( "__shared_" ) ). rtl::OUString aName = rtl::OUStringBuffer().appendAscii( RTL_CONSTASCII_STRINGPARAM( "__shared_" ) ).
append( static_cast< sal_Int32 >( rAddress.Sheet + 1 ) ). append( static_cast< sal_Int32 >( rAddress.Sheet + 1 ) ).
append( sal_Unicode( '_' ) ).append( nSharedId ). append( sal_Unicode( '_' ) ).append( nSharedId ).
append( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("_0") ) ).makeStringAndClear(); append( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("_0") ) ).makeStringAndClear();
ScRangeData* pScRangeData = createNamedRangeObject( aName, rTokens, 0 ); ScRangeData* pScRangeData = createNamedRangeObject( aName, aTokens, 0 );
pScRangeData->SetType(RT_SHARED); pScRangeData->SetType(RT_SHARED);
sal_Int32 nTokenIndex = static_cast< sal_Int32 >( pScRangeData->GetIndex() ); sal_Int32 nTokenIndex = static_cast< sal_Int32 >( pScRangeData->GetIndex() );
......
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