office-gobmx/include/svl/cintitem.hxx
Noel Grandin c3e8dbc139 Improve the perf for pool item scanning..
for large complex documents with lots of shapes.

When that happens, we spend a lot of time scanning the std::unordered_set inside DefaultItemInstanceManager.

Since most of our items are already capable of being hashed, and thus avoiding the scanning cost, make it so we can use the HashableItemInstanceManager most of the time.

Change-Id: I43f4c04e956d316c976bea67d1941529d2d91182
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/170813
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Tested-by: Jenkins
Tested-by: Armin Le Grand <Armin.Le.Grand@me.com>
Tested-by: Noel Grandin <noel.grandin@collabora.co.uk>
2024-07-22 11:29:32 +02:00

166 lines
5.6 KiB
C++

/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed
* with this work for additional information regarding copyright
* ownership. The ASF licenses this file to you under the Apache
* License, Version 2.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
#ifndef INCLUDED_SVL_CINTITEM_HXX
#define INCLUDED_SVL_CINTITEM_HXX
#include <svl/svldllapi.h>
#include <tools/debug.hxx>
#include <svl/poolitem.hxx>
class SVL_DLLPUBLIC CntByteItem: public SfxPoolItem
{
sal_uInt8 m_nValue;
public:
CntByteItem(sal_uInt16 which, sal_uInt8 nTheValue, SfxItemType eItemType = SfxItemType::CntByteItemType):
SfxPoolItem(which, eItemType), m_nValue(nTheValue) {}
virtual bool operator ==(const SfxPoolItem & rItem) const override;
virtual bool supportsHashCode() const override;
virtual size_t hashCode() const override final;
virtual bool GetPresentation(SfxItemPresentation,
MapUnit, MapUnit,
OUString & rText,
const IntlWrapper&)
const override;
virtual bool QueryValue(css::uno::Any& rVal,
sal_uInt8 nMemberId = 0) const override;
virtual bool PutValue(const css::uno::Any& rVal,
sal_uInt8 nMemberId) override;
virtual CntByteItem* Clone(SfxItemPool * = nullptr) const override;
sal_uInt8 GetValue() const { return m_nValue; }
void SetValue(sal_uInt8 nTheValue) { ASSERT_CHANGE_REFCOUNTED_ITEM; m_nValue = nTheValue; }
};
class SVL_DLLPUBLIC CntUInt16Item: public SfxPoolItem
{
sal_uInt16 m_nValue;
public:
CntUInt16Item(sal_uInt16 which, sal_uInt16 nTheValue, SfxItemType eItemType = SfxItemType::CntUInt16ItemType):
SfxPoolItem(which, eItemType), m_nValue(nTheValue)
{}
virtual bool operator ==(const SfxPoolItem & rItem) const override;
virtual bool supportsHashCode() const override final;
virtual size_t hashCode() const override final;
virtual bool GetPresentation(SfxItemPresentation,
MapUnit, MapUnit,
OUString & rText,
const IntlWrapper&)
const override;
virtual bool QueryValue(css::uno::Any& rVal,
sal_uInt8 nMemberId = 0) const override;
virtual bool PutValue(const css::uno::Any& rVal,
sal_uInt8 nMemberId) override;
virtual CntUInt16Item* Clone(SfxItemPool * = nullptr) const override;
sal_uInt16 GetValue() const { return m_nValue; }
void SetValue(sal_uInt16 nTheValue) { ASSERT_CHANGE_REFCOUNTED_ITEM; m_nValue = nTheValue; }
};
class SVL_DLLPUBLIC CntInt32Item: public SfxPoolItem
{
sal_Int32 m_nValue;
public:
CntInt32Item(sal_uInt16 which, sal_Int32 nTheValue, SfxItemType eItemType = SfxItemType::CntInt32ItemType):
SfxPoolItem(which, eItemType), m_nValue(nTheValue)
{}
virtual bool operator ==(const SfxPoolItem & rItem) const override;
virtual bool supportsHashCode() const override final;
virtual size_t hashCode() const override final;
virtual bool GetPresentation(SfxItemPresentation,
MapUnit, MapUnit,
OUString & rText,
const IntlWrapper&)
const override;
virtual bool QueryValue(css::uno::Any& rVal,
sal_uInt8 nMemberId = 0) const override;
virtual bool PutValue(const css::uno::Any& rVal,
sal_uInt8 nMemberId) override;
virtual CntInt32Item* Clone(SfxItemPool * = nullptr) const override;
sal_Int32 GetValue() const { return m_nValue; }
void SetValue(sal_Int32 nTheValue) { ASSERT_CHANGE_REFCOUNTED_ITEM; m_nValue = nTheValue; }
};
class SVL_DLLPUBLIC CntUInt32Item: public SfxPoolItem
{
sal_uInt32 m_nValue;
public:
CntUInt32Item(sal_uInt16 which, sal_uInt32 nTheValue, SfxItemType eItemType = SfxItemType::CntUInt32ItemType):
SfxPoolItem(which, eItemType), m_nValue(nTheValue)
{}
virtual bool operator ==(const SfxPoolItem & rItem) const override;
virtual bool supportsHashCode() const override final;
virtual size_t hashCode() const override final;
virtual bool GetPresentation(SfxItemPresentation,
MapUnit, MapUnit,
OUString & rText,
const IntlWrapper&)
const override;
virtual bool QueryValue(css::uno::Any& rVal,
sal_uInt8 nMemberId = 0) const override;
virtual bool PutValue(const css::uno::Any& rVal,
sal_uInt8 nMemberId) override;
virtual CntUInt32Item* Clone(SfxItemPool * = nullptr) const override;
sal_uInt32 GetValue() const { return m_nValue; }
void SetValue(sal_uInt32 nTheValue) { ASSERT_CHANGE_REFCOUNTED_ITEM; m_nValue = nTheValue; }
};
#endif // INCLUDED_SVL_CINTITEM_HXX
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */