summaryrefslogtreecommitdiff
path: root/sc/source/filter/excel/frmbase.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'sc/source/filter/excel/frmbase.cxx')
-rw-r--r--sc/source/filter/excel/frmbase.cxx282
1 files changed, 282 insertions, 0 deletions
diff --git a/sc/source/filter/excel/frmbase.cxx b/sc/source/filter/excel/frmbase.cxx
new file mode 100644
index 000000000000..78883b4a5c76
--- /dev/null
+++ b/sc/source/filter/excel/frmbase.cxx
@@ -0,0 +1,282 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_sc.hxx"
+
+
+
+
+#include "formel.hxx"
+
+
+
+
+_ScRangeList::~_ScRangeList()
+{
+ ScRange* p = ( ScRange* ) First();
+
+ while( p )
+ {
+ delete p;
+ p = ( ScRange* ) Next();
+ }
+}
+
+
+
+
+_ScRangeListTabs::_ScRangeListTabs( void )
+{
+ ppTabLists = new _ScRangeList*[ MAXTAB + 1 ];
+
+ for( UINT16 n = 0 ; n <= MAXTAB ; n++ )
+ ppTabLists[ n ] = NULL;
+
+ bHasRanges = FALSE;
+ pAct = NULL;
+ nAct = 0;
+}
+
+
+_ScRangeListTabs::~_ScRangeListTabs()
+{
+ if( bHasRanges )
+ {
+ for( UINT16 n = 0 ; n <= MAXTAB ; n++ )
+ {
+ if( ppTabLists[ n ] )
+ delete ppTabLists[ n ];
+ }
+ }
+
+ delete[] ppTabLists;
+}
+
+
+void _ScRangeListTabs::Append( ScSingleRefData a, const BOOL b )
+{
+ if( b )
+ {
+ if( a.nTab > MAXTAB )
+ a.nTab = MAXTAB;
+
+ if( a.nCol > MAXCOL )
+ a.nCol = MAXCOL;
+
+ if( a.nRow > MAXROW )
+ a.nRow = MAXROW;
+ }
+ else
+ {
+ DBG_ASSERT( ValidTab(a.nTab), "-_ScRangeListTabs::Append(): Luegen haben kurze Abstuerze!" );
+ }
+
+ bHasRanges = TRUE;
+
+ if( a.nTab >= 0 )
+ {
+ _ScRangeList* p = ppTabLists[ a.nTab ];
+
+ if( !p )
+ p = ppTabLists[ a.nTab ] = new _ScRangeList;
+
+ p->Append( a );
+ }
+}
+
+
+void _ScRangeListTabs::Append( ScComplexRefData a, const BOOL b )
+{
+ if( b )
+ {
+ // #96263# ignore 3D ranges
+ if( a.Ref1.nTab != a.Ref2.nTab )
+ return;
+
+ SCsTAB& rTab = a.Ref1.nTab;
+ if( rTab > MAXTAB )
+ rTab = MAXTAB;
+ else if( rTab < 0 )
+ rTab = 0;
+
+ SCsCOL& rCol1 = a.Ref1.nCol;
+ if( rCol1 > MAXCOL )
+ rCol1 = MAXCOL;
+ else if( rCol1 < 0 )
+ rCol1 = 0;
+
+ SCsROW& rRow1 = a.Ref1.nRow;
+ if( rRow1 > MAXROW )
+ rRow1 = MAXROW;
+ else if( rRow1 < 0 )
+ rRow1 = 0;
+
+ SCsCOL& rCol2 = a.Ref2.nCol;
+ if( rCol2 > MAXCOL )
+ rCol2 = MAXCOL;
+ else if( rCol2 < 0 )
+ rCol2 = 0;
+
+ SCsROW& rRow2 = a.Ref2.nRow;
+ if( rRow2 > MAXROW )
+ rRow2 = MAXROW;
+ else if( rRow2 < 0 )
+ rRow2 = 0;
+ }
+ else
+ {
+ DBG_ASSERT( ValidTab(a.Ref1.nTab),
+ "-_ScRangeListTabs::Append(): Luegen haben kurze Abstuerze!" );
+ DBG_ASSERT( a.Ref1.nTab == a.Ref2.nTab,
+ "+_ScRangeListTabs::Append(): 3D-Ranges werden in SC nicht unterstuetzt!" );
+ }
+
+ bHasRanges = TRUE;
+
+ if( a.Ref1.nTab >= 0 )
+ {
+ _ScRangeList* p = ppTabLists[ a.Ref1.nTab ];
+
+ if( !p )
+ p = ppTabLists[ a.Ref1.nTab ] = new _ScRangeList;
+
+ p->Append( a );
+ }
+}
+
+
+const ScRange* _ScRangeListTabs::First( const UINT16 n )
+{
+ DBG_ASSERT( ValidTab(n), "-_ScRangeListTabs::First(): Und tschuessssssss!" );
+
+ if( ppTabLists[ n ] )
+ {
+ pAct = ppTabLists[ n ];
+ nAct = n;
+ return pAct->First();
+ }
+ else
+ {
+ pAct = NULL;
+ nAct = 0;
+ return NULL;
+ }
+}
+
+
+const ScRange* _ScRangeListTabs::Next( void )
+{
+ if( pAct )
+ return pAct->Next();
+ else
+ return NULL;
+}
+
+
+
+
+ConverterBase::ConverterBase( UINT16 nNewBuffer ) :
+ aEingPos( 0, 0, 0 ),
+ eStatus( ConvOK ),
+ nBufferSize( nNewBuffer )
+{
+ DBG_ASSERT( nNewBuffer > 0, "ConverterBase::ConverterBase - nNewBuffer == 0!" );
+ pBuffer = new sal_Char[ nNewBuffer ];
+}
+
+ConverterBase::~ConverterBase()
+{
+ delete[] pBuffer;
+}
+
+void ConverterBase::Reset()
+{
+ eStatus = ConvOK;
+ aPool.Reset();
+ aStack.Reset();
+}
+
+
+
+
+ExcelConverterBase::ExcelConverterBase( UINT16 nNewBuffer ) :
+ ConverterBase( nNewBuffer )
+{
+}
+
+ExcelConverterBase::~ExcelConverterBase()
+{
+}
+
+void ExcelConverterBase::Reset( const ScAddress& rEingPos )
+{
+ ConverterBase::Reset();
+ aEingPos = rEingPos;
+}
+
+void ExcelConverterBase::Reset()
+{
+ ConverterBase::Reset();
+ aEingPos.Set( 0, 0, 0 );
+}
+
+
+
+
+LotusConverterBase::LotusConverterBase( SvStream &rStr, UINT16 nNewBuffer ) :
+ ConverterBase( nNewBuffer ),
+ aIn( rStr ),
+ nBytesLeft( 0 )
+{
+}
+
+LotusConverterBase::~LotusConverterBase()
+{
+}
+
+//UNUSED2008-05 void LotusConverterBase::Reset( INT32 nLen, const ScAddress& rEingPos )
+//UNUSED2008-05 {
+//UNUSED2008-05 ConverterBase::Reset();
+//UNUSED2008-05 nBytesLeft = nLen;
+//UNUSED2008-05 aEingPos = rEingPos;
+//UNUSED2008-05 }
+//UNUSED2008-05
+//UNUSED2008-05 void LotusConverterBase::Reset( INT32 nLen )
+//UNUSED2008-05 {
+//UNUSED2008-05 ConverterBase::Reset();
+//UNUSED2008-05 nBytesLeft = nLen;
+//UNUSED2008-05 aEingPos.Set( 0, 0, 0 );
+//UNUSED2008-05 }
+
+void LotusConverterBase::Reset( const ScAddress& rEingPos )
+{
+ ConverterBase::Reset();
+ nBytesLeft = 0;
+ aEingPos = rEingPos;
+}
+