JPEG Thumbnailer
Ingo Klöcker
kloecker at kde.org
Thu Aug 21 22:51:53 BST 2008
On Wednesday 20 August 2008, Thiago Macieira wrote:
> Ingo Klöcker wrote:
> >I know you will kill me for making the following suggestion. :-)
>
> Yes, I will. Using boost is an major overkill for this. Much more
> than QFile, because QFile is in a library already loaded, while boost
> will require additional code being loaded.
>
> >If QFile is too much overhead then I'd use a boost::shared_ptr with
> >custom deleter [1], i.e.
> >
> > boost::shared_ptr<FILE> fd_in( fopen(path.toLatin1().data(),
> > "rb"), fclose ); if ( fd_in.get() == NULL )
> > return false;
> >
> >If you want to close the file explicitly then you call
> > fd_in.reset(). Otherwise you don't have to do anything.
> >
> >Reasons for doing the above:
> >a) We are coding in C++, right? So let's use the power C++ provides.
> > It makes no sense to write error prone code, if there's a way to
> > avoid it.
>
> Uh... std::fstream?
std::fstream does not seem to give access to the FILE handle, so it
cannot be used in this particular situation.
> >b) Using boost::shared_ptr is just a compile time dependency.
>
> Right, but it'll bring in all of boost's atomic reference counting
> code along. Also remember that some compilers are brain-dead and will
> instantiate the entire class, as opposed to just the parts of it that
> you actually use.
Which compilers? Do we care for those compilers?
> Not to mention that a custom deleter would have to be written.
In this particular case that's not true since
boost::shared_ptr<FILE> fd_in( fopen( "foo.jpg", "rb" ), fclose );
works perfectly alright.
> What you really want here is std::auto_ptr with a custom deleter.
> There is no shared pointer in this circumstance, so no need to add
> the overhead associated with that,
True.
> >c) Several KDE packages (kdepimlibs, kdepim) do already have a
> >dependency on boost.
>
> Sometimes unwarranted. There's a lot of boost that has equivalents in
> Qt, including shared_ptr/intrusive_ptr (Qt 4.5's QSharedPointer for
> both). But there are nice things in it too.
The same can be said about Qt (in place of boost) and STL (in place of
Qt). Yes, I know there were reasons for writing your own container
classes when Qt 1 was written. But even though there might still be
some broken STL implementations on certain platforms, I'd rather see
you adopting the STL containers. There's a plethora of useful C++
libraries out there that all use STL containers and it really sucks
that when using Qt one has to use a second set of container classes.
Regards,
Ingo
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 194 bytes
Desc: This is a digitally signed message part.
URL: <http://mail.kde.org/pipermail/kde-core-devel/attachments/20080821/85cf9d32/attachment.sig>
More information about the kde-core-devel
mailing list