diff options
Diffstat (limited to 'README-maintainer')
-rw-r--r-- | README-maintainer | 13 |
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. |