summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Stahl <michael.stahl@allotropia.de>2022-06-16 11:28:05 +0200
committerStephan Bergmann <sbergman@redhat.com>2022-06-18 09:03:30 +0200
commit37ec4442d70339dc8ec5fb8e4ec8984420b6e14d (patch)
tree4175e83124d5fbcb79208966e29b2156093e5106
parent20b8c7f38ae1c03dc0405a2da006ab6b2dbf3627 (diff)
o3tl: ensure that the initializer of enumarray contains enough elements
Currently this silently succeeds. Turns out oox already contains some too-short initializers, let's guess the missing properties are all invalid. One downside of the templated parameter pack approach in the enumarray ctor, as witnessed in vcl/win/window/salframe.cxx, is that argument types can no longer be implicitly deduced and thus need to be spelled explicitly now in certain cases. There were also three uses of enumarry with V being unsigned short (aka sal_uInt16) that started to cause narrowing conversion errors now and needed to be adapted: In editeng/source/uno/unonrule.cxx the obvious fix was to use the proper type for V. In sw/source/core/unocore/unosett.cxx with its odd mix of saL_Int16 and USHRT_MAX, lets keep things that way for now (probably awaiting later clean up) and use casts to avoid the implicit narrowing. And in sw/source/filter/ww8/wrtw8esh.cxx the ESCHER_Prop_* values, while presumably conceptionally of type sal_uInt16, are plain #defines (thus of type int), so rather than changing V to int it looked more consistent to explicitly cast the ESCHER_Prop_* vlaues to sal_uInt16. (And in tools/source/fsys/urlobj.cxx the poor loplugin:redundantfcast started to unhelpfully kick in for (only) the first argument now.) Change-Id: If06c29e673ec7e565e283c6f447889cf1f777cb7 Co-authored-by: Stephan Bergmann <sbergman@redhat.com> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135970 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
-rw-r--r--editeng/source/uno/unonrule.cxx2
-rw-r--r--include/o3tl/enumarray.hxx17
-rw-r--r--oox/source/drawingml/chart/objectformatter.cxx9
-rw-r--r--sw/source/core/unocore/unosett.cxx12
-rw-r--r--sw/source/filter/ww8/wrtw8esh.cxx4
-rw-r--r--tools/source/fsys/urlobj.cxx1
-rw-r--r--vcl/win/window/salframe.cxx184
7 files changed, 124 insertions, 105 deletions
diff --git a/editeng/source/uno/unonrule.cxx b/editeng/source/uno/unonrule.cxx
index 3e33d8e46237..5bd84cc10b42 100644
--- a/editeng/source/uno/unonrule.cxx
+++ b/editeng/source/uno/unonrule.cxx
@@ -67,7 +67,7 @@ const SvxAdjust aUnoToSvxAdjust[] =
SvxAdjust::Block
};
-const o3tl::enumarray<SvxAdjust, unsigned short> aSvxToUnoAdjust
+const o3tl::enumarray<SvxAdjust, sal_Int16> aSvxToUnoAdjust
{
text::HoriOrientation::LEFT,
text::HoriOrientation::RIGHT,
diff --git a/include/o3tl/enumarray.hxx b/include/o3tl/enumarray.hxx
index a3c09d56bea0..6abfc9ac53ba 100644
--- a/include/o3tl/enumarray.hxx
+++ b/include/o3tl/enumarray.hxx
@@ -22,6 +22,7 @@
#include <iterator>
#include <type_traits>
+#include <utility>
#include <cassert>
namespace o3tl {
@@ -55,6 +56,20 @@ public:
static const size_type max_index = static_cast<size_type>(E::LAST);
+ // If this ctor only had the args parameter pack, it would erroneously get picked as a better
+ // choice than the (implicit) copy ctor (taking a const lvalue reference) when a copy is made
+ // from a non-const lvalue enumarray; the easiest way to avoid that is the additional arg
+ // parameter; and to keep things simple that parameter is always passed by const lvalue
+ // reference for now even if there could be cases where passing it by rvalue reference might be
+ // beneficial or even necessary if V is a move-only type:
+ template<typename... T> constexpr enumarray(V const & arg, T && ...args):
+ detail_values{arg, std::forward<T>(args)...}
+ {
+ static_assert(sizeof... (T) == max_index);
+ }
+
+ enumarray() {}
+
const V& operator[](E index) const
{
assert(index>=static_cast<E>(0) && index<=E::LAST);
@@ -78,7 +93,7 @@ public:
V* data() { return detail_values; }
-//private:
+private:
V detail_values[max_index + 1];
};
diff --git a/oox/source/drawingml/chart/objectformatter.cxx b/oox/source/drawingml/chart/objectformatter.cxx
index 44b3d3a3f0ea..24094db5234a 100644
--- a/oox/source/drawingml/chart/objectformatter.cxx
+++ b/oox/source/drawingml/chart/objectformatter.cxx
@@ -450,7 +450,8 @@ const ShapePropertyIds spnCommonPropIds =
PROP_FillStyle, PROP_FillColor, PROP_FillTransparence, PROP_FillTransparenceGradientName, PROP_FillGradientName,
PROP_FillBitmapName, PROP_FillBitmapMode, PROP_FillBitmapSizeX, PROP_FillBitmapSizeY,
PROP_FillBitmapPositionOffsetX, PROP_FillBitmapPositionOffsetY, PROP_FillBitmapRectanglePoint,
- PROP_FillHatchName, PROP_FillBackground
+ PROP_FillHatchName, PROP_FillBackground,
+ PROP_INVALID, PROP_INVALID, PROP_INVALID, PROP_INVALID, PROP_INVALID
};
const ShapePropertyIds spnLinearPropIds =
@@ -460,7 +461,8 @@ const ShapePropertyIds spnLinearPropIds =
PROP_INVALID, PROP_INVALID, PROP_INVALID, PROP_INVALID, PROP_INVALID,
PROP_INVALID, PROP_INVALID, PROP_INVALID, PROP_INVALID,
PROP_INVALID, PROP_INVALID, PROP_INVALID,
- PROP_INVALID, PROP_INVALID
+ PROP_INVALID, PROP_INVALID,
+ PROP_INVALID, PROP_INVALID, PROP_INVALID, PROP_INVALID, PROP_INVALID
};
const ShapePropertyIds spnFilledPropIds =
@@ -491,7 +493,8 @@ const ShapePropertyIds spnFilledPropIds =
PROP_FillBitmapPositionOffsetY,
PROP_FillBitmapRectanglePoint,
PROP_HatchName,
- PROP_FillBackground
+ PROP_FillBackground,
+ PROP_INVALID, PROP_INVALID, PROP_INVALID, PROP_INVALID, PROP_INVALID
};
/** Property info for common chart objects, to be used in ShapePropertyMap. */
diff --git a/sw/source/core/unocore/unosett.cxx b/sw/source/core/unocore/unosett.cxx
index 648110971c33..e06e5fe42e50 100644
--- a/sw/source/core/unocore/unosett.cxx
+++ b/sw/source/core/unocore/unosett.cxx
@@ -242,12 +242,12 @@ static SwPageDesc* lcl_GetPageDesc(SwDoc* pDoc, const uno::Any& aValue)
// Numbering
const o3tl::enumarray<SvxAdjust, unsigned short> aSvxToUnoAdjust
{
- text::HoriOrientation::LEFT, //3
- text::HoriOrientation::RIGHT, //1
- USHRT_MAX,
- text::HoriOrientation::CENTER, //2
- USHRT_MAX,
- USHRT_MAX
+ static_cast<unsigned short>(text::HoriOrientation::LEFT), //3
+ static_cast<unsigned short>(text::HoriOrientation::RIGHT), //1
+ static_cast<unsigned short>(USHRT_MAX),
+ static_cast<unsigned short>(text::HoriOrientation::CENTER), //2
+ static_cast<unsigned short>(USHRT_MAX),
+ static_cast<unsigned short>(USHRT_MAX)
};
const unsigned short aUnoToSvxAdjust[] =
diff --git a/sw/source/filter/ww8/wrtw8esh.cxx b/sw/source/filter/ww8/wrtw8esh.cxx
index 9881868a9e17..d2de899f2d3d 100644
--- a/sw/source/filter/ww8/wrtw8esh.cxx
+++ b/sw/source/filter/ww8/wrtw8esh.cxx
@@ -1880,8 +1880,8 @@ sal_Int32 SwBasicEscherEx::WriteFlyFrameAttr(const SwFrameFormat& rFormat,
{
static const o3tl::enumarray<SvxBoxItemLine, sal_uInt16> aExhperProp =
{
- ESCHER_Prop_dyTextTop, ESCHER_Prop_dyTextBottom,
- ESCHER_Prop_dxTextLeft, ESCHER_Prop_dxTextRight
+ sal_uInt16(ESCHER_Prop_dyTextTop), sal_uInt16(ESCHER_Prop_dyTextBottom),
+ sal_uInt16(ESCHER_Prop_dxTextLeft), sal_uInt16(ESCHER_Prop_dxTextRight)
};
const SvxBorderLine* pLine;
diff --git a/tools/source/fsys/urlobj.cxx b/tools/source/fsys/urlobj.cxx
index 00e3207b2d3b..12a1a797fba0 100644
--- a/tools/source/fsys/urlobj.cxx
+++ b/tools/source/fsys/urlobj.cxx
@@ -348,6 +348,7 @@ INetURLObject::getSchemeInfo(INetProtocol eTheScheme)
static constexpr OUStringLiteral VND_CMIS = u"vnd.libreoffice.cmis";
static o3tl::enumarray<INetProtocol, SchemeInfo> const map = {
+ // [-loplugin:redundantfcast]:
SchemeInfo{
EMPTY, "", false, false, false, false, false, false, false, false},
SchemeInfo{
diff --git a/vcl/win/window/salframe.cxx b/vcl/win/window/salframe.cxx
index 567d95eec233..fac5bbfac242 100644
--- a/vcl/win/window/salframe.cxx
+++ b/vcl/win/window/salframe.cxx
@@ -2025,102 +2025,102 @@ void WinSalFrame::SetPointer( PointerStyle ePointerStyle )
static o3tl::enumarray<PointerStyle, ImplPtrData> aImplPtrTab =
{
ImplPtrData{ nullptr, IDC_ARROW, 0 }, // POINTER_ARROW
- { nullptr, nullptr, SAL_RESID_POINTER_NULL }, // POINTER_NULL
- { nullptr, IDC_WAIT, 0 }, // POINTER_WAIT
- { nullptr, IDC_IBEAM, 0 }, // POINTER_TEXT
- { nullptr, IDC_HELP, 0 }, // POINTER_HELP
- { nullptr, IDC_CROSS, 0 }, // POINTER_CROSS
- { nullptr, IDC_SIZEALL, 0 }, // POINTER_MOVE
- { nullptr, IDC_SIZENS, 0 }, // POINTER_NSIZE
- { nullptr, IDC_SIZENS, 0 }, // POINTER_SSIZE
- { nullptr, IDC_SIZEWE, 0 }, // POINTER_WSIZE
- { nullptr, IDC_SIZEWE, 0 }, // POINTER_ESIZE
- { nullptr, IDC_SIZENWSE, 0 }, // POINTER_NWSIZE
- { nullptr, IDC_SIZENESW, 0 }, // POINTER_NESIZE
- { nullptr, IDC_SIZENESW, 0 }, // POINTER_SWSIZE
- { nullptr, IDC_SIZENWSE, 0 }, // POINTER_SESIZE
- { nullptr, IDC_SIZENS, 0 }, // POINTER_WINDOW_NSIZE
- { nullptr, IDC_SIZENS, 0 }, // POINTER_WINDOW_SSIZE
- { nullptr, IDC_SIZEWE, 0 }, // POINTER_WINDOW_WSIZE
- { nullptr, IDC_SIZEWE, 0 }, // POINTER_WINDOW_ESIZE
- { nullptr, IDC_SIZENWSE, 0 }, // POINTER_WINDOW_NWSIZE
- { nullptr, IDC_SIZENESW, 0 }, // POINTER_WINDOW_NESIZE
- { nullptr, IDC_SIZENESW, 0 }, // POINTER_WINDOW_SWSIZE
- { nullptr, IDC_SIZENWSE, 0 }, // POINTER_WINDOW_SESIZE
- { nullptr, IDC_SIZEWE, 0 }, // POINTER_HSPLIT
- { nullptr, IDC_SIZENS, 0 }, // POINTER_VSPLIT
- { nullptr, IDC_SIZEWE, 0 }, // POINTER_HSIZEBAR
- { nullptr, IDC_SIZENS, 0 }, // POINTER_VSIZEBAR
- { nullptr, IDC_HAND, 0 }, // POINTER_HAND
- { nullptr, IDC_HAND, 0 }, // POINTER_REFHAND
- { nullptr, IDC_PEN, 0 }, // POINTER_PEN
- { nullptr, nullptr, SAL_RESID_POINTER_MAGNIFY }, // POINTER_MAGNIFY
- { nullptr, nullptr, SAL_RESID_POINTER_FILL }, // POINTER_FILL
- { nullptr, nullptr, SAL_RESID_POINTER_ROTATE }, // POINTER_ROTATE
- { nullptr, nullptr, SAL_RESID_POINTER_HSHEAR }, // POINTER_HSHEAR
- { nullptr, nullptr, SAL_RESID_POINTER_VSHEAR }, // POINTER_VSHEAR
- { nullptr, nullptr, SAL_RESID_POINTER_MIRROR }, // POINTER_MIRROR
- { nullptr, nullptr, SAL_RESID_POINTER_CROOK }, // POINTER_CROOK
- { nullptr, nullptr, SAL_RESID_POINTER_CROP }, // POINTER_CROP
- { nullptr, nullptr, SAL_RESID_POINTER_MOVEPOINT }, // POINTER_MOVEPOINT
- { nullptr, nullptr, SAL_RESID_POINTER_MOVEBEZIERWEIGHT }, // POINTER_MOVEBEZIERWEIGHT
- { nullptr, nullptr, SAL_RESID_POINTER_MOVEDATA }, // POINTER_MOVEDATA
- { nullptr, nullptr, SAL_RESID_POINTER_COPYDATA }, // POINTER_COPYDATA
- { nullptr, nullptr, SAL_RESID_POINTER_LINKDATA }, // POINTER_LINKDATA
- { nullptr, nullptr, SAL_RESID_POINTER_MOVEDATALINK }, // POINTER_MOVEDATALINK
- { nullptr, nullptr, SAL_RESID_POINTER_COPYDATALINK }, // POINTER_COPYDATALINK
- { nullptr, nullptr, SAL_RESID_POINTER_MOVEFILE }, // POINTER_MOVEFILE
- { nullptr, nullptr, SAL_RESID_POINTER_COPYFILE }, // POINTER_COPYFILE
- { nullptr, nullptr, SAL_RESID_POINTER_LINKFILE }, // POINTER_LINKFILE
- { nullptr, nullptr, SAL_RESID_POINTER_MOVEFILELINK }, // POINTER_MOVEFILELINK
- { nullptr, nullptr, SAL_RESID_POINTER_COPYFILELINK }, // POINTER_COPYFILELINK
- { nullptr, nullptr, SAL_RESID_POINTER_MOVEFILES }, // POINTER_MOVEFILES
- { nullptr, nullptr, SAL_RESID_POINTER_COPYFILES }, // POINTER_COPYFILES
- { nullptr, IDC_NO, 0 }, // POINTER_NOTALLOWED
- { nullptr, nullptr, SAL_RESID_POINTER_DRAW_LINE }, // POINTER_DRAW_LINE
- { nullptr, nullptr, SAL_RESID_POINTER_DRAW_RECT }, // POINTER_DRAW_RECT
- { nullptr, nullptr, SAL_RESID_POINTER_DRAW_POLYGON }, // POINTER_DRAW_POLYGON
- { nullptr, nullptr, SAL_RESID_POINTER_DRAW_BEZIER }, // POINTER_DRAW_BEZIER
- { nullptr, nullptr, SAL_RESID_POINTER_DRAW_ARC }, // POINTER_DRAW_ARC
- { nullptr, nullptr, SAL_RESID_POINTER_DRAW_PIE }, // POINTER_DRAW_PIE
- { nullptr, nullptr, SAL_RESID_POINTER_DRAW_CIRCLECUT }, // POINTER_DRAW_CIRCLECUT
- { nullptr, nullptr, SAL_RESID_POINTER_DRAW_ELLIPSE }, // POINTER_DRAW_ELLIPSE
- { nullptr, nullptr, SAL_RESID_POINTER_DRAW_FREEHAND }, // POINTER_DRAW_FREEHAND
- { nullptr, nullptr, SAL_RESID_POINTER_DRAW_CONNECT }, // POINTER_DRAW_CONNECT
- { nullptr, nullptr, SAL_RESID_POINTER_DRAW_TEXT }, // POINTER_DRAW_TEXT
- { nullptr, nullptr, SAL_RESID_POINTER_DRAW_CAPTION }, // POINTER_DRAW_CAPTION
- { nullptr, nullptr, SAL_RESID_POINTER_CHART }, // POINTER_CHART
- { nullptr, nullptr, SAL_RESID_POINTER_DETECTIVE }, // POINTER_DETECTIVE
- { nullptr, nullptr, SAL_RESID_POINTER_PIVOT_COL }, // POINTER_PIVOT_COL
- { nullptr, nullptr, SAL_RESID_POINTER_PIVOT_ROW }, // POINTER_PIVOT_ROW
- { nullptr, nullptr, SAL_RESID_POINTER_PIVOT_FIELD }, // POINTER_PIVOT_FIELD
- { nullptr, nullptr, SAL_RESID_POINTER_CHAIN }, // POINTER_CHAIN
- { nullptr, nullptr, SAL_RESID_POINTER_CHAIN_NOTALLOWED }, // POINTER_CHAIN_NOTALLOWED
- { nullptr, nullptr, SAL_RESID_POINTER_AUTOSCROLL_N }, // POINTER_AUTOSCROLL_N
- { nullptr, nullptr, SAL_RESID_POINTER_AUTOSCROLL_S }, // POINTER_AUTOSCROLL_S
- { nullptr, nullptr, SAL_RESID_POINTER_AUTOSCROLL_W }, // POINTER_AUTOSCROLL_W
- { nullptr, nullptr, SAL_RESID_POINTER_AUTOSCROLL_E }, // POINTER_AUTOSCROLL_E
- { nullptr, nullptr, SAL_RESID_POINTER_AUTOSCROLL_NW }, // POINTER_AUTOSCROLL_NW
- { nullptr, nullptr, SAL_RESID_POINTER_AUTOSCROLL_NE }, // POINTER_AUTOSCROLL_NE
- { nullptr, nullptr, SAL_RESID_POINTER_AUTOSCROLL_SW }, // POINTER_AUTOSCROLL_SW
- { nullptr, nullptr, SAL_RESID_POINTER_AUTOSCROLL_SE }, // POINTER_AUTOSCROLL_SE
- { nullptr, nullptr, SAL_RESID_POINTER_AUTOSCROLL_NS }, // POINTER_AUTOSCROLL_NS
- { nullptr, nullptr, SAL_RESID_POINTER_AUTOSCROLL_WE }, // POINTER_AUTOSCROLL_WE
- { nullptr, nullptr, SAL_RESID_POINTER_AUTOSCROLL_NSWE }, // POINTER_AUTOSCROLL_NSWE
- { nullptr, nullptr, SAL_RESID_POINTER_TEXT_VERTICAL }, // POINTER_TEXT_VERTICAL
- { nullptr, nullptr, SAL_RESID_POINTER_PIVOT_DELETE }, // POINTER_PIVOT_DELETE
+ ImplPtrData{ nullptr, nullptr, SAL_RESID_POINTER_NULL }, // POINTER_NULL
+ ImplPtrData{ nullptr, IDC_WAIT, 0 }, // POINTER_WAIT
+ ImplPtrData{ nullptr, IDC_IBEAM, 0 }, // POINTER_TEXT
+ ImplPtrData{ nullptr, IDC_HELP, 0 }, // POINTER_HELP
+ ImplPtrData{ nullptr, IDC_CROSS, 0 }, // POINTER_CROSS
+ ImplPtrData{ nullptr, IDC_SIZEALL, 0 }, // POINTER_MOVE
+ ImplPtrData{ nullptr, IDC_SIZENS, 0 }, // POINTER_NSIZE
+ ImplPtrData{ nullptr, IDC_SIZENS, 0 }, // POINTER_SSIZE
+ ImplPtrData{ nullptr, IDC_SIZEWE, 0 }, // POINTER_WSIZE
+ ImplPtrData{ nullptr, IDC_SIZEWE, 0 }, // POINTER_ESIZE
+ ImplPtrData{ nullptr, IDC_SIZENWSE, 0 }, // POINTER_NWSIZE
+ ImplPtrData{ nullptr, IDC_SIZENESW, 0 }, // POINTER_NESIZE
+ ImplPtrData{ nullptr, IDC_SIZENESW, 0 }, // POINTER_SWSIZE
+ ImplPtrData{ nullptr, IDC_SIZENWSE, 0 }, // POINTER_SESIZE
+ ImplPtrData{ nullptr, IDC_SIZENS, 0 }, // POINTER_WINDOW_NSIZE
+ ImplPtrData{ nullptr, IDC_SIZENS, 0 }, // POINTER_WINDOW_SSIZE
+ ImplPtrData{ nullptr, IDC_SIZEWE, 0 }, // POINTER_WINDOW_WSIZE
+ ImplPtrData{ nullptr, IDC_SIZEWE, 0 }, // POINTER_WINDOW_ESIZE
+ ImplPtrData{ nullptr, IDC_SIZENWSE, 0 }, // POINTER_WINDOW_NWSIZE
+ ImplPtrData{ nullptr, IDC_SIZENESW, 0 }, // POINTER_WINDOW_NESIZE
+ ImplPtrData{ nullptr, IDC_SIZENESW, 0 }, // POINTER_WINDOW_SWSIZE
+ ImplPtrData{ nullptr, IDC_SIZENWSE, 0 }, // POINTER_WINDOW_SESIZE
+ ImplPtrData{ nullptr, IDC_SIZEWE, 0 }, // POINTER_HSPLIT
+ ImplPtrData{ nullptr, IDC_SIZENS, 0 }, // POINTER_VSPLIT
+ ImplPtrData{ nullptr, IDC_SIZEWE, 0 }, // POINTER_HSIZEBAR
+ ImplPtrData{ nullptr, IDC_SIZENS, 0 }, // POINTER_VSIZEBAR
+ ImplPtrData{ nullptr, IDC_HAND, 0 }, // POINTER_HAND
+ ImplPtrData{ nullptr, IDC_HAND, 0 }, // POINTER_REFHAND
+ ImplPtrData{ nullptr, IDC_PEN, 0 }, // POINTER_PEN
+ ImplPtrData{ nullptr, nullptr, SAL_RESID_POINTER_MAGNIFY }, // POINTER_MAGNIFY
+ ImplPtrData{ nullptr, nullptr, SAL_RESID_POINTER_FILL }, // POINTER_FILL
+ ImplPtrData{ nullptr, nullptr, SAL_RESID_POINTER_ROTATE }, // POINTER_ROTATE
+ ImplPtrData{ nullptr, nullptr, SAL_RESID_POINTER_HSHEAR }, // POINTER_HSHEAR
+ ImplPtrData{ nullptr, nullptr, SAL_RESID_POINTER_VSHEAR }, // POINTER_VSHEAR
+ ImplPtrData{ nullptr, nullptr, SAL_RESID_POINTER_MIRROR }, // POINTER_MIRROR
+ ImplPtrData{ nullptr, nullptr, SAL_RESID_POINTER_CROOK }, // POINTER_CROOK
+ ImplPtrData{ nullptr, nullptr, SAL_RESID_POINTER_CROP }, // POINTER_CROP
+ ImplPtrData{ nullptr, nullptr, SAL_RESID_POINTER_MOVEPOINT }, // POINTER_MOVEPOINT
+ ImplPtrData{ nullptr, nullptr, SAL_RESID_POINTER_MOVEBEZIERWEIGHT }, // POINTER_MOVEBEZIERWEIGHT
+ ImplPtrData{ nullptr, nullptr, SAL_RESID_POINTER_MOVEDATA }, // POINTER_MOVEDATA
+ ImplPtrData{ nullptr, nullptr, SAL_RESID_POINTER_COPYDATA }, // POINTER_COPYDATA
+ ImplPtrData{ nullptr, nullptr, SAL_RESID_POINTER_LINKDATA }, // POINTER_LINKDATA
+ ImplPtrData{ nullptr, nullptr, SAL_RESID_POINTER_MOVEDATALINK }, // POINTER_MOVEDATALINK
+ ImplPtrData{ nullptr, nullptr, SAL_RESID_POINTER_COPYDATALINK }, // POINTER_COPYDATALINK
+ ImplPtrData{ nullptr, nullptr, SAL_RESID_POINTER_MOVEFILE }, // POINTER_MOVEFILE
+ ImplPtrData{ nullptr, nullptr, SAL_RESID_POINTER_COPYFILE }, // POINTER_COPYFILE
+ ImplPtrData{ nullptr, nullptr, SAL_RESID_POINTER_LINKFILE }, // POINTER_LINKFILE
+ ImplPtrData{ nullptr, nullptr, SAL_RESID_POINTER_MOVEFILELINK }, // POINTER_MOVEFILELINK
+ ImplPtrData{ nullptr, nullptr, SAL_RESID_POINTER_COPYFILELINK }, // POINTER_COPYFILELINK
+ ImplPtrData{ nullptr, nullptr, SAL_RESID_POINTER_MOVEFILES }, // POINTER_MOVEFILES
+ ImplPtrData{ nullptr, nullptr, SAL_RESID_POINTER_COPYFILES }, // POINTER_COPYFILES
+ ImplPtrData{ nullptr, IDC_NO, 0 }, // POINTER_NOTALLOWED
+ ImplPtrData{ nullptr, nullptr, SAL_RESID_POINTER_DRAW_LINE }, // POINTER_DRAW_LINE
+ ImplPtrData{ nullptr, nullptr, SAL_RESID_POINTER_DRAW_RECT }, // POINTER_DRAW_RECT
+ ImplPtrData{ nullptr, nullptr, SAL_RESID_POINTER_DRAW_POLYGON }, // POINTER_DRAW_POLYGON
+ ImplPtrData{ nullptr, nullptr, SAL_RESID_POINTER_DRAW_BEZIER }, // POINTER_DRAW_BEZIER
+ ImplPtrData{ nullptr, nullptr, SAL_RESID_POINTER_DRAW_ARC }, // POINTER_DRAW_ARC
+ ImplPtrData{ nullptr, nullptr, SAL_RESID_POINTER_DRAW_PIE }, // POINTER_DRAW_PIE
+ ImplPtrData{ nullptr, nullptr, SAL_RESID_POINTER_DRAW_CIRCLECUT }, // POINTER_DRAW_CIRCLECUT
+ ImplPtrData{ nullptr, nullptr, SAL_RESID_POINTER_DRAW_ELLIPSE }, // POINTER_DRAW_ELLIPSE
+ ImplPtrData{ nullptr, nullptr, SAL_RESID_POINTER_DRAW_FREEHAND }, // POINTER_DRAW_FREEHAND
+ ImplPtrData{ nullptr, nullptr, SAL_RESID_POINTER_DRAW_CONNECT }, // POINTER_DRAW_CONNECT
+ ImplPtrData{ nullptr, nullptr, SAL_RESID_POINTER_DRAW_TEXT }, // POINTER_DRAW_TEXT
+ ImplPtrData{ nullptr, nullptr, SAL_RESID_POINTER_DRAW_CAPTION }, // POINTER_DRAW_CAPTION
+ ImplPtrData{ nullptr, nullptr, SAL_RESID_POINTER_CHART }, // POINTER_CHART
+ ImplPtrData{ nullptr, nullptr, SAL_RESID_POINTER_DETECTIVE }, // POINTER_DETECTIVE
+ ImplPtrData{ nullptr, nullptr, SAL_RESID_POINTER_PIVOT_COL }, // POINTER_PIVOT_COL
+ ImplPtrData{ nullptr, nullptr, SAL_RESID_POINTER_PIVOT_ROW }, // POINTER_PIVOT_ROW
+ ImplPtrData{ nullptr, nullptr, SAL_RESID_POINTER_PIVOT_FIELD }, // POINTER_PIVOT_FIELD
+ ImplPtrData{ nullptr, nullptr, SAL_RESID_POINTER_CHAIN }, // POINTER_CHAIN
+ ImplPtrData{ nullptr, nullptr, SAL_RESID_POINTER_CHAIN_NOTALLOWED }, // POINTER_CHAIN_NOTALLOWED
+ ImplPtrData{ nullptr, nullptr, SAL_RESID_POINTER_AUTOSCROLL_N }, // POINTER_AUTOSCROLL_N
+ ImplPtrData{ nullptr, nullptr, SAL_RESID_POINTER_AUTOSCROLL_S }, // POINTER_AUTOSCROLL_S
+ ImplPtrData{ nullptr, nullptr, SAL_RESID_POINTER_AUTOSCROLL_W }, // POINTER_AUTOSCROLL_W
+ ImplPtrData{ nullptr, nullptr, SAL_RESID_POINTER_AUTOSCROLL_E }, // POINTER_AUTOSCROLL_E
+ ImplPtrData{ nullptr, nullptr, SAL_RESID_POINTER_AUTOSCROLL_NW }, // POINTER_AUTOSCROLL_NW
+ ImplPtrData{ nullptr, nullptr, SAL_RESID_POINTER_AUTOSCROLL_NE }, // POINTER_AUTOSCROLL_NE
+ ImplPtrData{ nullptr, nullptr, SAL_RESID_POINTER_AUTOSCROLL_SW }, // POINTER_AUTOSCROLL_SW
+ ImplPtrData{ nullptr, nullptr, SAL_RESID_POINTER_AUTOSCROLL_SE }, // POINTER_AUTOSCROLL_SE
+ ImplPtrData{ nullptr, nullptr, SAL_RESID_POINTER_AUTOSCROLL_NS }, // POINTER_AUTOSCROLL_NS
+ ImplPtrData{ nullptr, nullptr, SAL_RESID_POINTER_AUTOSCROLL_WE }, // POINTER_AUTOSCROLL_WE
+ ImplPtrData{ nullptr, nullptr, SAL_RESID_POINTER_AUTOSCROLL_NSWE }, // POINTER_AUTOSCROLL_NSWE
+ ImplPtrData{ nullptr, nullptr, SAL_RESID_POINTER_TEXT_VERTICAL }, // POINTER_TEXT_VERTICAL
+ ImplPtrData{ nullptr, nullptr, SAL_RESID_POINTER_PIVOT_DELETE }, // POINTER_PIVOT_DELETE
// #i32329#
- { nullptr, nullptr, SAL_RESID_POINTER_TAB_SELECT_S }, // POINTER_TAB_SELECT_S
- { nullptr, nullptr, SAL_RESID_POINTER_TAB_SELECT_E }, // POINTER_TAB_SELECT_E
- { nullptr, nullptr, SAL_RESID_POINTER_TAB_SELECT_SE }, // POINTER_TAB_SELECT_SE
- { nullptr, nullptr, SAL_RESID_POINTER_TAB_SELECT_W }, // POINTER_TAB_SELECT_W
- { nullptr, nullptr, SAL_RESID_POINTER_TAB_SELECT_SW }, // POINTER_TAB_SELECT_SW
+ ImplPtrData{ nullptr, nullptr, SAL_RESID_POINTER_TAB_SELECT_S }, // POINTER_TAB_SELECT_S
+ ImplPtrData{ nullptr, nullptr, SAL_RESID_POINTER_TAB_SELECT_E }, // POINTER_TAB_SELECT_E
+ ImplPtrData{ nullptr, nullptr, SAL_RESID_POINTER_TAB_SELECT_SE }, // POINTER_TAB_SELECT_SE
+ ImplPtrData{ nullptr, nullptr, SAL_RESID_POINTER_TAB_SELECT_W }, // POINTER_TAB_SELECT_W
+ ImplPtrData{ nullptr, nullptr, SAL_RESID_POINTER_TAB_SELECT_SW }, // POINTER_TAB_SELECT_SW
- { nullptr, nullptr, SAL_RESID_POINTER_HIDEWHITESPACE }, // POINTER_HIDEWHITESPACE
- { nullptr, nullptr, SAL_RESID_POINTER_SHOWWHITESPACE }, // POINTER_UNHIDEWHITESPACE
+ ImplPtrData{ nullptr, nullptr, SAL_RESID_POINTER_HIDEWHITESPACE }, // POINTER_HIDEWHITESPACE
+ ImplPtrData{ nullptr, nullptr, SAL_RESID_POINTER_SHOWWHITESPACE }, // POINTER_UNHIDEWHITESPACE
- { nullptr, nullptr, SAL_RESID_POINTER_FATCROSS } // POINTER_FATCROSS
+ ImplPtrData{ nullptr, nullptr, SAL_RESID_POINTER_FATCROSS } // POINTER_FATCROSS
};
// Mousepointer loaded ?