Line data Source code
1 : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 : /*
3 : * This file is part of the LibreOffice project.
4 : *
5 : * This Source Code Form is subject to the terms of the Mozilla Public
6 : * License, v. 2.0. If a copy of the MPL was not distributed with this
7 : * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 : */
9 :
10 : #ifndef SC_TYPES_HXX
11 : #define SC_TYPES_HXX
12 :
13 : #include "sal/types.h"
14 :
15 : #include <boost/intrusive_ptr.hpp>
16 :
17 : class ScMatrix;
18 :
19 : typedef ::boost::intrusive_ptr<ScMatrix> ScMatrixRef;
20 : typedef ::boost::intrusive_ptr<const ScMatrix> ScConstMatrixRef;
21 :
22 : class ScToken;
23 : typedef ::boost::intrusive_ptr<ScToken> ScTokenRef;
24 :
25 : typedef sal_uInt8 ScMatValType;
26 : const ScMatValType SC_MATVAL_VALUE = 0x00;
27 : const ScMatValType SC_MATVAL_BOOLEAN = 0x01;
28 : const ScMatValType SC_MATVAL_STRING = 0x02;
29 : const ScMatValType SC_MATVAL_EMPTY = SC_MATVAL_STRING | 0x04; // STRING plus flag
30 : const ScMatValType SC_MATVAL_EMPTYPATH = SC_MATVAL_EMPTY | 0x08; // EMPTY plus flag
31 : const ScMatValType SC_MATVAL_NONVALUE = SC_MATVAL_EMPTYPATH; // mask of all non-value bits
32 :
33 : struct ScFormulaCellGroup;
34 : typedef ::boost::intrusive_ptr<ScFormulaCellGroup> ScFormulaCellGroupRef;
35 :
36 : /**
37 : * When vectorization is enabled, we could potentially mass-calculate a
38 : * series of formula token arrays in adjacent formula cells in one step,
39 : * provided that they all contain identical set of tokens.
40 : */
41 : enum ScFormulaVectorState
42 : {
43 : FormulaVectorDisabled = 0,
44 : FormulaVectorEnabled,
45 : FormulaVectorCheckReference,
46 : FormulaVectorUnknown
47 : };
48 :
49 : namespace sc {
50 :
51 : const sal_uInt16 MatrixEdgeNothing = 0;
52 : const sal_uInt16 MatrixEdgeInside = 1;
53 : const sal_uInt16 MatrixEdgeBottom = 2;
54 : const sal_uInt16 MatrixEdgeLeft = 4;
55 : const sal_uInt16 MatrixEdgeTop = 8;
56 : const sal_uInt16 MatrixEdgeRight = 16;
57 : const sal_uInt16 MatrixEdgeOpen = 32;
58 :
59 : enum GroupCalcState
60 : {
61 : GroupCalcDisabled = 0,
62 : GroupCalcEnabled,
63 : GroupCalcRunning,
64 : };
65 :
66 : enum OpenCLKernelState
67 : {
68 : OpenCLKernelNone = 0,
69 : OpenCLKernelCompilationScheduled,
70 : OpenCLKernelBinaryCreated
71 : };
72 :
73 0 : struct RangeMatrix
74 : {
75 : ScMatrixRef mpMat;
76 : sal_Int32 mnCol1;
77 : sal_Int32 mnRow1;
78 : sal_Int32 mnTab1;
79 : sal_Int32 mnCol2;
80 : sal_Int32 mnRow2;
81 : sal_Int32 mnTab2;
82 :
83 : RangeMatrix();
84 :
85 : bool isRangeValid() const;
86 : };
87 :
88 : }
89 :
90 : #endif
91 :
92 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|