From c7e877b88b7e0c9a4608e16df777ded5dd8f6593 Mon Sep 17 00:00:00 2001 From: Jay Berkenbilt Date: Sat, 9 Apr 2022 16:39:14 -0400 Subject: Update documentation for PointerHolder transition --- README-maintainer | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) (limited to 'README-maintainer') 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 for all +* Put private member variables in std::shared_ptr for all public classes. Remember to use QPDF_DLL on ~Members(). Exception: - indirection through PointerHolder is expensive, so don't do - it for classes that are copied a lot, like QPDFObjectHandle and - QPDFObject. + indirection through std::shared_ptr 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 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. -- cgit v1.2.3-54-g00ecf