aboutsummaryrefslogtreecommitdiffstats
path: root/libqpdf/QPDF.cc
AgeCommit message (Collapse)Author
2022-09-06Rename QPDFObject -> QPDFValueProxyJay Berkenbilt
This is in preparation for restoring a QPDFObject.hh to ease the transition on qpdf_object_type_e. This commit was created by * Renaming QPDFObject.cc and QPDFObject.hh * Replacing QPDFObject\b with QPDFValueProxy (where \b is word boundary) * Running format-code * Manually resorting files in libqpdf/CMakeLists.txt * Manually refilling the comment in QPDF.hh near class Resolver
2022-09-04Fix commit 805c1ad : Reset QPDFValue::qpdf and QPDFValue::og when ...m-holger
On destruction of the QPDF object replace all indirect object references with direct nulls. Remove all existing code to release resolved references. Fixes performance issue due to interaction of resetting QPDFValue::qpdf and og members and prior code.
2022-09-02Disable copying/assigning to QPDF objects, add QPDF::create()Jay Berkenbilt
2022-09-02Make QPDFObject::releaseResolved publicJay Berkenbilt
Now that QPDFObject.hh is out of the public API, we don't really need QPDFObjAccessor. Also, the function didn't have to be virtual anymore.
2022-09-02Stop including QPDFObject.hh from other than private filesJay Berkenbilt
This required moving some newly inlined functions back to the cc file, but that seems to have had no measurable performance impact.
2022-09-01Reset QPDFValue::qpdf and QPDFValue::og when the owning QPDF object gets ↵m-holger
destroyed
2022-09-01Remove methods and parameters obsoleted by the last two commitsm-holger
2022-09-01Add methods QPDFObject::setObjGen and QPDFObject::resetObjGenm-holger
Also, modify QPDFObject::swapWith to update the ObjGens of the swapped objects. Modify QPDF::newIndirect and QPDF::updateCache to keep object ObjGens up to date.
2022-09-01Change QPDF_Unresolved::create method to take QPDF* and QPDFObjGen parametersm-holger
2022-09-01Change return type of QPDF::resolve to voidm-holger
2022-09-01Modify QPDF::getObject to not to resolve the objectm-holger
2022-09-01Add private method QPDF::ObjCache::updatem-holger
Add a new obj_cache entry or update an existing entry in place.
2022-09-01Add private methods QPDF::isCached and QPDF::isUnresolvedm-holger
2022-09-01Remove QPDF::ObjectChangedm-holger
Also change QPDF::replaceObject and QPDF::swapObjects such that the QPDFObject assigned to an og in the obj_cache is never replaced; only QPDFObject::value is updated.
2022-09-01Add private methods QPDFObjectHandle::asArray etcm-holger
Centralise casting of QPDFObjects and reduce repeated dereferencing.
2022-08-31Modify newIndirect to set QPDFObjectHandle::objm-holger
2022-08-31Remove QPDFObjectHandle::makeReservedm-holger
2022-08-31Replace calls to QPDFObjectHandle::Factory::newIndirect where possiblem-holger
2022-08-28Add optional parameter allow_nullptr to QPDFObjectHandle::getOwningQPDFm-holger
Also, inline method and add optional parameter error_msg.
2022-08-07Merge pull request #746 from m-holger/smartJay Berkenbilt
Code tidy: remove redundant calls to smart_ptrs get() method
2022-08-07Code tidy: remove redundant calls to smart_ptrs get() methodm-holger
2022-08-01Add QPDF::getObject to replace getObjectByObjGen and getObjectByIDm-holger
For consistency with similar methods, e.g. replaceObject.
2022-07-26Code tidy : replace 0 with nullptr or truem-holger
2022-07-24Revert making second parameter of QPDFObjGen::QPDFObjGen optionalm-holger
Also, change test for QPDFObjGen::isIndirect to obj != 0. Delete comment from commit afd35f9.
2022-07-24Overload StreamDataProvider::provideStreamDatam-holger
Use 'QPDFObjGen const&' instead of 'int, int' in signature.
2022-07-24QPDFObjGen : tidy QPDF private methodsm-holger
Change method signatures to use QPDFObjGen. Use QPDFObjGen methods where possible. Remove redundant QPDF::objGenToIndirect.
2022-07-24QPDFObjGen : tidy QPDFObjectHandle private methodsm-holger
Change method signature to use QPDFObjGen.
2022-07-24QPPFObjGen : tidy QPDF::readObjectAtOffsetm-holger
Change method signature to use QPDFObjGen.
2022-07-24Add optional parameter separator to QPDFObjGen::unparsem-holger
Also, revert inlining of unparse and operator << from commit 4c6640c in order to avoid exposing QUtil.
2022-07-24Clarify intent in readObjectAtOffsetJay Berkenbilt
Rather than using object id -1 to mean "don't care", use object ID 0, and clarify the difference between that use and indication of a direct object.
2022-06-27Refactor QPDFObject creation and cloningm-holger
Move responsibility for creating shared pointers to objects and cloning from QPDFObjectHandle to QPDFObject.
2022-06-25Track whether certain page modifying methods have been calledJay Berkenbilt
We need to know whether pushInheritedAttributesToPage or getAllPages have been called when generating JSON output. When reading the JSON back in, we have to call the same methods so that object numbers will line up properly.
2022-06-18QPDF, QPDFJob: use QPDFLogger instead of custom output streamsJay Berkenbilt
2022-05-21Code clean up: use range-style for loops wherever possiblem-holger
Remove variables obsoleted by commit 4f24617.
2022-05-21Replace std::regex with validators for better performanceJay Berkenbilt
2022-05-20Parse objects; stream data is not yet handledJay Berkenbilt
2022-05-20Add private methods for reserving specific objectsJay Berkenbilt
2022-05-16Remove offset from missing /Root errorJay Berkenbilt
The last offset is irrelevant to not being able to find /Root.
2022-05-04Add new FileInputSource constructorsJay Berkenbilt
2022-05-04Make use of the new Pipeline methods in some placesJay Berkenbilt
2022-04-30Code clean up: use range-style for loops wherever possibleJay Berkenbilt
Where not possible, use "auto" to get the iterator type. Editorial note: I have avoid this change for a long time because of not wanting to make gratuitous changes to version history, which can obscure when certain changes were made, but with having recently touched every single file to apply automatic code formatting and with making several broad changes to the API, I decided it was time to take the plunge and get rid of the older (pre-C++11) verbose iterator syntax. The new code is just easier to read and understand, and in many cases, it will be more effecient as fewer temporary copies are being made. m-holger, if you're reading, you can see that I've finally come around. :-)
2022-04-30Formatting: remove space in range-style for loopsJay Berkenbilt
Change .clang-format and commit automated changes from a fresh run of format-code
2022-04-30Use fluent replaceKeyJay Berkenbilt
2022-04-24Add new QPDF::warn that takes most of QPDFExc's argumentsJay Berkenbilt
2022-04-16Use anonymous namespaces for file-private classesJay Berkenbilt
2022-04-16Use = default and = delete where possible in classesJay Berkenbilt
2022-04-09Replace PointerHolder with std::shared_ptr in library sources onlyJay Berkenbilt
(patrepl and cleanpatch are my own utilities) patrepl s/PointerHolder/std::shared_ptr/g {include,libqpdf}/qpdf/*.hh patrepl s/PointerHolder/std::shared_ptr/g libqpdf/*.cc patrepl s/make_pointer_holder/std::make_shared/g libqpdf/*.cc patrepl s/make_array_pointer_holder/QUtil::make_shared_array/g libqpdf/*.cc patrepl s,qpdf/std::shared_ptr,qpdf/PointerHolder, **/*.cc **/*.hh git restore include/qpdf/PointerHolder.hh cleanpatch ./format-code
2022-04-05Update some code manually to get better formatting resultsJay Berkenbilt
Add comments to force line breaks, parenthesize function arguments that are contatenated strings, etc. -- these kinds of changes improve clang-format's results and also cause emacs cc-mode to match clang-format. After this type of change, most of the time, when clang-format and emacs disagree, clang-format is better.
2022-04-04Programmatically apply new formatting to codeJay Berkenbilt
Run this: for i in **/*.cc **/*.c **/*.h **/*.hh; do clang-format < $i >| $i.new && mv $i.new $i done
2022-02-08Add QPDF::getVersionAsPDFVersionJay Berkenbilt