aboutsummaryrefslogtreecommitdiffstats
path: root/README-maintainer
diff options
context:
space:
mode:
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.