aboutsummaryrefslogtreecommitdiffstats
path: root/README-maintainer
diff options
context:
space:
mode:
authorJay Berkenbilt <ejb@ql.org>2022-04-09 22:39:14 +0200
committerJay Berkenbilt <ejb@ql.org>2022-04-09 23:33:29 +0200
commitc7e877b88b7e0c9a4608e16df777ded5dd8f6593 (patch)
treec5c9330369eb844d563038c767348888c7ad5c75 /README-maintainer
parentef2b84c6c3af434882a192f2122e2dee3fbe5499 (diff)
downloadqpdf-c7e877b88b7e0c9a4608e16df777ded5dd8f6593.tar.zst
Update documentation for PointerHolder transition
Diffstat (limited to 'README-maintainer')
-rw-r--r--README-maintainer13
1 files changed, 9 insertions, 4 deletions
diff --git a/README-maintainer b/README-maintainer
index 9f597d35..60e7de57 100644
--- a/README-maintainer
+++ b/README-maintainer
@@ -160,11 +160,16 @@ CODING RULES
it seems also for classes that are intended to be subclassed across
the shared library boundary.
-* Put private member variables in PointerHolder<Members> for all
+* Put private member variables in std::shared_ptr<Members> for all
public classes. Remember to use QPDF_DLL on ~Members(). Exception:
- indirection through PointerHolder<Members> is expensive, so don't do
- it for classes that are copied a lot, like QPDFObjectHandle and
- QPDFObject.
+ indirection through std::shared_ptr<Members> is expensive, so don't
+ do it for classes that are copied a lot, like QPDFObjectHandle and
+ QPDFObject. It may be possible to declare
+ std::shared_ptr<Members> m_ph;
+ Member* m;
+ with m = m_ph.get(), and then indirect through m in
+ performance-critical settings, though in 2022, std::shared_ptr is
+ sufficiently performant that this may not be worth it.
* Traversal of objects is expensive. It's worth adding some complexity
to avoid needless traversals of objects.