summaryrefslogtreecommitdiffstats
path: root/sc/inc/dpitemdata.hxx
diff options
context:
space:
mode:
authorKohei Yoshida <kohei.yoshida@suse.com>2012-02-09 15:12:49 -0500
committerKohei Yoshida <kohei.yoshida@suse.com>2012-02-09 15:25:09 -0500
commit2bf0fd735210b961d15f5bccede1bef926b5d824 (patch)
tree86b4a4db426dc7c7d6761a7e42aaa4929f21cea9 /sc/inc/dpitemdata.hxx
parentCleaning up ScDPItemData a bit... (diff)
downloadcore-2bf0fd735210b961d15f5bccede1bef926b5d824.tar.gz
core-2bf0fd735210b961d15f5bccede1bef926b5d824.zip
Moved ScDPItemData into own files.
Diffstat (limited to 'sc/inc/dpitemdata.hxx')
-rw-r--r--sc/inc/dpitemdata.hxx123
1 files changed, 123 insertions, 0 deletions
diff --git a/sc/inc/dpitemdata.hxx b/sc/inc/dpitemdata.hxx
new file mode 100644
index 000000000000..97a2fbb57806
--- /dev/null
+++ b/sc/inc/dpitemdata.hxx
@@ -0,0 +1,123 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * Version: MPL 1.1 / GPLv3+ / LGPLv3+
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License or as specified alternatively below. You may obtain a copy of
+ * the License at http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * Major Contributor(s):
+ * Copyright (C) 2012 Kohei Yoshida <kohei.yoshida@suse.com>
+ *
+ * All Rights Reserved.
+ *
+ * For minor contributions see the git repository.
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 3 or later (the "GPLv3+"), or
+ * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
+ * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
+ * instead of those above.
+ */
+
+#ifndef __SC_DPITEMDATA_HXX__
+#define __SC_DPITEMDATA_HXX__
+
+#include "scdllapi.h"
+#include "sal/types.h"
+#include "tools/solar.h"
+#include "tools/string.hxx"
+#include "address.hxx"
+
+#include <vector>
+
+#include <boost/unordered_map.hpp>
+
+class ScDocument;
+
+class SC_DLLPUBLIC ScDPItemData
+{
+public:
+ enum {
+ MK_VAL = 0x01,
+ MK_DATA = 0x02,
+ MK_ERR = 0x04,
+ MK_DATE = 0x08,
+ MK_DATEPART = 0x10
+ };
+
+ static bool isDate( sal_uLong nNumType );
+
+private:
+ union
+ {
+ sal_uLong mnNumFormat;
+ sal_Int32 mnDatePart;
+ };
+
+ String maString;
+ double mfValue;
+ sal_uInt8 mbFlag;
+
+ friend class ScDPCache;
+public:
+ ScDPItemData();
+ ScDPItemData(sal_uLong nNF, const String & rS, double fV, sal_uInt8 bF);
+ ScDPItemData(const String& rS, double fV = 0.0, bool bHV = false, const sal_uLong nNumFormat = 0 , bool bData = true);
+ ScDPItemData(ScDocument* pDoc, SCCOL nCol, SCROW nRow, SCTAB nDocTab, bool bLabel);
+
+ void SetString( const String& rS );
+ bool IsCaseInsEqual(const ScDPItemData& r) const;
+
+ size_t Hash() const;
+
+ // exact equality
+ bool operator==( const ScDPItemData& r ) const;
+ // case insensitive equality
+ static sal_Int32 Compare( const ScDPItemData& rA, const ScDPItemData& rB );
+
+public:
+ bool IsHasData() const ;
+ bool IsHasErr() const ;
+ bool IsValue() const;
+ String GetString() const ;
+ double GetValue() const ;
+ bool HasStringData() const ;
+ bool IsDate() const;
+ bool HasDatePart() const;
+ void SetDate( bool b ) ;
+
+ sal_uInt8 GetType() const;
+};
+
+class SC_DLLPUBLIC ScDPItemDataPool
+{
+public:
+ ScDPItemDataPool();
+ ScDPItemDataPool(const ScDPItemDataPool& r);
+
+ virtual ~ScDPItemDataPool();
+ virtual const ScDPItemData* getData( sal_Int32 nId );
+ virtual sal_Int32 getDataId( const ScDPItemData& aData );
+ virtual sal_Int32 insertData( const ScDPItemData& aData );
+protected:
+ struct DataHashFunc : public std::unary_function< const ScDPItemData &, size_t >
+ {
+ size_t operator() (const ScDPItemData &rData) const { return rData.Hash(); }
+ };
+
+ typedef ::boost::unordered_multimap< ScDPItemData, sal_Int32, DataHashFunc > DataHash;
+
+ ::std::vector< ScDPItemData > maItems;
+ DataHash maItemIds;
+};
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */