summaryrefslogtreecommitdiffstats
path: root/sc/inc/types.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'sc/inc/types.hxx')
-rw-r--r--sc/inc/types.hxx150
1 files changed, 150 insertions, 0 deletions
diff --git a/sc/inc/types.hxx b/sc/inc/types.hxx
new file mode 100644
index 000000000..e3a019da5
--- /dev/null
+++ b/sc/inc/types.hxx
@@ -0,0 +1,150 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#pragma once
+
+#include <sal/types.h>
+
+#include <boost/intrusive_ptr.hpp>
+#include <o3tl/typed_flags_set.hxx>
+
+class ScMatrix;
+
+// The typedefs
+typedef sal_Int32 SCROW;
+typedef sal_Int16 SCCOL;
+typedef sal_Int16 SCTAB;
+typedef sal_Int32 SCCOLROW; ///< a type capable of holding either SCCOL or SCROW
+
+typedef ::boost::intrusive_ptr<ScMatrix> ScMatrixRef;
+typedef ::boost::intrusive_ptr<const ScMatrix> ScConstMatrixRef;
+
+namespace formula { class FormulaToken; }
+typedef ::boost::intrusive_ptr<formula::FormulaToken> ScTokenRef;
+
+enum class ScMatValType : sal_uInt8 {
+ Value = 0x00,
+ Boolean = 0x01,
+ String = 0x02,
+ Empty = String | 0x04, // STRING plus flag
+ EmptyPath = Empty | 0x08, // EMPTY plus flag
+ NonvalueMask = EmptyPath // mask of all non-value bits
+};
+namespace o3tl{
+ template<> struct typed_flags<ScMatValType> : o3tl::is_typed_flags<ScMatValType, 0x0f> {};
+}
+
+struct ScFormulaCellGroup;
+typedef ::boost::intrusive_ptr<ScFormulaCellGroup> ScFormulaCellGroupRef;
+
+/**
+ * When vectorization is enabled, we could potentially mass-calculate a
+ * series of formula token arrays in adjacent formula cells in one step,
+ * provided that they all contain identical set of tokens.
+ */
+enum ScFormulaVectorState
+{
+ FormulaVectorDisabled,
+ FormulaVectorDisabledNotInSubSet,
+ FormulaVectorDisabledByOpCode,
+ FormulaVectorDisabledByStackVariable,
+
+ FormulaVectorEnabled,
+ FormulaVectorCheckReference,
+ FormulaVectorUnknown
+};
+
+namespace sc {
+
+enum class MatrixEdge{
+ Nothing = 0,
+ Inside = 1,
+ Bottom = 2,
+ Left = 4,
+ Top = 8,
+ Right = 16,
+ Open = 32
+}; // typed_flags, template outside of sc namespace
+
+enum GroupCalcState
+{
+ GroupCalcDisabled = 0,
+ GroupCalcEnabled,
+ GroupCalcRunning,
+};
+
+struct RangeMatrix
+{
+ ScMatrixRef mpMat;
+ sal_Int32 mnCol1;
+ sal_Int32 mnRow1;
+ sal_Int32 mnTab1;
+ sal_Int32 mnCol2;
+ sal_Int32 mnRow2;
+ sal_Int32 mnTab2;
+
+ RangeMatrix();
+
+ bool isRangeValid() const;
+};
+
+struct MultiDataCellState
+{
+ enum StateType : sal_uInt8 { Invalid = 0, Empty, HasOneCell, HasMultipleCells };
+
+ SCROW mnRow1; //< first non-empty row
+ SCCOL mnCol1; //< first non-empty column
+ StateType meState;
+
+ MultiDataCellState();
+ MultiDataCellState( StateType eState );
+};
+
+enum class AreaOverlapType
+{
+ Inside,
+ InsideOrOverlap,
+ OneRowInside,
+ OneColumnInside
+};
+
+enum class ListenerGroupType
+{
+ Group,
+ Both
+};
+
+enum StartListeningType
+{
+ ConvertToGroupListening,
+ SingleCellListening,
+ NoListening
+};
+
+}
+
+namespace o3tl{
+ template<> struct typed_flags<sc::MatrixEdge> : o3tl::is_typed_flags<sc::MatrixEdge, 63> {};
+}
+
+// Type of query done by ScQueryCellIteratorBase.
+enum class ScQueryCellIteratorType
+{
+ Generic,
+ CountIf
+};
+
+// Type of cell access done by ScQueryCellIteratorBase.
+enum class ScQueryCellIteratorAccess
+{
+ Direct, // Accessing directly cells.
+ SortedCache // Using ScSortedRangeCache.
+};
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */