As long as the classes that you are trying to cast to/from descend from
log4cxx::Object, the cast should work fine.

The aliasing constructor for std::shared_ptr means that both shared_ptrs
point at the same control block for the shared pointer, so the object is
the same; I'll add some notes about that.

-Robert Middleton

On Thu, Apr 22, 2021 at 3:46 AM Stephen Webb <swebb2...@gmail.com> wrote:

> Yes, your fancy new cast function looks like a better approach.
>
> Should the note mention it uses the aliasing constructor std::shared_ptr or
> is it always going to be safe with log4cxx::Object pointers?
>
> On Thu, Apr 22, 2021 at 7:54 AM Robert Middleton <osfan6...@gmail.com>
> wrote:
>
> > Yes, adding a note about casting would be a good idea.
> >
> > Note that there is a log4cxx::cast function that should handle this for
> you
> > - I believe that this is more reliable than using dynamic_cast,
> especially
> > across DLL boundaries.  It should also properly do the shared_ptr
> > portion(so that you can have shared_ptrs of different types pointing at
> the
> > same object).
> >
> > -Robert Middleton
> >
> > On Wed, Apr 21, 2021 at 2:52 AM Stephen Webb <swebb2...@gmail.com>
> wrote:
> >
> > > Hi Robert,
> > >
> > > I suggest adding the following to 'change-report-gh.md'
> > >
> > >
> > > Migrating from 0.11.0
> > > -----------------------------
> > >
> > > Code changes are required for log4cxx pointer downcasting. The
> automatic
> > > cast performed by the log4cxx 0.11 smart pointer assign operator is no
> > > longer supported.
> > >
> > > For example:
> > >
> > >     log4cxx::FileAppenderPtr fileAppender =
> > > log4cxx::Logger::getRootLogger()->getAppender(logAppender);
> > >     if (fileAppender)
> > >         fileAppender->getFile();
> > >
> > > would become:
> > >
> > >     auto appender =
> > > log4cxx::Logger::getRootLogger()->getAppender(logAppender);
> > >     if (auto fileAppender =
> > > dynamic_cast<log4cxx::FileAppender*>(appender.get()))
> > >         result = fileAppender->getFile();
> > >
> > >
> > > On Tue, Apr 13, 2021 at 12:09 PM Robert Middleton <
> rmiddle...@apache.org
> > >
> > > wrote:
> > >
> > > > Before I go and do a release of log4cxx, are there any issues that
> may
> > > > need to be taken care of before the next release?  Otherwise, if
> there
> > > > are no objections, I'll call for a release vote here shortly for
> > > > version 0.12.0.
> > > >
> > > > -Robert Middleton
> > > >
> > >
> >
>

Reply via email to