summaryrefslogtreecommitdiff
path: root/include/vcl/vclevent.hxx
diff options
context:
space:
mode:
authorStephan Bergmann <sbergman@redhat.com>2015-04-30 10:20:00 +0200
committerStephan Bergmann <sbergman@redhat.com>2015-04-30 10:20:00 +0200
commit3ead3ad52f9bb2f9d1d6cf8dfc73a0a25e6778ed (patch)
treebdfd28afe5a452060e3d985c5f01b45f4b7bc2cd /include/vcl/vclevent.hxx
parent57d254d42b6e1d836bd21e6fb2e968af2b511c7d (diff)
Gradually typed Link
Turn the Link class into a template abstracting over the link's argument and return types, but provide default template arguments that keep the generic, unsafe "void* in, sal_IntPtr out" behvior. That way, individual uses of the Link class can be updated over time. All the related macros are duplicated with ..._TYPED counterparts, that additionally take the RetType (except for LINK_TYPED, which manages to infer the relevant types from the supplied Member). (It would have been attractive to change the "untyped" LinkStubs from taking a void* to a properly typed ArgType parameter, too, but that would cause -fsanitize=function to flag uses of "untyped" Link::Call.) Change-Id: I3b0140378bad99abbf240140ebb4a46a05d2d2f8
Diffstat (limited to 'include/vcl/vclevent.hxx')
-rw-r--r--include/vcl/vclevent.hxx16
1 files changed, 8 insertions, 8 deletions
diff --git a/include/vcl/vclevent.hxx b/include/vcl/vclevent.hxx
index 99f329e8da65..5729e1d4fcd5 100644
--- a/include/vcl/vclevent.hxx
+++ b/include/vcl/vclevent.hxx
@@ -261,22 +261,22 @@ public:
// and returns true in that case
// a handler must return true to signal that it has processed the event
bool Process( VclSimpleEvent* pEvent ) const;
- void addListener( const Link& rListener );
- void removeListener( const Link& rListener );
+ void addListener( const Link<>& rListener );
+ void removeListener( const Link<>& rListener );
private:
- std::list<Link> m_aListeners;
+ std::list<Link<>> m_aListeners;
};
class VCL_DLLPUBLIC VclEventListeners2 : public vcl::DeletionNotifier
{
- std::list< Link > m_aListeners;
+ std::list< Link<> > m_aListeners;
struct ListenerIt
{
- std::list< Link >::iterator m_aIt;
+ std::list< Link<> >::iterator m_aIt;
bool m_bWasInvalidated;
- ListenerIt(const std::list<Link>::iterator& rIt)
+ ListenerIt(const std::list<Link<>>::iterator& rIt)
: m_aIt(rIt)
, m_bWasInvalidated( false )
{}
@@ -289,8 +289,8 @@ public:
VclEventListeners2();
~VclEventListeners2();
- void addListener( const Link& );
- void removeListener( const Link& );
+ void addListener( const Link<>& );
+ void removeListener( const Link<>& );
void callListeners( VclSimpleEvent* );
};