LibreOffice Module sc (master) 1
token.hxx
Go to the documentation of this file.
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 * This file incorporates work covered by the following license notice:
10 *
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18 */
19
20#pragma once
21
22#include <memory>
23#include <vector>
24
25#include <formula/opcode.hxx>
26#include "refdata.hxx"
27#include "scdllapi.h"
28#include <formula/token.hxx>
29#include "calcmacros.hxx"
30#include "types.hxx"
31
32// Matrix token constants.
33#define MATRIX_TOKEN_HAS_RANGE 1
34
35class ScJumpMatrix;
36class ScMatrix;
37struct ScSheetLimits;
38
39typedef ::std::vector< ScComplexRefData > ScRefList;
40
41#if DEBUG_FORMULA_COMPILER
42void DumpToken(formula::FormulaToken const & rToken);
43#endif
44
57formula::FormulaTokenRef extendRangeReference( ScSheetLimits& rLimits, formula::FormulaToken & rTok1, formula::FormulaToken & rTok2, const ScAddress & rPos, bool bReuseDoubleRef );
58
60{
61private:
62 ScSheetLimits& mrSheetLimits; // don't use rtl::Reference to avoid ref-counting traffic
64public:
65 ScSingleRefToken( ScSheetLimits& rLimits, const ScSingleRefData& r, OpCode e = ocPush ) :
67 virtual const ScSingleRefData* GetSingleRef() const override;
68 virtual ScSingleRefData* GetSingleRef() override;
69 virtual bool TextEqual( const formula::FormulaToken& rToken ) const override;
70 virtual bool operator==( const formula::FormulaToken& rToken ) const override;
71 virtual FormulaToken* Clone() const override { return new ScSingleRefToken(*this); }
72};
73
75{
76private:
77 ScSheetLimits& mrSheetLimits; // don't use rtl::Reference to avoid ref-counting traffic
79public:
80 ScDoubleRefToken( ScSheetLimits& rLimits, const ScComplexRefData& r, OpCode e = ocPush ) :
82 virtual const ScSingleRefData* GetSingleRef() const override;
83 virtual ScSingleRefData* GetSingleRef() override;
84 virtual const ScComplexRefData* GetDoubleRef() const override;
85 virtual ScComplexRefData* GetDoubleRef() override;
86 virtual const ScSingleRefData* GetSingleRef2() const override;
87 virtual ScSingleRefData* GetSingleRef2() override;
88 virtual bool TextEqual( const formula::FormulaToken& rToken ) const override;
89 virtual bool operator==( const formula::FormulaToken& rToken ) const override;
90 virtual FormulaToken* Clone() const override { return new ScDoubleRefToken(*this); }
91};
92
94{
95private:
97public:
100
101 virtual const ScMatrix* GetMatrix() const override;
102 virtual ScMatrix* GetMatrix() override;
103 virtual bool operator==( const formula::FormulaToken& rToken ) const override;
104 virtual FormulaToken* Clone() const override { return new ScMatrixToken(*this); }
105};
106
113{
116public:
117 ScMatrixRangeToken( const sc::RangeMatrix& rMat );
119
120 virtual sal_uInt8 GetByte() const override;
121 virtual const ScMatrix* GetMatrix() const override;
122 virtual ScMatrix* GetMatrix() override;
123 virtual const ScComplexRefData* GetDoubleRef() const override;
124 virtual ScComplexRefData* GetDoubleRef() override;
125 virtual bool operator==( const formula::FormulaToken& rToken ) const override;
126 virtual FormulaToken* Clone() const override;
127};
128
130{
131 sal_uInt16 mnFileId;
134
135public:
136 ScExternalSingleRefToken( sal_uInt16 nFileId, svl::SharedString aTabName, const ScSingleRefData& r );
138 virtual ~ScExternalSingleRefToken() override;
139
142 ScExternalSingleRefToken & operator =(ScExternalSingleRefToken const &) = delete; // due to FormulaToken
143 ScExternalSingleRefToken & operator =(ScExternalSingleRefToken &&) = delete; // due to FormulaToken
144
145 virtual sal_uInt16 GetIndex() const override;
146 virtual const svl::SharedString & GetString() const override;
147 virtual const ScSingleRefData* GetSingleRef() const override;
148 virtual ScSingleRefData* GetSingleRef() override;
149 virtual bool operator==( const formula::FormulaToken& rToken ) const override;
150 virtual FormulaToken* Clone() const override { return new ScExternalSingleRefToken(*this); }
151};
152
154{
155 sal_uInt16 mnFileId;
156 svl::SharedString maTabName; // name of the first sheet
158
159public:
161 ScExternalDoubleRefToken( sal_uInt16 nFileId, svl::SharedString aTabName, const ScComplexRefData& r );
162 virtual ~ScExternalDoubleRefToken() override;
163
166 ScExternalDoubleRefToken & operator =(ScExternalDoubleRefToken const &) = delete; // due to FormulaToken
167 ScExternalDoubleRefToken & operator =(ScExternalDoubleRefToken &&) = delete; // due to FormulaToken
168
169 virtual sal_uInt16 GetIndex() const override;
170 virtual const svl::SharedString & GetString() const override;
171 virtual const ScSingleRefData* GetSingleRef() const override;
172 virtual ScSingleRefData* GetSingleRef() override;
173 virtual const ScSingleRefData* GetSingleRef2() const override;
174 virtual ScSingleRefData* GetSingleRef2() override;
175 virtual const ScComplexRefData* GetDoubleRef() const override;
176 virtual ScComplexRefData* GetDoubleRef() override;
177 virtual bool operator==( const formula::FormulaToken& rToken ) const override;
178 virtual FormulaToken* Clone() const override { return new ScExternalDoubleRefToken(*this); }
179};
180
182{
183 sal_uInt16 mnFileId;
185
186public:
188 ScExternalNameToken( sal_uInt16 nFileId, svl::SharedString aName );
189 virtual ~ScExternalNameToken() override;
190
193 ScExternalNameToken & operator =(ScExternalNameToken const &) = delete; // due to FormulaToken
194 ScExternalNameToken & operator =(ScExternalNameToken &&) = delete; // due to FormulaToken
195
196 virtual sal_uInt16 GetIndex() const override;
197 virtual const svl::SharedString & GetString() const override;
198 virtual bool operator==( const formula::FormulaToken& rToken ) const override;
199 virtual FormulaToken* Clone() const override { return new ScExternalNameToken(*this); }
200};
201
204{
205public:
206
207 enum Item
208 {
209 TABLE = 0,
210 ALL = 1,
212 DATA = 4,
217 };
218
219 ScTableRefToken() = delete;
220 ScTableRefToken( sal_uInt16 nIndex, Item eItem );
222 virtual ~ScTableRefToken() override;
223
224 virtual sal_uInt16 GetIndex() const override;
225 virtual void SetIndex( sal_uInt16 n ) override;
226 virtual sal_Int16 GetSheet() const override;
227 virtual bool operator==( const formula::FormulaToken& rToken ) const override;
228 virtual FormulaToken* Clone() const override { return new ScTableRefToken(*this); }
229
230 Item GetItem() const;
231 void AddItem( Item );
232 void SetAreaRefRPN( formula::FormulaToken* pToken );
234
235private:
236
238 sal_uInt16 mnIndex;
240};
241
242// Only created from within the interpreter, no conversion from ScRawToken,
243// never added to ScTokenArray!
245{
246private:
247 std::shared_ptr<ScJumpMatrix> mpJumpMatrix;
248public:
249 ScJumpMatrixToken( std::shared_ptr<ScJumpMatrix> p );
251 virtual ~ScJumpMatrixToken() override;
252 virtual ScJumpMatrix* GetJumpMatrix() const override;
253 virtual bool operator==( const formula::FormulaToken& rToken ) const override;
254 virtual FormulaToken* Clone() const override { return new ScJumpMatrixToken(*this); }
255};
256
257// Only created from within the interpreter, no conversion from ScRawToken,
258// never added to ScTokenArray!
260{
261private:
263 bool mbArrayResult; // whether RefList is an array result
264public:
267 explicit ScRefListToken( bool bArrayResult ) :
268 FormulaToken( formula::svRefList ), mbArrayResult( bArrayResult ) {}
269 bool IsArrayResult() const;
270 virtual const ScRefList* GetRefList() const override;
271 virtual ScRefList* GetRefList() override;
272 virtual bool operator==( const formula::FormulaToken& rToken ) const override;
273 virtual FormulaToken* Clone() const override { return new ScRefListToken(*this); }
274};
275
277{
278 bool bInherited :1;
280public:
281 explicit ScEmptyCellToken( bool bInheritedP, bool bDisplayAsString ) :
283 bInherited( bInheritedP ),
284 bDisplayedAsString( bDisplayAsString ) {}
285 bool IsInherited() const { return bInherited; }
287 virtual double GetDouble() const override;
288 virtual const svl::SharedString & GetString() const override;
289 virtual bool operator==( const formula::FormulaToken& rToken ) const override;
290 virtual FormulaToken* Clone() const override { return new ScEmptyCellToken(*this); }
291};
292
295{
296 // No non-const access implemented, silence down unxsols4 complaining about
297 // the public GetMatrix() hiding the one from FormulaToken.
298 virtual ScMatrix* GetMatrix() override;
299
300protected:
303public:
306 virtual ~ScMatrixCellResultToken() override;
307 virtual double GetDouble() const override;
308 virtual const svl::SharedString & GetString() const override;
309 virtual const ScMatrix* GetMatrix() const override;
310 virtual bool operator==( const formula::FormulaToken& rToken ) const override;
311 virtual FormulaToken* Clone() const override;
313 {
314 return xUpperLeft ?
315 xUpperLeft->GetType() :
317 }
319 void Assign( const ScMatrixCellResultToken & r );
320};
321
325{
326private:
329public:
333 virtual ~ScMatrixFormulaCellToken() override;
334
335 virtual bool operator==( const formula::FormulaToken& rToken ) const override;
336 virtual FormulaToken* Clone() const override { return new ScMatrixFormulaCellToken(*this); }
338 {
339 nRows = nR;
340 nCols = nC;
341 }
342 void GetMatColsRows( SCCOL & nC, SCROW & nR ) const
343 {
344 nR = nRows;
345 nC = nCols;
346 }
347 SCCOL GetMatCols() const { return nCols; }
348 SCROW GetMatRows() const { return nRows; }
349
352 void Assign( const ScMatrixCellResultToken & r );
353
360 void Assign( const formula::FormulaToken & r );
361
365 void SetUpperLeftDouble( double f);
366
369 void ResetResult();
370
371private:
372
376};
377
379{
380private:
381 double mfDouble;
383 OUString maFormula;
385public:
387 double f, const svl::SharedString & rStr, OUString aFormula, bool bEmptyDisplayedAsString );
388
389 const OUString& GetFormula() const { return maFormula; }
391 virtual double GetDouble() const override;
392
393 virtual const svl::SharedString & GetString() const override;
394 virtual bool operator==( const formula::FormulaToken& rToken ) const override;
395 virtual FormulaToken* Clone() const override { return new ScHybridCellToken(*this); }
396};
397
398// Simplify argument passing to RefUpdate methods with ScSingleRefToken or
399// ScDoubleRefToken
401{
405
408
409public:
411 {
414 {
415 pS = rT.GetSingleRef();
416 aDub.Ref1 = aDub.Ref2 = *pS;
417 pD = &aDub;
418 }
419 else
420 {
421 pS = nullptr;
422 pD = rT.GetDoubleRef();
423 // coverity[uninit_member] - aDub intentionally not initialized, unnecessary because unused.
424 }
425 }
427 {
428 pS = &rS;
429 aDub.Ref1 = aDub.Ref2 = *pS;
430 pD = &aDub;
431 }
433 {
434 if ( pS )
435 *pS = (*pD).Ref1;
436 }
437 ScComplexRefData& Ref() { return *pD; }
438};
439
441{
442public:
443
446
448 : Ref1( *r.GetSingleRef() ),
449 Ref2( (r.GetType() == formula::svDoubleRef ||
450 r.GetType() == formula::svExternalDoubleRef) ?
451 r.GetDoubleRef()->Ref2 : Ref1 )
452 {}
453};
454
455/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
ScDoubleRefToken(ScSheetLimits &rLimits, const ScComplexRefData &r, OpCode e=ocPush)
Definition: token.hxx:80
virtual const ScComplexRefData * GetDoubleRef() const override
Definition: token.cxx:643
virtual bool TextEqual(const formula::FormulaToken &rToken) const override
Definition: token.cxx:647
virtual const ScSingleRefData * GetSingleRef() const override
Definition: token.cxx:641
virtual FormulaToken * Clone() const override
Definition: token.hxx:90
ScSheetLimits & mrSheetLimits
Definition: token.hxx:77
ScComplexRefData aDoubleRef
Definition: token.hxx:78
virtual bool operator==(const formula::FormulaToken &rToken) const override
Definition: token.cxx:651
virtual const ScSingleRefData * GetSingleRef2() const override
Definition: token.cxx:645
virtual FormulaToken * Clone() const override
Definition: token.hxx:290
ScEmptyCellToken(bool bInheritedP, bool bDisplayAsString)
Definition: token.hxx:281
bool bDisplayedAsString
Definition: token.hxx:279
virtual bool operator==(const formula::FormulaToken &rToken) const override
Definition: token.cxx:973
virtual double GetDouble() const override
Definition: token.cxx:966
bool IsDisplayedAsString() const
Definition: token.hxx:286
bool IsInherited() const
Definition: token.hxx:285
virtual const svl::SharedString & GetString() const override
Definition: token.cxx:968
virtual const svl::SharedString & GetString() const override
Definition: token.cxx:785
virtual const ScSingleRefData * GetSingleRef2() const override
Definition: token.cxx:800
ScExternalDoubleRefToken(ScExternalDoubleRefToken &&)=default
ScExternalDoubleRefToken & operator=(ScExternalDoubleRefToken const &)=delete
svl::SharedString maTabName
Definition: token.hxx:156
ScComplexRefData maDoubleRef
Definition: token.hxx:157
virtual FormulaToken * Clone() const override
Definition: token.hxx:178
virtual sal_uInt16 GetIndex() const override
Definition: token.cxx:780
ScExternalDoubleRefToken(ScExternalDoubleRefToken const &)=default
virtual const ScSingleRefData * GetSingleRef() const override
Definition: token.cxx:790
virtual ~ScExternalDoubleRefToken() override
Definition: token.cxx:776
virtual const ScComplexRefData * GetDoubleRef() const override
Definition: token.cxx:810
virtual bool operator==(const formula::FormulaToken &rToken) const override
Definition: token.cxx:820
ScExternalNameToken(ScExternalNameToken &&)=default
virtual const svl::SharedString & GetString() const override
Definition: token.cxx:848
ScExternalNameToken()=delete
virtual FormulaToken * Clone() const override
Definition: token.hxx:199
svl::SharedString maName
Definition: token.hxx:184
virtual ~ScExternalNameToken() override
Definition: token.cxx:841
ScExternalNameToken(ScExternalNameToken const &)=default
sal_uInt16 mnFileId
Definition: token.hxx:183
virtual bool operator==(const formula::FormulaToken &rToken) const override
Definition: token.cxx:853
virtual sal_uInt16 GetIndex() const override
Definition: token.cxx:843
ScExternalNameToken & operator=(ScExternalNameToken const &)=delete
ScExternalSingleRefToken(ScExternalSingleRefToken const &)=default
ScSingleRefData maSingleRef
Definition: token.hxx:133
virtual FormulaToken * Clone() const override
Definition: token.hxx:150
virtual bool operator==(const formula::FormulaToken &rToken) const override
Definition: token.cxx:754
ScExternalSingleRefToken & operator=(ScExternalSingleRefToken const &)=delete
virtual const ScSingleRefData * GetSingleRef() const override
Definition: token.cxx:744
virtual const svl::SharedString & GetString() const override
Definition: token.cxx:739
svl::SharedString maTabName
Definition: token.hxx:132
ScExternalSingleRefToken(ScExternalSingleRefToken &&)=default
virtual ~ScExternalSingleRefToken() override
Definition: token.cxx:730
virtual sal_uInt16 GetIndex() const override
Definition: token.cxx:734
const OUString & GetFormula() const
Definition: token.hxx:389
ScHybridCellToken(double f, const svl::SharedString &rStr, OUString aFormula, bool bEmptyDisplayedAsString)
Definition: token.cxx:1112
virtual double GetDouble() const override
Definition: token.cxx:1123
double mfDouble
Definition: token.hxx:381
bool IsEmptyDisplayedAsString() const
Definition: token.hxx:390
virtual const svl::SharedString & GetString() const override
Definition: token.cxx:1125
svl::SharedString maString
Definition: token.hxx:382
OUString maFormula
Definition: token.hxx:383
virtual bool operator==(const formula::FormulaToken &rToken) const override
Definition: token.cxx:1130
virtual FormulaToken * Clone() const override
Definition: token.hxx:395
bool mbEmptyDisplayedAsString
Definition: token.hxx:384
virtual bool operator==(const formula::FormulaToken &rToken) const override
Definition: token.cxx:957
virtual FormulaToken * Clone() const override
Definition: token.hxx:254
virtual ~ScJumpMatrixToken() override
Definition: token.cxx:962
ScJumpMatrixToken(std::shared_ptr< ScJumpMatrix > p)
Definition: token.cxx:945
ScJumpMatrixToken(const ScJumpMatrixToken &)
virtual ScJumpMatrix * GetJumpMatrix() const override
Definition: token.cxx:952
std::shared_ptr< ScJumpMatrix > mpJumpMatrix
Definition: token.hxx:247
Transports the result from the interpreter to the formula cell.
Definition: token.hxx:295
ScMatrixCellResultToken(ScConstMatrixRef pMat, const formula::FormulaToken *pUL)
Definition: token.cxx:980
virtual const svl::SharedString & GetString() const override
Definition: token.cxx:989
formula::StackVar GetUpperLeftType() const
Definition: token.hxx:312
ScConstMatrixRef xMatrix
Definition: token.hxx:301
const formula::FormulaConstTokenRef & GetUpperLeftToken() const
Definition: token.hxx:318
virtual FormulaToken * Clone() const override
Definition: token.cxx:1009
virtual ~ScMatrixCellResultToken() override
Definition: token.cxx:987
void Assign(const ScMatrixCellResultToken &r)
Definition: token.cxx:1014
virtual bool operator==(const formula::FormulaToken &rToken) const override
Definition: token.cxx:1002
virtual double GetDouble() const override
Definition: token.cxx:985
virtual ScMatrix * GetMatrix() override
Definition: token.cxx:997
ScMatrixCellResultToken(const ScMatrixCellResultToken &)
formula::FormulaConstTokenRef xUpperLeft
Definition: token.hxx:302
Stores the matrix result at the formula cell, additionally the range the matrix formula occupies.
Definition: token.hxx:325
void CloneUpperLeftIfNecessary()
xUpperLeft is modifiable through SetUpperLeftDouble(), so clone it whenever an svDouble token is assi...
Definition: token.cxx:1045
void Assign(const ScMatrixCellResultToken &r)
Assign matrix result, keep matrix formula dimension.
Definition: token.cxx:1051
void GetMatColsRows(SCCOL &nC, SCROW &nR) const
Definition: token.hxx:342
SCCOL GetMatCols() const
Definition: token.hxx:347
SCROW GetMatRows() const
Definition: token.hxx:348
void SetUpperLeftDouble(double f)
Modify xUpperLeft if formula::svDouble, or create new formula::FormulaDoubleToken if not set yet.
Definition: token.cxx:1082
void ResetResult()
Reset matrix and upper left, keep matrix formula dimension.
Definition: token.cxx:1106
virtual FormulaToken * Clone() const override
Definition: token.hxx:336
ScMatrixFormulaCellToken(SCCOL nC, SCROW nR, const ScConstMatrixRef &pMat, const formula::FormulaToken *pUL)
Definition: token.cxx:1020
void SetMatColsRows(SCCOL nC, SCROW nR)
Definition: token.hxx:337
virtual ~ScMatrixFormulaCellToken() override
Definition: token.cxx:1036
virtual bool operator==(const formula::FormulaToken &rToken) const override
Definition: token.cxx:1038
Token storing matrix that represents values in sheet range.
Definition: token.hxx:113
virtual const ScMatrix * GetMatrix() const override
Definition: token.cxx:692
ScMatrixRangeToken(const ScMatrixRangeToken &)
virtual bool operator==(const formula::FormulaToken &rToken) const override
Definition: token.cxx:712
ScMatrixRangeToken(const sc::RangeMatrix &rMat)
Definition: token.cxx:679
virtual sal_uInt8 GetByte() const override
Definition: token.cxx:687
virtual FormulaToken * Clone() const override
Definition: token.cxx:717
virtual const ScComplexRefData * GetDoubleRef() const override
Definition: token.cxx:702
ScMatrixRef mpMatrix
Definition: token.hxx:114
ScComplexRefData maRef
Definition: token.hxx:115
virtual const ScMatrix * GetMatrix() const override
Definition: token.cxx:672
ScMatrixToken(ScMatrixRef p)
Definition: token.cxx:667
virtual FormulaToken * Clone() const override
Definition: token.hxx:104
ScMatrixRef pMatrix
Definition: token.hxx:96
ScMatrixToken(const ScMatrixToken &)
virtual bool operator==(const formula::FormulaToken &rToken) const override
Definition: token.cxx:674
Matrix data type that can store values of mixed types.
Definition: scmatrix.hxx:101
bool mbArrayResult
Definition: token.hxx:263
virtual bool operator==(const formula::FormulaToken &rToken) const override
Definition: token.cxx:659
ScRefListToken(bool bArrayResult)
Definition: token.hxx:267
bool IsArrayResult() const
Definition: token.cxx:658
ScRefList aRefList
Definition: token.hxx:262
virtual FormulaToken * Clone() const override
Definition: token.hxx:273
virtual const ScRefList * GetRefList() const override
Definition: token.cxx:656
virtual bool operator==(const formula::FormulaToken &rToken) const override
Definition: token.cxx:636
ScSingleRefData aSingleRef
Definition: token.hxx:63
virtual const ScSingleRefData * GetSingleRef() const override
Definition: token.cxx:630
virtual bool TextEqual(const formula::FormulaToken &rToken) const override
Definition: token.cxx:632
ScSingleRefToken(ScSheetLimits &rLimits, const ScSingleRefData &r, OpCode e=ocPush)
Definition: token.hxx:65
virtual FormulaToken * Clone() const override
Definition: token.hxx:71
ScSheetLimits & mrSheetLimits
Definition: token.hxx:62
Special token to remember details of ocTableRef "structured references".
Definition: token.hxx:204
virtual FormulaToken * Clone() const override
Definition: token.hxx:228
sal_uInt16 mnIndex
index into table / database range collection
Definition: token.hxx:238
ScTableRefToken()=delete
virtual sal_uInt16 GetIndex() const override
Definition: token.cxx:881
void SetAreaRefRPN(formula::FormulaToken *pToken)
Definition: token.cxx:910
formula::FormulaTokenRef mxAreaRefRPN
resulting RPN area
Definition: token.hxx:237
formula::FormulaToken * GetAreaRefRPN() const
Definition: token.cxx:915
Item GetItem() const
Definition: token.cxx:900
void AddItem(Item)
Definition: token.cxx:905
virtual void SetIndex(sal_uInt16 n) override
Definition: token.cxx:886
virtual sal_Int16 GetSheet() const override
Definition: token.cxx:891
virtual ~ScTableRefToken() override
Definition: token.cxx:879
virtual bool operator==(const formula::FormulaToken &rToken) const override
Definition: token.cxx:920
ScComplexRefData * pD
Definition: token.hxx:404
SingleDoubleRefModifier(ScSingleRefData &rS)
Definition: token.hxx:426
ScComplexRefData aDub
Definition: token.hxx:402
SingleDoubleRefModifier(const SingleDoubleRefModifier &)=delete
SingleDoubleRefModifier & operator=(const SingleDoubleRefModifier &)=delete
SingleDoubleRefModifier(formula::FormulaToken &rT)
Definition: token.hxx:410
ScComplexRefData & Ref()
Definition: token.hxx:437
ScSingleRefData * pS
Definition: token.hxx:403
SingleDoubleRefProvider(const formula::FormulaToken &r)
Definition: token.hxx:447
const ScSingleRefData & Ref2
Definition: token.hxx:445
const ScSingleRefData & Ref1
Definition: token.hxx:444
virtual const ScSingleRefData * GetSingleRef() const
StackVar GetType() const
virtual const ScComplexRefData * GetDoubleRef() const
FormulaToken(StackVar eTypeP, OpCode e=ocPush)
DocumentType eType
::boost::intrusive_ptr< const FormulaToken > FormulaConstTokenRef
::boost::intrusive_ptr< FormulaToken > FormulaTokenRef
svExternalDoubleRef
svDoubleRef
svExternalSingleRef
svRefList
svEmptyCell
svSingleRef
OpCode
Complex reference (a range) into the sheet.
Definition: refdata.hxx:123
ScSingleRefData Ref2
Definition: refdata.hxx:125
ScSingleRefData Ref1
Definition: refdata.hxx:124
Single reference (one address) into the sheet.
Definition: refdata.hxx:30
formula::FormulaTokenRef extendRangeReference(ScSheetLimits &rLimits, formula::FormulaToken &rTok1, formula::FormulaToken &rTok2, const ScAddress &rPos, bool bReuseDoubleRef)
If rTok1 and rTok2 both are SingleRef or DoubleRef tokens, extend/merge ranges as needed for ocRange.
Definition: token.cxx:504
::std::vector< ScComplexRefData > ScRefList
Definition: token.hxx:37
unsigned char sal_uInt8
::boost::intrusive_ptr< const ScMatrix > ScConstMatrixRef
Definition: types.hxx:26
sal_Int16 SCCOL
Definition: types.hxx:21
::boost::intrusive_ptr< ScMatrix > ScMatrixRef
Definition: types.hxx:25
sal_Int32 SCROW
Definition: types.hxx:17