Kaydet (Commit) 22f2cf3c authored tarafından Noel Grandin's avatar Noel Grandin

implement std::hash for css::uno::Reference and rtl::Reference

The declaration in BarChart.cxx is particularly suspicious, because it
was using a < for the KeyEqual template parameter.
Been there since:
    commit b2c3233e
    Date:   Thu Dec 21 20:08:33 2017 +0900
    chart2: suspend/resume setting rects dirty for 3D shapes

comphelper::OInterfaceCompare is no longer necessary

Change-Id: I8278c4a3d9113a18570ca237cd05d553ec8f3975
Reviewed-on: https://gerrit.libreoffice.org/71537
Tested-by: Jenkins
Reviewed-by: 's avatarNoel Grandin <noel.grandin@collabora.co.uk>
üst f9f7cc62
......@@ -29,8 +29,6 @@
#include <tools/diagnose_ex.h>
#include <comphelper/stl_types.hxx>
namespace basctl { namespace docs {
using ::com::sun::star::uno::Exception;
......@@ -105,7 +103,7 @@ namespace basctl { namespace docs {
const IDocumentDescriptorFilter* _pFilter )
{
// ensure we don't encounter some models multiple times
std::set< Reference< XModel >, ::comphelper::OInterfaceCompare< XModel > > aEncounteredModels;
std::set< Reference< XModel > > aEncounteredModels;
for ( auto const & rFrame : _rFrames )
{
......
......@@ -35,7 +35,6 @@
#include <tools/debug.hxx>
#include <tools/diagnose_ex.h>
#include <tools/urlobj.hxx>
#include <comphelper/stl_types.hxx>
#include <comphelper/processfactory.hxx>
#include <comphelper/documentinfo.hxx>
#include <unotools/eventlisteneradapter.hxx>
......@@ -62,7 +61,7 @@ namespace basic
using ::com::sun::star::document::XStorageBasedDocument;
using ::com::sun::star::document::XEmbeddedScripts;
typedef std::map< Reference< XInterface >, std::unique_ptr<BasicManager>, ::comphelper::OInterfaceCompare< XInterface > > BasicManagerStore;
typedef std::map< Reference< XInterface >, std::unique_ptr<BasicManager> > BasicManagerStore;
typedef std::vector< BasicManagerCreationListener* > CreationListeners;
......
......@@ -45,27 +45,6 @@ using namespace ::com::sun::star;
using namespace ::rtl::math;
using namespace ::com::sun::star::chart2;
namespace
{
struct XShapeCompare
{
bool operator() (uno::Reference<drawing::XShape> const & lhs, uno::Reference<drawing::XShape> const & rhs) const
{
return lhs.get() < rhs.get();
}
};
struct XShapeHash
{
bool operator()(uno::Reference<drawing::XShape> const & rXShape) const
{
return rXShape->getShapeType().hashCode();
}
};
} // end anonymous namespace
BarChart::BarChart( const uno::Reference<XChartType>& xChartTypeModel
, sal_Int32 nDimensionCount )
: VSeriesPlotter( xChartTypeModel, nDimensionCount )
......@@ -501,7 +480,7 @@ void BarChart::createShapes()
bool bDrawConnectionLinesInited = false;
bool bOnlyConnectionLinesForThisPoint = false;
std::unordered_set<uno::Reference<drawing::XShape>, XShapeHash, XShapeCompare> aShapeSet;
std::unordered_set<uno::Reference<drawing::XShape>> aShapeSet;
const comphelper::ScopeGuard aGuard([aShapeSet]() {
......
......@@ -56,15 +56,10 @@ namespace comphelper {
typedef std::unordered_map<OUString, uno::Reference<embed::XEmbeddedObject>> EmbeddedObjectContainerNameMap;
struct EmbedImpl
{
struct XEmbeddedObjectRefHash
{
size_t operator()(const uno::Reference<embed::XEmbeddedObject>& rObject) const
{ return reinterpret_cast<size_t>(rObject.get()); }
};
// TODO/LATER: remove objects from temp. Container storage when object is disposed
EmbeddedObjectContainerNameMap maNameToObjectMap;
// to speed up lookup by Reference
std::unordered_map<uno::Reference<embed::XEmbeddedObject>, OUString, XEmbeddedObjectRefHash> maObjectToNameMap;
std::unordered_map<uno::Reference<embed::XEmbeddedObject>, OUString> maObjectToNameMap;
uno::Reference < embed::XStorage > mxStorage;
EmbeddedObjectContainer* mpTempObjectContainer;
uno::Reference < embed::XStorage > mxImageStorage;
......
......@@ -140,8 +140,6 @@ bool containsXInterfaceSubclass(const clang::Type* pType0) {
.GlobalNamespace())
|| (dc.Class("OAutoRegistration").Namespace("comphelper")
.GlobalNamespace())
|| (dc.Struct("OInterfaceCompare").Namespace("comphelper")
.GlobalNamespace())
|| dc.Class("WeakBag").Namespace("comphelper").GlobalNamespace()
|| (dc.Struct("class_").Namespace("service_decl")
.Namespace("comphelper").GlobalNamespace())
......
......@@ -38,7 +38,6 @@
#include <com/sun/star/frame/XDesktop2.hpp>
#include <com/sun/star/frame/XTerminateListener.hpp>
#include <com/sun/star/reflection/XProxyFactory.hpp>
#include <comphelper/stl_types.hxx>
#include <osl/mutex.hxx>
#include <rtl/ref.hxx>
......@@ -60,13 +59,11 @@ namespace connectivity
{
typedef ::comphelper::OInterfaceCompare< css::sdbc::XDriver > ODriverCompare;
typedef std::map<OUString, rtl::Reference<OConnectionPool>> OConnectionPools;
typedef std::map<
css::uno::Reference< css::sdbc::XDriver >,
css::uno::WeakReference< css::sdbc::XDriver >,
ODriverCompare>
css::uno::WeakReference< css::sdbc::XDriver >>
MapDriver2DriverRef;
MapDriver2DriverRef m_aDriverProxies;
......
......@@ -147,14 +147,6 @@ struct PagePropertySet
}
};
struct HashReferenceXInterface
{
size_t operator()( const Reference< XInterface >& rxIf ) const
{
return reinterpret_cast< size_t >( rxIf.get() );
}
};
struct HashUChar
{
size_t operator()( const sal_Unicode uchar ) const { return static_cast< size_t >( uchar ); }
......@@ -181,16 +173,16 @@ class SVGFilter : public cppu::WeakImplHelper < XFilter,
XExtendedFilterDetection >
{
public:
typedef std::unordered_map< Reference< XInterface >, ObjectRepresentation, HashReferenceXInterface > ObjectMap;
typedef std::unordered_set< Reference< XInterface >, HashReferenceXInterface > ObjectSet;
typedef std::unordered_map< Reference< XInterface >, ObjectRepresentation > ObjectMap;
typedef std::unordered_set< Reference< XInterface > > ObjectSet;
typedef std::unordered_set< sal_Unicode, HashUChar > UCharSet;
typedef std::unordered_map< OUString, UCharSet > UCharSetMap;
typedef std::unordered_map< Reference< XInterface >, UCharSetMap, HashReferenceXInterface > UCharSetMapMap;
typedef std::unordered_set< sal_Unicode, HashUChar > UCharSet;
typedef std::unordered_map< OUString, UCharSet > UCharSetMap;
typedef std::unordered_map< Reference< XInterface >, UCharSetMap > UCharSetMapMap;
typedef std::unordered_map< Reference< XInterface >, OUString, HashReferenceXInterface > UOStringMap;
typedef std::unordered_map< Reference< XInterface >, OUString > UOStringMap;
typedef std::unordered_set< ObjectRepresentation, HashBitmap, EqualityBitmap > MetaBitmapActionSet;
typedef std::unordered_set< ObjectRepresentation, HashBitmap, EqualityBitmap > MetaBitmapActionSet;
private:
......
......@@ -450,6 +450,26 @@ operator <<(
}
}
#if defined LIBO_INTERNAL_ONLY
namespace std
{
/**
Make css::uno::Reference hashable by default for use in STL containers.
@since LibreOffice 6.3
*/
template<typename T>
struct hash<::css::uno::Reference<T>>
{
std::size_t operator()(::css::uno::Reference<T> const & s) const
{ return size_t(s.get()); }
};
}
#endif
#endif
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
......@@ -36,7 +36,6 @@
#include <comphelper/uno3.hxx>
#include <cppuhelper/interfacecontainer.h>
#include <comphelper/accessibleeventnotifier.hxx>
#include <comphelper/stl_types.hxx>
#include <comphelper/comphelperdllapi.h>
#include <rtl/ref.hxx>
......@@ -317,7 +316,6 @@ namespace comphelper
typedef ::std::map < css::uno::Reference< css::accessibility::XAccessible >
, css::uno::Reference< css::accessibility::XAccessible >
, OInterfaceCompare< css::accessibility::XAccessible >
> AccessibleMap;
// TODO: think about if we should hold these objects weak
......
......@@ -97,21 +97,6 @@ bool ContainerUniquePtrEquals(
};
/** STL-compliant structure for comparing Reference&lt; &lt;iface&gt; &gt; instances
*/
template < class IAFCE >
struct OInterfaceCompare
{
bool operator() (const css::uno::Reference< IAFCE >& lhs, const css::uno::Reference< IAFCE >& rhs) const
{
return lhs.get() < rhs.get();
// this does not make any sense if you see the semantics of the pointer returned by get:
// It's a pointer to a point in memory where an interface implementation lies.
// But for our purpose (provide a reliable less-operator which can be used with the STL), this is
// sufficient ....
}
};
template <class Tp, class Arg>
class mem_fun1_t
{
......
......@@ -82,21 +82,9 @@ class OOX_DLLPUBLIC ShapeExport : public DrawingML {
private:
int m_nEmbeddedObjects;
struct ShapeCheck
{
bool operator()( const css::uno::Reference< css::drawing::XShape>& s1, const css::uno::Reference< css::drawing::XShape>& s2 ) const
{
return s1 == s2;
}
};
struct ShapeHash
{
size_t operator()( const css::uno::Reference < css::drawing::XShape >& ) const;
};
public:
typedef std::unordered_map< css::uno::Reference< css::drawing::XShape>, sal_Int32, ShapeHash, ShapeCheck> ShapeHashMap;
typedef std::unordered_map< css::uno::Reference< css::drawing::XShape>, sal_Int32> ShapeHashMap;
protected:
sal_Int32 mnShapeIdMax, mnPictureIdMax;
......
......@@ -23,6 +23,8 @@
#include "sal/config.h"
#include <cassert>
#include <cstddef>
#include <functional>
#include "sal/types.h"
......@@ -250,6 +252,28 @@ public:
} // namespace rtl
#if defined LIBO_INTERNAL_ONLY
namespace std
{
/// @cond INTERNAL
/**
Make rtl::Reference hashable by default for use in STL containers.
@since LibreOffice 6.3
*/
template<typename T>
struct hash<::rtl::Reference<T>>
{
std::size_t operator()(::rtl::Reference<T> const & s) const
{ return std::size_t(s.get()); }
};
/// @endcond
}
#endif
#endif /* ! INCLUDED_RTL_REF_HXX */
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
......@@ -58,7 +58,6 @@
#include <rtl/ref.hxx>
#include <tools/wintypes.hxx>
#include <cppuhelper/weakref.hxx>
#include <comphelper/stl_types.hxx>
#include <cppuhelper/implbase.hxx>
#include <set>
......@@ -189,9 +188,7 @@ bool isRowSetAlive(const css::uno::Reference< css::uno::XInterface>& _rxRowSet);
// checks if the css::sdbcx::XColumnsSupplier provided by _rxRowSet supplies any columns
typedef ::std::set < css::uno::Reference< css::uno::XInterface >
, ::comphelper::OInterfaceCompare< css::uno::XInterface >
> InterfaceBag;
typedef ::std::set< css::uno::Reference< css::uno::XInterface > > InterfaceBag;
#endif // INCLUDED_SVX_FMTOOLS_HXX
......
......@@ -37,29 +37,8 @@ using namespace ::com::sun::star::connection;
namespace io_acceptor {
template<class T>
struct ReferenceHash
{
size_t operator () (const css::uno::Reference<T> & ref) const
{
return reinterpret_cast<size_t>(ref.get());
}
};
template<class T>
struct ReferenceEqual
{
bool operator () (const css::uno::Reference<T> & op1,
const css::uno::Reference<T> & op2) const
{
return op1.get() == op2.get();
}
};
typedef std::unordered_set< css::uno::Reference< css::io::XStreamListener>,
ReferenceHash< css::io::XStreamListener>,
ReferenceEqual< css::io::XStreamListener> >
typedef std::unordered_set< css::uno::Reference< css::io::XStreamListener> >
XStreamListener_hash_set;
......
......@@ -31,28 +31,7 @@
namespace stoc_connector
{
template<class T>
struct ReferenceHash
{
size_t operator () (const css::uno::Reference<T> & ref) const
{
return reinterpret_cast<size_t>(ref.get());
}
};
template<class T>
struct ReferenceEqual
{
bool operator () (const css::uno::Reference<T> & op1,
const css::uno::Reference<T> & op2) const
{
return op1.get() == op2.get();
}
};
typedef std::unordered_set< css::uno::Reference< css::io::XStreamListener>,
ReferenceHash< css::io::XStreamListener>,
ReferenceEqual< css::io::XStreamListener> >
typedef std::unordered_set< css::uno::Reference< css::io::XStreamListener> >
XStreamListener_hash_set;
class PipeConnection :
......
......@@ -2077,11 +2077,6 @@ ShapeExport& ShapeExport::WriteUnknownShape( const Reference< XShape >& )
return *this;
}
size_t ShapeExport::ShapeHash::operator()( const Reference < XShape >& rXShape ) const
{
return rXShape->getShapeType().hashCode();
}
sal_Int32 ShapeExport::GetNewShapeID( const Reference< XShape >& rXShape )
{
return GetNewShapeID( rXShape, GetFB() );
......
......@@ -39,7 +39,6 @@
#include <connectivity/dbtools.hxx>
#include <svl/hint.hxx>
#include <tools/diagnose_ex.h>
#include <comphelper/stl_types.hxx>
#include <vcl/svapp.hxx>
#include <dbaccess/dbsubcomponentcontroller.hxx>
#include <svx/unoshape.hxx>
......@@ -82,7 +81,7 @@ struct ObjectInfo
}
};
typedef ::std::map< Reference< XPropertySet >, ObjectInfo, ::comphelper::OInterfaceCompare< XPropertySet > > PropertySetInfoCache;
typedef ::std::map< Reference< XPropertySet >, ObjectInfo > PropertySetInfoCache;
class OXUndoEnvironmentImpl
......
......@@ -30,8 +30,6 @@
#include <com/sun/star/script/provider/XScriptProvider.hpp>
#include <com/sun/star/document/XScriptInvocationContext.hpp>
#include <comphelper/stl_types.hxx>
#include <map>
#include <unordered_map>
......@@ -41,7 +39,6 @@ namespace func_provider
//Typedefs
typedef std::map < css::uno::Reference< css::uno::XInterface >
, css::uno::Reference< css::script::provider::XScriptProvider >
, ::comphelper::OInterfaceCompare< css::uno::XInterface >
> ScriptComponent_map;
typedef std::unordered_map< OUString,
......
......@@ -133,28 +133,8 @@ Sequence< OUString > retrieveAsciiValueList(
/*****************************************************************************
Enumeration by ServiceName
*****************************************************************************/
struct hashRef_Impl
{
size_t operator()(const Reference<XInterface > & rName) const
{
// query to XInterface. The cast to XInterface* must be the same for the same object
Reference<XInterface > x( Reference<XInterface >::query( rName ) );
return reinterpret_cast<size_t>(x.get());
}
};
struct equaltoRef_Impl
{
bool operator()(const Reference<XInterface > & rName1, const Reference<XInterface > & rName2 ) const
{ return rName1 == rName2; }
};
typedef std::unordered_set
<
Reference<XInterface >,
hashRef_Impl,
equaltoRef_Impl
> HashSet_Ref;
typedef std::unordered_set< Reference<XInterface > > HashSet_Ref;
class ServiceEnumeration_Impl : public WeakImplHelper< XEnumeration >
......
......@@ -118,7 +118,7 @@ namespace
}
};
typedef ::std::map< Reference< XControlModel >, Reference< XControlModel >, ::comphelper::OInterfaceCompare< XControlModel > > MapControlModels;
typedef ::std::map< Reference< XControlModel >, Reference< XControlModel > > MapControlModels;
class FormComponentAssignment
{
......
......@@ -86,8 +86,7 @@ namespace svxform
// helper
typedef ::std::map< Reference< XInterface >, SdrObject*, ::comphelper::OInterfaceCompare< XInterface > >
MapModelToShape;
typedef ::std::map< Reference< XInterface >, SdrObject* > MapModelToShape;
static void collectShapeModelMapping( SdrPage const * _pPage, MapModelToShape& _rMapping )
......
......@@ -24,7 +24,6 @@
#include <com/sun/star/awt/FontUnderline.hpp>
#include <com/sun/star/awt/XControl.hpp>
#include <com/sun/star/awt/XVclWindowPeer.hpp>
#include <comphelper/stl_types.hxx>
#include <o3tl/typed_flags_set.hxx>
#include <tools/color.hxx>
......@@ -111,8 +110,7 @@ namespace svxform
};
typedef ::std::set< ControlData, ControlDataCompare > ControlBag;
typedef ::std::set< css::uno::Reference< css::awt::XVclWindowPeer >,
::comphelper::OInterfaceCompare< css::awt::XVclWindowPeer > > PeerBag;
typedef ::std::set< css::uno::Reference< css::awt::XVclWindowPeer > > PeerBag;
PeerBag m_aColorableControls;
PeerBag m_aNonColorableControls;
......
......@@ -41,7 +41,6 @@
#include <com/sun/star/sdbc/XDataSource.hpp>
#include <com/sun/star/uno/XComponentContext.hpp>
#include <comphelper/stl_types.hxx>
#include <tools/link.hxx>
#include <cppuhelper/implbase.hxx>
#include <rtl/ref.hxx>
......@@ -130,13 +129,8 @@ private:
typedef ::rtl::Reference< FormViewPageWindowAdapter > PFormViewPageWindowAdapter;
typedef ::std::vector< PFormViewPageWindowAdapter > PageWindowAdapterList;
typedef ::std::set < css::uno::Reference< css::form::XForm >
, ::comphelper::OInterfaceCompare< css::form::XForm >
> SetOfForms;
typedef ::std::map < css::uno::Reference< css::awt::XControlContainer >
, SetOfForms
, ::comphelper::OInterfaceCompare< css::awt::XControlContainer >
> MapControlContainerToSetOfForms;
typedef ::std::set< css::uno::Reference< css::form::XForm > > SetOfForms;
typedef ::std::map< css::uno::Reference< css::awt::XControlContainer >, SetOfForms > MapControlContainerToSetOfForms;
class SdrModel;
class FmXFormView : public ::cppu::WeakImplHelper<
......
......@@ -51,15 +51,7 @@ using namespace ::com::sun::star::container;
namespace accessibility
{
struct hash
{
std::size_t operator()( const Reference< XCell >& xCell ) const
{
return std::size_t( xCell.get() );
}
};
typedef std::unordered_map< Reference< XCell >, rtl::Reference< AccessibleCell >, hash > AccessibleCellMap;
typedef std::unordered_map< Reference< XCell >, rtl::Reference< AccessibleCell > > AccessibleCellMap;
class AccessibleTableShapeImpl : public cppu::WeakImplHelper< XModifyListener >
{
......
......@@ -26,7 +26,6 @@
#include <xmloff/XMLEventsImportContext.hxx>
#include "callbacks.hxx"
#include "ifacecompare.hxx"
#include <com/sun/star/container/XIndexAccess.hpp>
class SvXMLImport;
......@@ -51,8 +50,7 @@ namespace xmloff
{
typedef std::map<
css::uno::Reference< css::beans::XPropertySet >,
css::uno::Sequence< css::script::ScriptEventDescriptor >,
OPropertySetCompare>
css::uno::Sequence< css::script::ScriptEventDescriptor >>
MapPropertySet2ScriptSequence;
// usually an event attacher manager will need to collect all script events registered, 'cause
// the _real_ XEventAttacherManager handles it's events by index, but out indices are not fixed
......
/* -*- 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_XMLOFF_SOURCE_FORMS_IFACECOMPARE_HXX
#define INCLUDED_XMLOFF_SOURCE_FORMS_IFACECOMPARE_HXX
#include <comphelper/stl_types.hxx>
#include <com/sun/star/beans/XPropertySet.hpp>
#include <com/sun/star/drawing/XDrawPage.hpp>
namespace xmloff
{
//= OInterfaceCompare
/** is stl-compliant structure for comparing Reference&lt; &lt;iface&gt; &gt; instances
*/
template < class IAFCE >
struct OInterfaceCompare
{
bool operator() (const css::uno::Reference< IAFCE >& lhs, const css::uno::Reference< IAFCE >& rhs) const
{
return lhs.get() < rhs.get();
// this does not make any sense if you see the semantics of the pointer returned by get:
// It's a pointer to a point in memory where an interface implementation lies.
// But for our purpose (provide a reliable less-operator which can be used with the STL), this is
// sufficient ....
}
};
typedef OInterfaceCompare< css::beans::XPropertySet > OPropertySetCompare;
typedef OInterfaceCompare< css::drawing::XDrawPage > ODrawPageCompare;
} // namespace xmloff
#endif // INCLUDED_XMLOFF_SOURCE_FORMS_IFACECOMPARE_HXX
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
......@@ -26,11 +26,11 @@
#include <set>
#include <com/sun/star/container/XIndexAccess.hpp>
#include <com/sun/star/drawing/XDrawPage.hpp>
#include <com/sun/star/script/ScriptEventDescriptor.hpp>
#include <com/sun/star/util/XNumberFormats.hpp>
#include <com/sun/star/awt/XControlModel.hpp>
#include "callbacks.hxx"
#include "ifacecompare.hxx"
#include <rtl/ref.hxx>
class SvXMLExport;
......@@ -42,19 +42,16 @@ namespace xmloff
{
typedef ::std::set < css::uno::Reference< css::beans::XPropertySet >
, OPropertySetCompare
> PropertySetBag;
// maps objects (property sets) to strings, e.g. control ids.
typedef ::std::map < css::uno::Reference< css::beans::XPropertySet >
, OUString
, OPropertySetCompare
> MapPropertySet2String;
// map pages to maps (of property sets to strings)
typedef ::std::map < css::uno::Reference< css::drawing::XDrawPage >
, MapPropertySet2String
, ODrawPageCompare
> MapPropertySet2Map;
//= OFormLayerXMLExport_Impl
......@@ -111,7 +108,7 @@ namespace xmloff
// TODO: To avoid this construct above, and to have a cleaner implementation, an class encapsulating the
// export of a single page should be introduced.
typedef std::map<css::uno::Reference<css::beans::XPropertySet>, sal_Int32, OPropertySetCompare> MapPropertySet2Int;
typedef std::map<css::uno::Reference<css::beans::XPropertySet>, sal_Int32> MapPropertySet2Int;
MapPropertySet2Int m_aControlNumberFormats;
// maps controls to format keys, which are relative to our own formats supplier
......
......@@ -25,6 +25,7 @@
#include <map>
#include <com/sun/star/xml/sax/XAttributeList.hpp>
#include <com/sun/star/drawing/XDrawPage.hpp>
#include <com/sun/star/form/XFormsSupplier2.hpp>
#include <rtl/ref.hxx>
#include "formattributes.hxx"
......@@ -60,7 +61,7 @@ namespace xmloff
rtl::Reference<SvXMLStylesContext> m_xAutoStyles;
typedef std::map< OUString, css::uno::Reference< css::beans::XPropertySet > > MapString2PropertySet;
typedef std::map<css::uno::Reference<css::drawing::XDrawPage>, MapString2PropertySet, ODrawPageCompare> MapDrawPage2Map;
typedef std::map<css::uno::Reference<css::drawing::XDrawPage>, MapString2PropertySet> MapDrawPage2Map;
MapDrawPage2Map m_aControlIds; // ids of the controls on all known page
MapDrawPage2Map::iterator m_aCurrentPageIds; // ifs of the controls on the current page
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment