1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
3 * This file is part of the LibreOffice project.
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/.
14 #include <sal/types.h>
15 #include <rtl/ustring.h>
16 #include <rtl/ustring.hxx>
17 #include "calcmacros.hxx"
18 #include "dpglobal.hxx"
21 * When assigning a string value, you can also assign an interned string
22 * whose life-cycle is managed by the pivot cache that it belongs to. Those
23 * methods that take a string pointer assume that the string is interned.
25 * <p>Do make sure that an item with an interned string won't persist after
26 * the pivot cache has been destroyed or reloaded.</p>
28 class SC_DLLPUBLIC ScDPItemData
30 friend class ScDPCache
;
33 enum Type
{ GroupValue
= 0, RangeStart
= 1, Value
= 2, String
= 3, Error
= 4, Empty
= 5 };
35 static const sal_Int32 DateFirst
;
36 static const sal_Int32 DateLast
;
40 sal_Int32 mnGroupType
;
47 rtl_uString
* mpString
;
48 GroupValueAttr maGroupValue
;
53 bool mbStringInterned
:1;
58 // case insensitive equality
59 static sal_Int32
Compare(const ScDPItemData
& rA
, const ScDPItemData
& rB
);
62 ScDPItemData(const ScDPItemData
& r
);
63 ScDPItemData(const OUString
& rStr
);
64 ScDPItemData(sal_Int32 nGroupType
, sal_Int32 nValue
);
67 Type
GetType() const { return static_cast<Type
>(meType
); }
69 void SetString(const OUString
& rS
);
70 void SetStringInterned( rtl_uString
* pS
);
71 void SetValue(double fVal
);
72 void SetRangeStart(double fVal
);
75 void SetErrorStringInterned( rtl_uString
* pS
);
76 bool IsCaseInsEqual(const ScDPItemData
& r
) const;
79 bool operator==(const ScDPItemData
& r
) const;
80 bool operator< (const ScDPItemData
& r
) const;
82 ScDPItemData
& operator= (const ScDPItemData
& r
);
86 OUString
GetString() const;
87 double GetValue() const;
88 GroupValueAttr
GetGroupValue() const;
89 bool HasStringData() const ;
91 ScDPValue::Type
GetCellType() const;
94 void Dump(const char* msg
) const;
98 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */