some notes on SwClient and SwModify
Bjoern Michaelsen
bjoern.michaelsen at canonical.com
Mon Mar 23 02:27:29 PDT 2015
Hi Miklos
On Mon, Mar 23, 2015 at 09:54:45AM +0100, Miklos Vajna wrote:
> /home/vmiklos/git/libreoffice/master-clang/sw/source/core/doc/docfmt.cxx:657:26: error: c-style cast, type=5, from='const sw::WriterListener *', to='SwClient *', recommendedFix=static_cast [loplugin:cstylecast]
> while( 0 != ( pDep = (SwClient*)aCallMod.GetDepends()) )
> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> 1 error generated.
>
> Additional problem is that SwClient now inherits privately from
> ::sw::WriterListener, so not even a static_cast + const_cast will make
> the compiler happy.
>
> Could do const_cast + reinterpret_cast, but it doesn't sound like the
> right fix. What is the correct fix here? ;-)
Doing a:
SwIterator<SwClient,SwModify> aIter(aCallMod);
for(SwClient* pClient = aIter.First(); pClient; pClient=aIter.Next())
aCallMod.Remove(pClient);
should work: SwIterator is required to handle removal of Client gracefully (and
there is a unittest for that now). Also, when doing more than a plain
"Remove()", something like a SwIterator<SwFrm,SwModify> etc. takes care of most
of the casting for you internally.
So for now, SwIterator<> should help getting rid of the cast errors: IMHO
GetDepends() is an implementation detail that shouldnt be public anyway.
Best,
Bjoern
More information about the LibreOffice
mailing list