aboutsummaryrefslogtreecommitdiffstats
path: root/include/qpdf/QPDF.hh
diff options
context:
space:
mode:
Diffstat (limited to 'include/qpdf/QPDF.hh')
-rw-r--r--include/qpdf/QPDF.hh39
1 files changed, 24 insertions, 15 deletions
diff --git a/include/qpdf/QPDF.hh b/include/qpdf/QPDF.hh
index 64f31edd..81169fbd 100644
--- a/include/qpdf/QPDF.hh
+++ b/include/qpdf/QPDF.hh
@@ -49,6 +49,7 @@ class QPDF_Stream;
class BitStream;
class BitWriter;
class QPDFLogger;
+class QPDFParser;
class QPDF
{
@@ -382,8 +383,15 @@ class QPDF
QPDF_DLL
QPDFObjectHandle makeIndirectObject(QPDFObjectHandle);
- // Retrieve an object by object ID and generation. Returns an
- // indirect reference to it.
+ // Retrieve an object by object ID and generation. Returns an
+ // indirect reference to it. The getObject() methods were added
+ // for qpdf 11.
+ QPDF_DLL
+ QPDFObjectHandle getObject(QPDFObjGen const&);
+ QPDF_DLL
+ QPDFObjectHandle getObject(int objid, int generation);
+ // These are older methods, but there is no intention to deprecate
+ // them.
QPDF_DLL
QPDFObjectHandle getObjectByObjGen(QPDFObjGen const&);
QPDF_DLL
@@ -835,19 +843,13 @@ class QPDF
// it can resolve indirect references.
class Resolver
{
- friend class QPDFObjectHandle;
+ friend class QPDFObject;
private:
- static std::shared_ptr<QPDFObject>
+ static void
resolve(QPDF* qpdf, QPDFObjGen const& og)
{
- return qpdf->resolve(og);
- }
- static bool
- objectChanged(
- QPDF* qpdf, QPDFObjGen const& og, std::shared_ptr<QPDFObject>& oph)
- {
- return qpdf->objectChanged(og, oph);
+ qpdf->resolve(og);
}
};
friend class Resolver;
@@ -874,7 +876,7 @@ class QPDF
// resolution
class ParseGuard
{
- friend class QPDFObjectHandle;
+ friend class QPDFParser;
private:
ParseGuard(QPDF* qpdf) :
@@ -1166,12 +1168,20 @@ class QPDF
std::string const& description,
QPDFObjGen const& exp_og,
QPDFObjGen& og);
- bool objectChanged(QPDFObjGen const& og, std::shared_ptr<QPDFObject>& oph);
- std::shared_ptr<QPDFObject> resolve(QPDFObjGen const& og);
+ void resolve(QPDFObjGen const& og);
void resolveObjectsInStream(int obj_stream_number);
void stopOnError(std::string const& message);
QPDFObjectHandle reserveObjectIfNotExists(QPDFObjGen const& og);
QPDFObjectHandle reserveStream(QPDFObjGen const& og);
+ QPDFObjectHandle
+ newIndirect(QPDFObjGen const&, std::shared_ptr<QPDFObject> const&);
+ bool isCached(QPDFObjGen const& og);
+ bool isUnresolved(QPDFObjGen const& og);
+ void updateCache(
+ QPDFObjGen const& og,
+ std::shared_ptr<QPDFObject> const& object,
+ qpdf_offset_t end_before_space,
+ qpdf_offset_t end_after_space);
// Calls finish() on the pipeline when done but does not delete it
bool pipeStreamData(
@@ -1716,7 +1726,6 @@ class QPDF
bool in_parse;
bool parsed;
std::set<int> resolved_object_streams;
- bool ever_replaced_objects;
// Linearization data
qpdf_offset_t first_xref_item_offset; // actual value from file