aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorJay Berkenbilt <ejb@ql.org>2018-02-16 03:36:19 +0100
committerJay Berkenbilt <ejb@ql.org>2018-02-19 03:06:27 +0100
commit21b7481b0e6a47665eb9a804c34470d85d3c7f93 (patch)
treefa27946c17e48dcb8631ce787dbf6cabda23a72a /include
parente410b0fe0d8c1da3e0b0e075b54f247b952389ef (diff)
downloadqpdf-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.hh35
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__