2
1
mirror of https://github.com/qpdf/qpdf.git synced 2024-12-31 22:11:53 +00:00

Update C++11 notes in TODO

This commit is contained in:
Jay Berkenbilt 2020-04-03 12:06:14 -04:00
parent 8a87a2fbee
commit da1258e2e6

36
TODO
View File

@ -34,32 +34,28 @@ Comments appear in the code prefixed by "ABI"
C++-11
======
* My c++11 branch adds re-implements PointerHolder so that it is
interchangeable with std::shared_ptr. It is not actually possible to
just replace PointerHolder with std::shared_ptr for two reasons:
there is no automatic creation of std::shared_ptr<T> from T* like
there is for PointerHolder, which breaks some code, and also there
is no automatic conversion from something like
std::vector<PointerHolder<T>> to std::vector<std::shared_ptr<T>>. It
may be a good idea to replace PointerHolder with std::shared_ptr in
the API even if it requires some work for the developer, but even if
that isn't worth it, we should find all occurrences of PointerHolder
within the code and replace with std::shared_ptr or std::unique_ptr
as needed. This will definitely break binary compatibility as the
PointerHolder<Members> pattern is part of the ABI for almost every
class.
* QIntC.hh could be simplified with type_traits.
* Search for ::iterator and ::const_iterator and replace with either
auto or foreach-style iteration.
* There may be some places where std::function and lambdas can
simplify handlers rather than using classes with apply methods.
* Find places where we declare but don't define copy and assignment
and replace with deleted methods to move errors from link to compile
time.
* My c++11 branch adds re-implements PointerHolder so that it is
interchangeable with std::shared_ptr. We may not actually want to
ever do this because it turns out PointerHolder is slightly more
performant than std::shared_ptr, at least as of g++ 9.2.1. It is not
actually possible to just replace PointerHolder with std::shared_ptr
for two reasons: there is no automatic creation of
std::shared_ptr<T> from T* like there is for PointerHolder, which
breaks some code, and also there is no automatic conversion from
something like std::vector<PointerHolder<T>> to
std::vector<std::shared_ptr<T>>. It may be a good idea to replace
PointerHolder with std::shared_ptr in the API even if it requires
some work for the developer, but even if that isn't worth it, we
should find all occurrences of PointerHolder within the code and
replace with std::shared_ptr or std::unique_ptr as needed. This will
definitely break binary compatibility as the PointerHolder<Members>
pattern is part of the ABI for almost every class.
Page splitting/merging