From 5525c9312420cf002aef78fa1d52219724d3fc20 Mon Sep 17 00:00:00 2001 From: Jay Berkenbilt Date: Sun, 10 Apr 2022 09:29:11 -0400 Subject: Use QPDF_DLL_CLASS with Pipeline and InputSource subclasses This enables RTTI so we can use dynamic_cast on them across the shared object boundary. --- README-maintainer | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'README-maintainer') diff --git a/README-maintainer b/README-maintainer index 60e7de57..52c10810 100644 --- a/README-maintainer +++ b/README-maintainer @@ -156,9 +156,14 @@ CODING RULES * Use QPDF_DLL on all methods that are to be exported in the shared library/DLL. Use QPDF_DLL_CLASS for all classes whose type - information is needed. This is important for exception classes and - it seems also for classes that are intended to be subclassed across - the shared library boundary. + information is needed. This is important for classes that are used + as exceptions, subclassed, or tested with dynamic_cast across the + the shared object boundary (or "shared library boundary" -- we may + use either term in comments and documentation). In particular, + anything new derived from Pipeline or InputSource should be marked + with QPDF_DLL_CLASS, but we don't need to do it for QPDFObjectHelper + or QPDFDocumentHelper subclasses since there's no reason to use + dynamic_cast with those. * Put private member variables in std::shared_ptr for all public classes. Remember to use QPDF_DLL on ~Members(). Exception: -- cgit v1.2.3-54-g00ecf