diff options
Diffstat (limited to 'sc/source/filter/inc/orcusinterface.hxx')
-rw-r--r-- | sc/source/filter/inc/orcusinterface.hxx | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/sc/source/filter/inc/orcusinterface.hxx b/sc/source/filter/inc/orcusinterface.hxx index 313331c90abb..de07b75dca41 100644 --- a/sc/source/filter/inc/orcusinterface.hxx +++ b/sc/source/filter/inc/orcusinterface.hxx @@ -16,6 +16,7 @@ #include <orcus/spreadsheet/import_interface.hpp> #include <boost/ptr_container/ptr_vector.hpp> +#include <boost/unordered_map.hpp> #include <map> @@ -26,10 +27,10 @@ class ScRangeData; class ScOrcusSharedStrings : public orcus::spreadsheet::iface::import_shared_strings { - std::vector<OUString>& mrStrings; + ScOrcusFactory& mrFactory; public: - ScOrcusSharedStrings(std::vector<OUString>& rStrings); + ScOrcusSharedStrings(ScOrcusFactory& rFactory); virtual size_t append(const char* s, size_t n); virtual size_t add(const char* s, size_t n); @@ -161,10 +162,14 @@ class ScOrcusFactory : public orcus::spreadsheet::iface::import_factory StringCellCache(const ScAddress& rPos, size_t nIndex); }; + typedef boost::unordered_map<OUString, size_t, OUStringHash> StringHashType; typedef std::vector<StringCellCache> StringCellCaches; ScDocument& mrDoc; + std::vector<OUString> maStrings; + StringHashType maStringHash; + StringCellCaches maStringCells; ScOrcusSharedStrings maSharedStrings; boost::ptr_vector<ScOrcusSheet> maSheets; @@ -179,6 +184,9 @@ public: virtual orcus::spreadsheet::iface::import_styles* get_styles(); virtual void finalize(); + size_t appendString(const OUString& rStr); + size_t addString(const OUString& rStr); + void pushStringCell(const ScAddress& rPos, size_t nStrIndex); }; |