[ooo-build-commit] patches/dev300
Kohei Yoshida
kohei at kemper.freedesktop.org
Sat Dec 12 22:01:55 PST 2009
patches/dev300/oox-calc-export-row-limit.diff | 2730 --------------------------
1 file changed, 2730 deletions(-)
New commits:
commit 8ba207724d7d8964a491ed0bc9802f8003c17d7f
Author: Kohei Yoshida <kyoshida at novell.com>
Date: Sun Dec 13 01:01:09 2009 -0500
Removed an obsolete patch.
* patches/dev300/oox-calc-export-row-limit.diff: no longer used.
diff --git a/patches/dev300/oox-calc-export-row-limit.diff b/patches/dev300/oox-calc-export-row-limit.diff
deleted file mode 100644
index 2a311a1..0000000
--- a/patches/dev300/oox-calc-export-row-limit.diff
+++ /dev/null
@@ -1,2730 +0,0 @@
-From ec416334c40c7e0f31b3b0541447c212a1727cf8 Mon Sep 17 00:00:00 2001
-From: Jan Nieuwenhuizen <janneke at gnu.org>
-Date: Fri, 5 Jun 2009 15:51:45 +0200
-Subject: [PATCH] [OOXML]: use 32 bits for xlsx row export. Fixes 65536 row limit, n#504623.
-
-Also, fix export of Formulas in the last row (off by one bug),
-Note content and Hyperlinks below 65536.
-
-A lot of files are touched to add explitic #includes of copied
-headers (xladdress.hxx, xlconst.hxx etc).
-
-Original filter/inc headers are touched, only to add an include
-guard to ascertain we're not including original versions of
-copied headers.
-
- * Modified sc/source/filter/inc/xetable.hxx
- * Modified sc/source/filter/inc/xladdress.hxx
- * Modified sc/source/filter/inc/xlconst.hxx
- * Modified sc/source/filter/inc/xlformula.hxx
- * Modified sc/source/filter/inc/xetable.hxx
- * Modified sc/source/filter/inc/xladdress.hxx
- * Modified sc/source/filter/inc/xlconst.hxx
- * Modified sc/source/filter/inc/xlformula.hxx
- * Modified sc/source/filter/inc/XclExpChangeTrack.hxx
- * Modified sc/source/filter/inc/excrecds.hxx
- * Modified sc/source/filter/xlsx/makefile.mk
- * Modified sc/source/filter/inc/xestream.hxx
- * Modified sc/source/filter/excel/colrowst.cxx
- * Modified sc/source/filter/excel/excdoc.cxx
- * Modified sc/source/filter/excel/excel.cxx
- * Modified sc/source/filter/excel/excform.cxx
- * Modified sc/source/filter/excel/excform8.cxx
- * Modified sc/source/filter/excel/excimp8.cxx
- * Modified sc/source/filter/excel/exctools.cxx
- * Modified sc/source/filter/excel/expop2.cxx
- * Modified sc/source/filter/excel/impop.cxx
- * Modified sc/source/filter/excel/namebuff.cxx
- * Modified sc/source/filter/excel/read.cxx
- * Modified sc/source/filter/xcl97/xcl97esc.cxx
- * Modified sc/source/filter/excel/xechart.cxx
- * Modified sc/source/filter/excel/xecontent.cxx
- * Modified sc/source/filter/excel/xeescher.cxx
- * Modified sc/source/filter/excel/xeformula.cxx
- * Modified sc/source/filter/excel/xehelper.cxx
- * Modified sc/source/filter/excel/xelink.cxx
- * Modified sc/source/filter/excel/xename.cxx
- * Modified sc/source/filter/excel/xepage.cxx
- * Modified sc/source/filter/excel/xepivot.cxx
- * Modified sc/source/filter/excel/xerecord.cxx
- * Modified sc/source/filter/excel/xeroot.cxx
- * Modified sc/source/filter/excel/xestream.cxx
- * Modified sc/source/filter/excel/xetable.cxx
- * Modified sc/source/filter/excel/xeview.cxx
- * Modified sc/source/filter/excel/xichart.cxx
- * Modified sc/source/filter/excel/xicontent.cxx
- * Modified sc/source/filter/excel/xiescher.cxx
- * Modified sc/source/filter/excel/xiformula.cxx
- * Modified sc/source/filter/excel/xihelper.cxx
- * Modified sc/source/filter/excel/xilink.cxx
- * Modified sc/source/filter/excel/xiname.cxx
- * Modified sc/source/filter/excel/xipage.cxx
- * Modified sc/source/filter/excel/xipivot.cxx
- * Modified sc/source/filter/excel/xiroot.cxx
- * Modified sc/source/filter/excel/xistream.cxx
- * Modified sc/source/filter/excel/xistring.cxx
- * Modified sc/source/filter/excel/xistyle.cxx
- * Modified sc/source/filter/excel/xiview.cxx
- * Modified sc/source/filter/excel/xladdress.cxx
- * Modified sc/source/filter/excel/xlchart.cxx
- * Modified sc/source/filter/excel/xlescher.cxx
- * Modified sc/source/filter/excel/xlformula.cxx
- * Modified sc/source/filter/excel/xlpage.cxx
- * Modified sc/source/filter/excel/xlpivot.cxx
- * Modified sc/source/filter/excel/xlroot.cxx
- * Modified sc/source/filter/excel/xlstyle.cxx
- * Modified sc/source/filter/excel/xlview.cxx
----
- sc/source/filter/inc/xetable.hxx | 4 +
- sc/source/filter/inc/xladdress.hxx | 4 +
- sc/source/filter/inc/xlconst.hxx | 4 +
- sc/source/filter/inc/xlformula.hxx | 4 +
- sc/source/filter/inc/inc/xetable.hxx | 1092 +++++++++++++++++++++++++++
- sc/source/filter/inc/inc/xladdress.hxx | 200 +++++
- sc/source/filter/inc/inc/xlconst.hxx | 236 ++++++
- sc/source/filter/inc/inc/xlformula.hxx | 477 ++++++++++++
- sc/source/filter/inc/XclExpChangeTrack.hxx | 6 +-
- sc/source/filter/inc/excrecds.hxx | 3 +
- sc/source/filter/xlsx/makefile.mk | 2 +
- sc/source/filter/inc/xestream.hxx | 3 +
- sc/source/filter/excel/colrowst.cxx | 3 +-
- sc/source/filter/excel/excdoc.cxx | 4 +
- sc/source/filter/excel/excel.cxx | 3 +
- sc/source/filter/excel/excform.cxx | 3 +
- sc/source/filter/excel/excform8.cxx | 3 +
- sc/source/filter/excel/excimp8.cxx | 3 +
- sc/source/filter/excel/exctools.cxx | 2 +-
- sc/source/filter/excel/expop2.cxx | 3 +
- sc/source/filter/excel/impop.cxx | 3 +
- sc/source/filter/excel/namebuff.cxx | 3 +
- sc/source/filter/excel/read.cxx | 3 +
- sc/source/filter/xcl97/xcl97esc.cxx | 3 +
- sc/source/filter/excel/xechart.cxx | 3 +
- sc/source/filter/excel/xecontent.cxx | 5 +-
- sc/source/filter/excel/xeescher.cxx | 12 +-
- sc/source/filter/excel/xeformula.cxx | 28 +-
- sc/source/filter/excel/xehelper.cxx | 5 +-
- sc/source/filter/excel/xelink.cxx | 3 +
- sc/source/filter/excel/xename.cxx | 3 +
- sc/source/filter/excel/xepage.cxx | 5 +-
- sc/source/filter/excel/xepivot.cxx | 6 +-
- sc/source/filter/excel/xerecord.cxx | 3 +
- sc/source/filter/excel/xeroot.cxx | 3 +
- sc/source/filter/excel/xestream.cxx | 4 +-
- sc/source/filter/excel/xetable.cxx | 36 +-
- sc/source/filter/excel/xeview.cxx | 3 +
- sc/source/filter/excel/xichart.cxx | 3 +
- sc/source/filter/excel/xicontent.cxx | 3 +
- sc/source/filter/excel/xiescher.cxx | 3 +
- sc/source/filter/excel/xiformula.cxx | 2 +
- sc/source/filter/excel/xihelper.cxx | 5 +-
- sc/source/filter/excel/xilink.cxx | 3 +
- sc/source/filter/excel/xiname.cxx | 3 +
- sc/source/filter/excel/xipage.cxx | 3 +
- sc/source/filter/excel/xipivot.cxx | 3 +
- sc/source/filter/excel/xiroot.cxx | 3 +
- sc/source/filter/excel/xistream.cxx | 3 +
- sc/source/filter/excel/xistring.cxx | 3 +
- sc/source/filter/excel/xistyle.cxx | 3 +
- sc/source/filter/excel/xiview.cxx | 3 +
- sc/source/filter/excel/xladdress.cxx | 2 +-
- sc/source/filter/excel/xlchart.cxx | 3 +
- sc/source/filter/excel/xlescher.cxx | 2 +-
- sc/source/filter/excel/xlformula.cxx | 2 +-
- sc/source/filter/excel/xlpage.cxx | 1 +
- sc/source/filter/excel/xlpivot.cxx | 3 +
- sc/source/filter/excel/xlroot.cxx | 1 +
- sc/source/filter/excel/xlstyle.cxx | 1 +
- sc/source/filter/excel/xlview.cxx | 1 +
- 61 files changed, 2199 insertions(+), 50 deletions(-)
- create mode 100644 sc/source/filter/inc/inc/xetable.hxx
- create mode 100644 sc/source/filter/inc/inc/xladdress.hxx
- create mode 100644 sc/source/filter/inc/inc/xlconst.hxx
- create mode 100644 sc/source/filter/inc/inc/xlformula.hxx
-
-diff --git sc/source/filter/inc/inc/xetable.hxx sc/source/filter/inc/inc/xetable.hxx
-new file mode 100644
-index 0000000..7a30a2f
---- /dev/null
-+++ sc/source/filter/inc/inc/xetable.hxx
-@@ -0,0 +1,1092 @@
-+/*************************************************************************
-+ *
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * Copyright 2008 by Sun Microsystems, Inc.
-+ *
-+ * OpenOffice.org - a multi-platform office productivity suite
-+ *
-+ * $RCSfile: xetable.hxx,v $
-+ * $Revision: 1.11 $
-+ *
-+ * 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.
-+ *
-+ ************************************************************************/
-+
-+#ifndef SC_XETABLE_HXX
-+#define SC_XETABLE_HXX
-+
-+#include "xltable.hxx"
-+
-+#include <deque>
-+#include <tools/mempool.hxx>
-+#include "xladdress.hxx"
-+#include "xerecord.hxx"
-+#include "xestring.hxx"
-+#include "xeformula.hxx"
-+#include "xestyle.hxx"
-+
-+/* ============================================================================
-+Export of cell tables including row and column description.
-+- Managing all used and formatted cells in a sheet.
-+- Row and column properties, i.e. width/height, visibility.
-+- Find default row formatting and default column formatting.
-+- Merged cell ranges.
-+============================================================================ */
-+
-+// ============================================================================
-+// Helper records for cell records
-+// ============================================================================
-+
-+/** Represents a STRING record that contains the result of a string formula. */
-+class XclExpStringRec : public XclExpRecord
-+{
-+public:
-+ explicit XclExpStringRec( const XclExpRoot& rRoot, const String& rResult );
-+
-+private:
-+ virtual void WriteBody( XclExpStream& rStrm );
-+
-+private:
-+ XclExpStringRef mxResult;
-+};
-+
-+// Additional records for special formula ranges ==============================
-+
-+/** Base record for additional range formula records (i.e. ARRAY, SHRFMLA). */
-+class XclExpRangeFmlaBase : public XclExpRecord
-+{
-+public:
-+ /** Returns true, if the passed cell position is equal to own base position. */
-+ bool IsBasePos( sal_uInt16 nXclCol, sal_uInt32 nXclRow ) const;
-+
-+ /** Derived classes create the token array for a corresponding FORMULA cell record. */
-+ virtual XclTokenArrayRef CreateCellTokenArray( const XclExpRoot& rRoot ) const = 0;
-+ /** Derived classes return true, if the own formula contains volatile functions. */
-+ virtual bool IsVolatile() const = 0;
-+
-+protected:
-+ /** Constructs the record with a single cell. */
-+ explicit XclExpRangeFmlaBase(
-+ sal_uInt16 nRecId, sal_uInt32 nRecSize, const ScAddress& rScPos );
-+ /** Constructs the record with a cell range. */
-+ explicit XclExpRangeFmlaBase(
-+ sal_uInt16 nRecId, sal_uInt32 nRecSize, const ScRange& rScRange );
-+
-+ /** Extends the cell range to include the passed cell address. */
-+ void Extend( const ScAddress& rScPos );
-+
-+ /** Writes the range address covered by this record. */
-+ void WriteRangeAddress( XclExpStream& rStrm ) const;
-+
-+protected:
-+ XclRange maXclRange; /// Range described by this record.
-+ XclAddress maBaseXclPos; /// Address of base cell (first FORMULA record).
-+};
-+
-+typedef ScfRef< XclExpRangeFmlaBase > XclExpRangeFmlaRef;
-+
-+// Array formulas =============================================================
-+
-+class ScTokenArray;
-+
-+/** Represents an ARRAY record that contains the token array of a matrix formula.
-+
-+ An ARRAY record is stored following the first FORMULA record that is part
-+ of a matrix formula. All FORMULA records of a matrix formula contain a
-+ reference to the ARRAY record, while the ARRAY record contains the formula
-+ token array used by all formulas.
-+ */
-+class XclExpArray : public XclExpRangeFmlaBase
-+{
-+public:
-+ explicit XclExpArray( XclTokenArrayRef xTokArr, const ScRange& rScRange );
-+
-+ /** Creates and returns the token array for a corresponding FORMULA cell record. */
-+ virtual XclTokenArrayRef CreateCellTokenArray( const XclExpRoot& rRoot ) const;
-+ /** Returns true, if the array formula contains volatile functions. */
-+ virtual bool IsVolatile() const;
-+
-+private:
-+ virtual void WriteBody( XclExpStream& rStrm );
-+
-+private:
-+ XclTokenArrayRef mxTokArr; /// The token array of a matrix formula.
-+};
-+
-+typedef ScfRef< XclExpArray > XclExpArrayRef;
-+
-+// ----------------------------------------------------------------------------
-+
-+/** Caches all ARRAY records. */
-+class XclExpArrayBuffer : protected XclExpRoot
-+{
-+public:
-+ explicit XclExpArrayBuffer( const XclExpRoot& rRoot );
-+
-+ /** Inserts a new ARRAY record into the buffer and returns it. */
-+ XclExpArrayRef CreateArray( const ScTokenArray& rScTokArr, const ScRange& rScRange );
-+ /** Tries to find an ARRAY record that corresponds to an ocMatRef token. */
-+ XclExpArrayRef FindArray( const ScTokenArray& rScTokArr ) const;
-+
-+private:
-+ typedef ::std::map< ScAddress, XclExpArrayRef > XclExpArrayMap;
-+ XclExpArrayMap maRecMap; /// Map containing the ARRAY records.
-+};
-+
-+// Shared formulas ============================================================
-+
-+/** Represents a SHRFMLA record that contains the token array of a shared formula.
-+
-+ A SHRFMLA record is stored following the first FORMULA record that is part
-+ of a shared formula. All FORMULA records of a shared formula contain a
-+ reference to the SHRFMLA record, while the SHRFMLA record contains the
-+ formula token array used by all formulas.
-+ */
-+class XclExpShrfmla : public XclExpRangeFmlaBase
-+{
-+public:
-+ /** Creates a SHRFMLA record that consists of the passed cell address only. */
-+ explicit XclExpShrfmla( XclTokenArrayRef xTokArr, const ScAddress& rScPos );
-+
-+ /** Extends the cell range to include the passed cell address. */
-+ void ExtendRange( const ScAddress& rScPos );
-+
-+ /** Creates and returns the token array for a corresponding FORMULA cell record. */
-+ virtual XclTokenArrayRef CreateCellTokenArray( const XclExpRoot& rRoot ) const;
-+ /** Returns true, if the shared formula contains volatile functions. */
-+ virtual bool IsVolatile() const;
-+
-+private:
-+ virtual void WriteBody( XclExpStream& rStrm );
-+
-+private:
-+ XclTokenArrayRef mxTokArr; /// The token array of a shared formula.
-+ sal_uInt8 mnUsedCount; /// Number of FORMULA records referring to this record.
-+};
-+
-+typedef ScfRef< XclExpShrfmla > XclExpShrfmlaRef;
-+
-+// ----------------------------------------------------------------------------
-+
-+/** Caches all SHRFMLA records and provides functions to update their ranges. */
-+class XclExpShrfmlaBuffer : protected XclExpRoot
-+{
-+public:
-+ explicit XclExpShrfmlaBuffer( const XclExpRoot& rRoot );
-+
-+ /** Tries to create a new or to update an existing SHRFMLA record.
-+ @return An empty reference, if the passed token array does not contain
-+ a shared formula. If the token array is a shared formula, this
-+ function updates its cell range to include the passed cell position,
-+ if there is a SHRFMLA record for the passed token array; otherwise
-+ this function creates and returns a new SHRFMLA record. */
-+ XclExpShrfmlaRef CreateOrExtendShrfmla(
-+ const ScTokenArray& rScTokArr, const ScAddress& rScPos );
-+
-+private:
-+ typedef ::std::map< const ScTokenArray*, XclExpShrfmlaRef > XclExpShrfmlaMap;
-+ XclExpShrfmlaMap maRecMap; /// Map containing the SHRFMLA records.
-+};
-+
-+// Multiple operations ========================================================
-+
-+struct XclMultipleOpRefs;
-+
-+/** Represents a TABLEOP record for a multiple operations range. */
-+class XclExpTableop : public XclExpRangeFmlaBase
-+{
-+public:
-+ explicit XclExpTableop( const ScAddress& rScPos,
-+ const XclMultipleOpRefs& rRefs, sal_uInt8 nScMode );
-+
-+ /** Returns true, if the cell range has been extended to the passed position.
-+ @descr All references passed in rRefs must fit the ranges passed in the constructor. */
-+ bool TryExtend( const ScAddress& rScPos, const XclMultipleOpRefs& rRefs );
-+
-+ /** Finalizes the record. Tests on valid cell range and reference addresses. */
-+ void Finalize();
-+
-+ /** Creates and returns the token array for a corresponding FORMULA cell record. */
-+ virtual XclTokenArrayRef CreateCellTokenArray( const XclExpRoot& rRoot ) const;
-+ /** Returns true, if the multiple operations range is volatile. */
-+ virtual bool IsVolatile() const;
-+ /** Writes the record if it is valid. */
-+ virtual void Save( XclExpStream& rStrm );
-+
-+private:
-+ /** Returns true, if the passed cell position can be appended to this record. */
-+ bool IsAppendable( sal_uInt16 nXclCol, sal_uInt32 nXclRow ) const;
-+
-+ /** Writes the contents of the TABLEOP record. */
-+ virtual void WriteBody( XclExpStream& rStrm );
-+
-+private:
-+ SCTAB mnScTab; /// Sheet index of this record.
-+ sal_uInt16 mnLastAppXclCol;/// Column index of last appended cell.
-+ sal_uInt16 mnColInpXclCol; /// Column index of column input cell.
-+ sal_uInt32 mnColInpXclRow; /// Row index of column input cell.
-+ sal_uInt16 mnRowInpXclCol; /// Column index of row input cell.
-+ sal_uInt32 mnRowInpXclRow; /// Row index of row input cell.
-+ sal_uInt8 mnScMode; /// Type of the multiple operation (Calc constant).
-+ bool mbValid; /// true = Contains valid references.
-+};
-+
-+typedef ScfRef< XclExpTableop > XclExpTableopRef;
-+
-+// ----------------------------------------------------------------------------
-+
-+/** Contains all created TABLEOP records and supports creating or updating them. */
-+class XclExpTableopBuffer : protected XclExpRoot
-+{
-+public:
-+ explicit XclExpTableopBuffer( const XclExpRoot& rRoot );
-+
-+ /** Tries to update an existing or to create a new TABLEOP record.
-+ @return Reference to the TABLEOP record for this cell (existing or new),
-+ or an empty reference, if rScTokArr does not contain a multiple
-+ operations formula. */
-+ XclExpTableopRef CreateOrExtendTableop(
-+ const ScTokenArray& rScTokArr, const ScAddress& rScPos );
-+
-+ /** Finalizes all contained TABLEOP records. */
-+ void Finalize();
-+
-+private:
-+ /** Tries to create a new TABLEOP record, if rRefs contains valid references. */
-+ XclExpTableopRef TryCreate( const ScAddress& rScPos, const XclMultipleOpRefs& rRefs );
-+
-+private:
-+ typedef XclExpRecordList< XclExpTableop > XclExpTableopList;
-+ XclExpTableopList maTableopList; /// List of all TABLEOP records.
-+};
-+
-+// ============================================================================
-+// Cell records
-+// ============================================================================
-+
-+/** The base class of all cell records. */
-+class XclExpCellBase : public XclExpRecord
-+{
-+public:
-+ /** Returns the (first) address of the cell(s). */
-+ inline const XclAddress& GetXclPos() const { return maXclPos; }
-+ /** Returns the (first) Excel column index of the cell(s). */
-+ inline sal_uInt16 GetXclCol() const { return maXclPos.mnCol; }
-+ /** Returns the Excel row index of the cell. */
-+ inline sal_uInt32 GetXclRow() const { return maXclPos.mnRow; }
-+
-+ /** Derived classes return the column index of the last contained cell. */
-+ virtual sal_uInt16 GetLastXclCol() const = 0;
-+ /** Derived classes return the XF identifier of the first contained cell. */
-+ virtual sal_uInt32 GetFirstXFId() const = 0;
-+ /** Derived classes return true, if this record does not contain at least one valid cell. */
-+ virtual bool IsEmpty() const = 0;
-+ /** Derived classes return whether the cell contains multi-line text. */
-+ virtual bool IsMultiLineText() const;
-+
-+ /** Derived classes try to merge the contents of the passed cell to own data. */
-+ virtual bool TryMerge( const XclExpCellBase& rCell );
-+ /** Derived classes convert the XF identifier(s) into the Excel XF index(es).
-+ @param rXFIndexes The converted XF index(es) are inserted here. */
-+ virtual void ConvertXFIndexes( const XclExpRoot& rRoot ) = 0;
-+ /** Derived classes for blank cells insert the Excel XF index(es) into the passed vector. */
-+ virtual void GetBlankXFIndexes( ScfUInt16Vec& rXFIndexes ) const;
-+ /** Derived classes for blank cells remove unused Excel XF index(es). */
-+ virtual void RemoveUnusedBlankCells( const ScfUInt16Vec& rXFIndexes );
-+
-+protected:
-+ explicit XclExpCellBase(
-+ sal_uInt16 nRecId, sal_Size nContSize, const XclAddress& rXclPos );
-+
-+ /** Sets this record to a new column position. */
-+ inline void SetXclCol( sal_uInt16 nXclCol ) { maXclPos.mnCol = nXclCol; }
-+ /** Sets this record to a new row position. */
-+ inline void SetXclRow( sal_uInt32 nXclRow ) { maXclPos.mnRow = nXclRow; }
-+
-+private:
-+ XclAddress maXclPos; /// Address of the cell.
-+};
-+
-+typedef ScfRef< XclExpCellBase > XclExpCellRef;
-+
-+// Single cell records ========================================================
-+
-+/** Base class for all cell records not supporting multiple contents. */
-+class XclExpSingleCellBase : public XclExpCellBase
-+{
-+public:
-+ /** Returns the last column, which is equal to the first column for single cells. */
-+ virtual sal_uInt16 GetLastXclCol() const;
-+ /** Return the XF identifier of the cell. */
-+ virtual sal_uInt32 GetFirstXFId() const;
-+ /** Returns true, if this record does not contain at least one valid cell. */
-+ virtual bool IsEmpty() const;
-+ /** Converts the XF identifier into the Excel XF index. */
-+ virtual void ConvertXFIndexes( const XclExpRoot& rRoot );
-+ /** Writes cell address, XF index, and calls WriteContents() for each cell. */
-+ virtual void Save( XclExpStream& rStrm );
-+
-+protected:
-+ explicit XclExpSingleCellBase( sal_uInt16 nRecId, sal_Size nContSize,
-+ const XclAddress& rXclPos, sal_uInt32 nXFId );
-+
-+ explicit XclExpSingleCellBase( const XclExpRoot& rRoot,
-+ sal_uInt16 nRecId, sal_Size nContSize, const XclAddress& rXclPos,
-+ const ScPatternAttr* pPattern, sal_Int16 nScript, sal_uInt32 nForcedXFId );
-+
-+ inline void SetContSize( sal_Size nContSize ) { mnContSize = nContSize; }
-+ inline sal_Size GetContSize() const { return mnContSize; }
-+
-+ inline void SetXFId( sal_uInt32 nXFId ) { maXFId.mnXFId = nXFId; }
-+ inline sal_uInt32 GetXFId() const { return maXFId.mnXFId; }
-+
-+private:
-+ /** Writes cell address, XF index, and calls WriteContents() for each cell. */
-+ virtual void WriteBody( XclExpStream& rStrm );
-+ /** Derived classes write the contents of the specified cell (without XF index). */
-+ virtual void WriteContents( XclExpStream& rStrm ) = 0;
-+
-+private:
-+ XclExpXFId maXFId; /// The XF identifier of the cell formatting.
-+ sal_Size mnContSize; /// The size of the cell contents.
-+};
-+
-+// ----------------------------------------------------------------------------
-+
-+/** Represents a NUMBER record that describes a cell with a double value. */
-+class XclExpNumberCell : public XclExpSingleCellBase
-+{
-+ DECL_FIXEDMEMPOOL_NEWDEL( XclExpNumberCell )
-+
-+public:
-+ explicit XclExpNumberCell( const XclExpRoot& rRoot, const XclAddress& rXclPos,
-+ const ScPatternAttr* pPattern, sal_uInt32 nForcedXFId,
-+ double fValue );
-+
-+ virtual void SaveXml( XclExpXmlStream& rStrm );
-+private:
-+ virtual void WriteContents( XclExpStream& rStrm );
-+
-+private:
-+ double mfValue; /// The cell value.
-+};
-+
-+// ----------------------------------------------------------------------------
-+
-+/** Represents a BOOLERR record that describes a cell with a Boolean value. */
-+class XclExpBooleanCell : public XclExpSingleCellBase
-+{
-+ DECL_FIXEDMEMPOOL_NEWDEL( XclExpBooleanCell )
-+
-+public:
-+ explicit XclExpBooleanCell( const XclExpRoot rRoot, const XclAddress& rXclPos,
-+ const ScPatternAttr* pPattern, sal_uInt32 nForcedXFId,
-+ bool bValue );
-+
-+ virtual void SaveXml( XclExpXmlStream& rStrm );
-+private:
-+ virtual void WriteContents( XclExpStream& rStrm );
-+
-+private:
-+ bool mbValue; /// The cell value.
-+};
-+
-+// ----------------------------------------------------------------------------
-+
-+/** Represents a BOOLERR record that describes a cell with an error code. */
-+class XclExpErrorCell : public XclExpSingleCellBase
-+{
-+ DECL_FIXEDMEMPOOL_NEWDEL( XclExpErrorCell )
-+
-+public:
-+ explicit XclExpErrorCell( const XclExpRoot rRoot, const XclAddress& rXclPos,
-+ const ScPatternAttr* pPattern, sal_uInt32 nForcedXFId,
-+ sal_uInt8 nErrCode );
-+
-+ virtual void SaveXml( XclExpXmlStream& rStrm );
-+private:
-+ virtual void WriteContents( XclExpStream& rStrm );
-+
-+private:
-+ sal_uInt8 mnErrCode; /// The error code.
-+};
-+
-+// ----------------------------------------------------------------------------
-+
-+class ScStringCell;
-+class ScEditCell;
-+class XclExpHyperlinkHelper;
-+
-+/** Represents a text cell record.
-+
-+ May contain a BIFF2-BIFF7 LABEL record for a simple string, or a BIFF2-BIFF7
-+ RSTRING record for a formatted string, or a BIFF8 LABELSST string for any
-+ string (simply stores a reference to the Shared String Table).
-+ */
-+class XclExpLabelCell : public XclExpSingleCellBase
-+{
-+ DECL_FIXEDMEMPOOL_NEWDEL( XclExpLabelCell )
-+
-+public:
-+ /** Constructs the record from an unformatted Calc string cell. */
-+ explicit XclExpLabelCell( const XclExpRoot& rRoot, const XclAddress& rXclPos,
-+ const ScPatternAttr* pPattern, sal_uInt32 nForcedXFId,
-+ const ScStringCell& rCell );
-+
-+ /** Constructs the record from a formatted Calc edit cell. */
-+ explicit XclExpLabelCell( const XclExpRoot& rRoot, const XclAddress& rXclPos,
-+ const ScPatternAttr* pPattern, sal_uInt32 nForcedXFId,
-+ const ScEditCell& rCell, XclExpHyperlinkHelper& rHlinkHelper );
-+
-+ /** Returns true if the cell contains multi-line text. */
-+ virtual bool IsMultiLineText() const;
-+
-+ virtual void SaveXml( XclExpXmlStream& rStrm );
-+private:
-+ /** Initializes the record contents. Called from constructors. */
-+ void Init( const XclExpRoot& rRoot,
-+ const ScPatternAttr* pPattern, XclExpStringRef xText );
-+
-+ virtual void WriteContents( XclExpStream& rStrm );
-+
-+private:
-+ XclExpStringRef mxText; /// The cell text.
-+ sal_uInt32 mnSstIndex; /// Index into Shared String Table (only used for BIFF8).
-+ bool mbLineBreak; /// True = cell has automatic linebreaks enabled.
-+};
-+
-+// ----------------------------------------------------------------------------
-+
-+class ScFormulaCell;
-+
-+/** Represents a FORMULA record that describes a cell with a formula. */
-+class XclExpFormulaCell : public XclExpSingleCellBase
-+{
-+ DECL_FIXEDMEMPOOL_NEWDEL( XclExpFormulaCell )
-+
-+public:
-+ explicit XclExpFormulaCell( const XclExpRoot& rRoot, const XclAddress& rXclPos,
-+ const ScPatternAttr* pPattern, sal_uInt32 nForcedXFId,
-+ const ScFormulaCell& rScFmlaCell,
-+ XclExpArrayBuffer& rArrayBfr,
-+ XclExpShrfmlaBuffer& rShrfmlaBfr,
-+ XclExpTableopBuffer& rTableopBfr );
-+
-+ /** Writes the FORMULA record and additional records related to the formula. */
-+ virtual void Save( XclExpStream& rStrm );
-+ virtual void SaveXml( XclExpXmlStream& rStrm );
-+
-+private:
-+ virtual void WriteContents( XclExpStream& rStrm );
-+
-+private:
-+ ScFormulaCell& mrScFmlaCell; /// The Calc formula cell.
-+ XclTokenArrayRef mxTokArr; /// The token array of the formula.
-+ XclExpRangeFmlaRef mxAddRec; /// Additional record for matrix/shared formulas.
-+ XclExpRecordRef mxStringRec; /// STRING record for string result.
-+};
-+
-+// Multiple cell records ======================================================
-+
-+struct XclExpMultiXFId : public XclExpXFId
-+{
-+ sal_uInt16 mnCount; /// Number of XF identifiers.
-+
-+ inline explicit XclExpMultiXFId( sal_uInt32 nXFId, sal_uInt16 nCount = 1 ) :
-+ XclExpXFId( nXFId ), mnCount( nCount ) {}
-+};
-+
-+// ----------------------------------------------------------------------------
-+
-+/** Base class for all cell records supporting multiple contents. */
-+class XclExpMultiCellBase : public XclExpCellBase
-+{
-+public:
-+ /** Returns the column index of the last cell this record describes. */
-+ virtual sal_uInt16 GetLastXclCol() const;
-+ /** Return the XF identifier of the first contained cell. */
-+ virtual sal_uInt32 GetFirstXFId() const;
-+ /** Returns true, if this record does not contain at least one valid cell. */
-+ virtual bool IsEmpty() const;
-+
-+ /** Convert all XF identifiers into the Excel XF indexes. */
-+ virtual void ConvertXFIndexes( const XclExpRoot& rRoot );
-+ /** Writes the record, calls WriteContents() for each contained cell.
-+ @descr May write several records, if unused XF indexes are contained. */
-+ virtual void Save( XclExpStream& rStrm );
-+ virtual void SaveXml( XclExpXmlStream& rStrm );
-+
-+protected:
-+ explicit XclExpMultiCellBase( sal_uInt16 nRecId, sal_uInt16 nMulRecId,
-+ sal_Size nContSize, const XclAddress& rXclPos );
-+
-+ /** Sets the size of the remaining contents of one cell (without the XF index). */
-+ inline void SetContSize( sal_Size nContSize ) { mnContSize = nContSize; }
-+ /** Returns the size of the remaining contents of one cell (without the XF index). */
-+ inline sal_Size GetContSize() const { return mnContSize; }
-+
-+ /** Returns the number of cells this record represents. */
-+ sal_uInt16 GetCellCount() const;
-+
-+ /** Appends the passed XF identifier nCount times to the list of XF identifiers. */
-+ void AppendXFId( const XclExpMultiXFId& rXFId );
-+ /** Appends the passed cell format nCount times to the list of XF identifiers. */
-+ void AppendXFId( const XclExpRoot& rRoot,
-+ const ScPatternAttr* pPattern, sal_uInt16 nScript,
-+ sal_uInt32 nForcedXFId, sal_uInt16 nCount = 1 );
-+
-+ /** Tries to merge the XF ID list of the passed cell with the own list. */
-+ bool TryMergeXFIds( const XclExpMultiCellBase& rCell );
-+ /** Inserts the Excel XF index(es) into the passed vector. */
-+ void GetXFIndexes( ScfUInt16Vec& rXFIndexes ) const;
-+
-+ /** Removes unused Excel XF index(es).
-+ @param rXFIndexes Specifies which XF indexes are used. */
-+ void RemoveUnusedXFIndexes( const ScfUInt16Vec& rXFIndexes );
-+
-+private:
-+ /** Derived classes write the remaining contents of the specified cell (without XF index).
-+ @param nRelCol Relative column index (starts with 0 for first cell of this record). */
-+ virtual void WriteContents( XclExpStream& rStrm, sal_uInt16 nRelCol ) = 0;
-+ virtual void WriteXmlContents( XclExpXmlStream& rStrm, const XclAddress& rAddress, sal_uInt32 nXFId, sal_uInt16 nRelCol ) = 0;
-+
-+private:
-+ typedef ::std::deque< XclExpMultiXFId > XclExpMultiXFIdDeq;
-+
-+ sal_uInt16 mnMulRecId; /// Record ID for multiple record variant.
-+ sal_Size mnContSize; /// Data size of contents for one cell
-+ XclExpMultiXFIdDeq maXFIds; /// The XF identifiers of the cell formatting.
-+};
-+
-+// ----------------------------------------------------------------------------
-+
-+/** Represents a BLANK or MULBLANK record that describes empty but formatted cells. */
-+class XclExpBlankCell : public XclExpMultiCellBase
-+{
-+ DECL_FIXEDMEMPOOL_NEWDEL( XclExpBlankCell )
-+
-+public:
-+ explicit XclExpBlankCell( const XclAddress& rXclPos, const XclExpMultiXFId& rXFId );
-+
-+ explicit XclExpBlankCell( const XclExpRoot& rRoot,
-+ const XclAddress& rXclPos, sal_uInt16 nLastXclCol,
-+ const ScPatternAttr* pPattern, sal_uInt32 nForcedXFId );
-+
-+ /** Tries to merge the contents of the passed cell to own data. */
-+ virtual bool TryMerge( const XclExpCellBase& rCell );
-+ /** Inserts the Excel XF index(es) into the passed vector. */
-+ virtual void GetBlankXFIndexes( ScfUInt16Vec& rXFIndexes ) const;
-+ /** Tries to remove unused Excel XF index(es). */
-+ virtual void RemoveUnusedBlankCells( const ScfUInt16Vec& rXFIndexes );
-+
-+private:
-+ /** Writes the remaining contents of the specified cell (without XF index). */
-+ virtual void WriteContents( XclExpStream& rStrm, sal_uInt16 nRelCol );
-+ virtual void WriteXmlContents( XclExpXmlStream& rStrm, const XclAddress& rAddress, sal_uInt32 nXFId, sal_uInt16 nRelCol );
-+};
-+
-+// ----------------------------------------------------------------------------
-+
-+/** Represents an RK or MULRK record that describes cells with a compressed double values. */
-+class XclExpRkCell : public XclExpMultiCellBase
-+{
-+ DECL_FIXEDMEMPOOL_NEWDEL( XclExpRkCell )
-+
-+public:
-+ explicit XclExpRkCell( const XclExpRoot& rRoot, const XclAddress& rXclPos,
-+ const ScPatternAttr* pPattern, sal_uInt32 nForcedXFId,
-+ sal_Int32 nRkValue );
-+
-+ /** Tries to merge the contents of the passed cell to own data. */
-+ virtual bool TryMerge( const XclExpCellBase& rCell );
-+
-+private:
-+ /** Writes the remaining contents of the specified cell (without XF index). */
-+ virtual void WriteContents( XclExpStream& rStrm, sal_uInt16 nRelCol );
-+ virtual void WriteXmlContents( XclExpXmlStream& rStrm, const XclAddress& rAddress, sal_uInt32 nXFId, sal_uInt16 nRelCol );
-+
-+private:
-+ ScfInt32Vec maRkValues; /// The cell values.
-+};
-+
-+// ============================================================================
-+// Rows and Columns
-+// ============================================================================
-+
-+class ScOutlineArray;
-+
-+/** Base class for buffers containing row or column outline data. */
-+class XclExpOutlineBuffer
-+{
-+public:
-+ /** Returns true, if a collapsed group ends at the last processed position. */
-+ inline bool IsCollapsed() const { return mbCurrCollapse; }
-+ /** Returns the highest level of an open group at the last processed position. */
-+ inline sal_uInt8 GetLevel() const { return ::std::min( mnCurrLevel, EXC_OUTLINE_MAX ); }
-+
-+protected:
-+ /** Constructs the outline buffer.
-+ @param bRows true = Process row ouline array; false = Process column outline array. */
-+ explicit XclExpOutlineBuffer( const XclExpRoot& rRoot, bool bRows );
-+
-+ /** Updates the current state by processing the settings at the passed Calc position. */
-+ void UpdateColRow( SCCOLROW nScPos );
-+
-+private:
-+ /** Data about an outline level. */
-+ struct XclExpLevelInfo
-+ {
-+ SCCOLROW mnScEndPos; /// The end position of a group in a level.
-+ bool mbHidden; /// true = Group in this level is hidden.
-+ inline explicit XclExpLevelInfo() : mnScEndPos( 0 ), mbHidden( false ) {}
-+ };
-+ typedef ::std::vector< XclExpLevelInfo > XclExpLevelInfoVec;
-+
-+ const ScOutlineArray* mpScOLArray; /// Pointer to Calc outline array.
-+ XclExpLevelInfoVec maLevelInfos; /// Info for current row and all levels.
-+ sal_uInt8 mnCurrLevel; /// Highest level of an open group for current position.
-+ bool mbCurrCollapse; /// true = Collapsed group ends at current position.
-+};
-+
-+// ----------------------------------------------------------------------------
-+
-+/** The outline buffer for column outlines. */
-+class XclExpColOutlineBuffer : public XclExpOutlineBuffer
-+{
-+public:
-+ inline explicit XclExpColOutlineBuffer( const XclExpRoot& rRoot ) :
-+ XclExpOutlineBuffer( rRoot, false ) {}
-+
-+ /** Updates the current state by processing the settings of the passed Calc column. */
-+ inline void Update( SCCOL nScCol )
-+ { UpdateColRow( static_cast< SCCOLROW >( nScCol ) ); }
-+};
-+
-+// ----------------------------------------------------------------------------
-+
-+/** The outline buffer for row outlines. */
-+class XclExpRowOutlineBuffer : public XclExpOutlineBuffer
-+{
-+public:
-+ inline explicit XclExpRowOutlineBuffer( const XclExpRoot& rRoot ) :
-+ XclExpOutlineBuffer( rRoot, true ) {}
-+
-+ /** Updates the current state by processing the settings of the passed Calc row. */
-+ inline void Update( SCROW nScRow )
-+ { UpdateColRow( static_cast< SCCOLROW >( nScRow ) ); }
-+};
-+
-+// ----------------------------------------------------------------------------
-+
-+/** Represents a GUTS record containing the level count of row and column outlines. */
-+class XclExpGuts : public XclExpRecord
-+{
-+public:
-+ explicit XclExpGuts( const XclExpRoot& rRoot );
-+
-+private:
-+ virtual void WriteBody( XclExpStream& rStrm );
-+
-+private:
-+ sal_uInt16 mnColLevels; /// Number of visible column outline levels.
-+ sal_uInt16 mnColWidth; /// Width of column outline area (pixels).
-+ sal_uInt16 mnRowLevels; /// Number of visible row outline levels.
-+ sal_uInt16 mnRowWidth; /// Width of row outline area (pixels).
-+};
-+
-+// ----------------------------------------------------------------------------
-+
-+/** Represents a DIMENSIONS record containing the used area of a sheet. */
-+class XclExpDimensions : public XclExpRecord
-+{
-+public:
-+ explicit XclExpDimensions( const XclExpRoot& rRoot );
-+
-+ /** Sets the used area to the record. */
-+ void SetDimensions(
-+ sal_uInt16 nFirstUsedXclCol, sal_uInt32 nFirstUsedXclRow,
-+ sal_uInt16 nFirstFreeXclCol, sal_uInt32 nFirstFreeXclRow );
-+
-+ virtual void SaveXml( XclExpXmlStream& rStrm );
-+private:
-+ /** Writes the contents of the DIMENSIONS record. */
-+ virtual void WriteBody( XclExpStream& rStrm );
-+
-+private:
-+ sal_uInt32 mnFirstUsedXclRow; /// First used row.
-+ sal_uInt32 mnFirstFreeXclRow; /// First unused row after used area.
-+ sal_uInt16 mnFirstUsedXclCol; /// First used column.
-+ sal_uInt16 mnFirstFreeXclCol; /// First free column after used area.
-+};
-+
-+// ============================================================================
-+
-+/** Represents the DEFCOLWIDTH record containing the default column width of a sheet.
-+
-+ Excel stores the default column width in entire character widths of the '0'
-+ character using the application default font (i.e. the default width is 10,
-+ if the '0' character fits 10 times into a cell in a column with default
-+ width.
-+
-+ The IsDefWidth() function returns true, if the passed width (measured in
-+ 1/256 of the width of the '0' character) could be converted exactly to the
-+ default width. If the passed width is rounded up or down to get the default
-+ width, the function returns false.
-+ */
-+class XclExpDefcolwidth : public XclExpUInt16Record, protected XclExpRoot
-+{
-+public:
-+ explicit XclExpDefcolwidth( const XclExpRoot& rRoot );
-+
-+ /** Returns true, if the own default width exactly matches the passed width. */
-+ bool IsDefWidth( sal_uInt16 nXclColWidth ) const;
-+
-+ /** Sets the passed column width (in 1/256 character width) as default width. */
-+ void SetDefWidth( sal_uInt16 nXclColWidth );
-+};
-+
-+// ----------------------------------------------------------------------------
-+
-+/** Contains the column settings for a range of columns.
-+
-+ After construction the record contains a temporary XF identifier returned
-+ from the XF buffer. After creating the entire Excel document in memory, the
-+ ConvertXFIndexes() function converts it into the real Excel XF index.
-+ */
-+class XclExpColinfo : public XclExpRecord, protected XclExpRoot
-+{
-+public:
-+ /** Constructs the record with the settings in the Calc document. */
-+ explicit XclExpColinfo( const XclExpRoot& rRoot,
-+ SCCOL nScCol, SCROW nLastScRow,
-+ XclExpColOutlineBuffer& rOutlineBfr );
-+
-+ /** Converts the XF identifier into the Excel XF index, returns the latter. */
-+ sal_uInt16 ConvertXFIndexes();
-+
-+ /** Tries to merge this record with the passed record.
-+ @descr Possible, if passed record directly follows this record and has equal contents.
-+ @return true = This record is equal to passed record and has been updated. */
-+ bool TryMerge( const XclExpColinfo& rColInfo );
-+
-+ /** Returns the Excel width of the column(s). */
-+ inline sal_uInt16 GetColWidth() const { return mnWidth; }
-+ /** Returns the final Excel XF index of the column(s). */
-+ inline sal_uInt16 GetXFIndex() const { return maXFId.mnXFIndex; }
-+ /** Returns the number of columns represented by this record. */
-+ inline sal_uInt16 GetColCount() const { return mnLastXclCol - mnFirstXclCol + 1; }
-+
-+ /** Returns true, if the column has default format and width. */
-+ bool IsDefault( const XclExpDefcolwidth& rDefColWidth ) const;
-+
-+ virtual void SaveXml( XclExpXmlStream& rStrm );
-+
-+private:
-+ /** Writes the contents of this COLINFO record. */
-+ virtual void WriteBody( XclExpStream& rStrm );
-+
-+private:
-+ XclExpXFId maXFId; /// The XF identifier for column default format.
-+ sal_uInt16 mnWidth; /// Excel width of the column.
-+ sal_uInt16 mnFlags; /// Additional column flags.
-+ sal_uInt16 mnFirstXclCol; /// Index to first column.
-+ sal_uInt16 mnLastXclCol; /// Index to last column.
-+};
-+
-+// ----------------------------------------------------------------------------
-+
-+/** Contains COLINFO records for all columns of a Calc sheet.
-+
-+ On construction one COLINFO record per column is created. After creating
-+ the entire Excel document in memory, the ConvertXFIndexes() function converts
-+ all temporary XF identifiers into real Excel XF indexes and merges all equal
-+ COLINFO records together.
-+ */
-+class XclExpColinfoBuffer : public XclExpRecordBase, protected XclExpRoot
-+{
-+public:
-+ explicit XclExpColinfoBuffer( const XclExpRoot& rRoot );
-+
-+ /** Initializes the buffer: finds settings and formatting of all columns.
-+ @param nLastScRow Last row used to find default formatting. */
-+ void Initialize( SCROW nLastScRow );
-+ /** Converts the XF identifiers into the Excel XF indexes and merges equal columns.
-+ @param rXFIndexes Returns the final XF indexes of all columns. */
-+ void Finalize( ScfUInt16Vec& rXFIndexes );
-+
-+ /** Writes all COLINFO records of this buffer. */
-+ virtual void Save( XclExpStream& rStrm );
-+ virtual void SaveXml( XclExpXmlStream& rStrm );
-+
-+private:
-+ typedef XclExpRecordList< XclExpColinfo > XclExpColinfoList;
-+ typedef XclExpColinfoList::RecordRefType XclExpColinfoRef;
-+
-+ XclExpColinfoList maColInfos; /// List of COLINFO records.
-+ XclExpDefcolwidth maDefcolwidth; /// The DEFCOLWIDTH record.
-+ XclExpColOutlineBuffer maOutlineBfr; /// Buffer for column outline groups.
-+};
-+
-+// ============================================================================
-+
-+class XclExpRow;
-+
-+/** Contains all possible default row settings. */
-+struct XclExpDefaultRowData
-+{
-+ sal_uInt16 mnFlags; /// Default flags for unspecified rows.
-+ sal_uInt16 mnHeight; /// Default height for unspecified rows.
-+
-+ explicit XclExpDefaultRowData();
-+ explicit XclExpDefaultRowData( const XclExpRow& rRow );
-+
-+ /** Returns true, if rows are hidden by default. */
-+ inline bool IsHidden() const { return ::get_flag( mnFlags, EXC_DEFROW_HIDDEN ); }
-+ /** Returns true, if the rows have a manually set height by default. */
-+ inline bool IsUnsynced() const { return ::get_flag( mnFlags, EXC_DEFROW_UNSYNCED ); }
-+};
-+
-+// ----------------------------------------------------------------------------
-+
-+/** Represents a DEFROWHEIGHT record containing default format for unused rows. */
-+class XclExpDefrowheight : public XclExpRecord
-+{
-+public:
-+ explicit XclExpDefrowheight();
-+
-+ /** Sets the passed default data as current record contents. */
-+ void SetDefaultData( const XclExpDefaultRowData& rDefData );
-+
-+private:
-+ /** Writes the contents of the record. */
-+ virtual void WriteBody( XclExpStream& rStrm );
-+
-+private:
-+ XclExpDefaultRowData maDefData; /// Record data.
-+};
-+
-+// ----------------------------------------------------------------------------
-+
-+/** Represents a ROW record and additionally contains all cells records of a row.
-+
-+ This class contains all cell records of a row in a spreadsheet. There are 2
-+ cell records in Excel that support storing a range of cells in one record
-+ (MULBLANK for multiple blank cells, and MULRK for multiple RK values). The
-+ insertion functions try to merge a new inserted cell with existing
-+ neighbors, if this is supported by the current type of cell record.
-+
-+ The Finalize() function converts the XF identifiers of all cell records to
-+ the final Excel XF indexes. Then a default
-+ */
-+class XclExpRow : public XclExpRecord, protected XclExpRoot
-+{
-+public:
-+ /** Constructs the ROW record and converts the Calc row settings.
-+ @param bAlwaysEmpty true = This row will not be filled with blank cells
-+ in the Finalize() function. */
-+ explicit XclExpRow( const XclExpRoot& rRoot, sal_uInt32 nXclRow,
-+ XclExpRowOutlineBuffer& rOutlineBfr, bool bAlwaysEmpty );
-+
-+ /** Returns the excel row index of this ROW record. */
-+ inline sal_uInt32 GetXclRow() const { return mnXclRow; }
-+ /** Returns the height of the row in twips. */
-+ inline sal_uInt16 GetHeight() const { return mnHeight; }
-+ /** Returns true, if this row does not contain at least one valid cell. */
-+ inline bool IsEmpty() const { return maCellList.IsEmpty(); }
-+ /** Returns true, if this row is hidden. */
-+ inline bool IsHidden() const { return ::get_flag( mnFlags, EXC_ROW_HIDDEN ); }
-+ /** Returns true, if this row contains a manually set height. */
-+ inline bool IsUnsynced() const { return ::get_flag( mnFlags, EXC_ROW_UNSYNCED ); }
-+ /** Returns true, if this row is enabled (will be exported). */
-+ inline bool IsEnabled() const { return mbEnabled; }
-+
-+ /** Appends the passed cell object to this row. */
-+ void AppendCell( XclExpCellRef xCell, bool bIsMergedBase );
-+
-+ /** Converts all XF identifiers into the Excel XF indexes. */
-+ void Finalize( const ScfUInt16Vec& rColXFIndexes );
-+
-+ /** Returns the column index of the first used cell in this row.
-+ @descr This function can only be called after Finalize(). */
-+ sal_uInt16 GetFirstUsedXclCol() const;
-+ /** Returns the column index of the first unused cell following all used cells in this row.
-+ @descr This function can only be called after Finalize(). */
-+ sal_uInt16 GetFirstFreeXclCol() const;
-+
-+ /** Returns true, if this row may be omitted by using the DEFROWHEIGHT record.
-+ @descr A row may be omitted, if it does not contain any cell or
-+ explicit default cell formatting, and is not part of an outline.
-+ This function can only be called after Finalize(). */
-+ bool IsDefaultable() const;
-+ /** Disables this row, if it is defaultable and has the passed default format.
-+ @descr Disabled rows will not be saved.
-+ This function can only be called after Finalize(). */
-+ void DisableIfDefault( const XclExpDefaultRowData& rDefRowData );
-+
-+ /** Writes all cell records of this row. */
-+ void WriteCellList( XclExpStream& rStrm );
-+
-+ /** Writes the ROW record if the row is not disabled (see DisableIfDefault() function). */
-+ virtual void Save( XclExpStream& rStrm );
-+ virtual void SaveXml( XclExpXmlStream& rStrm );
-+
-+private:
-+ /** Initializes the record data. Called from constructors. */
-+ void Init( sal_uInt32 nXclRow, XclExpRowOutlineBuffer* pOutlineBfr );
-+ /** Inserts a cell at the specified list position, tries to merge with neighbors. */
-+ void InsertCell( XclExpCellRef xCell, size_t nPos, bool bIsMergedBase );
-+
-+ /** Writes the contents of the ROW record. */
-+ virtual void WriteBody( XclExpStream& rStrm );
-+
-+private:
-+ typedef XclExpRecordList< XclExpCellBase > XclExpCellList;
-+
-+ XclExpCellList maCellList; /// List of cell records for this row.
-+ sal_uInt32 mnXclRow; /// Excel row index of this row.
-+ sal_uInt16 mnHeight; /// Row height in twips.
-+ sal_uInt16 mnFlags; /// Flags for the ROW record.
-+ sal_uInt16 mnXFIndex; /// Default row formatting.
-+ sal_uInt16 mnOutlineLevel; /// Outline Level (for OOXML)
-+ bool mbAlwaysEmpty; /// true = Do not add blank cells in Finalize().
-+ bool mbEnabled; /// true = Write this ROW record.
-+};
-+
-+// ----------------------------------------------------------------------------
-+
-+/** Collects all rows which contain all cells of a sheet.
-+
-+ This row buffer automatically creates ROW records when cells are inserted
-+ with the AppendCell() function. It is possible to force creation of more
-+ ROW records with the CreateRows() function. In both cases, all preceding
-+ missing ROW records are inserted too.
-+ */
-+class XclExpRowBuffer : public XclExpRecordBase, protected XclExpRoot
-+{
-+public:
-+ explicit XclExpRowBuffer( const XclExpRoot& rRoot );
-+
-+ /** Appends the passed cell object to the row that the cell specifies. */
-+ void AppendCell( XclExpCellRef xCell, bool bIsMergedBase );
-+ /** Forces insertion of all ROW records before the passed row. */
-+ void CreateRows( SCROW nFirstFreeScRow );
-+
-+ /** Converts all XF identifiers into the Excel XF indexes and calculates default formats.
-+ @param rDefRowData (out-param) The default row format is returned here.
-+ @param rColXFIndexes The column default XF indexes. */
-+ void Finalize( XclExpDefaultRowData& rDefRowData, const ScfUInt16Vec& rColXFIndexes );
-+
-+ /** Writes the DIMENSIONS record, all ROW records and all cell records. */
-+ virtual void Save( XclExpStream& rStrm );
-+ virtual void SaveXml( XclExpXmlStream& rStrm );
-+
-+ XclExpDimensions* GetDimensions();
-+
-+private:
-+ /** Returns access to the specified ROW record. Inserts preceding missing ROW records.
-+ @param bRowAlwaysEmpty true = Created rows will not be filled with blank cells
-+ in the XclExpRow::Finalize() function. */
-+ XclExpRow& GetOrCreateRow( sal_uInt32 nXclRow, bool bRowAlwaysEmpty );
-+
-+private:
-+ typedef XclExpRecordList< XclExpRow > XclExpRowList;
-+ typedef XclExpRowList::RecordRefType XclExpRowRef;
-+
-+ XclExpRowList maRowList; /// List of all ROW records.
-+ XclExpRowOutlineBuffer maOutlineBfr; /// Buffer for row outline groups.
-+ XclExpDimensions maDimensions; /// DIMENSIONS record for used area.
-+ XclExpRow* mpLastUsedRow; /// Last used row for faster access.
-+ sal_uInt32 mnLastUsedXclRow; /// Last used row for faster access.
-+};
-+
-+// ============================================================================
-+// Cell Table
-+// ============================================================================
-+
-+class XclExpNote;
-+class XclExpMergedcells;
-+class XclExpHyperlink;
-+class XclExpDval;
-+
-+/** This class contains the cell contents and more of an entire sheet.
-+
-+ The cell table includes the settings and default formatting of all columns,
-+ the settings and default formatting of all used rows, and the contents of
-+ all cells of one sheet in a spreadsheet document.
-+
-+ The constructor does all the work creating the cell table. It reads the
-+ Calc sheet and converts all columns, rows, and cells to Excel record data.
-+ Additioanlly, hyperlink records, note records, additional records for
-+ formula cells, data validation records, and outline records are created.
-+
-+ The Finalize() function does even more work. It calculates default column
-+ settings and removes column records that are equal to this default. The
-+ same happens with rows: A default format is calculated for each row, and
-+ all blank cells in this row that have the same format are removed. Then,
-+ the most used row settings are calculated, and all empty rows that have the
-+ same settings are removed too.
-+
-+ Records that are not stored inside the cell table area in an Excel file
-+ (i.e. DEFROWHEIGHT record, NOTE records, MERGEDCELLS record, HLINK records,
-+ DVAL and DV records for data validation) can be accessed with the function
-+ CreateRecord(). It returns the reference to the respective record (or
-+ record list) which can be inserted into a record list.
-+ */
-+class XclExpCellTable : public XclExpRecordBase, protected XclExpRoot
-+{
-+public:
-+ explicit XclExpCellTable( const XclExpRoot& rRoot );
-+
-+ /** Converts all XF identifiers into the Excel XF indexes and calculates default formats. */
-+ void Finalize();
-+
-+ /** Returns the reference to an internal record specified by the passed record id.
-+ @param nRecId The record identifier that specifies which record is
-+ returned. Possible values are: EXC_ID_DEFROWHEIGHT, EXC_ID_NOTE,
-+ EXC_ID_MERGEDCELLS, EXC_ID_HLINK, EXC_ID_DVAL. */
-+ XclExpRecordRef CreateRecord( sal_uInt16 nRecId ) const;
-+ /** Saves the entire cell table. */
-+ virtual void Save( XclExpStream& rStrm );
-+ virtual void SaveXml( XclExpXmlStream& rStrm );
-+
-+private:
-+ typedef XclExpRecordList< XclExpNote > XclExpNoteList;
-+ typedef XclExpRecordList< XclExpHyperlink > XclExpHyperlinkList;
-+
-+ typedef ScfRef< XclExpDefrowheight > XclExpDefrowhRef;
-+ typedef ScfRef< XclExpNoteList > XclExpNoteListRef;
-+ typedef ScfRef< XclExpMergedcells > XclExpMergedcellsRef;
-+ typedef ScfRef< XclExpHyperlinkList > XclExpHyperlinkRef;
-+ typedef ScfRef< XclExpDval > XclExpDvalRef;
-+
-+ XclExpColinfoBuffer maColInfoBfr; /// Buffer for column formatting.
-+ XclExpRowBuffer maRowBfr; /// Rows and cell records.
-+ XclExpArrayBuffer maArrayBfr; /// Buffer for ARRAY records.
-+ XclExpShrfmlaBuffer maShrfmlaBfr; /// Buffer for SHRFMLA records.
-+ XclExpTableopBuffer maTableopBfr; /// Buffer for TABLEOP records.
-+ XclExpDefrowhRef mxDefrowheight; /// DEFROWHEIGHT record for default row format.
-+ XclExpRecordRef mxGuts; /// GUTS record for outline areas.
-+ XclExpNoteListRef mxNoteList; /// List of NOTE records.
-+ XclExpMergedcellsRef mxMergedcells; /// MERGEDCELLS record for merged cell ranges.
-+ XclExpHyperlinkRef mxHyperlinkList; /// List of HLINK records.
-+ XclExpDvalRef mxDval; /// Data validation with DVAL and DV records.
-+};
-+
-+#endif
-+
-diff --git sc/source/filter/inc/inc/xladdress.hxx sc/source/filter/inc/inc/xladdress.hxx
-new file mode 100644
-index 0000000..79ccc28
---- /dev/null
-+++ sc/source/filter/inc/inc/xladdress.hxx
-@@ -0,0 +1,200 @@
-+/*************************************************************************
-+ *
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * Copyright 2008 by Sun Microsystems, Inc.
-+ *
-+ * OpenOffice.org - a multi-platform office productivity suite
-+ *
-+ * $RCSfile: xladdress.hxx,v $
-+ * $Revision: 1.6 $
-+ *
-+ * 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.
-+ *
-+ ************************************************************************/
-+
-+#ifndef SC_XLADDRESS_HXX
-+#define SC_XLADDRESS_HXX
-+
-+#include <vector>
-+#include "address.hxx"
-+
-+class ScRangeList;
-+class XclImpStream;
-+class XclExpStream;
-+
-+// ============================================================================
-+
-+/** A 2D cell address struct with Excel column and row indexes. */
-+struct XclAddress
-+{
-+ sal_uInt16 mnCol;
-+ sal_uInt32 mnRow;
-+
-+ inline explicit XclAddress( ScAddress::Uninitialized ) {}
-+ inline explicit XclAddress() : mnCol( 0 ), mnRow( 0 ) {}
-+ inline explicit XclAddress( sal_uInt16 nCol, sal_uInt32 nRow ) : mnCol( nCol ), mnRow( nRow ) {}
-+
-+ inline void Set( sal_uInt16 nCol, sal_uInt32 nRow ) { mnCol = nCol; mnRow = nRow; }
-+
-+ void Read( XclImpStream& rStrm, bool bCol16Bit = true );
-+ void Write( XclExpStream& rStrm, bool bCol16Bit = true ) const;
-+};
-+
-+inline bool operator==( const XclAddress& rL, const XclAddress& rR )
-+{
-+ return (rL.mnCol == rR.mnCol) && (rL.mnRow == rR.mnRow);
-+}
-+
-+inline bool operator<( const XclAddress& rL, const XclAddress& rR )
-+{
-+ return (rL.mnCol < rR.mnCol) || ((rL.mnCol == rR.mnCol) && (rL.mnRow < rR.mnRow));
-+}
-+
-+inline XclImpStream& operator>>( XclImpStream& rStrm, XclAddress& rXclPos )
-+{
-+ rXclPos.Read( rStrm );
-+ return rStrm;
-+}
-+
-+inline XclExpStream& operator<<( XclExpStream& rStrm, const XclAddress& rXclPos )
-+{
-+ rXclPos.Write( rStrm );
-+ return rStrm;
-+}
-+
-+// ----------------------------------------------------------------------------
-+
-+/** A 2D cell range address struct with Excel column and row indexes. */
-+struct XclRange
-+{
-+ XclAddress maFirst;
-+ XclAddress maLast;
-+
-+ inline explicit XclRange( ScAddress::Uninitialized e ) : maFirst( e ), maLast( e ) {}
-+ inline explicit XclRange() {}
-+ inline explicit XclRange( const XclAddress& rPos ) : maFirst( rPos ), maLast( rPos ) {}
-+ inline explicit XclRange( const XclAddress& rFirst, const XclAddress& rLast ) : maFirst( rFirst ), maLast( rLast ) {}
-+ inline explicit XclRange( sal_uInt16 nCol1, sal_uInt32 nRow1, sal_uInt16 nCol2, sal_uInt32 nRow2 ) :
-+ maFirst( nCol1, nRow1 ), maLast( nCol2, nRow2 ) {}
-+
-+ inline void Set( const XclAddress& rFirst, const XclAddress& rLast )
-+ { maFirst = rFirst; maLast = rLast; }
-+ inline void Set( sal_uInt16 nCol1, sal_uInt32 nRow1, sal_uInt16 nCol2, sal_uInt32 nRow2 )
-+ { maFirst.Set( nCol1, nRow1 ); maLast.Set( nCol2, nRow2 ); }
-+
-+ inline sal_uInt16 GetColCount() const { return maLast.mnCol - maFirst.mnCol + 1; }
-+ inline sal_uInt32 GetRowCount() const { return maLast.mnRow - maFirst.mnRow + 1; }
-+ bool Contains( const XclAddress& rPos ) const;
-+
-+ void Read( XclImpStream& rStrm, bool bCol16Bit = true );
-+ void Write( XclExpStream& rStrm, bool bCol16Bit = true ) const;
-+};
-+
-+inline bool operator==( const XclRange& rL, const XclRange& rR )
-+{
-+ return (rL.maFirst == rR.maFirst) && (rL.maLast == rR.maLast);
-+}
-+
-+inline bool operator<( const XclRange& rL, const XclRange& rR )
-+{
-+ return (rL.maFirst < rR.maFirst) || ((rL.maFirst == rR.maFirst) && (rL.maLast < rR.maLast));
-+}
-+
-+inline XclImpStream& operator>>( XclImpStream& rStrm, XclRange& rXclRange )
-+{
-+ rXclRange.Read( rStrm );
-+ return rStrm;
-+}
-+
-+inline XclExpStream& operator<<( XclExpStream& rStrm, const XclRange& rXclRange )
-+{
-+ rXclRange.Write( rStrm );
-+ return rStrm;
-+}
-+
-+// ----------------------------------------------------------------------------
-+
-+/** A 2D cell range address list with Excel column and row indexes. */
-+class XclRangeList : public ::std::vector< XclRange >
-+{
-+public:
-+ inline explicit XclRangeList() {}
-+
-+ XclRange GetEnclosingRange() const;
-+
-+ void Read( XclImpStream& rStrm, bool bCol16Bit = true );
-+ void Write( XclExpStream& rStrm, bool bCol16Bit = true ) const;
-+ void WriteSubList( XclExpStream& rStrm,
-+ size_t nBegin, size_t nCount, bool bCol16Bit = true ) const;
-+};
-+
-+inline XclImpStream& operator>>( XclImpStream& rStrm, XclRangeList& rXclRanges )
-+{
-+ rXclRanges.Read( rStrm );
-+ return rStrm;
-+}
-+
-+inline XclExpStream& operator<<( XclExpStream& rStrm, const XclRangeList& rXclRanges )
-+{
-+ rXclRanges.Write( rStrm );
-+ return rStrm;
-+}
-+
-+// ============================================================================
-+
-+class XclTracer;
-+
-+/** Base class for import/export address converters. */
-+class XclAddressConverterBase
-+{
-+public:
-+ explicit XclAddressConverterBase( XclTracer& rTracer, const ScAddress& rMaxPos );
-+ virtual ~XclAddressConverterBase();
-+
-+ /** Returns whether the "some columns have been cut" warning box should be shown. */
-+ inline bool IsColTruncated() const { return mbColTrunc; }
-+ /** Returns whether the "some rows have been cut" warning box should be shown. */
-+ inline bool IsRowTruncated() const { return mbRowTrunc; }
-+ /** Returns whether the "some sheets have been cut" warning box should be shown. */
-+ inline bool IsTabTruncated() const { return mbTabTrunc; }
-+
-+ // ------------------------------------------------------------------------
-+
-+ /** Checks if the passed sheet index is valid.
-+ @param nScTab The sheet index to check.
-+ @param bWarn true = Sets the internal flag that produces a warning box
-+ after loading/saving the file, if the sheet index is not valid.
-+ @return true = Sheet index in nScTab is valid. */
-+ bool CheckScTab( SCTAB nScTab, bool bWarn );
-+
-+ // ------------------------------------------------------------------------
-+protected:
-+ XclTracer& mrTracer; /// Tracer for invalid addresses.
-+ ScAddress maMaxPos; /// Default maximum position.
-+ sal_uInt16 mnMaxCol; /// Maximum column index, as 16-bit value.
-+ sal_uInt32 mnMaxRow; /// Maximum row index
-+ bool mbColTrunc; /// Flag for "columns truncated" warning box.
-+ bool mbRowTrunc; /// Flag for "rows truncated" warning box.
-+ bool mbTabTrunc; /// Flag for "tables truncated" warning box.
-+};
-+
-+// ============================================================================
-+
-+#endif
-+
-diff --git sc/source/filter/inc/inc/xlconst.hxx sc/source/filter/inc/inc/xlconst.hxx
-new file mode 100644
-index 0000000..bec17d3
---- /dev/null
-+++ sc/source/filter/inc/inc/xlconst.hxx
-@@ -0,0 +1,236 @@
-+/*************************************************************************
-+ *
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * Copyright 2008 by Sun Microsystems, Inc.
-+ *
-+ * OpenOffice.org - a multi-platform office productivity suite
-+ *
-+ * $RCSfile: xlconst.hxx,v $
-+ * $Revision: 1.29 $
-+ *
-+ * 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.
-+ *
-+ ************************************************************************/
-+
-+#ifndef SC_XLCONST_HXX
-+#define SC_XLCONST_HXX
-+
-+#include "address.hxx"
-+
-+// Common =====================================================================
-+
-+// BIFF versions --------------------------------------------------------------
-+
-+/** An enumeration for all Excel file format types (BIFF types). */
-+enum XclBiff
-+{
-+ EXC_BIFF2 = 0, /// MS Excel 2.1
-+ EXC_BIFF3, /// MS Excel 3.0
-+ EXC_BIFF4, /// MS Excel 4.0
-+ EXC_BIFF5, /// MS Excel 5.0, MS Excel 7.0 (95)
-+ EXC_BIFF8, /// MS Excel 8.0 (97), 9.0 (2000), 10.0 (XP), 11.0 (2003)
-+ EXC_BIFF_UNKNOWN /// Unknown BIFF version.
-+};
-+
-+/** An enumeration for all Excel output format types. */
-+enum XclOutput
-+{
-+ EXC_OUTPUT_BINARY, /// MS Excel binary .xls
-+ EXC_OUTPUT_XML_2007, /// MS Excel 2007 .xlsx
-+};
-+
-+// Excel sheet dimensions -----------------------------------------------------
-+
-+const SCCOL EXC_MAXCOL2 = 255;
-+const SCROW EXC_MAXROW2 = 16383;
-+const SCTAB EXC_MAXTAB2 = 0;
-+
-+const SCCOL EXC_MAXCOL3 = EXC_MAXCOL2;
-+const SCROW EXC_MAXROW3 = EXC_MAXROW2;
-+const SCTAB EXC_MAXTAB3 = EXC_MAXTAB2;
-+
-+const SCCOL EXC_MAXCOL4 = EXC_MAXCOL3;
-+const SCROW EXC_MAXROW4 = EXC_MAXROW3;
-+const SCTAB EXC_MAXTAB4 = 32767;
-+
-+const SCCOL EXC_MAXCOL5 = EXC_MAXCOL4;
-+const SCROW EXC_MAXROW5 = EXC_MAXROW4;
-+const SCTAB EXC_MAXTAB5 = EXC_MAXTAB4;
-+
-+const SCCOL EXC_MAXCOL8 = EXC_MAXCOL5;
-+const SCROW EXC_MAXROW8 = MAXROWCOUNT_DEFINE;
-+const SCTAB EXC_MAXTAB8 = EXC_MAXTAB5;
-+
-+const sal_uInt16 EXC_NOTAB = SAL_MAX_UINT16; /// An invalid Excel sheet index, for common use.
-+const SCTAB SCTAB_INVALID = SCTAB_MAX; /// An invalid Calc sheet index, for common use.
-+const SCTAB SCTAB_GLOBAL = SCTAB_MAX; /// A Calc sheet index for the workbook globals.
-+
-+// Storage/stream names -------------------------------------------------------
-+
-+#define EXC_STORAGE_OLE_LINKED CREATE_STRING( "LNK" )
-+#define EXC_STORAGE_OLE_EMBEDDED CREATE_STRING( "MBD" )
-+#define EXC_STORAGE_VBA_PROJECT CREATE_STRING( "_VBA_PROJECT_CUR" )
-+#define EXC_STORAGE_VBA CREATE_STRING( "VBA" )
-+
-+#define EXC_STREAM_BOOK CREATE_STRING( "Book" )
-+#define EXC_STREAM_WORKBOOK CREATE_STRING( "Workbook" )
-+#define EXC_STREAM_CTLS CREATE_STRING( "Ctls" )
-+
-+// Encoded URLs ---------------------------------------------------------------
-+
-+const sal_Unicode EXC_URLSTART_ENCODED = '\x01'; /// Encoded URL.
-+const sal_Unicode EXC_URLSTART_SELF = '\x02'; /// Reference to own workbook.
-+const sal_Unicode EXC_URLSTART_SELFENCODED = '\x03'; /// Encoded self reference.
-+const sal_Unicode EXC_URLSTART_OWNDOC = '\x04'; /// Reference to own workbook (BIFF5/BIFF7).
-+
-+const sal_Unicode EXC_URL_DOSDRIVE = '\x01'; /// DOS drive letter or UNC server name.
-+const sal_Unicode EXC_URL_DRIVEROOT = '\x02'; /// Root directory of current drive.
-+const sal_Unicode EXC_URL_SUBDIR = '\x03'; /// Directory name delimiter.
-+const sal_Unicode EXC_URL_PARENTDIR = '\x04'; /// Parent directory.
-+const sal_Unicode EXC_URL_RAW = '\x05'; /// Unencoded URL.
-+const sal_Unicode EXC_URL_SHEETNAME = '\x09'; /// Sheet name starts here (BIFF4).
-+
-+const sal_Unicode EXC_DDE_DELIM = '\x03'; /// DDE application-topic delimiter
-+
-+// Error codes ----------------------------------------------------------------
-+
-+const sal_uInt8 EXC_ERR_NULL = 0x00;
-+const sal_uInt8 EXC_ERR_DIV0 = 0x07;
-+const sal_uInt8 EXC_ERR_VALUE = 0x0F;
-+const sal_uInt8 EXC_ERR_REF = 0x17;
-+const sal_uInt8 EXC_ERR_NAME = 0x1D;
-+const sal_uInt8 EXC_ERR_NUM = 0x24;
-+const sal_uInt8 EXC_ERR_NA = 0x2A;
-+
-+// Cached values list (EXTERNNAME, ptgArray, ...) -----------------------------
-+
-+const sal_uInt8 EXC_CACHEDVAL_EMPTY = 0x00;
-+const sal_uInt8 EXC_CACHEDVAL_DOUBLE = 0x01;
-+const sal_uInt8 EXC_CACHEDVAL_STRING = 0x02;
-+const sal_uInt8 EXC_CACHEDVAL_BOOL = 0x04;
-+const sal_uInt8 EXC_CACHEDVAL_ERROR = 0x10;
-+
-+// RK values ------------------------------------------------------------------
-+
-+const sal_Int32 EXC_RK_100FLAG = 0x00000001;
-+const sal_Int32 EXC_RK_INTFLAG = 0x00000002;
-+const sal_Int32 EXC_RK_VALUEMASK = 0xFFFFFFFC;
-+
-+const sal_Int32 EXC_RK_DBL = 0x00000000;
-+const sal_Int32 EXC_RK_DBL100 = EXC_RK_100FLAG;
-+const sal_Int32 EXC_RK_INT = EXC_RK_INTFLAG;
-+const sal_Int32 EXC_RK_INT100 = EXC_RK_100FLAG | EXC_RK_INTFLAG;
-+
-+// Measures -------------------------------------------------------------------
-+
-+const sal_Int32 EXC_POINTS_PER_INCH = 72;
-+const sal_Int32 EXC_TWIPS_PER_INCH = EXC_POINTS_PER_INCH * 20;
-+
-+const sal_uInt8 EXC_ORIENT_NONE = 0; /// Text orientation: not rotated.
-+const sal_uInt8 EXC_ORIENT_STACKED = 1; /// Text orientation: vertically stacked.
-+const sal_uInt8 EXC_ORIENT_90CCW = 2; /// Text orientation: 90 deg counterclockwise.
-+const sal_uInt8 EXC_ORIENT_90CW = 3; /// Text orientation: 90 deg clockwise.
-+
-+const sal_uInt8 EXC_ROT_NONE = 0; /// Text rotation: not rotated.
-+const sal_uInt8 EXC_ROT_90CCW = 90; /// Text rotation: 90 deg counterclockwise.
-+const sal_uInt8 EXC_ROT_90CW = 180; /// Text rotation: 90 deg clockwise.
-+const sal_uInt8 EXC_ROT_STACKED = 255; /// Text rotation: vertically stacked.
-+
-+// Records (ordered by lowest record ID) ======================================
-+
-+// (0x0009, 0x0209, 0x0409, 0x0809) BOF ---------------------------------------
-+
-+const sal_uInt16 EXC_ID2_BOF = 0x0009;
-+const sal_uInt16 EXC_ID3_BOF = 0x0209;
-+const sal_uInt16 EXC_ID4_BOF = 0x0409;
-+const sal_uInt16 EXC_ID5_BOF = 0x0809;
-+
-+const sal_uInt16 EXC_BOF_BIFF2 = 0x0200;
-+const sal_uInt16 EXC_BOF_BIFF3 = 0x0300;
-+const sal_uInt16 EXC_BOF_BIFF4 = 0x0400;
-+const sal_uInt16 EXC_BOF_BIFF5 = 0x0500;
-+const sal_uInt16 EXC_BOF_BIFF8 = 0x0600;
-+
-+const sal_uInt16 EXC_BOF_GLOBALS = 0x0005; /// BIFF5-BIFF8 workbook globals.
-+const sal_uInt16 EXC_BOF_VBMODULE = 0x0006; /// BIFF5-BIFF8 Visual BASIC module.
-+const sal_uInt16 EXC_BOF_SHEET = 0x0010; /// Regular worksheet.
-+const sal_uInt16 EXC_BOF_CHART = 0x0020; /// Chart sheet.
-+const sal_uInt16 EXC_BOF_MACROSHEET = 0x0040; /// Macro sheet.
-+const sal_uInt16 EXC_BOF_WORKSPACE = 0x0100; /// Workspace.
-+const sal_uInt16 EXC_BOF_UNKNOWN = 0xFFFF; /// Internal use only.
-+
-+// (0x000A) EOF ---------------------------------------------------------------
-+
-+const sal_uInt16 EXC_ID_EOF = 0x000A;
-+
-+// (0x0012) PROTECT -----------------------------------------------------------
-+
-+const sal_uInt16 EXC_ID_PROTECT = 0x0012;
-+
-+// (0x0013) PASSWORD ----------------------------------------------------------
-+
-+const sal_uInt16 EXC_ID_PASSWORD = 0x0013;
-+
-+// (0x0019) WINDOWPROTECT -----------------------------------------------------
-+
-+const sal_uInt16 EXC_ID_WINDOWPROTECT = 0x0019;
-+
-+// (0x0042) CODEPAGE ----------------------------------------------------------
-+
-+const sal_uInt16 EXC_ID_CODEPAGE = 0x0042;
-+
-+// (0x0081) WSBOOL ------------------------------------------------------------
-+
-+const sal_uInt16 EXC_ID_WSBOOL = 0x0081;
-+
-+const sal_uInt16 EXC_WSBOOL_ROWBELOW = 0x0040;
-+const sal_uInt16 EXC_WSBOOL_COLBELOW = 0x0080;
-+const sal_uInt16 EXC_WSBOOL_FITTOPAGE = 0x0100;
-+
-+const sal_uInt16 EXC_WSBOOL_DEFAULTFLAGS = 0x04C1;
-+
-+// (0x008C) COUNTRY -----------------------------------------------------------
-+
-+const sal_uInt16 EXC_ID_COUNTRY = 0x008C;
-+
-+// (0x009B) FILTERMODE --------------------------------------------------------
-+
-+const sal_uInt16 EXC_ID_FILTERMODE = 0x009B;
-+
-+// (0x009D) AUTOFILTERINFO ----------------------------------------------------
-+
-+const sal_uInt16 EXC_ID_AUTOFILTERINFO = 0x009D;
-+
-+// (0x009E) AUTOFILTER --------------------------------------------------------
-+
-+const sal_uInt16 EXC_ID_AUTOFILTER = 0x009E;
-+
-+// (0x0160) USESELFS ----------------------------------------------------------
-+
-+const sal_uInt16 EXC_ID_USESELFS = 0x0160;
-+
-+// (0x01AA,0x01AB) USERSVIEWBEGIN, USERSVIEWEND -------------------------------
-+
-+const sal_uInt16 EXC_ID_USERSVIEWBEGIN = 0x01AA;
-+const sal_uInt16 EXC_ID_USERSVIEWEND = 0x01AB;
-+
-+// ============================================================================
-+
-+#endif
-+
-diff --git sc/source/filter/inc/inc/xlformula.hxx sc/source/filter/inc/inc/xlformula.hxx
-new file mode 100644
-index 0000000..d8ffa5a
---- /dev/null
-+++ sc/source/filter/inc/inc/xlformula.hxx
-@@ -0,0 +1,477 @@
-+/*************************************************************************
-+ *
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * Copyright 2008 by Sun Microsystems, Inc.
-+ *
-+ * OpenOffice.org - a multi-platform office productivity suite
-+ *
-+ * $RCSfile: xlformula.hxx,v $
-+ * $Revision: 1.14 $
-+ *
-+ * 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.
-+ *
-+ ************************************************************************/
-+
-+#ifndef SC_XLFORMULA_HXX
-+#define SC_XLFORMULA_HXX
-+
-+#include <map>
-+#include "address.hxx"
-+#include "formula/opcode.hxx"
-+#include "ftools.hxx"
-+
-+// Constants ==================================================================
-+
-+const size_t EXC_TOKARR_MAXLEN = 4096; /// Maximum size of a token array.
-+
-+// Token class flags ----------------------------------------------------------
-+
-+const sal_uInt8 EXC_TOKCLASS_MASK = 0x60;
-+const sal_uInt8 EXC_TOKCLASS_INOP_FLAG = 0x80; /// Used in operators (internal flag).
-+
-+const sal_uInt8 EXC_TOKCLASS_NONE = 0x00; /// 00-1F: Base tokens.
-+const sal_uInt8 EXC_TOKCLASS_REF = 0x20; /// 20-3F: Reference class tokens.
-+const sal_uInt8 EXC_TOKCLASS_VAL = 0x40; /// 40-5F: Value class tokens.
-+const sal_uInt8 EXC_TOKCLASS_ARR = 0x60; /// 60-7F: Array class tokens.
-+
-+const sal_uInt8 EXC_TOKCLASS_ANY_IN_REFOP = EXC_TOKCLASS_INOP_FLAG | EXC_TOKCLASS_NONE;
-+const sal_uInt8 EXC_TOKCLASS_REF_IN_VALOP = EXC_TOKCLASS_INOP_FLAG | EXC_TOKCLASS_REF;
-+const sal_uInt8 EXC_TOKCLASS_VAL_IN_VALOP = EXC_TOKCLASS_INOP_FLAG | EXC_TOKCLASS_VAL;
-+const sal_uInt8 EXC_TOKCLASS_ARR_IN_VALOP = EXC_TOKCLASS_INOP_FLAG | EXC_TOKCLASS_ARR;
-+
-+// Base tokens ----------------------------------------------------------------
-+
-+const sal_uInt8 EXC_TOKID_MASK = 0x1F;
-+
-+const sal_uInt8 EXC_TOKID_NONE = 0x00; /// Placeholder for invalid token id.
-+const sal_uInt8 EXC_TOKID_EXP = 0x01; /// Array or shared formula reference.
-+const sal_uInt8 EXC_TOKID_TBL = 0x02; /// Multiple operation reference.
-+const sal_uInt8 EXC_TOKID_ADD = 0x03; /// Addition operator.
-+const sal_uInt8 EXC_TOKID_SUB = 0x04; /// Subtraction operator.
-+const sal_uInt8 EXC_TOKID_MUL = 0x05; /// Multiplication operator.
-+const sal_uInt8 EXC_TOKID_DIV = 0x06; /// Division operator.
-+const sal_uInt8 EXC_TOKID_POWER = 0x07; /// Power operator.
-+const sal_uInt8 EXC_TOKID_CONCAT = 0x08; /// String concatenation operator.
-+const sal_uInt8 EXC_TOKID_LT = 0x09; /// Less than operator.
-+const sal_uInt8 EXC_TOKID_LE = 0x0A; /// Less than or equal operator.
-+const sal_uInt8 EXC_TOKID_EQ = 0x0B; /// Equal operator.
-+const sal_uInt8 EXC_TOKID_GE = 0x0C; /// Greater than or equal operator.
-+const sal_uInt8 EXC_TOKID_GT = 0x0D; /// Greater than operator.
-+const sal_uInt8 EXC_TOKID_NE = 0x0E; /// Not equal operator.
-+const sal_uInt8 EXC_TOKID_ISECT = 0x0F; /// Intersection operator.
-+const sal_uInt8 EXC_TOKID_LIST = 0x10; /// List operator.
-+const sal_uInt8 EXC_TOKID_RANGE = 0x11; /// Range operator.
-+const sal_uInt8 EXC_TOKID_UPLUS = 0x12; /// Unary plus.
-+const sal_uInt8 EXC_TOKID_UMINUS = 0x13; /// Unary minus.
-+const sal_uInt8 EXC_TOKID_PERCENT = 0x14; /// Percent sign.
-+const sal_uInt8 EXC_TOKID_PAREN = 0x15; /// Parentheses.
-+const sal_uInt8 EXC_TOKID_MISSARG = 0x16; /// Missing argument.
-+const sal_uInt8 EXC_TOKID_STR = 0x17; /// String constant.
-+const sal_uInt8 EXC_TOKID_NLR = 0x18; /// Natural language reference (NLR).
-+const sal_uInt8 EXC_TOKID_ATTR = 0x19; /// Special attribute.
-+const sal_uInt8 EXC_TOKID_SHEET = 0x1A; /// Start of a sheet reference (BIFF2-BIFF4).
-+const sal_uInt8 EXC_TOKID_ENDSHEET = 0x1B; /// End of a sheet reference (BIFF2-BIFF4).
-+const sal_uInt8 EXC_TOKID_ERR = 0x1C; /// Error constant.
-+const sal_uInt8 EXC_TOKID_BOOL = 0x1D; /// Boolean constant.
-+const sal_uInt8 EXC_TOKID_INT = 0x1E; /// Integer constant.
-+const sal_uInt8 EXC_TOKID_NUM = 0x1F; /// Floating-point constant.
-+
-+// Base IDs of classified tokens ----------------------------------------------
-+
-+const sal_uInt8 EXC_TOKID_ARRAY = 0x00; /// Array constant.
-+const sal_uInt8 EXC_TOKID_FUNC = 0x01; /// Function, fixed number of arguments.
-+const sal_uInt8 EXC_TOKID_FUNCVAR = 0x02; /// Function, variable number of arguments.
-+const sal_uInt8 EXC_TOKID_NAME = 0x03; /// Defined name.
-+const sal_uInt8 EXC_TOKID_REF = 0x04; /// 2D cell reference.
-+const sal_uInt8 EXC_TOKID_AREA = 0x05; /// 2D area reference.
-+const sal_uInt8 EXC_TOKID_MEMAREA = 0x06; /// Constant reference subexpression.
-+const sal_uInt8 EXC_TOKID_MEMERR = 0x07; /// Deleted reference subexpression.
-+const sal_uInt8 EXC_TOKID_MEMNOMEM = 0x08; /// Constant reference subexpression without result.
-+const sal_uInt8 EXC_TOKID_MEMFUNC = 0x09; /// Variable reference subexpression.
-+const sal_uInt8 EXC_TOKID_REFERR = 0x0A; /// Deleted 2D cell reference.
-+const sal_uInt8 EXC_TOKID_AREAERR = 0x0B; /// Deleted 2D area reference.
-+const sal_uInt8 EXC_TOKID_REFN = 0x0C; /// Relative 2D cell reference (in names).
-+const sal_uInt8 EXC_TOKID_AREAN = 0x0D; /// Relative 2D area reference (in names).
-+const sal_uInt8 EXC_TOKID_MEMAREAN = 0x0E; /// Reference subexpression (in names).
-+const sal_uInt8 EXC_TOKID_MEMNOMEMN = 0x0F; /// Reference subexpression (in names) without result.
-+const sal_uInt8 EXC_TOKID_FUNCCE = 0x18;
-+const sal_uInt8 EXC_TOKID_NAMEX = 0x19; /// External reference.
-+const sal_uInt8 EXC_TOKID_REF3D = 0x1A; /// 3D cell reference.
-+const sal_uInt8 EXC_TOKID_AREA3D = 0x1B; /// 3D area reference.
-+const sal_uInt8 EXC_TOKID_REFERR3D = 0x1C; /// Deleted 3D cell reference.
-+const sal_uInt8 EXC_TOKID_AREAERR3D = 0x1D; /// Deleted 3D area reference
-+
-+// specific token constants ---------------------------------------------------
-+
-+const sal_uInt16 EXC_TOK_STR_MAXLEN = 255; /// Maximum string length of a tStr token.
-+
-+const sal_uInt8 EXC_TOK_BOOL_FALSE = 0; /// FALSE value of a tBool token.
-+const sal_uInt8 EXC_TOK_BOOL_TRUE = 1; /// TRUE value of a tBool token.
-+
-+const sal_uInt8 EXC_TOK_ATTR_VOLATILE = 0x01; /// Volatile function.
-+const sal_uInt8 EXC_TOK_ATTR_IF = 0x02; /// Start of true condition in IF function.
-+const sal_uInt8 EXC_TOK_ATTR_CHOOSE = 0x04; /// Jump array of CHOOSE function.
-+const sal_uInt8 EXC_TOK_ATTR_GOTO = 0x08; /// Jump to token.
-+const sal_uInt8 EXC_TOK_ATTR_SUM = 0x10; /// SUM function with one parameter.
-+const sal_uInt8 EXC_TOK_ATTR_ASSIGN = 0x20; /// BASIC style assignment.
-+const sal_uInt8 EXC_TOK_ATTR_SPACE = 0x40; /// Spaces in formula representation.
-+
-+const sal_uInt8 EXC_TOK_ATTR_SPACE_SP = 0x00; /// Spaces before next token.
-+const sal_uInt8 EXC_TOK_ATTR_SPACE_BR = 0x01; /// Line breaks before next token.
-+const sal_uInt8 EXC_TOK_ATTR_SPACE_SP_OPEN = 0x02; /// Spaces before opening parenthesis.
-+const sal_uInt8 EXC_TOK_ATTR_SPACE_BR_OPEN = 0x03; /// Line breaks before opening parenthesis.
-+const sal_uInt8 EXC_TOK_ATTR_SPACE_SP_CLOSE = 0x04; /// Spaces before closing parenthesis.
-+const sal_uInt8 EXC_TOK_ATTR_SPACE_BR_CLOSE = 0x05; /// Line breaks before closing parenthesis.
-+const sal_uInt8 EXC_TOK_ATTR_SPACE_SP_PRE = 0x06; /// Spaces before formula (BIFF3).
-+
-+const sal_uInt16 EXC_TOK_FUNCVAR_CMD = 0x8000; /// Macro command.
-+const sal_uInt16 EXC_TOK_FUNCVAR_INDEXMASK = 0x7FFF; /// Mask for function/command index.
-+const sal_uInt8 EXC_TOK_FUNCVAR_PROMPT = 0x80; /// User prompt for macro commands.
-+const sal_uInt8 EXC_TOK_FUNCVAR_COUNTMASK = 0x7F; /// Mask for parameter count.
-+
-+const sal_uInt16 EXC_TOK_REF_COLREL = 0x4000; /// True = Column is relative.
-+const sal_uInt32 EXC_TOK_REF_ROWREL = 0x8000; /// True = Row is relative.
-+
-+const sal_uInt8 EXC_TOK_NLR_ERR = 0x01; /// NLR: Invalid/deleted.
-+const sal_uInt8 EXC_TOK_NLR_ROWR = 0x02; /// NLR: Row index.
-+const sal_uInt8 EXC_TOK_NLR_COLR = 0x03; /// NLR: Column index.
-+const sal_uInt8 EXC_TOK_NLR_ROWV = 0x06; /// NLR: Value in row.
-+const sal_uInt8 EXC_TOK_NLR_COLV = 0x07; /// NLR: Value in column.
-+const sal_uInt8 EXC_TOK_NLR_RANGE = 0x0A; /// NLR: Range.
-+const sal_uInt8 EXC_TOK_NLR_SRANGE = 0x0B; /// Stacked NLR: Range.
-+const sal_uInt8 EXC_TOK_NLR_SROWR = 0x0C; /// Stacked NLR: Row index.
-+const sal_uInt8 EXC_TOK_NLR_SCOLR = 0x0D; /// Stacked NLR: Column index.
-+const sal_uInt8 EXC_TOK_NLR_SROWV = 0x0E; /// Stacked NLR: Value in row.
-+const sal_uInt8 EXC_TOK_NLR_SCOLV = 0x0F; /// Stacked NLR: Value in column.
-+const sal_uInt8 EXC_TOK_NLR_RANGEERR = 0x10; /// NLR: Invalid/deleted range.
-+const sal_uInt8 EXC_TOK_NLR_SXNAME = 0x1D; /// NLR: Pivot table name.
-+const sal_uInt16 EXC_TOK_NLR_REL = 0x8000; /// True = Natural language ref is relative.
-+
-+const sal_uInt32 EXC_TOK_NLR_ADDREL = 0x80000000; /// NLR relative (in appended data).
-+const sal_uInt32 EXC_TOK_NLR_ADDMASK = 0x3FFFFFFF; /// Mask for number of appended ranges.
-+
-+// ----------------------------------------------------------------------------
-+
-+/** Type of a formula. */
-+enum XclFormulaType
-+{
-+ EXC_FMLATYPE_CELL, /// Simple cell formula, also used in change tracking.
-+ EXC_FMLATYPE_MATRIX, /// Matrix (array) formula.
-+ EXC_FMLATYPE_SHARED, /// Shared formula.
-+ EXC_FMLATYPE_CONDFMT, /// Conditional format.
-+ EXC_FMLATYPE_DATAVAL, /// Data validation.
-+ EXC_FMLATYPE_NAME, /// Defined name.
-+ EXC_FMLATYPE_CHART, /// Chart source ranges.
-+ EXC_FMLATYPE_CONTROL, /// Spreadsheet links in form controls.
-+ EXC_FMLATYPE_WQUERY, /// Web query source range.
-+ EXC_FMLATYPE_LISTVAL /// List (cell range) validation.
-+};
-+
-+// Function data ==============================================================
-+
-+const sal_uInt8 EXC_FUNC_MAXPARAM = 30; /// Maximum parameter count.
-+
-+const sal_uInt8 EXC_FUNC_PAR_CALCONLY = 0xFD; /// Placeholder for a parameter existing in Calc, but not in Excel.
-+const sal_uInt8 EXC_FUNC_PAR_EXCELONLY = 0xFE; /// Placeholder for a parameter existing in Excel, but not in Calc.
-+const sal_uInt8 EXC_FUNC_PAR_INVALID = 0xFF; /// Placeholder for an invalid token class.
-+
-+const sal_uInt8 EXC_FUNCINFO_CLASSCOUNT = 5; /// Number of token class entries.
-+
-+const sal_uInt8 EXC_FUNCFLAG_VOLATILE = 0x01; /// Result is volatile (e.g. NOW() function).
-+const sal_uInt8 EXC_FUNCFLAG_IMPORTONLY = 0x02; /// Only used in import filter.
-+const sal_uInt8 EXC_FUNCFLAG_EXPORTONLY = 0x04; /// Only used in export filter.
-+
-+// selected function IDs
-+const sal_uInt16 EXC_FUNCID_IF = 1;
-+const sal_uInt16 EXC_FUNCID_SUM = 4;
-+const sal_uInt16 EXC_FUNCID_AND = 36;
-+const sal_uInt16 EXC_FUNCID_OR = 37;
-+const sal_uInt16 EXC_FUNCID_CHOOSE = 100;
-+const sal_uInt16 EXC_FUNCID_EXTERNCALL = 255;
-+
-+/** Represents information for a spreadsheet function for import and export.
-+
-+ The member mpnParamClass contains an array of token classes for each
-+ parameter of the function. The last existing (non-null) value in this array
-+ is used for all following parameters used in a function. Additionally to
-+ the three actual token classes, this array may contain the special values
-+ EXC_FUNC_PAR_CALCONLY, EXC_FUNC_PAR_EXCELONLY, and EXC_FUNC_PAR_INVALID.
-+ The former two specify parameters only existing in one of the applications.
-+ EXC_FUNC_PAR_INVALID is simply a terminator for the array to prevent that
-+ the last token class or special value is repeated for additional parameters.
-+ */
-+struct XclFunctionInfo
-+{
-+ OpCode meOpCode; /// Calc function opcode.
-+ sal_uInt16 mnXclFunc; /// Excel function index.
-+ sal_uInt8 mnMinParamCount; /// Minimum number of parameters.
-+ sal_uInt8 mnMaxParamCount; /// Maximum number of parameters.
-+ sal_uInt8 mnRetClass; /// Token class of the return value.
-+ sal_uInt8 mpnParamClass[ EXC_FUNCINFO_CLASSCOUNT ]; /// Expected token classes of parameters.
-+ sal_uInt8 mnFlags; /// Additional flags.
-+ const sal_Char* mpcMacroName; /// Function name, if simulated by a macro call (UTF-8).
-+
-+ /** Returns true, if the function is volatile. */
-+ inline bool IsVolatile() const { return ::get_flag( mnFlags, EXC_FUNCFLAG_VOLATILE ); }
-+ /** Returns true, if the function is simulated by a macro call. */
-+ inline bool IsMacroFunc() const { return mpcMacroName != 0; }
-+ /** Returns the name of the external function as string. */
-+ String GetMacroFuncName() const;
-+};
-+
-+// ----------------------------------------------------------------------------
-+
-+class XclRoot;
-+
-+/** Provides access to function info structs for all available functions. */
-+class XclFunctionProvider
-+{
-+public:
-+ explicit XclFunctionProvider( const XclRoot& rRoot );
-+
-+ /** Returns the function data for an Excel function index, or 0 on error. */
-+ const XclFunctionInfo* GetFuncInfoFromXclFunc( sal_uInt16 nXclFunc ) const;
-+ /** Returns the function data for an Excel function simulated by a macro call, or 0 on error. */
-+ const XclFunctionInfo* GetFuncInfoFromXclMacroName( const String& rXclMacroName ) const;
-+ /** Returns the function data for a Calc opcode, or 0 on error. */
-+ const XclFunctionInfo* GetFuncInfoFromOpCode( OpCode eOpCode ) const;
-+
-+private:
-+ void FillXclFuncMap( const XclFunctionInfo* pBeg, const XclFunctionInfo* pEnd );
-+ void FillScFuncMap( const XclFunctionInfo* pBeg, const XclFunctionInfo* pEnd );
-+
-+private:
-+ typedef ::std::map< sal_uInt16, const XclFunctionInfo* > XclFuncMap;
-+ typedef ::std::map< String, const XclFunctionInfo* > XclMacroNameMap;
-+ typedef ::std::map< OpCode, const XclFunctionInfo* > ScFuncMap;
-+
-+ XclFuncMap maXclFuncMap; /// Maps Excel function indexes to function data.
-+ XclMacroNameMap maXclMacroNameMap; /// Maps macro function names to function data.
-+ ScFuncMap maScFuncMap; /// Maps Calc opcodes to function data.
-+};
-+
-+// Token array ================================================================
-+
-+class XclImpStream;
-+class XclExpStream;
-+
-+/** Binary representation of an Excel token array. */
-+class XclTokenArray
-+{
-+public:
-+ /** Creates an empty token array. */
-+ explicit XclTokenArray( bool bVolatile = false );
-+ /** Creates a token array, swaps passed token vector into own data. */
-+ explicit XclTokenArray( ScfUInt8Vec& rTokVec, bool bVolatile = false,
-+ ScfUInt8Vec* pExtensionTokens = NULL);
-+
-+ /** Returns true, if the token array is empty. */
-+ inline bool Empty() const { return maTokVec.empty(); }
-+ /** Returns the size of the token array in bytes. */
-+ sal_uInt16 GetSize() const;
-+ /** Returns read-only access to the byte vector storing token data. */
-+ inline const sal_uInt8* GetData() const { return maTokVec.empty() ? 0 : &maTokVec.front(); }
-+ /** Returns true, if the formula contains a volatile function. */
-+ inline bool IsVolatile() const { return mbVolatile; }
-+
-+ /** Reads the size field of the token array. */
-+ void ReadSize( XclImpStream& rStrm );
-+ /** Reads the tokens of the token array (without size field). */
-+ void ReadArray( XclImpStream& rStrm );
-+ /** Reads size field and the tokens. */
-+ void Read( XclImpStream& rStrm );
-+
-+ /** Writes the size field of the token array. */
-+ void WriteSize( XclExpStream& rStrm ) const;
-+ /** Writes the tokens of the token array (without size field). */
-+ void WriteArray( XclExpStream& rStrm ) const;
-+ /** Writes size field and the tokens. */
-+ void Write( XclExpStream& rStrm ) const;
-+
-+ /** Compares this token array with the passed. */
-+ bool operator==( const XclTokenArray& rTokArr ) const;
-+
-+private:
-+ ScfUInt8Vec maTokVec; /// Byte vector containing token data.
-+ ScfUInt8Vec maExtensions; /// Byte vector of extensions (eg inline arrays)
-+ bool mbVolatile; /// True = Formula contains volatile function.
-+};
-+
-+typedef ScfRef< XclTokenArray > XclTokenArrayRef;
-+
-+/** Calls the Read() function at the passed token array. */
-+XclImpStream& operator>>( XclImpStream& rStrm, XclTokenArray& rTokArr );
-+/** Calls the Read() function at the passed token array. */
-+XclImpStream& operator>>( XclImpStream& rStrm, XclTokenArrayRef& rxTokArr );
-+/** Calls the Write() function at the passed token array. */
-+XclExpStream& operator<<( XclExpStream& rStrm, const XclTokenArray& rTokArr );
-+/** Calls the Write() function at the passed token array. */
-+XclExpStream& operator<<( XclExpStream& rStrm, const XclTokenArrayRef& rxTokArr );
-+
-+// ----------------------------------------------------------------------------
-+
-+namespace formula
-+{
-+ class FormulaToken;
-+}
-+class ScTokenArray;
-+
-+/** Special token array iterator for the Excel filters.
-+
-+ Iterates over a Calc token array without modifying it (therefore the
-+ iterator can be used with constant token arrays).
-+
-+ Usage: Construct a new iterator object and pass a Calc token array, or use
-+ the Init() function to assign another Calc token array. As long as the Is()
-+ function returns true, the accessor functions can be used to get the
-+ current Calc token.
-+ */
-+class XclTokenArrayIterator
-+{
-+public:
-+ explicit XclTokenArrayIterator();
-+ explicit XclTokenArrayIterator( const ScTokenArray& rScTokArr, bool bSkipSpaces );
-+ /** Copy constructor that allowa to change the skip-spaces mode. */
-+ explicit XclTokenArrayIterator( const XclTokenArrayIterator& rTokArrIt, bool bSkipSpaces );
-+
-+ void Init();
-+ void Init( const ScTokenArray& rScTokArr, bool bSkipSpaces );
-+
-+ inline bool Is() const { return mppScToken != 0; }
-+ inline bool operator!() const { return !Is(); }
-+ inline const formula::FormulaToken* Get() const { return mppScToken ? *mppScToken : 0; }
-+ inline const formula::FormulaToken* operator->() const { return Get(); }
-+ inline const formula::FormulaToken& operator*() const { return *Get(); }
-+
-+ XclTokenArrayIterator& operator++();
-+
-+private:
-+ void NextRawToken();
-+ void SkipSpaces();
-+
-+private:
-+ const formula::FormulaToken*const* mppScTokenBeg; /// Pointer to first token pointer of token array.
-+ const formula::FormulaToken*const* mppScTokenEnd; /// Pointer behind last token pointer of token array.
-+ const formula::FormulaToken*const* mppScToken; /// Pointer to current token pointer of token array.
-+ bool mbSkipSpaces; /// true = Skip whitespace tokens.
-+};
-+
-+// ----------------------------------------------------------------------------
-+
-+/** Contains all cell references that can be extracted from a multiple operations formula. */
-+struct XclMultipleOpRefs
-+{
-+ ScAddress maFmlaScPos; /// Position of the (first) formula cell.
-+ ScAddress maColFirstScPos;
-+ ScAddress maColRelScPos;
-+ ScAddress maRowFirstScPos;
-+ ScAddress maRowRelScPos;
-+ bool mbDblRefMode; /// true = One formula with row and column values.
-+};
-+
-+// ----------------------------------------------------------------------------
-+
-+/** A helper with Excel specific token array functions.
-+
-+ The purpose to not add these functions to ScTokenArray is to prevent code
-+ changes in low-level Calc headers and to keep the Excel specific source
-+ code in the filter directory. Deriving from ScTokenArray is not viable
-+ because that would need expensive copy-constructions of the token arrays.
-+ */
-+class XclTokenArrayHelper
-+{
-+public:
-+ // token identifiers ------------------------------------------------------
-+
-+ /** Returns the base token ID of the passed (classified) token ID. */
-+ inline static sal_uInt8 GetBaseTokenId( sal_uInt8 nTokenId ) { return nTokenId & EXC_TOKID_MASK; }
-+ /** Returns the classified token ID from a base ID and the token class. */
-+ inline static sal_uInt8 GetTokenId( sal_uInt8 nBaseId, sal_uInt8 nTokenClass );
-+
-+ /** Returns the token class of the passed token ID. */
-+ inline static sal_uInt8 GetTokenClass( sal_uInt8 nTokenId ) { return nTokenId & EXC_TOKCLASS_MASK; }
-+ /** Changes the token class in the passed classified token ID. */
-+ inline static void ChangeTokenClass( sal_uInt8& rnTokenId, sal_uInt8 nTokenClass );
-+
-+ // strings and string lists -----------------------------------------------
-+
-+ /** Tries to extract a string from the passed token.
-+ @param rString (out-parameter) The string contained in the token.
-+ @return true = Passed token is a string token, rString parameter is valid. */
-+ static bool GetTokenString( String& rString, const formula::FormulaToken& rScToken );
-+
-+ /** Parses the passed formula and tries to find a single string token, i.e. "abc".
-+ @param rString (out-parameter) The string contained in the formula.
-+ @return true = String token found, rString parameter is valid. */
-+ static bool GetString( String& rString, const ScTokenArray& rScTokArr );
-+
-+ /** Parses the passed formula and tries to find a string token list, i.e. "abc";"def";"ghi".
-+ @descr Returns the unquoted (!) strings in a single string, separated with the
-+ passed character. If a comma is specified, the function will return abc,def,ghi from
-+ the example above.
-+ @param rStringList (out-parameter) All strings contained in the formula as list.
-+ @param cSep List separator character.
-+ @return true = String token list found, rString parameter is valid. */
-+ static bool GetStringList( String& rStringList, const ScTokenArray& rScTokArr, sal_Unicode cSep );
-+
-+ /** Tries to convert a formula that consists of a single string token to a list of strings.
-+ @descr Example: The formula ="abc\ndef\nghi" will be converted to the formula
-+ ="abc";"def";"ghi", if the LF character is specified as separator.
-+ @param rScTokArr (in/out-parameter) The token array to modify.
-+ @param cStringSep The separator in the source string.
-+ @param bTrimLeadingSpaces true = remove leading spaces from each token. */
-+ static void ConvertStringToList( ScTokenArray& rScTokArr, sal_Unicode cStringSep, bool bTrimLeadingSpaces );
-+
-+ // shared formulas --------------------------------------------------------
-+
-+ /** Tries to extract the definition of a shared formula from the passed token array.
-+ @descr Shared formulas are stored as hidden defined names in Calc. This
-+ function looks if the passed token array consists of the reference to
-+ such a hidden defined name and returns its definition on success. */
-+ static const ScTokenArray* GetSharedFormula( const XclRoot& rRoot, const ScTokenArray& rScTokArr );
-+
-+ // multiple operations ----------------------------------------------------
-+
-+ /** Parses the passed formula and tries to extract references of a multiple operation.
-+ @descr Requires that the formula contains a single MULTIPLE.OPERATION function call.
-+ Spaces in the formula are silently ignored.
-+ @return true = Multiple operation found, and all references successfully extracted. */
-+ static bool GetMultipleOpRefs( XclMultipleOpRefs& rRefs, const ScTokenArray& rScTokArr );
-+};
-+
-+// ----------------------------------------------------------------------------
-+
-+inline sal_uInt8 XclTokenArrayHelper::GetTokenId( sal_uInt8 nBaseId, sal_uInt8 nTokenClass )
-+{
-+ DBG_ASSERT( !::get_flag( nBaseId, static_cast< sal_uInt8 >( ~EXC_TOKID_MASK ) ), "XclTokenArrayHelper::GetTokenId - invalid token ID" );
-+ DBG_ASSERT( !::get_flag( nTokenClass, static_cast< sal_uInt8 >( ~EXC_TOKCLASS_MASK ) ), "XclTokenArrayHelper::GetTokenId - invalid token class" );
-+ return nBaseId | nTokenClass;
-+}
-+
-+inline void XclTokenArrayHelper::ChangeTokenClass( sal_uInt8& rnTokenId, sal_uInt8 nTokenClass )
-+{
-+ DBG_ASSERT( !::get_flag( nTokenClass, static_cast< sal_uInt8 >( ~EXC_TOKCLASS_MASK ) ), "XclTokenArrayHelper::ChangeTokenClass - invalid token class" );
-+ ::set_flag( rnTokenId, EXC_TOKCLASS_MASK, false );
-+ ::set_flag( rnTokenId, nTokenClass );
-+}
-+
-+// ============================================================================
-+
-+#endif
-+
-diff --git sc/source/filter/inc/XclExpChangeTrack.hxx sc/source/filter/inc/XclExpChangeTrack.hxx
-index 59ec5db..0c6a0d7 100644
---- sc/source/filter/inc/XclExpChangeTrack.hxx
-+++ sc/source/filter/inc/XclExpChangeTrack.hxx
-@@ -426,14 +426,14 @@ public:
-
- inline void XclExpChTrAction::Write2DAddress( XclExpStream& rStrm, const ScAddress& rAddress ) const
- {
-- rStrm << (sal_uInt16) rAddress.Row()
-+ rStrm << (sal_uInt32) rAddress.Row()
- << (sal_uInt16) rAddress.Col();
- }
-
- inline void XclExpChTrAction::Write2DRange( XclExpStream& rStrm, const ScRange& rRange ) const
- {
-- rStrm << (sal_uInt16) rRange.aStart.Row()
-- << (sal_uInt16) rRange.aEnd.Row()
-+ rStrm << (sal_uInt32) rRange.aStart.Row()
-+ << (sal_uInt32) rRange.aEnd.Row()
- << (sal_uInt16) rRange.aStart.Col()
- << (sal_uInt16) rRange.aEnd.Col();
- }
-diff --git sc/source/filter/excel/exctools.cxx sc/source/filter/excel/exctools.cxx
-index 4243edf..365b31a 100644
---- sc/source/filter/excel/exctools.cxx
-+++ sc/source/filter/excel/exctools.cxx
-@@ -390,7 +390,7 @@ void ExcScenario::Apply( const XclImpRoot& rRoot, const BOOL bLast )
- while( p )
- {
- UINT16 nCol = p->nCol;
-- UINT16 nRow = p->nRow;
-+ sal_uInt32 nRow = p->nRow;
- String aVal = p->GetValue();
-
- r.ApplyFlagsTab( nCol, nRow, nCol, nRow, nNewTab, SC_MF_SCENARIO );
-diff --git sc/source/filter/excel/xecontent.cxx sc/source/filter/excel/xecontent.cxx
-index 9b8986e..3117555 100644
---- sc/source/filter/excel/xecontent.cxx
-+++ sc/source/filter/excel/xecontent.cxx
-@@ -526,7 +529,7 @@ String XclExpHyperlink::BuildFileName(
- void XclExpHyperlink::WriteBody( XclExpStream& rStrm )
- {
- sal_uInt16 nXclCol = static_cast< sal_uInt16 >( maScPos.Col() );
-- sal_uInt16 nXclRow = static_cast< sal_uInt16 >( maScPos.Row() );
-+ sal_uInt32 nXclRow = static_cast< sal_uInt32 >( maScPos.Row() );
- rStrm << nXclRow << nXclRow << nXclCol << nXclCol;
- WriteEmbeddedData( rStrm );
- }
-diff --git sc/source/filter/excel/xeescher.cxx sc/source/filter/excel/xeescher.cxx
-index d3d10ff..43c6f54 100644
---- sc/source/filter/excel/xeescher.cxx
-+++ sc/source/filter/excel/xeescher.cxx
-@@ -948,14 +948,14 @@ void XclExpNote::WriteXml( sal_Int32 nAuthorId, XclExpXmlStream& rStrm )
- FSEND );
- rComments->startElement( XML_text, FSEND );
- // OOXTODO: phoneticPr, rPh, r
--#if 0
-- rComments->startElement( XML_t, FSEND );
-- rComments->writeEscaped( XclXmlUtils::ToOUString( maOrigNoteText ) );
-- rComments->endElement ( XML_t );
--#else
- if( mpNoteContents.is() )
- mpNoteContents->WriteXml( rStrm );
--#endif
-+ else
-+ {
-+ rComments->startElement( XML_t, FSEND );
-+ rComments->writeEscaped( XclXmlUtils::ToOUString( maOrigNoteText ) );
-+ rComments->endElement ( XML_t );
-+ }
- rComments->endElement( XML_text );
- rComments->endElement( XML_comment );
- }
-diff --git a/sc/source/filter/excel/xeformula.cxx sc/source/filter/excel/xeformula.cxx
-index 849ac08..69dd726 100644
---- sc/source/filter/excel/xeformula.cxx
-+++ sc/source/filter/excel/xeformula.cxx
-@@ -494,7 +494,7 @@ private:
- const SCsCOL mnMaxScCol; /// Maximum column index in Calc itself.
- const SCsROW mnMaxScRow; /// Maximum row index in Calc itself.
- const sal_uInt16 mnMaxColMask; /// Mask to delete invalid bits in column fields.
-- const sal_uInt16 mnMaxRowMask; /// Mask to delete invalid bits in row fields.
-+ const sal_uInt32 mnMaxRowMask; /// Mask to delete invalid bits in row fields.
- };
-
- // ----------------------------------------------------------------------------
-@@ -508,7 +508,7 @@ XclExpFmlaCompImpl::XclExpFmlaCompImpl( const XclExpRoot& rRoot ) :
- mnMaxScCol( static_cast< SCsCOL >( rRoot.GetScMaxPos().Col() ) ),
- mnMaxScRow( static_cast< SCsROW >( rRoot.GetScMaxPos().Row() ) ),
- mnMaxColMask( static_cast< sal_uInt16 >( rRoot.GetXclMaxPos().Col() ) ),
-- mnMaxRowMask( static_cast< sal_uInt16 >( rRoot.GetXclMaxPos().Row() ) )
-+ mnMaxRowMask( static_cast< sal_uInt32 >( rRoot.GetXclMaxPos().Row() ) )
- {
- // build the configuration map
- for( const XclExpCompConfig* pEntry = spConfigTable; pEntry != STATIC_TABLE_END( spConfigTable ); ++pEntry )
-@@ -1316,7 +1316,10 @@ void XclExpFmlaCompImpl::ProcessMatrix( const XclExpScToken& rTokData )
- // create the tArray token
- AppendOperandTokenId( GetTokenId( EXC_TOKID_ARRAY, EXC_TOKCLASS_ARR ), rTokData.mnSpaces );
- Append( static_cast< sal_uInt8 >( (meBiff == EXC_BIFF8) ? (nCols - 1) : nCols ) );
-- Append( static_cast< sal_uInt16 >( (meBiff == EXC_BIFF8) ? (nRows - 1) : nRows ) );
-+ if (meBiff == EXC_BIFF8)
-+ Append( static_cast< sal_uInt16 > ( nRows - 1 ) );
-+ else
-+ Append( static_cast< sal_uInt16 > ( nRows - 1 ) );
- Append( static_cast< sal_uInt32 >( 0 ) );
-
- // create the extended data containing the array values
-@@ -1835,7 +1838,7 @@ void XclExpFmlaCompImpl::ConvertRefData(
- rnScRow = mnMaxAbsRow;
- else if( (rnScRow < 0) || (rnScRow > mnMaxAbsRow) )
- rRefData.SetRowDeleted( TRUE );
-- rXclPos.mnRow = static_cast< sal_uInt16 >( rnScRow ) & mnMaxRowMask;
-+ rXclPos.mnRow = static_cast< sal_uInt32 >( rnScRow ) & mnMaxRowMask;
- }
- else
- {
-@@ -1846,8 +1849,8 @@ void XclExpFmlaCompImpl::ConvertRefData(
- rXclPos.mnCol = static_cast< sal_uInt16 >( nXclRelCol ) & mnMaxColMask;
-
- // convert row index (2-step-cast ScsROW->sal_Int16->sal_uInt16 to get all bits correctly)
-- sal_Int16 nXclRelRow = static_cast< sal_Int16 >( rRefData.IsRowRel() ? rRefData.nRelRow : rRefData.nRow );
-- rXclPos.mnRow = static_cast< sal_uInt16 >( nXclRelRow ) & mnMaxRowMask;
-+ sal_Int32 nXclRelRow = static_cast< sal_Int32 >( rRefData.IsRowRel() ? rRefData.nRelRow : rRefData.nRow );
-+ rXclPos.mnRow = static_cast< sal_uInt32 >( nXclRelRow ) & mnMaxRowMask;
-
- // resolve relative tab index if possible
- if( rRefData.IsTabRel() && !IsInGlobals() && (GetCurrScTab() < GetDoc().GetTableCount()) )
-@@ -1863,9 +1866,16 @@ void XclExpFmlaCompImpl::ConvertRefData(
- }
- else
- {
-- sal_uInt16& rnRelField = (meBiff <= EXC_BIFF5) ? rXclPos.mnRow : rXclPos.mnCol;
-- ::set_flag( rnRelField, EXC_TOK_REF_COLREL, rRefData.IsColRel() );
-- ::set_flag( rnRelField, EXC_TOK_REF_ROWREL, rRefData.IsRowRel() );
-+ if (meBiff <= EXC_BIFF5)
-+ {
-+ ::set_flag( rXclPos.mnRow, EXC_TOK_REF_ROWREL, rRefData.IsColRel() );
-+ ::set_flag( rXclPos.mnRow, EXC_TOK_REF_ROWREL, rRefData.IsRowRel() );
-+ }
-+ else
-+ {
-+ ::set_flag( rXclPos.mnCol, EXC_TOK_REF_COLREL, rRefData.IsColRel() );
-+ ::set_flag( rXclPos.mnCol, EXC_TOK_REF_COLREL, rRefData.IsRowRel() );
-+ }
- }
- }
-
-diff --git sc/source/filter/excel/xehelper.cxx sc/source/filter/excel/xehelper.cxx
-index 7dbe4b8..ca3fc38 100644
---- sc/source/filter/excel/xehelper.cxx
-+++ sc/source/filter/excel/xehelper.cxx
-@@ -159,7 +162,7 @@ namespace {
- inline void lclFillAddress( XclAddress& rXclPos, SCCOL nScCol, SCROW nScRow )
- {
- rXclPos.mnCol = static_cast< sal_uInt16 >( nScCol );
-- rXclPos.mnRow = static_cast< sal_uInt16 >( nScRow );
-+ rXclPos.mnRow = static_cast< sal_uInt32 >( nScRow );
- }
-
- } // namespace
-diff --git sc/source/filter/excel/xepage.cxx sc/source/filter/excel/xepage.cxx
-index f99b732..d79e950 100644
---- sc/source/filter/excel/xepage.cxx
-+++ sc/source/filter/excel/xepage.cxx
-@@ -310,7 +313,7 @@ XclExpPageSettings::XclExpPageSettings( const XclExpRoot& rRoot ) :
- set<SCROW> aRowBreaks;
- rDoc.GetAllRowBreaks(aRowBreaks, nScTab, false, true);
-
-- SCROW nMaxRow = numeric_limits<sal_uInt16>::max();
-+ SCROW nMaxRow = numeric_limits<sal_uInt32>::max();
- for (set<SCROW>::const_iterator itr = aRowBreaks.begin(), itrEnd = aRowBreaks.end(); itr != itrEnd; ++itr)
- {
- SCROW nRow = *itr;
-diff --git sc/source/filter/excel/xepivot.cxx sc/source/filter/excel/xepivot.cxx
-index c19bee2..57409c1 100644
---- sc/source/filter/excel/xepivot.cxx
-+++ sc/source/filter/excel/xepivot.cxx
-@@ -1593,9 +1593,9 @@ void XclExpPivotTable::Finalize()
-
- // update output range (initialized in ctor)
- sal_uInt16& rnXclCol1 = maPTInfo.maOutXclRange.maFirst.mnCol;
-- sal_uInt16& rnXclRow1 = maPTInfo.maOutXclRange.maFirst.mnRow;
-+ sal_uInt32& rnXclRow1 = maPTInfo.maOutXclRange.maFirst.mnRow;
- sal_uInt16& rnXclCol2 = maPTInfo.maOutXclRange.maLast.mnCol;
-- sal_uInt16& rnXclRow2 = maPTInfo.maOutXclRange.maLast.mnRow;
-+ sal_uInt32& rnXclRow2 = maPTInfo.maOutXclRange.maLast.mnRow;
- // exclude page fields from output range
- rnXclRow1 = rnXclRow1 + maPTInfo.mnPageFields;
- // exclude filter button from output range
-@@ -1607,7 +1607,7 @@ void XclExpPivotTable::Finalize()
-
- // data area
- sal_uInt16& rnDataXclCol = maPTInfo.maDataXclPos.mnCol;
-- sal_uInt16& rnDataXclRow = maPTInfo.maDataXclPos.mnRow;
-+ sal_uInt32& rnDataXclRow = maPTInfo.maDataXclPos.mnRow;
- rnDataXclCol = rnXclCol1 + maPTInfo.mnRowFields;
- rnDataXclRow = rnXclRow1 + maPTInfo.mnColFields + 1;
- if( maDataFields.empty() )
-diff --git sc/source/filter/excel/xestream.cxx sc/source/filter/excel/xestream.cxx
-index 14bc6b4..0568512 100644
---- sc/source/filter/excel/xestream.cxx
-+++ sc/source/filter/excel/xestream.cxx
-@@ -802,8 +802,8 @@ static ScAddress lcl_ToAddress( const XclAddress& rAddress )
- // For some reason, ScRange::Format() returns omits row numbers if
- // the row is >= MAXROW or the column is >= MAXCOL, and Excel doesn't
- // like "A:IV" (i.e. no row numbers). Prevent this.
-- aAddress.SetRow( std::min<sal_Int32>( rAddress.mnRow, MAXROW-1 ) );
-- aAddress.SetCol( static_cast<sal_Int16>(std::min<sal_Int32>( rAddress.mnCol, MAXCOL-1 )) );
-+ aAddress.SetRow( std::min<sal_Int32>( rAddress.mnRow, MAXROW ) );
-+ aAddress.SetCol( static_cast<sal_Int16>(std::min<sal_Int32>( rAddress.mnCol, MAXCOL )) );
-
- return aAddress;
- }
-diff --git sc/source/filter/excel/xetable.cxx sc/source/filter/excel/xetable.cxx
-index 92dd71e..bf7af82 100644
---- sc/source/filter/excel/xetable.cxx
-+++ sc/source/filter/excel/xetable.cxx
-@@ -81,7 +81,7 @@ XclExpRangeFmlaBase::XclExpRangeFmlaBase(
- maXclRange( ScAddress::UNINITIALIZED ),
- maBaseXclPos( ScAddress::UNINITIALIZED )
- {
-- maBaseXclPos.Set( static_cast< sal_uInt16 >( rScPos.Col() ), static_cast< sal_uInt16 >( rScPos.Row() ) );
-+ maBaseXclPos.Set( static_cast< sal_uInt16 >( rScPos.Col() ), static_cast< sal_uInt32 >( rScPos.Row() ) );
- maXclRange.maFirst = maXclRange.maLast = maBaseXclPos;
- }
-
-@@ -93,13 +93,13 @@ XclExpRangeFmlaBase::XclExpRangeFmlaBase(
- {
- maXclRange.Set(
- static_cast< sal_uInt16 >( rScRange.aStart.Col() ),
-- static_cast< sal_uInt16 >( rScRange.aStart.Row() ),
-+ static_cast< sal_uInt32 >( rScRange.aStart.Row() ),
- static_cast< sal_uInt16 >( rScRange.aEnd.Col() ),
-- static_cast< sal_uInt16 >( rScRange.aEnd.Row() ) );
-+ static_cast< sal_uInt32 >( rScRange.aEnd.Row() ) );
- maBaseXclPos = maXclRange.maFirst;
- }
-
--bool XclExpRangeFmlaBase::IsBasePos( sal_uInt16 nXclCol, sal_uInt16 nXclRow ) const
-+bool XclExpRangeFmlaBase::IsBasePos( sal_uInt16 nXclCol, sal_uInt32 nXclRow ) const
- {
- return (maBaseXclPos.mnCol == nXclCol) && (maBaseXclPos.mnRow == nXclRow);
- }
-@@ -107,7 +107,7 @@ bool XclExpRangeFmlaBase::IsBasePos( sal_uInt16 nXclCol, sal_uInt16 nXclRow ) co
- void XclExpRangeFmlaBase::Extend( const ScAddress& rScPos )
- {
- sal_uInt16 nXclCol = static_cast< sal_uInt16 >( rScPos.Col() );
-- sal_uInt16 nXclRow = static_cast< sal_uInt16 >( rScPos.Row() );
-+ sal_uInt32 nXclRow = static_cast< sal_uInt32 >( rScPos.Row() );
- maXclRange.maFirst.mnCol = ::std::min( maXclRange.maFirst.mnCol, nXclCol );
- maXclRange.maFirst.mnRow = ::std::min( maXclRange.maFirst.mnRow, nXclRow );
- maXclRange.maLast.mnCol = ::std::max( maXclRange.maLast.mnCol, nXclCol );
-@@ -252,9 +252,9 @@ XclExpTableop::XclExpTableop( const ScAddress& rScPos,
- XclExpRangeFmlaBase( EXC_ID3_TABLEOP, 16, rScPos ),
- mnLastAppXclCol( static_cast< sal_uInt16 >( rScPos.Col() ) ),
- mnColInpXclCol( static_cast< sal_uInt16 >( rRefs.maColFirstScPos.Col() ) ),
-- mnColInpXclRow( static_cast< sal_uInt16 >( rRefs.maColFirstScPos.Row() ) ),
-+ mnColInpXclRow( static_cast< sal_uInt32 >( rRefs.maColFirstScPos.Row() ) ),
- mnRowInpXclCol( static_cast< sal_uInt16 >( rRefs.maRowFirstScPos.Col() ) ),
-- mnRowInpXclRow( static_cast< sal_uInt16 >( rRefs.maRowFirstScPos.Row() ) ),
-+ mnRowInpXclRow( static_cast< sal_uInt32 >( rRefs.maRowFirstScPos.Row() ) ),
- mnScMode( nScMode ),
- mbValid( false )
- {
-@@ -263,7 +263,7 @@ XclExpTableop::XclExpTableop( const ScAddress& rScPos,
- bool XclExpTableop::TryExtend( const ScAddress& rScPos, const XclMultipleOpRefs& rRefs )
- {
- sal_uInt16 nXclCol = static_cast< sal_uInt16 >( rScPos.Col() );
-- sal_uInt16 nXclRow = static_cast< sal_uInt16 >( rScPos.Row() );
-+ sal_uInt32 nXclRow = static_cast< sal_uInt32 >( rScPos.Row() );
-
- bool bOk = IsAppendable( nXclCol, nXclRow );
- if( bOk )
-@@ -374,7 +374,7 @@ void XclExpTableop::Save( XclExpStream& rStrm )
- XclExpRangeFmlaBase::Save( rStrm );
- }
-
--bool XclExpTableop::IsAppendable( sal_uInt16 nXclCol, sal_uInt16 nXclRow ) const
-+bool XclExpTableop::IsAppendable( sal_uInt16 nXclCol, sal_uInt32 nXclRow ) const
- {
- return ((nXclCol == mnLastAppXclCol + 1) && (nXclRow == maXclRange.maFirst.mnRow)) ||
- ((nXclCol == mnLastAppXclCol + 1) && (nXclCol <= maXclRange.maLast.mnCol) && (nXclRow == maXclRange.maLast.mnRow)) ||
-@@ -1747,7 +1747,7 @@ void XclExpDefrowheight::WriteBody( XclExpStream& rStrm )
-
- // ----------------------------------------------------------------------------
-
--XclExpRow::XclExpRow( const XclExpRoot& rRoot, sal_uInt16 nXclRow,
-+XclExpRow::XclExpRow( const XclExpRoot& rRoot, sal_uInt32 nXclRow,
- XclExpRowOutlineBuffer& rOutlineBfr, bool bAlwaysEmpty ) :
- XclExpRecord( EXC_ID3_ROW, 16 ),
- XclExpRoot( rRoot ),
-@@ -2061,7 +2061,7 @@ void XclExpRowBuffer::AppendCell( XclExpCellRef xCell, bool bIsMergedBase )
- void XclExpRowBuffer::CreateRows( SCROW nFirstFreeScRow )
- {
- if( nFirstFreeScRow > 0 )
-- GetOrCreateRow( static_cast< sal_uInt16 >( nFirstFreeScRow - 1 ), true );
-+ GetOrCreateRow( static_cast< sal_uInt32 >( nFirstFreeScRow - 1 ), true );
- }
-
- void XclExpRowBuffer::Finalize( XclExpDefaultRowData& rDefRowData, const ScfUInt16Vec& rColXFIndexes )
-@@ -2092,7 +2092,7 @@ void XclExpRowBuffer::Finalize( XclExpDefaultRowData& rDefRowData, const ScfUInt
- #i59220# Tolerance of +-128 rows for inserted/removed rows. */
- if( (nDefaultXclRow < 31872) || (nDefaultXclRow > 32128) )
- {
-- sal_uInt16 nLastXclRow = static_cast< sal_uInt16 >( GetMaxPos().Row() );
-+ sal_uInt32 nLastXclRow = static_cast< sal_uInt32 >( GetMaxPos().Row() );
- if( nDefaultXclRow <= nLastXclRow )
- {
- // create a dummy ROW record and fill aMaxDefData
-@@ -2154,7 +2154,7 @@ void XclExpRowBuffer::Finalize( XclExpDefaultRowData& rDefRowData, const ScfUInt
- // find used row range
- if( xRow->IsEnabled() )
- {
-- sal_uInt16 nXclRow = xRow->GetXclRow();
-+ sal_uInt32 nXclRow = xRow->GetXclRow();
- nFirstUsedXclRow = ::std::min< sal_uInt32 >( nFirstUsedXclRow, nXclRow );
- nFirstFreeXclRow = ::std::max< sal_uInt32 >( nFirstFreeXclRow, nXclRow + 1 );
- }
-@@ -2177,7 +2177,7 @@ void XclExpRowBuffer::Save( XclExpStream& rStrm )
- // save in blocks of 32 rows, each block contains first all ROWs, then all cells
- size_t nSize = maRowList.GetSize();
- size_t nBlockStart = 0;
-- sal_uInt16 nStartXclRow = (nSize == 0) ? 0 : maRowList.GetRecord( 0 )->GetXclRow();
-+ sal_uInt32 nStartXclRow = (nSize == 0) ? 0 : maRowList.GetRecord( 0 )->GetXclRow();
-
- while( nBlockStart < nSize )
- {
-@@ -2227,7 +2227,7 @@ XclExpDimensions* XclExpRowBuffer::GetDimensions()
- return &maDimensions;
- }
-
--XclExpRow& XclExpRowBuffer::GetOrCreateRow( sal_uInt16 nXclRow, bool bRowAlwaysEmpty )
-+XclExpRow& XclExpRowBuffer::GetOrCreateRow( sal_uInt32 nXclRow, bool bRowAlwaysEmpty )
- {
- if( !mpLastUsedRow || (mnLastUsedXclRow != nXclRow) )
- {
-@@ -2235,7 +2235,7 @@ XclExpRow& XclExpRowBuffer::GetOrCreateRow( sal_uInt16 nXclRow, bool bRowAlwaysE
- // do not use sal_uInt16 for nFirstFreeXclRow, would cause loop in full sheets
- for( size_t nFirstFreeXclRow = maRowList.GetSize(); nFirstFreeXclRow <= nXclRow; ++nFirstFreeXclRow )
- maRowList.AppendNewRecord( new XclExpRow(
-- GetRoot(), static_cast< sal_uInt16 >( nFirstFreeXclRow ), maOutlineBfr, bRowAlwaysEmpty ) );
-+ GetRoot(), static_cast< sal_uInt32 >( nFirstFreeXclRow ), maOutlineBfr, bRowAlwaysEmpty ) );
-
- mpLastUsedRow = maRowList.GetRecord( nXclRow ).get();
- mnLastUsedXclRow = nXclRow;
-@@ -2320,7 +2320,7 @@ XclExpCellTable::XclExpCellTable( const XclExpRoot& rRoot ) :
- SCCOL nLastScCol = aIt.GetEndCol();
- ScAddress aScPos( nScCol, nScRow, nScTab );
-
-- XclAddress aXclPos( static_cast< sal_uInt16 >( nScCol ), static_cast< sal_uInt16 >( nScRow ) );
-+ XclAddress aXclPos( static_cast< sal_uInt16 >( nScCol ), static_cast< sal_uInt32 >( nScRow ) );
- sal_uInt16 nLastXclCol = static_cast< sal_uInt16 >( nLastScCol );
-
- const ScBaseCell* pScCell = aIt.GetCell();
-diff --git sc/source/filter/excel/xihelper.cxx sc/source/filter/excel/xihelper.cxx
-index 0e44ba6..d2fd000 100644
---- sc/source/filter/excel/xihelper.cxx
-+++ sc/source/filter/excel/xihelper.cxx
-@@ -126,7 +129,7 @@ bool XclImpAddressConverter::ConvertRange( ScRange& rScRange,
-
- // check & correct end position
- sal_uInt16 nXclCol2 = rXclRange.maLast.mnCol;
-- sal_uInt16 nXclRow2 = rXclRange.maLast.mnRow;
-+ sal_uInt32 nXclRow2 = rXclRange.maLast.mnRow;
- if( !CheckAddress( rXclRange.maLast, bWarn ) )
- {
- nXclCol2 = ::std::min( nXclCol2, mnMaxCol );
-diff --git sc/source/filter/excel/xlescher.cxx sc/source/filter/excel/xlescher.cxx
-index a2a64b8..841eeb7 100644
---- sc/source/filter/excel/xlescher.cxx
-+++ sc/source/filter/excel/xlescher.cxx
-@@ -138,7 +138,7 @@ void lclGetColFromX(
- /** Calculates an object row position from a drawing layer Y position (in twips). */
- void lclGetRowFromY(
- ScDocument& rDoc, SCTAB nScTab,
-- sal_uInt16& rnXclRow, sal_uInt16& rnOffset, sal_uInt16 nXclStartRow,
-+ sal_uInt32& rnXclRow, sal_uInt16& rnOffset, sal_uInt32 nXclStartRow,
- long& rnStartH, long nY, double fScale )
- {
- // rnStartH in conjunction with nXclStartRow is used as buffer for previously calculated height
-diff -pur sc/source/filter/inc/xetable.hxx sc/source/filter/inc/xetable.hxx
---- sc/source/filter/inc/xetable.hxx 2009-10-16 10:32:55.000000000 +0200
-+++ sc/source/filter/inc/xetable.hxx 2009-10-23 15:19:13.456138907 +0200
-@@ -73,7 +73,7 @@ class XclExpRangeFmlaBase : public XclEx
- {
- public:
- /** Returns true, if the passed cell position is equal to own base position. */
-- bool IsBasePos( sal_uInt16 nXclCol, sal_uInt16 nXclRow ) const;
-+ bool IsBasePos( sal_uInt16 nXclCol, sal_uInt32 nXclRow ) const;
-
- /** Derived classes create the token array for a corresponding FORMULA cell record. */
- virtual XclTokenArrayRef CreateCellTokenArray( const XclExpRoot& rRoot ) const = 0;
-@@ -231,7 +231,7 @@ public:
-
- private:
- /** Returns true, if the passed cell position can be appended to this record. */
-- bool IsAppendable( sal_uInt16 nXclCol, sal_uInt16 nXclRow ) const;
-+ bool IsAppendable( sal_uInt16 nXclCol, sal_uInt32 nXclRow ) const;
-
- /** Writes the contents of the TABLEOP record. */
- virtual void WriteBody( XclExpStream& rStrm );
-@@ -240,9 +240,9 @@ private:
- SCTAB mnScTab; /// Sheet index of this record.
- sal_uInt16 mnLastAppXclCol;/// Column index of last appended cell.
- sal_uInt16 mnColInpXclCol; /// Column index of column input cell.
-- sal_uInt16 mnColInpXclRow; /// Row index of column input cell.
-+ sal_uInt32 mnColInpXclRow; /// Row index of column input cell.
- sal_uInt16 mnRowInpXclCol; /// Column index of row input cell.
-- sal_uInt16 mnRowInpXclRow; /// Row index of row input cell.
-+ sal_uInt32 mnRowInpXclRow; /// Row index of row input cell.
- sal_uInt8 mnScMode; /// Type of the multiple operation (Calc constant).
- bool mbValid; /// true = Contains valid references.
- };
-@@ -289,7 +289,7 @@ public:
- /** Returns the (first) Excel column index of the cell(s). */
- inline sal_uInt16 GetXclCol() const { return maXclPos.mnCol; }
- /** Returns the Excel row index of the cell. */
-- inline sal_uInt16 GetXclRow() const { return maXclPos.mnRow; }
-+ inline sal_uInt32 GetXclRow() const { return maXclPos.mnRow; }
-
- /** Derived classes return the column index of the last contained cell. */
- virtual sal_uInt16 GetLastXclCol() const = 0;
-@@ -317,7 +317,7 @@ protected:
- /** Sets this record to a new column position. */
- inline void SetXclCol( sal_uInt16 nXclCol ) { maXclPos.mnCol = nXclCol; }
- /** Sets this record to a new row position. */
-- inline void SetXclRow( sal_uInt16 nXclRow ) { maXclPos.mnRow = nXclRow; }
-+ inline void SetXclRow( sal_uInt32 nXclRow ) { maXclPos.mnRow = nXclRow; }
-
- private:
- XclAddress maXclPos; /// Address of the cell.
-@@ -900,11 +900,11 @@ public:
- /** Constructs the ROW record and converts the Calc row settings.
- @param bAlwaysEmpty true = This row will not be filled with blank cells
- in the Finalize() function. */
-- explicit XclExpRow( const XclExpRoot& rRoot, sal_uInt16 nXclRow,
-- XclExpRowOutlineBuffer& rOutlineBfr, bool bAlwaysEmpty );
-+ explicit XclExpRow( const XclExpRoot& rRoot, sal_uInt32 nXclRow,
-+ XclExpRowOutlineBuffer& rOutlineBfr, bool bAlwaysEmpty );
-
- /** Returns the excel row index of this ROW record. */
-- inline sal_uInt16 GetXclRow() const { return mnXclRow; }
-+ inline sal_uInt32 GetXclRow() const { return mnXclRow; }
- /** Returns the height of the row in twips. */
- inline sal_uInt16 GetHeight() const { return mnHeight; }
- /** Returns true, if this row does not contain at least one valid cell. */
-@@ -948,7 +948,7 @@ public:
-
- private:
- /** Initializes the record data. Called from constructors. */
-- void Init( sal_uInt16 nXclRow, XclExpRowOutlineBuffer* pOutlineBfr );
-+ void Init( sal_uInt32 nXclRow, XclExpRowOutlineBuffer* pOutlineBfr );
- /** Inserts a cell at the specified list position, tries to merge with neighbors. */
- void InsertCell( XclExpCellRef xCell, size_t nPos, bool bIsMergedBase );
-
-@@ -959,7 +959,7 @@ private:
- typedef XclExpRecordList< XclExpCellBase > XclExpCellList;
-
- XclExpCellList maCellList; /// List of cell records for this row.
-- sal_uInt16 mnXclRow; /// Excel row index of this row.
-+ sal_uInt32 mnXclRow; /// Excel row index of this row.
- sal_uInt16 mnHeight; /// Row height in twips.
- sal_uInt16 mnFlags; /// Flags for the ROW record.
- sal_uInt16 mnXFIndex; /// Default row formatting.
-@@ -1002,7 +1002,7 @@ private:
- /** Returns access to the specified ROW record. Inserts preceding missing ROW records.
- @param bRowAlwaysEmpty true = Created rows will not be filled with blank cells
- in the XclExpRow::Finalize() function. */
-- XclExpRow& GetOrCreateRow( sal_uInt16 nXclRow, bool bRowAlwaysEmpty );
-+ XclExpRow& GetOrCreateRow( sal_uInt32 nXclRow, bool bRowAlwaysEmpty );
-
- private:
- typedef XclExpRecordList< XclExpRow > XclExpRowList;
-@@ -1012,7 +1012,7 @@ private:
- XclExpRowOutlineBuffer maOutlineBfr; /// Buffer for row outline groups.
- XclExpDimensions maDimensions; /// DIMENSIONS record for used area.
- XclExpRow* mpLastUsedRow; /// Last used row for faster access.
-- sal_uInt16 mnLastUsedXclRow; /// Last used row for faster access.
-+ sal_uInt32 mnLastUsedXclRow; /// Last used row for faster access.
- };
-
- // ============================================================================
-diff -pur sc/source/filter/inc/xladdress.hxx sc/source/filter/inc/xladdress.hxx
---- sc/source/filter/inc/xladdress.hxx 2009-10-16 10:32:55.000000000 +0200
-+++ sc/source/filter/inc/xladdress.hxx 2009-10-23 15:19:13.456138907 +0200
-@@ -44,13 +44,13 @@ class XclExpStream;
- struct XclAddress
- {
- sal_uInt16 mnCol;
-- sal_uInt16 mnRow;
-+ sal_uInt32 mnRow;
-
- inline explicit XclAddress( ScAddress::Uninitialized ) {}
- inline explicit XclAddress() : mnCol( 0 ), mnRow( 0 ) {}
-- inline explicit XclAddress( sal_uInt16 nCol, sal_uInt16 nRow ) : mnCol( nCol ), mnRow( nRow ) {}
-+ inline explicit XclAddress( sal_uInt16 nCol, sal_uInt32 nRow ) : mnCol( nCol ), mnRow( nRow ) {}
-
-- inline void Set( sal_uInt16 nCol, sal_uInt16 nRow ) { mnCol = nCol; mnRow = nRow; }
-+ inline void Set( sal_uInt16 nCol, sal_uInt32 nRow ) { mnCol = nCol; mnRow = nRow; }
-
- void Read( XclImpStream& rStrm, bool bCol16Bit = true );
- void Write( XclExpStream& rStrm, bool bCol16Bit = true ) const;
-@@ -90,16 +90,16 @@ struct XclRange
- inline explicit XclRange() {}
- inline explicit XclRange( const XclAddress& rPos ) : maFirst( rPos ), maLast( rPos ) {}
- inline explicit XclRange( const XclAddress& rFirst, const XclAddress& rLast ) : maFirst( rFirst ), maLast( rLast ) {}
-- inline explicit XclRange( sal_uInt16 nCol1, sal_uInt16 nRow1, sal_uInt16 nCol2, sal_uInt16 nRow2 ) :
-+ inline explicit XclRange( sal_uInt16 nCol1, sal_uInt32 nRow1, sal_uInt16 nCol2, sal_uInt32 nRow2 ) :
- maFirst( nCol1, nRow1 ), maLast( nCol2, nRow2 ) {}
-
- inline void Set( const XclAddress& rFirst, const XclAddress& rLast )
- { maFirst = rFirst; maLast = rLast; }
-- inline void Set( sal_uInt16 nCol1, sal_uInt16 nRow1, sal_uInt16 nCol2, sal_uInt16 nRow2 )
-+ inline void Set( sal_uInt16 nCol1, sal_uInt32 nRow1, sal_uInt16 nCol2, sal_uInt32 nRow2 )
- { maFirst.Set( nCol1, nRow1 ); maLast.Set( nCol2, nRow2 ); }
-
- inline sal_uInt16 GetColCount() const { return maLast.mnCol - maFirst.mnCol + 1; }
-- inline sal_uInt16 GetRowCount() const { return maLast.mnRow - maFirst.mnRow + 1; }
-+ inline sal_uInt32 GetRowCount() const { return maLast.mnRow - maFirst.mnRow + 1; }
- bool Contains( const XclAddress& rPos ) const;
-
- void Read( XclImpStream& rStrm, bool bCol16Bit = true );
-@@ -188,7 +188,7 @@ protected:
- XclTracer& mrTracer; /// Tracer for invalid addresses.
- ScAddress maMaxPos; /// Default maximum position.
- sal_uInt16 mnMaxCol; /// Maximum column index, as 16-bit value.
-- sal_uInt16 mnMaxRow; /// Maximum row index, as 16-bit value.
-+ sal_uInt32 mnMaxRow; /// Maximum row index
- bool mbColTrunc; /// Flag for "columns truncated" warning box.
- bool mbRowTrunc; /// Flag for "rows truncated" warning box.
- bool mbTabTrunc; /// Flag for "tables truncated" warning box.
-diff -pur sc/source/filter/inc/xlconst.hxx sc/source/filter/inc/xlconst.hxx
---- sc/source/filter/inc/xlconst.hxx 2009-10-16 10:32:55.000000000 +0200
-+++ sc/source/filter/inc/xlconst.hxx 2009-10-23 15:19:13.466128493 +0200
-@@ -74,7 +74,7 @@ const SCROW EXC_MAXROW5
- const SCTAB EXC_MAXTAB5 = EXC_MAXTAB4;
-
- const SCCOL EXC_MAXCOL8 = EXC_MAXCOL5;
--const SCROW EXC_MAXROW8 = 65535;
-+const SCROW EXC_MAXROW8 = MAXROWCOUNT_DEFINE;
- const SCTAB EXC_MAXTAB8 = EXC_MAXTAB5;
-
- const sal_uInt16 EXC_NOTAB = SAL_MAX_UINT16; /// An invalid Excel sheet index, for common use.
-diff -pur sc/source/filter/inc/xlformula.hxx sc/source/filter/inc/xlformula.hxx
---- sc/source/filter/inc/xlformula.hxx 2009-10-16 10:32:55.000000000 +0200
-+++ sc/source/filter/inc/xlformula.hxx 2009-10-23 15:19:13.466128493 +0200
-@@ -139,7 +146,7 @@ const sal_uInt8 EXC_TOK_FUNCVAR_PROMPT
- const sal_uInt8 EXC_TOK_FUNCVAR_COUNTMASK = 0x7F; /// Mask for parameter count.
-
- const sal_uInt16 EXC_TOK_REF_COLREL = 0x4000; /// True = Column is relative.
--const sal_uInt16 EXC_TOK_REF_ROWREL = 0x8000; /// True = Row is relative.
-+const sal_uInt32 EXC_TOK_REF_ROWREL = 0x8000; /// True = Row is relative.
-
- const sal_uInt8 EXC_TOK_NLR_ERR = 0x01; /// NLR: Invalid/deleted.
- const sal_uInt8 EXC_TOK_NLR_ROWR = 0x02; /// NLR: Row index.
---
-1.6.0.rc1.49.g98a8
More information about the ooo-build-commit
mailing list