diff options
author | Jay Berkenbilt <ejb@ql.org> | 2018-02-16 03:36:19 +0100 |
---|---|---|
committer | Jay Berkenbilt <ejb@ql.org> | 2018-02-19 03:06:27 +0100 |
commit | 21b7481b0e6a47665eb9a804c34470d85d3c7f93 (patch) | |
tree | fa27946c17e48dcb8631ce787dbf6cabda23a72a /include | |
parent | e410b0fe0d8c1da3e0b0e075b54f247b952389ef (diff) | |
download | qpdf-21b7481b0e6a47665eb9a804c34470d85d3c7f93.tar.zst |
Push members of QPDFObjectHandle into a Members object
As in other cases, this is to enable adding new member variables in
the future without breaking ABI compatibility.
Diffstat (limited to 'include')
-rw-r--r-- | include/qpdf/QPDFObjectHandle.hh | 35 |
1 files changed, 28 insertions, 7 deletions
diff --git a/include/qpdf/QPDFObjectHandle.hh b/include/qpdf/QPDFObjectHandle.hh index 81195a95..d12fe87d 100644 --- a/include/qpdf/QPDFObjectHandle.hh +++ b/include/qpdf/QPDFObjectHandle.hh @@ -111,6 +111,7 @@ class QPDFObjectHandle { } virtual void handleToken(QPDFTokenizer::Token const&) = 0; + QPDF_DLL virtual void handleEOF(); class PipelineAccessor @@ -175,6 +176,11 @@ class QPDFObjectHandle QPDF_DLL QPDFObjectHandle(); QPDF_DLL + QPDFObjectHandle(QPDFObjectHandle const&); + QPDF_DLL + QPDFObjectHandle& + operator=(QPDFObjectHandle const&); + QPDF_DLL bool isInitialized() const; // Return type code and type name of underlying object. These are @@ -743,7 +749,7 @@ class QPDFObjectHandle static PointerHolder<QPDFObject> getObject(QPDFObjectHandle& o) { o.dereference(); - return o.obj; + return o.m->obj; } }; friend class ObjAccessor; @@ -847,13 +853,28 @@ class QPDFObjectHandle std::string const& description, std::string& all_description); static void warn(QPDF*, QPDFExc const&); - bool initialized; + class Members + { + friend class QPDFObjectHandle; - QPDF* qpdf; // 0 for direct object - int objid; // 0 for direct object - int generation; - PointerHolder<QPDFObject> obj; - bool reserved; + public: + QPDF_DLL + ~Members(); + + private: + Members(); + Members(QPDF* qpdf, int objid, int generation); + Members(QPDFObject* data); + + bool initialized; + + QPDF* qpdf; // 0 for direct object + int objid; // 0 for direct object + int generation; + PointerHolder<QPDFObject> obj; + bool reserved; + }; + PointerHolder<Members> m; }; #endif // __QPDFOBJECTHANDLE_HH__ |