/* -*- 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 . */ #include #include #include #include #include #include #include #include #ifdef DBG_UTIL #include #endif ////////////////////////////////////////////////////////////////////////////// // list of classes derived from SfxPoolItem // will not be kept up-to-date, but give a good overview for right now ////////////////////////////////////////////////////////////////////////////// // // class SbxItem : public SfxPoolItem // class SvxChartColorTableItem : public SfxPoolItem // class DriverPoolingSettingsItem final : public SfxPoolItem // class DatabaseMapItem final : public SfxPoolItem // class DbuTypeCollectionItem : public SfxPoolItem // class OptionalBoolItem : public SfxPoolItem // class OStringListItem : public SfxPoolItem // class MediaItem : public SfxPoolItem // class SvxBoxItem : public SfxPoolItem // class SvxBoxInfoItem : public SfxPoolItem // class SvxBrushItem : public SfxPoolItem // class SvxBulletItem : public SfxPoolItem // class SvxColorItem : public SfxPoolItem // class SvxFontHeightItem : public SfxPoolItem // class SvxFieldItem : public SfxPoolItem // class SvxFontListItem : public SfxPoolItem // class SvxFontItem : public SfxPoolItem // class SvxHyphenZoneItem : public SfxPoolItem // class SvxLineItem : public SfxPoolItem // class SvxLRSpaceItem : public SfxPoolItem // class SvxNumBulletItem : public SfxPoolItem // class SfxHyphenRegionItem: public SfxPoolItem // class SvxProtectItem : public SfxPoolItem // class SvxSizeItem : public SfxPoolItem // class SwFormatFrameSize: public SvxSizeItem // class SvxTabStopItem : public SfxPoolItem // class SvxTwoLinesItem : public SfxPoolItem // class SvxULSpaceItem : public SfxPoolItem // class SvXMLAttrContainerItem: public SfxPoolItem // class SfxLinkItem : public SfxPoolItem // class SfxEventNamesItem : public SfxPoolItem // class SfxFrameItem: public SfxPoolItem // class SfxUnoAnyItem : public SfxPoolItem // class SfxUnoFrameItem : public SfxPoolItem // class SfxMacroInfoItem: public SfxPoolItem // class SfxObjectItem: public SfxPoolItem // class SfxObjectShellItem: public SfxPoolItem // class SfxViewFrameItem: public SfxPoolItem // class SfxWatermarkItem: public SfxPoolItem // class SfxEnumItemInterface: public SfxPoolItem // class SvxAdjustItem : public SfxEnumItemInterface // class SvxEscapementItem : public SfxEnumItemInterface // class SvxLineSpacingItem : public SfxEnumItemInterface // class SvxShadowItem : public SfxEnumItemInterface // class SfxEnumItem : public SfxEnumItemInterface // class SvxCharReliefItem : public SfxEnumItem // class SvxCaseMapItem : public SfxEnumItem // class SvxCrossedOutItem : public SfxEnumItem // class SvxFormatBreakItem : public SfxEnumItem // class SvxFrameDirectionItem : public SfxEnumItem // class SvxHorJustifyItem: public SfxEnumItem // class SvxVerJustifyItem: public SfxEnumItem // class SvxJustifyMethodItem: public SfxEnumItem // class SvxLanguageItem_Base: public SfxEnumItem // class SvxLanguageItem : public SvxLanguageItem_Base // class SvxPostureItem : public SfxEnumItem // class SvxTextLineItem : public SfxEnumItem // class SvxUnderlineItem : public SvxTextLineItem // class SvxOverlineItem : public SvxTextLineItem // class SvxWeightItem : public SfxEnumItem // class SvxOrientationItem: public SfxEnumItem // class SvxChartRegressItem : public SfxEnumItem // class SvxChartTextOrderItem : public SfxEnumItem // class SvxChartKindErrorItem : public SfxEnumItem // class SvxChartIndicateItem : public SfxEnumItem // class SvxRotateModeItem: public SfxEnumItem // class SdrGrafModeItem_Base: public SfxEnumItem // class SdrGrafModeItem : public SdrGrafModeItem_Base // class SdrTextAniDirectionItem: public SfxEnumItem // class SdrTextVertAdjustItem: public SfxEnumItem // class SdrTextHorzAdjustItem: public SfxEnumItem // class SdrTextAniKindItem: public SfxEnumItem // class SdrTextFitToSizeTypeItem : public SfxEnumItem // class SdrCaptionEscDirItem: public SfxEnumItem // class SdrCaptionTypeItem: public SfxEnumItem // class SdrEdgeKindItem: public SfxEnumItem // class SdrMeasureTextHPosItem: public SfxEnumItem // class SdrMeasureTextVPosItem: public SfxEnumItem // class SdrMeasureUnitItem: public SfxEnumItem // class XFillStyleItem : public SfxEnumItem // class XFillBmpPosItem : public SfxEnumItem // class XFormTextAdjustItem : public SfxEnumItem // class XFormTextShadowItem : public SfxEnumItem // class XLineStyleItem : public SfxEnumItem // class XLineJointItem : public SfxEnumItem // class XLineCapItem : public SfxEnumItem // class XFormTextStyleItem : public SfxEnumItem // class ScViewObjectModeItem: public SfxEnumItem // class SdrCircKindItem: public SfxEnumItem // class SdrMeasureKindItem: public SfxEnumItem // class SwFormatFillOrder: public SfxEnumItem // class SwFormatFootnoteEndAtTextEnd : public SfxEnumItem // class SwFormatFootnoteAtTextEnd : public SwFormatFootnoteEndAtTextEnd // class SwFormatEndAtTextEnd : public SwFormatFootnoteEndAtTextEnd // class SwFormatSurround: public SfxEnumItem // class SwMirrorGrf : public SfxEnumItem // class SwDrawModeGrf_Base: public SfxEnumItem // class SwDrawModeGrf : public SwDrawModeGrf_Base //class CntByteItem: public SfxPoolItem // class SfxByteItem: public CntByteItem // class SvxOrphansItem: public SfxByteItem // class SvxPaperBinItem : public SfxByteItem // class SvxWidowsItem: public SfxByteItem // class SwTransparencyGrf : public SfxByteItem //class CntUInt16Item: public SfxPoolItem // class SfxUInt16Item: public CntUInt16Item // class SvxTextRotateItem : public SfxUInt16Item // class SvxCharRotateItem : public SvxTextRotateItem // class SvxCharScaleWidthItem : public SfxUInt16Item // class SvxEmphasisMarkItem : public SfxUInt16Item // class SvxParaVertAlignItem : public SfxUInt16Item // class SvxWritingModeItem : public SfxUInt16Item // class SvxZoomItem: public SfxUInt16Item // class SdrPercentItem : public SfxUInt16Item // class SdrGrafTransparenceItem : public SdrPercentItem // class SdrTextAniCountItem: public SfxUInt16Item // class SdrTextAniDelayItem: public SfxUInt16Item // class Svx3DNormalsKindItem : public SfxUInt16Item // class Svx3DTextureProjectionXItem : public SfxUInt16Item // class Svx3DTextureProjectionYItem : public SfxUInt16Item // class Svx3DTextureKindItem : public SfxUInt16Item // class Svx3DTextureModeItem : public SfxUInt16Item // class Svx3DPerspectiveItem : public SfxUInt16Item // class Svx3DShadeModeItem : public SfxUInt16Item // class SdrEdgeLineDeltaCountItem: public SfxUInt16Item // class SvxViewLayoutItem: public SfxUInt16Item // class XFillBmpPosOffsetXItem : public SfxInt32Item // class XFillBmpPosOffsetYItem : public SfxInt32Item // class XFillBmpTileOffsetXItem : public SfxUInt16Item // class XFillBmpTileOffsetYItem : public SfxUInt16Item // class XFillTransparenceItem: public SfxUInt16Item // class XFormTextShadowTranspItem: public SfxUInt16Item // class XGradientStepCountItem: public SfxUInt16Item // class XLineTransparenceItem: public SfxUInt16Item // class SvxZoomSliderItem: public SfxUInt16Item // class SdrLayerIdItem: public SfxUInt16Item // class SwRotationGrf : public SfxUInt16Item //class CntInt32Item: public SfxPoolItem // class SfxInt32Item: public CntInt32Item // class SfxMetricItem: public SfxInt32Item // class XFillBmpSizeXItem : public SfxMetricItem // class XFillBmpSizeYItem : public SfxMetricItem // class XFormTextDistanceItem : public SfxMetricItem // class XFormTextShadowXValItem : public SfxMetricItem // class XFormTextShadowYValItem : public SfxMetricItem // class XFormTextStartItem : public SfxMetricItem // class XLineEndWidthItem : public SfxMetricItem // class XLineStartWidthItem : public SfxMetricItem // class XLineWidthItem : public SfxMetricItem // class SdrAngleItem: public SfxInt32Item // // class SdrCaptionAngleItem: public SdrAngleItem // class SdrMeasureTextFixedAngleItem: public SdrAngleItem // class SdrMeasureTextAutoAngleViewItem: public SdrAngleItem // class SdrRotateAllItem: public SdrAngleItem // class SdrRotateOneItem: public SdrAngleItem // class SdrShearAngleItem: public SdrAngleItem // class SdrHorzShearAllItem: public SdrAngleItem // class SdrVertShearAllItem: public SdrAngleItem // class SdrHorzShearOneItem: public SdrAngleItem // class SdrVertShearOneItem: public SdrAngleItem // class SdrMetricItem: public SfxInt32Item // class SdrCaptionEscAbsItem: public SdrMetricItem // class SdrCaptionGapItem: public SdrMetricItem // class SdrCaptionLineLenItem: public SdrMetricItem // class SdrEdgeNode1HorzDistItem: public SdrMetricItem // class SdrEdgeNode1VertDistItem: public SdrMetricItem // class SdrEdgeNode2HorzDistItem: public SdrMetricItem // class SdrEdgeNode2VertDistItem: public SdrMetricItem // class SdrEdgeNode1GlueDistItem: public SdrMetricItem // class SdrEdgeNode2GlueDistItem: public SdrMetricItem // class SdrAllPositionXItem: public SdrMetricItem // class SdrAllPositionYItem: public SdrMetricItem // class SdrAllSizeWidthItem: public SdrMetricItem // class SdrAllSizeHeightItem: public SdrMetricItem // class SdrLogicSizeWidthItem: public SdrMetricItem // class SdrLogicSizeHeightItem: public SdrMetricItem // class SdrMeasureOverhangItem: public SdrMetricItem // class SdrMoveXItem: public SdrMetricItem // class SdrMoveYItem: public SdrMetricItem // class SdrOnePositionXItem: public SdrMetricItem // class SdrOnePositionYItem: public SdrMetricItem // class SdrOneSizeWidthItem: public SdrMetricItem // class SdrOneSizeHeightItem: public SdrMetricItem // class SdrTransformRef1XItem: public SdrMetricItem // class SdrTransformRef1YItem: public SdrMetricItem // class SdrTransformRef2XItem: public SdrMetricItem // class SdrTransformRef2YItem: public SdrMetricItem // class SdrCaptionEscRelItem: public SfxInt32Item //class CntUInt32Item: public SfxPoolItem // class SfxUInt32Item: public CntUInt32Item // class SvxRsidItem : public SfxUInt32Item // class SdrGrafGamma100Item : public SfxUInt32Item // class SwTableBoxNumFormat : public SfxUInt32Item //class SfxStringItem: public SfxPoolItem // class SvxPageModelItem : public SfxStringItem // class SfxDocumentInfoItem : public SfxStringItem // class SvxPostItAuthorItem: public SfxStringItem // class SvxPostItDateItem: public SfxStringItem // class SvxPostItTextItem: public SfxStringItem // class SvxPostItIdItem: public SfxStringItem // class SdrMeasureFormatStringItem: public SfxStringItem // class NameOrIndex : public SfxStringItem // class XFillBitmapItem : public NameOrIndex // class XColorItem : public NameOrIndex // class XFillColorItem : public XColorItem // class XFormTextShadowColorItem : public XColorItem // class XLineColorItem : public XColorItem // class XSecondaryFillColorItem : public XColorItem // class XFillGradientItem : public NameOrIndex // class XFillFloatTransparenceItem : public XFillGradientItem // class XFillHatchItem : public NameOrIndex // class XLineDashItem : public NameOrIndex // class XLineEndItem : public NameOrIndex // class XLineStartItem : public NameOrIndex // class SdrLayerNameItem: public SfxStringItem // class SwNumRuleItem : public SfxStringItem //class SfxScriptOrganizerItem : public SfxPoolItem //class SfxBoolItem : public SfxPoolItem // class SvxAutoKernItem : public SfxBoolItem // class SvxBlinkItem : public SfxBoolItem // class SvxCharHiddenItem : public SfxBoolItem // class SvxContourItem : public SfxBoolItem // class SvxForbiddenRuleItem : public SfxBoolItem // class SvxHangingPunctuationItem : public SfxBoolItem // class SvxFormatKeepItem : public SfxBoolItem // class SvxNoHyphenItem : public SfxBoolItem // class SvxOpaqueItem : public SfxBoolItem // class SvxParaGridItem : public SfxBoolItem // class SvxPrintItem : public SfxBoolItem // class SvxScriptSpaceItem : public SfxBoolItem // class SvxShadowedItem : public SfxBoolItem // class SvxFormatSplitItem : public SfxBoolItem // class SvxWordLineModeItem : public SfxBoolItem // class SdrOnOffItem: public SfxBoolItem // class SdrGrafInvertItem : public SdrOnOffItem // class SdrTextFixedCellHeightItem : public SfxBoolItem // class SdrYesNoItem: public SfxBoolItem // class SdrTextAniStartInsideItem: public SdrYesNoItem // class SdrTextAniStopInsideItem: public SdrYesNoItem // class SdrCaptionEscIsRelItem: public SdrYesNoItem // class SdrCaptionFitLineLenItem: public SdrYesNoItem // class SdrMeasureBelowRefEdgeItem: public SdrYesNoItem // class SdrMeasureTextIsFixedAngleItem: public SdrYesNoItem // class SdrMeasureTextRota90Item: public SdrYesNoItem // class SdrMeasureTextUpsideDownItem: public SdrYesNoItem // class SdrMeasureTextAutoAngleItem: public SdrYesNoItem // class SdrObjPrintableItem: public SdrYesNoItem // class SdrObjVisibleItem: public SdrYesNoItem // class Svx3DReducedLineGeometryItem : public SfxBoolItem // class Svx3DSmoothNormalsItem : public SfxBoolItem // class Svx3DSmoothLidsItem : public SfxBoolItem // class Svx3DCharacterModeItem : public SfxBoolItem // class Svx3DCloseFrontItem : public SfxBoolItem // class Svx3DCloseBackItem : public SfxBoolItem // class XFillBackgroundItem : public SfxBoolItem // class XFillUseSlideBackgroundItem : public SfxBoolItem // class XFillBmpSizeLogItem : public SfxBoolItem // class XFillBmpTileItem : public SfxBoolItem // class XFillBmpStretchItem : public SfxBoolItem // class XFormTextMirrorItem : public SfxBoolItem // class XFormTextOutlineItem : public SfxBoolItem // class XLineEndCenterItem : public SfxBoolItem // class XLineStartCenterItem : public SfxBoolItem // class XFormTextHideFormItem : public SfxBoolItem // class SwFormatNoBalancedColumns : public SfxBoolItem // class SwFormatEditInReadonly : public SfxBoolItem // class SwFormatFollowTextFlow : public SfxBoolItem // class SwFormatLayoutSplit : public SfxBoolItem // class SwFormatRowSplit : public SfxBoolItem // class SwInvertGrf: public SfxBoolItem // class SwHeaderAndFooterEatSpacingItem : public SfxBoolItem // class SwRegisterItem : public SfxBoolItem // class SwParaConnectBorderItem : public SfxBoolItem // class SfxFlagItem: public SfxPoolItem // class SfxTemplateItem: public SfxFlagItem // class SfxGlobalNameItem: public SfxPoolItem // class SfxGrabBagItem : public SfxPoolItem // class SfxIntegerListItem : public SfxPoolItem // class SfxInt64Item : public SfxPoolItem // class SfxInt16Item: public SfxPoolItem // class SvxKerningItem : public SfxInt16Item // class SfxImageItem : public SfxInt16Item // class SdrSignedPercentItem : public SfxInt16Item // class SdrGrafRedItem : public SdrSignedPercentItem // class SdrGrafGreenItem : public SdrSignedPercentItem // class SdrGrafBlueItem : public SdrSignedPercentItem // class SdrGrafLuminanceItem : public SdrSignedPercentItem // class SdrGrafContrastItem : public SdrSignedPercentItem // class SdrTextAniAmountItem: public SfxInt16Item // class SdrMeasureDecimalPlacesItem: public SfxInt16Item // class ScMergeFlagAttr: public SfxInt16Item // class SwLuminanceGrf : public SfxInt16Item // class SwContrastGrf : public SfxInt16Item // class SwChannelGrf : public SfxInt16Item // class SfxLockBytesItem : public SfxPoolItem // class SvxMacroItem: public SfxPoolItem // class SfxVoidItem final: public SfxPoolItem // class SfxSetItem: public SfxPoolItem // class SvxScriptSetItem : public SfxSetItem // class SfxTabDialogItem: public SfxSetItem // class SvxSetItem: public SfxSetItem // class XFillAttrSetItem : public SfxSetItem // class XLineAttrSetItem : public SfxSetItem // class ScPatternAttr: public SfxSetItem // class SfxPointItem: public SfxPoolItem // class SfxRectangleItem: public SfxPoolItem // class SfxRangeItem : public SfxPoolItem // class SfxStringListItem : public SfxPoolItem // class SvxSearchItem : public SfxPoolItem // class SfxVisibilityItem: public SfxPoolItem // class AffineMatrixItem : public SfxPoolItem // class SvxMarginItem: public SfxPoolItem // class SvxDoubleItem : public SfxPoolItem // class SvxClipboardFormatItem : public SfxPoolItem // class SvxColorListItem: public SfxPoolItem // class SvxGradientListItem : public SfxPoolItem // class SvxHatchListItem : public SfxPoolItem // class SvxBitmapListItem : public SfxPoolItem // class SvxPatternListItem : public SfxPoolItem // class SvxDashListItem : public SfxPoolItem // class SvxLineEndListItem : public SfxPoolItem // class SvxB3DVectorItem : public SfxPoolItem // class SvxGalleryItem : public SfxPoolItem // class SvxGrfCrop : public SfxPoolItem // class SdrGrafCropItem : public SvxGrfCrop // class SwCropGrf : public SvxGrfCrop // class SvxHyperlinkItem : public SfxPoolItem // class SvxNumberInfoItem : public SfxPoolItem // class OfaPtrItem : public SfxPoolItem // class OfaXColorListItem : public SfxPoolItem // class SvxGridItem : public SvxOptionsGrid, public SfxPoolItem // class SdOptionsGridItem : public SvxGridItem // class SvxPageItem: public SfxPoolItem // class SvxLongLRSpaceItem : public SfxPoolItem // class SvxLongULSpaceItem : public SfxPoolItem // class SvxPagePosSizeItem : public SfxPoolItem // class SvxColumnItem : public SfxPoolItem // class SvxObjectItem : public SfxPoolItem // class SdrCustomShapeGeometryItem : public SfxPoolItem // class SvxSmartTagItem : public SfxPoolItem // class SvxGraphicItem: public SfxPoolItem // class SdrFractionItem: public SfxPoolItem // class SdrScaleItem: public SdrFractionItem // class SdrMeasureScaleItem: public SdrScaleItem // class SdrResizeXAllItem: public SdrFractionItem // class SdrResizeYAllItem: public SdrFractionItem // class SdrResizeXOneItem: public SdrFractionItem // class SdrResizeYOneItem: public SdrFractionItem // class ScMergeAttr: public SfxPoolItem // class ScProtectionAttr: public SfxPoolItem // class ScPageHFItem : public SfxPoolItem // class ScPageScaleToItem : public SfxPoolItem // class ScCondFormatItem : public SfxPoolItem // class ScTpDefaultsItem : public SfxPoolItem // class ScTpCalcItem : public SfxPoolItem // class ScTpFormulaItem : public SfxPoolItem // class ScTpPrintItem : public SfxPoolItem // class ScTpViewItem : public SfxPoolItem // class ScCondFormatDlgItem : public SfxPoolItem // class ScInputStatusItem : public SfxPoolItem // class ScSortItem : public SfxPoolItem // class ScQueryItem : public SfxPoolItem // class ScSubTotalItem : public SfxPoolItem // class cUserListItem : public SfxPoolItem // class ScConsolidateItem : public SfxPoolItem // class ScPivotItem : public SfxPoolItem // class ScSolveItem : public SfxPoolItem // class ScTabOpItem : public SfxPoolItem // class SdOptionsLayoutItem : public SfxPoolItem // class SdOptionsMiscItem : public SfxPoolItem // class SdOptionsSnapItem : public SfxPoolItem // class SdOptionsPrintItem : public SfxPoolItem // class SwCondCollItem : public SfxPoolItem // class SwTableBoxFormula : public SfxPoolItem, public SwTableFormula // class SwTableBoxValue : public SfxPoolItem // class SwFormatCharFormat: public SfxPoolItem, public SwClient // class SwFormatAnchor: public SfxPoolItem // class SwFormatAutoFormat: public SfxPoolItem // class SwFormatCol : public SfxPoolItem // class SwFormatChain: public SfxPoolItem // class SwFormatContent: public SfxPoolItem // class SwFormatFlyCnt : public SfxPoolItem // class SwFormatField : public SfxPoolItem // class SwFormatFootnote : public SfxPoolItem // class SwFormatHeader: public SfxPoolItem, public SwClient // class SwFormatFooter: public SfxPoolItem, public SwClient // class SwFormatINetFormat : public SfxPoolItem // class SwFormatLineNumber: public SfxPoolItem // class SwFormatMeta : public SfxPoolItem // class SwFormatVertOrient: public SfxPoolItem // class SwFormatHoriOrient: public SfxPoolItem // class SwFormatPageDesc : public SfxPoolItem, public SwClient // class SwFormatRefMark : public SfxPoolItem // class SwFormatRuby : public SfxPoolItem // class SwFormatURL: public SfxPoolItem // class SwFormatWrapInfluenceOnObjPos: public SfxPoolItem // class SwGammaGrf : public SfxPoolItem // class SwMsgPoolItem : public SfxPoolItem // class SwPtrMsgPoolItem : public SwMsgPoolItem // class SwFormatChg: public SwMsgPoolItem // class SwUpdateAttr : public SwMsgPoolItem // class SwTableFormulaUpdate : public SwMsgPoolItem // class SwAutoFormatGetDocNode: public SwMsgPoolItem // class SwAttrSetChg: public SwMsgPoolItem // class SwFindNearestNode : public SwMsgPoolItem // class SwStringMsgPoolItem : public SwMsgPoolItem // class SwFormatDrop: public SfxPoolItem, public SwClient // class SwTextGridItem : public SfxPoolItem // class SwTOXMark : public SfxPoolItem // class SwFltAnchor : public SfxPoolItem // class SwFltRedline : public SfxPoolItem // class SwFltBookmark : public SfxPoolItem // class SwFltRDFMark : public SfxPoolItem // class SwFltTOX : public SfxPoolItem // class SwDocDisplayItem : public SfxPoolItem // class SwElemItem : public SfxPoolItem // class SwAddPrinterItem : public SfxPoolItem, public SwPrintData // class SwShadowCursorItem : public SfxPoolItem // class SwTestItem : public SfxPoolItem // class SwEnvItem : public SfxPoolItem // class SwLabItem : public SfxPoolItem // class SwWrtShellItem: public SfxPoolItem // class SwPageFootnoteInfoItem : public SfxPoolItem // class SwPtrItem : public SfxPoolItem // class SwUINumRuleItem : public SfxPoolItem // class SwPaMItem : public SfxPoolItem ////////////////////////////////////////////////////////////////////////////// #ifdef DBG_UTIL // static size_t nAllocatedSfxPoolItemCount(0); static size_t nUsedSfxPoolItemCount(0); size_t getUsedSfxPoolItemCount() { return nUsedSfxPoolItemCount; } static std::unordered_set& incarnatedSfxPoolItems() { // Deferred instantiation to avoid initialization-order-fiasco: static std::unordered_set items; return items; } size_t getAllocatedSfxPoolItemCount() { size_t aRetval(0); // count globally allocated Items. Exclude Static/DynamicDefaults to // get the number without the PoolDefaultItems that will be freed with // the Pool. This also excludes the two InvalidOrDisabledItem's used // for INVALID_POOL_ITEM/DISABLED_POOL_ITEM for (const auto& rCandidate : incarnatedSfxPoolItems()) if (!rCandidate->isStaticDefault() && !rCandidate->isDynamicDefault()) aRetval++; return aRetval; } void listAllocatedSfxPoolItems() { SAL_INFO("svl.items", "ITEM: List of still allocated SfxPoolItems:"); for (const auto& rCandidate : incarnatedSfxPoolItems()) { if (!rCandidate->isStaticDefault() && !rCandidate->isDynamicDefault()) SAL_INFO("svl.items", " ITEM: WhichID: " << rCandidate->Which() << " SerialNumber: " << rCandidate->getSerialNumber() << " Class: " << typeid(*rCandidate).name()); } } #endif const SfxPoolItem* DefaultItemInstanceManager::find(const SfxPoolItem& rItem) const { auto it = maRegistered.find(rItem.Which()); if (it == maRegistered.end()) return nullptr; for (const auto& rCandidate : it->second) if (*rCandidate == rItem) return rCandidate; return nullptr; } ItemInstanceManager* SfxPoolItem::getItemInstanceManager() const { return nullptr; } SfxPoolItem::SfxPoolItem(sal_uInt16 const nWhich, SfxItemType eType) : m_nRefCount(0) , m_nWhich(nWhich) , m_eItemType(eType) #ifdef DBG_UTIL , m_nSerialNumber(nUsedSfxPoolItemCount) #endif , m_bStaticDefault(false) , m_bDynamicDefault(false) , m_bIsSetItem(false) , m_bShareable(true) , m_bNameOrIndex(false) #ifdef DBG_UTIL , m_bDeleted(false) #endif { #ifdef DBG_UTIL // nAllocatedSfxPoolItemCount++; nUsedSfxPoolItemCount++; incarnatedSfxPoolItems().insert(this); #endif assert(nWhich <= SHRT_MAX); } SfxPoolItem::~SfxPoolItem() { #ifdef DBG_UTIL // nAllocatedSfxPoolItemCount--; incarnatedSfxPoolItems().erase(this); m_bDeleted = true; #endif assert((m_nRefCount == 0) && "destroying item in use"); } bool SfxPoolItem::operator==(const SfxPoolItem& rCmp) const { SAL_WARN_IF(rCmp.ItemType() != ItemType(), "svl", "comparing different pool item subclasses " << typeid(rCmp).name() << " && " << typeid(*this).name()); assert(rCmp.ItemType() == ItemType() && "comparing different pool item subclasses"); return true; } bool SfxPoolItem::supportsHashCode() const { return false; } size_t SfxPoolItem::hashCode() const { assert(false && "this should never be called, classes should implement both supportsHashCode() and " "hashCode(), or neither"); return 0; } /** * This virtual method allows to get a textual representation of the value * for the SfxPoolItem subclasses. It should be overridden by all UI-relevant * SfxPoolItem subclasses. * * Because the unit of measure of the value in the SfxItemPool is only * queryable via @see SfxItemPool::GetMetric(sal_uInt16) const (and not * via the SfxPoolItem instance or subclass, the own unit of measure is * passed to 'eCoreMetric'. * * The corresponding unit of measure is passed as 'ePresentationMetric'. * * * @return SfxItemPresentation SfxItemPresentation::Nameless * A textual representation (if applicable * with a unit of measure) could be created, * but it doesn't contain any semantic meaning * * SfxItemPresentation::Complete * A complete textual representation could be * created with semantic meaning (if applicable * with unit of measure) * * Example: * * pSvxFontItem->GetPresentation( SFX_PRESENTATION_NAMELESS, ... ) * "12pt" with return SfxItemPresentation::Nameless * * pSvxColorItem->GetPresentation( SFX_PRESENTATION_COMPLETE, ... ) * "red" with return SfxItemPresentation::Nameless * Because the SvxColorItem does not know which color it represents * it cannot provide a name, which is communicated by the return value * * pSvxBorderItem->GetPresentation( SFX_PRESENTATION_COMPLETE, ... ) * "1cm top border, 2cm left border, 0.2cm bottom border, ..." */ bool SfxPoolItem::GetPresentation( SfxItemPresentation /*ePresentation*/, // IN: how we should format MapUnit /*eCoreMetric*/, // IN: current metric of the SfxPoolItems MapUnit /*ePresentationMetric*/, // IN: target metric of the presentation OUString& /*rText*/, // OUT: textual representation const IntlWrapper&) const { return false; } void SfxPoolItem::dumpAsXml(xmlTextWriterPtr pWriter) const { (void)xmlTextWriterStartElement(pWriter, BAD_CAST("SfxPoolItem")); (void)xmlTextWriterWriteFormatAttribute(pWriter, BAD_CAST("ptr"), "%p", this); (void)xmlTextWriterWriteAttribute(pWriter, BAD_CAST("whichId"), BAD_CAST(OString::number(Which()).getStr())); (void)xmlTextWriterWriteAttribute(pWriter, BAD_CAST("typeName"), BAD_CAST(typeid(*this).name())); OUString rText; IntlWrapper aIntlWrapper(SvtSysLocale().GetUILanguageTag()); if (GetPresentation(SfxItemPresentation::Complete, MapUnit::Map100thMM, MapUnit::Map100thMM, rText, aIntlWrapper)) (void)xmlTextWriterWriteAttribute(pWriter, BAD_CAST("presentation"), BAD_CAST(rText.toUtf8().getStr())); (void)xmlTextWriterEndElement(pWriter); } boost::property_tree::ptree SfxPoolItem::dumpAsJSON() const { boost::property_tree::ptree aTree; return aTree; } std::unique_ptr SfxPoolItem::CloneSetWhich(sal_uInt16 nNewWhich) const { std::unique_ptr pItem(Clone()); pItem->SetWhich(nNewWhich); return pItem; } void SfxPoolItem::ScaleMetrics(tools::Long /*lMult*/, tools::Long /*lDiv*/) {} bool SfxPoolItem::HasMetrics() const { return false; } bool SfxPoolItem::QueryValue(css::uno::Any&, sal_uInt8) const { OSL_FAIL("There is no implementation for QueryValue for this item!"); return false; } bool SfxPoolItem::PutValue(const css::uno::Any&, sal_uInt8) { OSL_FAIL("There is no implementation for PutValue for this item!"); return false; } bool areSfxPoolItemPtrsEqual(const SfxPoolItem* pItem1, const SfxPoolItem* pItem2) { #ifdef DBG_UTIL if (nullptr != pItem1 && nullptr != pItem2 && pItem1->Which() == pItem2->Which() && static_cast(pItem1) != static_cast(pItem2) && typeid(*pItem1) == typeid(*pItem2) && *pItem1 == *pItem2) { SAL_INFO("svl.items", "ITEM: PtrCompare != ContentCompare (!)"); } #endif // cast to void* to not trigger [loplugin:itemcompare] return (static_cast(pItem1) == static_cast(pItem2)); } bool SfxPoolItem::areSame(const SfxPoolItem* pItem1, const SfxPoolItem* pItem2) { if (pItem1 == pItem2) // pointer compare, this handles already // nullptr, INVALID_POOL_ITEM, DISABLED_POOL_ITEM // and if any Item is indeed handed over twice return true; if (nullptr == pItem1 || nullptr == pItem2) // one ptr is nullptr, not both, that would // have triggered above return false; if (pItem1->Which() != pItem2->Which()) // WhichIDs differ (fast) return false; if (pItem1->ItemType() != pItem2->ItemType()) // types differ (fast) return false; // return content compare using operator== at last return *pItem1 == *pItem2; } bool SfxPoolItem::areSame(const SfxPoolItem& rItem1, const SfxPoolItem& rItem2) { if (&rItem1 == &rItem2) // still use pointer compare, this handles already // nullptr, INVALID_POOL_ITEM, SfxVoidItem // and if any Item is indeed handed over twice return true; if (rItem1.Which() != rItem2.Which()) // WhichIDs differ (fast) return false; if (rItem1.ItemType() != rItem2.ItemType()) // types differ (fast) return false; // return content compare using operator== at last return rItem1 == rItem2; } namespace { class InvalidOrDisabledItem final : public SfxPoolItem { virtual bool operator==(const SfxPoolItem&) const override { return true; } virtual SfxPoolItem* Clone(SfxItemPool*) const override { return nullptr; } public: // make it StaticDefaultItem to process similar to these // which is plausible (never change and are not allowed to) InvalidOrDisabledItem() : SfxPoolItem(0, SfxItemType::InvalidOrDisabledItemType) { setStaticDefault(); } }; InvalidOrDisabledItem aInvalidItem; InvalidOrDisabledItem aDisabledItem; } SfxPoolItem const* const INVALID_POOL_ITEM = &aInvalidItem; SfxPoolItem const* const DISABLED_POOL_ITEM = &aDisabledItem; /* vim:set shiftwidth=4 softtabstop=4 expandtab: */