Commit a68703b07e928be0eeb909c0e777e13e88cbf86d

Authored by Jay Berkenbilt
1 parent ae819b53

Replace PointerHolder with std::shared_ptr in library sources only

(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
Showing 68 changed files with 283 additions and 278 deletions
include/qpdf/Buffer.hh
@@ -75,7 +75,7 @@ class Buffer @@ -75,7 +75,7 @@ class Buffer
75 75
76 void copy(Buffer const&); 76 void copy(Buffer const&);
77 77
78 - PointerHolder<Members> m; 78 + std::shared_ptr<Members> m;
79 }; 79 };
80 80
81 #endif // BUFFER_HH 81 #endif // BUFFER_HH
include/qpdf/BufferInputSource.hh
@@ -73,7 +73,7 @@ class BufferInputSource: public InputSource @@ -73,7 +73,7 @@ class BufferInputSource: public InputSource
73 qpdf_offset_t max_offset; 73 qpdf_offset_t max_offset;
74 }; 74 };
75 75
76 - PointerHolder<Members> m; 76 + std::shared_ptr<Members> m;
77 }; 77 };
78 78
79 #endif // QPDF_BUFFERINPUTSOURCE_HH 79 #endif // QPDF_BUFFERINPUTSOURCE_HH
include/qpdf/ClosedFileInputSource.hh
@@ -84,10 +84,10 @@ class ClosedFileInputSource: public InputSource @@ -84,10 +84,10 @@ class ClosedFileInputSource: public InputSource
84 84
85 std::string filename; 85 std::string filename;
86 qpdf_offset_t offset; 86 qpdf_offset_t offset;
87 - PointerHolder<FileInputSource> fis; 87 + std::shared_ptr<FileInputSource> fis;
88 bool stay_open; 88 bool stay_open;
89 }; 89 };
90 - PointerHolder<Members> m; 90 + std::shared_ptr<Members> m;
91 }; 91 };
92 92
93 #endif // QPDF_CLOSEDFILEINPUTSOURCE_HH 93 #endif // QPDF_CLOSEDFILEINPUTSOURCE_HH
include/qpdf/FileInputSource.hh
@@ -71,7 +71,7 @@ class FileInputSource: public InputSource @@ -71,7 +71,7 @@ class FileInputSource: public InputSource
71 FILE* file; 71 FILE* file;
72 }; 72 };
73 73
74 - PointerHolder<Members> m; 74 + std::shared_ptr<Members> m;
75 }; 75 };
76 76
77 #endif // QPDF_FILEINPUTSOURCE_HH 77 #endif // QPDF_FILEINPUTSOURCE_HH
include/qpdf/InputSource.hh
@@ -114,7 +114,7 @@ class QPDF_DLL_CLASS InputSource @@ -114,7 +114,7 @@ class QPDF_DLL_CLASS InputSource
114 Members(Members const&); 114 Members(Members const&);
115 }; 115 };
116 116
117 - PointerHolder<Members> m; 117 + std::shared_ptr<Members> m;
118 }; 118 };
119 119
120 #endif // QPDF_INPUTSOURCE_HH 120 #endif // QPDF_INPUTSOURCE_HH
include/qpdf/JSON.hh
@@ -219,7 +219,7 @@ class JSON @@ -219,7 +219,7 @@ class JSON
219 std::shared_ptr<JSON_value> value; 219 std::shared_ptr<JSON_value> value;
220 }; 220 };
221 221
222 - PointerHolder<Members> m; 222 + std::shared_ptr<Members> m;
223 }; 223 };
224 224
225 #endif // JSON_HH 225 #endif // JSON_HH
include/qpdf/Pl_Buffer.hh
@@ -59,7 +59,7 @@ class Pl_Buffer: public Pipeline @@ -59,7 +59,7 @@ class Pl_Buffer: public Pipeline
59 59
60 // Same as getBuffer but wraps the result in a shared pointer. 60 // Same as getBuffer but wraps the result in a shared pointer.
61 QPDF_DLL 61 QPDF_DLL
62 - PointerHolder<Buffer> getBufferSharedPointer(); 62 + std::shared_ptr<Buffer> getBufferSharedPointer();
63 63
64 // getMallocBuffer behaves in the same was as getBuffer except the 64 // getMallocBuffer behaves in the same was as getBuffer except the
65 // buffer is allocated with malloc(), making it suitable for use 65 // buffer is allocated with malloc(), making it suitable for use
@@ -84,11 +84,11 @@ class Pl_Buffer: public Pipeline @@ -84,11 +84,11 @@ class Pl_Buffer: public Pipeline
84 Members(Members const&); 84 Members(Members const&);
85 85
86 bool ready; 86 bool ready;
87 - PointerHolder<Buffer> data; 87 + std::shared_ptr<Buffer> data;
88 size_t total_size; 88 size_t total_size;
89 }; 89 };
90 90
91 - PointerHolder<Members> m; 91 + std::shared_ptr<Members> m;
92 }; 92 };
93 93
94 #endif // PL_BUFFER_HH 94 #endif // PL_BUFFER_HH
include/qpdf/Pl_Concatenate.hh
@@ -63,7 +63,7 @@ class Pl_Concatenate: public Pipeline @@ -63,7 +63,7 @@ class Pl_Concatenate: public Pipeline
63 Members(Members const&); 63 Members(Members const&);
64 }; 64 };
65 65
66 - PointerHolder<Members> m; 66 + std::shared_ptr<Members> m;
67 }; 67 };
68 68
69 #endif // PL_CONCATENATE_HH 69 #endif // PL_CONCATENATE_HH
include/qpdf/Pl_Count.hh
@@ -66,7 +66,7 @@ class Pl_Count: public Pipeline @@ -66,7 +66,7 @@ class Pl_Count: public Pipeline
66 unsigned char last_char; 66 unsigned char last_char;
67 }; 67 };
68 68
69 - PointerHolder<Members> m; 69 + std::shared_ptr<Members> m;
70 }; 70 };
71 71
72 #endif // PL_COUNT_HH 72 #endif // PL_COUNT_HH
include/qpdf/Pl_DCT.hh
@@ -106,7 +106,7 @@ class Pl_DCT: public Pipeline @@ -106,7 +106,7 @@ class Pl_DCT: public Pipeline
106 CompressConfig* config_callback; 106 CompressConfig* config_callback;
107 }; 107 };
108 108
109 - PointerHolder<Members> m; 109 + std::shared_ptr<Members> m;
110 }; 110 };
111 111
112 #endif // PL_DCT_HH 112 #endif // PL_DCT_HH
include/qpdf/Pl_Discard.hh
@@ -56,7 +56,7 @@ class Pl_Discard: public Pipeline @@ -56,7 +56,7 @@ class Pl_Discard: public Pipeline
56 Members(Members const&); 56 Members(Members const&);
57 }; 57 };
58 58
59 - PointerHolder<Members> m; 59 + std::shared_ptr<Members> m;
60 }; 60 };
61 61
62 #endif // PL_DISCARD_HH 62 #endif // PL_DISCARD_HH
include/qpdf/Pl_Flate.hh
@@ -85,7 +85,7 @@ class Pl_Flate: public Pipeline @@ -85,7 +85,7 @@ class Pl_Flate: public Pipeline
85 std::function<void(char const*, int)> callback; 85 std::function<void(char const*, int)> callback;
86 }; 86 };
87 87
88 - PointerHolder<Members> m; 88 + std::shared_ptr<Members> m;
89 }; 89 };
90 90
91 #endif // PL_FLATE_HH 91 #endif // PL_FLATE_HH
include/qpdf/Pl_QPDFTokenizer.hh
@@ -76,7 +76,7 @@ class Pl_QPDFTokenizer: public Pipeline @@ -76,7 +76,7 @@ class Pl_QPDFTokenizer: public Pipeline
76 QPDFTokenizer tokenizer; 76 QPDFTokenizer tokenizer;
77 Pl_Buffer buf; 77 Pl_Buffer buf;
78 }; 78 };
79 - PointerHolder<Members> m; 79 + std::shared_ptr<Members> m;
80 }; 80 };
81 81
82 #endif // PL_QPDFTOKENIZER_HH 82 #endif // PL_QPDFTOKENIZER_HH
include/qpdf/Pl_RunLength.hh
@@ -64,7 +64,7 @@ class Pl_RunLength: public Pipeline @@ -64,7 +64,7 @@ class Pl_RunLength: public Pipeline
64 unsigned int length; 64 unsigned int length;
65 }; 65 };
66 66
67 - PointerHolder<Members> m; 67 + std::shared_ptr<Members> m;
68 }; 68 };
69 69
70 #endif // PL_RUNLENGTH_HH 70 #endif // PL_RUNLENGTH_HH
include/qpdf/Pl_StdioFile.hh
@@ -63,7 +63,7 @@ class Pl_StdioFile: public Pipeline @@ -63,7 +63,7 @@ class Pl_StdioFile: public Pipeline
63 FILE* file; 63 FILE* file;
64 }; 64 };
65 65
66 - PointerHolder<Members> m; 66 + std::shared_ptr<Members> m;
67 }; 67 };
68 68
69 #endif // PL_STDIOFILE_HH 69 #endif // PL_STDIOFILE_HH
include/qpdf/QPDF.hh
@@ -108,7 +108,7 @@ class QPDF @@ -108,7 +108,7 @@ class QPDF
108 // InputSource and use this method. 108 // InputSource and use this method.
109 QPDF_DLL 109 QPDF_DLL
110 void 110 void
111 - processInputSource(PointerHolder<InputSource>, char const* password = 0); 111 + processInputSource(std::shared_ptr<InputSource>, char const* password = 0);
112 112
113 // Close or otherwise release the input source. Once this has been 113 // Close or otherwise release the input source. Once this has been
114 // called, no other methods of qpdf can be called safely except 114 // called, no other methods of qpdf can be called safely except
@@ -714,7 +714,7 @@ class QPDF @@ -714,7 +714,7 @@ class QPDF
714 std::map<int, QPDFXRefEntry> const& xref, 714 std::map<int, QPDFXRefEntry> const& xref,
715 std::map<int, qpdf_offset_t> const& lengths, 715 std::map<int, qpdf_offset_t> const& lengths,
716 std::map<int, int> const& obj_renumber, 716 std::map<int, int> const& obj_renumber,
717 - PointerHolder<Buffer>& hint_stream, 717 + std::shared_ptr<Buffer>& hint_stream,
718 int& S, 718 int& S,
719 int& O) 719 int& O)
720 { 720 {
@@ -742,14 +742,14 @@ class QPDF @@ -742,14 +742,14 @@ class QPDF
742 friend class QPDFObjectHandle; 742 friend class QPDFObjectHandle;
743 743
744 private: 744 private:
745 - static PointerHolder<QPDFObject> 745 + static std::shared_ptr<QPDFObject>
746 resolve(QPDF* qpdf, int objid, int generation) 746 resolve(QPDF* qpdf, int objid, int generation)
747 { 747 {
748 return qpdf->resolve(objid, generation); 748 return qpdf->resolve(objid, generation);
749 } 749 }
750 static bool 750 static bool
751 objectChanged( 751 objectChanged(
752 - QPDF* qpdf, QPDFObjGen const& og, PointerHolder<QPDFObject>& oph) 752 + QPDF* qpdf, QPDFObjGen const& og, std::shared_ptr<QPDFObject>& oph)
753 { 753 {
754 return qpdf->objectChanged(og, oph); 754 return qpdf->objectChanged(og, oph);
755 } 755 }
@@ -841,7 +841,7 @@ class QPDF @@ -841,7 +841,7 @@ class QPDF
841 { 841 {
842 } 842 }
843 ObjCache( 843 ObjCache(
844 - PointerHolder<QPDFObject> object, 844 + std::shared_ptr<QPDFObject> object,
845 qpdf_offset_t end_before_space, 845 qpdf_offset_t end_before_space,
846 qpdf_offset_t end_after_space) : 846 qpdf_offset_t end_after_space) :
847 object(object), 847 object(object),
@@ -850,7 +850,7 @@ class QPDF @@ -850,7 +850,7 @@ class QPDF
850 { 850 {
851 } 851 }
852 852
853 - PointerHolder<QPDFObject> object; 853 + std::shared_ptr<QPDFObject> object;
854 qpdf_offset_t end_before_space; 854 qpdf_offset_t end_before_space;
855 qpdf_offset_t end_after_space; 855 qpdf_offset_t end_after_space;
856 }; 856 };
@@ -896,8 +896,8 @@ class QPDF @@ -896,8 +896,8 @@ class QPDF
896 896
897 public: 897 public:
898 ForeignStreamData( 898 ForeignStreamData(
899 - PointerHolder<EncryptionParameters> encp,  
900 - PointerHolder<InputSource> file, 899 + std::shared_ptr<EncryptionParameters> encp,
  900 + std::shared_ptr<InputSource> file,
901 int foreign_objid, 901 int foreign_objid,
902 int foreign_generation, 902 int foreign_generation,
903 qpdf_offset_t offset, 903 qpdf_offset_t offset,
@@ -905,8 +905,8 @@ class QPDF @@ -905,8 +905,8 @@ class QPDF
905 QPDFObjectHandle local_dict); 905 QPDFObjectHandle local_dict);
906 906
907 private: 907 private:
908 - PointerHolder<EncryptionParameters> encp;  
909 - PointerHolder<InputSource> file; 908 + std::shared_ptr<EncryptionParameters> encp;
  909 + std::shared_ptr<InputSource> file;
910 int foreign_objid; 910 int foreign_objid;
911 int foreign_generation; 911 int foreign_generation;
912 qpdf_offset_t offset; 912 qpdf_offset_t offset;
@@ -930,12 +930,12 @@ class QPDF @@ -930,12 +930,12 @@ class QPDF
930 void registerForeignStream( 930 void registerForeignStream(
931 QPDFObjGen const& local_og, QPDFObjectHandle foreign_stream); 931 QPDFObjGen const& local_og, QPDFObjectHandle foreign_stream);
932 void registerForeignStream( 932 void registerForeignStream(
933 - QPDFObjGen const& local_og, PointerHolder<ForeignStreamData>); 933 + QPDFObjGen const& local_og, std::shared_ptr<ForeignStreamData>);
934 934
935 private: 935 private:
936 QPDF& destination_qpdf; 936 QPDF& destination_qpdf;
937 std::map<QPDFObjGen, QPDFObjectHandle> foreign_streams; 937 std::map<QPDFObjGen, QPDFObjectHandle> foreign_streams;
938 - std::map<QPDFObjGen, PointerHolder<ForeignStreamData>> 938 + std::map<QPDFObjGen, std::shared_ptr<ForeignStreamData>>
939 foreign_stream_data; 939 foreign_stream_data;
940 }; 940 };
941 941
@@ -994,18 +994,18 @@ class QPDF @@ -994,18 +994,18 @@ class QPDF
994 void setLastObjectDescription( 994 void setLastObjectDescription(
995 std::string const& description, int objid, int generation); 995 std::string const& description, int objid, int generation);
996 QPDFObjectHandle readObject( 996 QPDFObjectHandle readObject(
997 - PointerHolder<InputSource>, 997 + std::shared_ptr<InputSource>,
998 std::string const& description, 998 std::string const& description,
999 int objid, 999 int objid,
1000 int generation, 1000 int generation,
1001 bool in_object_stream); 1001 bool in_object_stream);
1002 size_t recoverStreamLength( 1002 size_t recoverStreamLength(
1003 - PointerHolder<InputSource> input, 1003 + std::shared_ptr<InputSource> input,
1004 int objid, 1004 int objid,
1005 int generation, 1005 int generation,
1006 qpdf_offset_t stream_offset); 1006 qpdf_offset_t stream_offset);
1007 QPDFTokenizer::Token 1007 QPDFTokenizer::Token
1008 - readToken(PointerHolder<InputSource>, size_t max_len = 0); 1008 + readToken(std::shared_ptr<InputSource>, size_t max_len = 0);
1009 1009
1010 QPDFObjectHandle readObjectAtOffset( 1010 QPDFObjectHandle readObjectAtOffset(
1011 bool attempt_recovery, 1011 bool attempt_recovery,
@@ -1015,8 +1015,8 @@ class QPDF @@ -1015,8 +1015,8 @@ class QPDF
1015 int exp_generation, 1015 int exp_generation,
1016 int& act_objid, 1016 int& act_objid,
1017 int& act_generation); 1017 int& act_generation);
1018 - bool objectChanged(QPDFObjGen const& og, PointerHolder<QPDFObject>& oph);  
1019 - PointerHolder<QPDFObject> resolve(int objid, int generation); 1018 + bool objectChanged(QPDFObjGen const& og, std::shared_ptr<QPDFObject>& oph);
  1019 + std::shared_ptr<QPDFObject> resolve(int objid, int generation);
1020 void resolveObjectsInStream(int obj_stream_number); 1020 void resolveObjectsInStream(int obj_stream_number);
1021 void stopOnError(std::string const& message); 1021 void stopOnError(std::string const& message);
1022 1022
@@ -1031,13 +1031,13 @@ class QPDF @@ -1031,13 +1031,13 @@ class QPDF
1031 bool suppress_warnings, 1031 bool suppress_warnings,
1032 bool will_retry); 1032 bool will_retry);
1033 bool pipeForeignStreamData( 1033 bool pipeForeignStreamData(
1034 - PointerHolder<ForeignStreamData>, 1034 + std::shared_ptr<ForeignStreamData>,
1035 Pipeline*, 1035 Pipeline*,
1036 bool suppress_warnings, 1036 bool suppress_warnings,
1037 bool will_retry); 1037 bool will_retry);
1038 static bool pipeStreamData( 1038 static bool pipeStreamData(
1039 - PointerHolder<QPDF::EncryptionParameters> encp,  
1040 - PointerHolder<InputSource> file, 1039 + std::shared_ptr<QPDF::EncryptionParameters> encp,
  1040 + std::shared_ptr<InputSource> file,
1041 QPDF& qpdf_for_warning, 1041 QPDF& qpdf_for_warning,
1042 int objid, 1042 int objid,
1043 int generation, 1043 int generation,
@@ -1064,7 +1064,7 @@ class QPDF @@ -1064,7 +1064,7 @@ class QPDF
1064 std::map<int, QPDFXRefEntry> const& xref, 1064 std::map<int, QPDFXRefEntry> const& xref,
1065 std::map<int, qpdf_offset_t> const& lengths, 1065 std::map<int, qpdf_offset_t> const& lengths,
1066 std::map<int, int> const& obj_renumber, 1066 std::map<int, int> const& obj_renumber,
1067 - PointerHolder<Buffer>& hint_stream, 1067 + std::shared_ptr<Buffer>& hint_stream,
1068 int& S, 1068 int& S,
1069 int& O); 1069 int& O);
1070 1070
@@ -1089,10 +1089,10 @@ class QPDF @@ -1089,10 +1089,10 @@ class QPDF
1089 1089
1090 // methods to support encryption -- implemented in QPDF_encryption.cc 1090 // methods to support encryption -- implemented in QPDF_encryption.cc
1091 static encryption_method_e 1091 static encryption_method_e
1092 - interpretCF(PointerHolder<EncryptionParameters> encp, QPDFObjectHandle); 1092 + interpretCF(std::shared_ptr<EncryptionParameters> encp, QPDFObjectHandle);
1093 void initializeEncryption(); 1093 void initializeEncryption();
1094 static std::string getKeyForObject( 1094 static std::string getKeyForObject(
1095 - PointerHolder<EncryptionParameters> encp, 1095 + std::shared_ptr<EncryptionParameters> encp,
1096 int objid, 1096 int objid,
1097 int generation, 1097 int generation,
1098 bool use_aes); 1098 bool use_aes);
@@ -1106,8 +1106,8 @@ class QPDF @@ -1106,8 +1106,8 @@ class QPDF
1106 EncryptionData const& data, 1106 EncryptionData const& data,
1107 bool& perms_valid); 1107 bool& perms_valid);
1108 static void decryptStream( 1108 static void decryptStream(
1109 - PointerHolder<EncryptionParameters> encp,  
1110 - PointerHolder<InputSource> file, 1109 + std::shared_ptr<EncryptionParameters> encp,
  1110 + std::shared_ptr<InputSource> file,
1111 QPDF& qpdf_for_warning, 1111 QPDF& qpdf_for_warning,
1112 Pipeline*& pipeline, 1112 Pipeline*& pipeline,
1113 int objid, 1113 int objid,
@@ -1522,7 +1522,7 @@ class QPDF @@ -1522,7 +1522,7 @@ class QPDF
1522 1522
1523 unsigned long long unique_id; 1523 unsigned long long unique_id;
1524 QPDFTokenizer tokenizer; 1524 QPDFTokenizer tokenizer;
1525 - PointerHolder<InputSource> file; 1525 + std::shared_ptr<InputSource> file;
1526 std::string last_object_description; 1526 std::string last_object_description;
1527 bool provided_password_is_hex_key; 1527 bool provided_password_is_hex_key;
1528 bool ignore_xref_streams; 1528 bool ignore_xref_streams;
@@ -1530,7 +1530,7 @@ class QPDF @@ -1530,7 +1530,7 @@ class QPDF
1530 std::ostream* out_stream; 1530 std::ostream* out_stream;
1531 std::ostream* err_stream; 1531 std::ostream* err_stream;
1532 bool attempt_recovery; 1532 bool attempt_recovery;
1533 - PointerHolder<EncryptionParameters> encp; 1533 + std::shared_ptr<EncryptionParameters> encp;
1534 std::string pdf_version; 1534 std::string pdf_version;
1535 std::map<QPDFObjGen, QPDFXRefEntry> xref_table; 1535 std::map<QPDFObjGen, QPDFXRefEntry> xref_table;
1536 std::set<int> deleted_objects; 1536 std::set<int> deleted_objects;
@@ -1542,7 +1542,7 @@ class QPDF @@ -1542,7 +1542,7 @@ class QPDF
1542 bool pushed_inherited_attributes_to_pages; 1542 bool pushed_inherited_attributes_to_pages;
1543 std::vector<QPDFExc> warnings; 1543 std::vector<QPDFExc> warnings;
1544 std::map<unsigned long long, ObjCopier> object_copiers; 1544 std::map<unsigned long long, ObjCopier> object_copiers;
1545 - PointerHolder<QPDFObjectHandle::StreamDataProvider> copied_streams; 1545 + std::shared_ptr<QPDFObjectHandle::StreamDataProvider> copied_streams;
1546 // copied_stream_data_provider is owned by copied_streams 1546 // copied_stream_data_provider is owned by copied_streams
1547 CopiedStreamDataProvider* copied_stream_data_provider; 1547 CopiedStreamDataProvider* copied_stream_data_provider;
1548 bool reconstructed_xref; 1548 bool reconstructed_xref;
@@ -1590,7 +1590,7 @@ class QPDF @@ -1590,7 +1590,7 @@ class QPDF
1590 // Keep all member variables inside the Members object, which we 1590 // Keep all member variables inside the Members object, which we
1591 // dynamically allocate. This makes it possible to add new private 1591 // dynamically allocate. This makes it possible to add new private
1592 // members without breaking binary compatibility. 1592 // members without breaking binary compatibility.
1593 - PointerHolder<Members> m; 1593 + std::shared_ptr<Members> m;
1594 }; 1594 };
1595 1595
1596 #endif // QPDF_HH 1596 #endif // QPDF_HH
include/qpdf/QPDFAcroFormDocumentHelper.hh
@@ -305,7 +305,7 @@ class QPDFAcroFormDocumentHelper: public QPDFDocumentHelper @@ -305,7 +305,7 @@ class QPDFAcroFormDocumentHelper: public QPDFDocumentHelper
305 std::map<std::string, std::set<QPDFObjGen>> name_to_fields; 305 std::map<std::string, std::set<QPDFObjGen>> name_to_fields;
306 }; 306 };
307 307
308 - PointerHolder<Members> m; 308 + std::shared_ptr<Members> m;
309 }; 309 };
310 310
311 #endif // QPDFACROFORMDOCUMENTHELPER_HH 311 #endif // QPDFACROFORMDOCUMENTHELPER_HH
include/qpdf/QPDFAnnotationObjectHelper.hh
@@ -115,7 +115,7 @@ class QPDFAnnotationObjectHelper: public QPDFObjectHelper @@ -115,7 +115,7 @@ class QPDFAnnotationObjectHelper: public QPDFObjectHelper
115 Members(Members const&); 115 Members(Members const&);
116 }; 116 };
117 117
118 - PointerHolder<Members> m; 118 + std::shared_ptr<Members> m;
119 }; 119 };
120 120
121 #endif // QPDFANNOTATIONOBJECTHELPER_HH 121 #endif // QPDFANNOTATIONOBJECTHELPER_HH
include/qpdf/QPDFEFStreamObjectHelper.hh
@@ -74,7 +74,7 @@ class QPDFEFStreamObjectHelper: public QPDFObjectHelper @@ -74,7 +74,7 @@ class QPDFEFStreamObjectHelper: public QPDFObjectHelper
74 // parameters may be supplied using setters defined below. 74 // parameters may be supplied using setters defined below.
75 QPDF_DLL 75 QPDF_DLL
76 static QPDFEFStreamObjectHelper 76 static QPDFEFStreamObjectHelper
77 - createEFStream(QPDF& qpdf, PointerHolder<Buffer> data); 77 + createEFStream(QPDF& qpdf, std::shared_ptr<Buffer> data);
78 QPDF_DLL 78 QPDF_DLL
79 static QPDFEFStreamObjectHelper 79 static QPDFEFStreamObjectHelper
80 createEFStream(QPDF& qpdf, std::string const& data); 80 createEFStream(QPDF& qpdf, std::string const& data);
@@ -116,7 +116,7 @@ class QPDFEFStreamObjectHelper: public QPDFObjectHelper @@ -116,7 +116,7 @@ class QPDFEFStreamObjectHelper: public QPDFObjectHelper
116 Members(Members const&) = delete; 116 Members(Members const&) = delete;
117 }; 117 };
118 118
119 - PointerHolder<Members> m; 119 + std::shared_ptr<Members> m;
120 }; 120 };
121 121
122 #endif // QPDFEFSTREAMOBJECTHELPER_HH 122 #endif // QPDFEFSTREAMOBJECTHELPER_HH
include/qpdf/QPDFEmbeddedFileDocumentHelper.hh
@@ -91,7 +91,7 @@ class QPDFEmbeddedFileDocumentHelper: public QPDFDocumentHelper @@ -91,7 +91,7 @@ class QPDFEmbeddedFileDocumentHelper: public QPDFDocumentHelper
91 std::shared_ptr<QPDFNameTreeObjectHelper> embedded_files; 91 std::shared_ptr<QPDFNameTreeObjectHelper> embedded_files;
92 }; 92 };
93 93
94 - PointerHolder<Members> m; 94 + std::shared_ptr<Members> m;
95 }; 95 };
96 96
97 #endif // QPDFEMBEDDEDFILEDOCUMENTHELPER_HH 97 #endif // QPDFEMBEDDEDFILEDOCUMENTHELPER_HH
include/qpdf/QPDFFileSpecObjectHelper.hh
@@ -113,7 +113,7 @@ class QPDFFileSpecObjectHelper: public QPDFObjectHelper @@ -113,7 +113,7 @@ class QPDFFileSpecObjectHelper: public QPDFObjectHelper
113 Members(Members const&) = delete; 113 Members(Members const&) = delete;
114 }; 114 };
115 115
116 - PointerHolder<Members> m; 116 + std::shared_ptr<Members> m;
117 }; 117 };
118 118
119 #endif // QPDFFILESPECOBJECTHELPER_HH 119 #endif // QPDFFILESPECOBJECTHELPER_HH
include/qpdf/QPDFFormFieldObjectHelper.hh
@@ -236,7 +236,7 @@ class QPDFFormFieldObjectHelper: public QPDFObjectHelper @@ -236,7 +236,7 @@ class QPDFFormFieldObjectHelper: public QPDFObjectHelper
236 Members(Members const&); 236 Members(Members const&);
237 }; 237 };
238 238
239 - PointerHolder<Members> m; 239 + std::shared_ptr<Members> m;
240 }; 240 };
241 241
242 #endif // QPDFFORMFIELDOBJECTHELPER_HH 242 #endif // QPDFFORMFIELDOBJECTHELPER_HH
include/qpdf/QPDFJob.hh
@@ -453,7 +453,7 @@ class QPDFJob @@ -453,7 +453,7 @@ class QPDFJob
453 std::shared_ptr<QPDF> processFile( 453 std::shared_ptr<QPDF> processFile(
454 char const* filename, char const* password, bool used_for_input); 454 char const* filename, char const* password, bool used_for_input);
455 std::shared_ptr<QPDF> processInputSource( 455 std::shared_ptr<QPDF> processInputSource(
456 - PointerHolder<InputSource> is, 456 + std::shared_ptr<InputSource> is,
457 char const* password, 457 char const* password,
458 bool used_for_input); 458 bool used_for_input);
459 std::shared_ptr<QPDF> doProcess( 459 std::shared_ptr<QPDF> doProcess(
include/qpdf/QPDFNameTreeObjectHelper.hh
@@ -204,7 +204,7 @@ class QPDFNameTreeObjectHelper: public QPDFObjectHelper @@ -204,7 +204,7 @@ class QPDFNameTreeObjectHelper: public QPDFObjectHelper
204 std::shared_ptr<NNTreeImpl> impl; 204 std::shared_ptr<NNTreeImpl> impl;
205 }; 205 };
206 206
207 - PointerHolder<Members> m; 207 + std::shared_ptr<Members> m;
208 }; 208 };
209 209
210 #endif // QPDFNAMETREEOBJECTHELPER_HH 210 #endif // QPDFNAMETREEOBJECTHELPER_HH
include/qpdf/QPDFNumberTreeObjectHelper.hh
@@ -226,7 +226,7 @@ class QPDFNumberTreeObjectHelper: public QPDFObjectHelper @@ -226,7 +226,7 @@ class QPDFNumberTreeObjectHelper: public QPDFObjectHelper
226 std::shared_ptr<NNTreeImpl> impl; 226 std::shared_ptr<NNTreeImpl> impl;
227 }; 227 };
228 228
229 - PointerHolder<Members> m; 229 + std::shared_ptr<Members> m;
230 }; 230 };
231 231
232 #endif // QPDFNUMBERTREEOBJECTHELPER_HH 232 #endif // QPDFNUMBERTREEOBJECTHELPER_HH
include/qpdf/QPDFObjectHandle.hh
@@ -434,7 +434,7 @@ class QPDFObjectHandle @@ -434,7 +434,7 @@ class QPDFObjectHandle
434 // objects that are ready from the object's input stream. 434 // objects that are ready from the object's input stream.
435 QPDF_DLL 435 QPDF_DLL
436 static QPDFObjectHandle parse( 436 static QPDFObjectHandle parse(
437 - PointerHolder<InputSource> input, 437 + std::shared_ptr<InputSource> input,
438 std::string const& object_description, 438 std::string const& object_description,
439 QPDFTokenizer&, 439 QPDFTokenizer&,
440 bool& empty, 440 bool& empty,
@@ -490,7 +490,7 @@ class QPDFObjectHandle @@ -490,7 +490,7 @@ class QPDFObjectHandle
490 // handle the case of pages whose contents are split across 490 // handle the case of pages whose contents are split across
491 // multiple streams. 491 // multiple streams.
492 QPDF_DLL 492 QPDF_DLL
493 - void addTokenFilter(PointerHolder<TokenFilter> token_filter); 493 + void addTokenFilter(std::shared_ptr<TokenFilter> token_filter);
494 494
495 // Legacy helpers for parsing content streams. These methods are 495 // Legacy helpers for parsing content streams. These methods are
496 // not going away, but newer code should call the correspond 496 // not going away, but newer code should call the correspond
@@ -506,7 +506,7 @@ class QPDFObjectHandle @@ -506,7 +506,7 @@ class QPDFObjectHandle
506 QPDF_DLL 506 QPDF_DLL
507 void pipePageContents(Pipeline* p); 507 void pipePageContents(Pipeline* p);
508 QPDF_DLL 508 QPDF_DLL
509 - void addContentTokenFilter(PointerHolder<TokenFilter> token_filter); 509 + void addContentTokenFilter(std::shared_ptr<TokenFilter> token_filter);
510 // End legacy content stream helpers 510 // End legacy content stream helpers
511 511
512 // Called on a stream to filter the stream as if it were page 512 // Called on a stream to filter the stream as if it were page
@@ -618,11 +618,11 @@ class QPDFObjectHandle @@ -618,11 +618,11 @@ class QPDFObjectHandle
618 // uncompressed stream data. Example programs are provided that 618 // uncompressed stream data. Example programs are provided that
619 // illustrate this. 619 // illustrate this.
620 QPDF_DLL 620 QPDF_DLL
621 - static QPDFObjectHandle newStream(QPDF* qpdf, PointerHolder<Buffer> data); 621 + static QPDFObjectHandle newStream(QPDF* qpdf, std::shared_ptr<Buffer> data);
622 622
623 // Create new stream with data from string. This method will 623 // Create new stream with data from string. This method will
624 // create a copy of the data rather than using the user-provided 624 // create a copy of the data rather than using the user-provided
625 - // buffer as in the PointerHolder<Buffer> version of newStream. 625 + // buffer as in the std::shared_ptr<Buffer> version of newStream.
626 QPDF_DLL 626 QPDF_DLL
627 static QPDFObjectHandle newStream(QPDF* qpdf, std::string const& data); 627 static QPDFObjectHandle newStream(QPDF* qpdf, std::string const& data);
628 628
@@ -1089,12 +1089,12 @@ class QPDFObjectHandle @@ -1089,12 +1089,12 @@ class QPDFObjectHandle
1089 // Returns filtered (uncompressed) stream data. Throws an 1089 // Returns filtered (uncompressed) stream data. Throws an
1090 // exception if the stream is filtered and we can't decode it. 1090 // exception if the stream is filtered and we can't decode it.
1091 QPDF_DLL 1091 QPDF_DLL
1092 - PointerHolder<Buffer> 1092 + std::shared_ptr<Buffer>
1093 getStreamData(qpdf_stream_decode_level_e level = qpdf_dl_generalized); 1093 getStreamData(qpdf_stream_decode_level_e level = qpdf_dl_generalized);
1094 1094
1095 // Returns unfiltered (raw) stream data. 1095 // Returns unfiltered (raw) stream data.
1096 QPDF_DLL 1096 QPDF_DLL
1097 - PointerHolder<Buffer> getRawStreamData(); 1097 + std::shared_ptr<Buffer> getRawStreamData();
1098 1098
1099 // Write stream data through the given pipeline. A null pipeline 1099 // Write stream data through the given pipeline. A null pipeline
1100 // value may be used if all you want to do is determine whether a 1100 // value may be used if all you want to do is determine whether a
@@ -1201,13 +1201,13 @@ class QPDFObjectHandle @@ -1201,13 +1201,13 @@ class QPDFObjectHandle
1201 // decryption filters have been applied, is as presented. 1201 // decryption filters have been applied, is as presented.
1202 QPDF_DLL 1202 QPDF_DLL
1203 void replaceStreamData( 1203 void replaceStreamData(
1204 - PointerHolder<Buffer> data, 1204 + std::shared_ptr<Buffer> data,
1205 QPDFObjectHandle const& filter, 1205 QPDFObjectHandle const& filter,
1206 QPDFObjectHandle const& decode_parms); 1206 QPDFObjectHandle const& decode_parms);
1207 1207
1208 // Replace the stream's stream data with the given string. 1208 // Replace the stream's stream data with the given string.
1209 // This method will create a copy of the data rather than using 1209 // This method will create a copy of the data rather than using
1210 - // the user-provided buffer as in the PointerHolder<Buffer> version 1210 + // the user-provided buffer as in the std::shared_ptr<Buffer> version
1211 // of replaceStreamData. 1211 // of replaceStreamData.
1212 QPDF_DLL 1212 QPDF_DLL
1213 void replaceStreamData( 1213 void replaceStreamData(
@@ -1242,7 +1242,7 @@ class QPDFObjectHandle @@ -1242,7 +1242,7 @@ class QPDFObjectHandle
1242 // compute the length in advance. 1242 // compute the length in advance.
1243 QPDF_DLL 1243 QPDF_DLL
1244 void replaceStreamData( 1244 void replaceStreamData(
1245 - PointerHolder<StreamDataProvider> provider, 1245 + std::shared_ptr<StreamDataProvider> provider,
1246 QPDFObjectHandle const& filter, 1246 QPDFObjectHandle const& filter,
1247 QPDFObjectHandle const& decode_parms); 1247 QPDFObjectHandle const& decode_parms);
1248 1248
@@ -1373,7 +1373,7 @@ class QPDFObjectHandle @@ -1373,7 +1373,7 @@ class QPDFObjectHandle
1373 friend class QPDF; 1373 friend class QPDF;
1374 1374
1375 private: 1375 private:
1376 - static PointerHolder<QPDFObject> 1376 + static std::shared_ptr<QPDFObject>
1377 getObject(QPDFObjectHandle& o) 1377 getObject(QPDFObjectHandle& o)
1378 { 1378 {
1379 o.dereference(); 1379 o.dereference();
@@ -1496,10 +1496,10 @@ class QPDFObjectHandle @@ -1496,10 +1496,10 @@ class QPDFObjectHandle
1496 QPDFObjectHandle, 1496 QPDFObjectHandle,
1497 QPDF*, 1497 QPDF*,
1498 std::string const&, 1498 std::string const&,
1499 - PointerHolder<InputSource>, 1499 + std::shared_ptr<InputSource>,
1500 qpdf_offset_t); 1500 qpdf_offset_t);
1501 static QPDFObjectHandle parseInternal( 1501 static QPDFObjectHandle parseInternal(
1502 - PointerHolder<InputSource> input, 1502 + std::shared_ptr<InputSource> input,
1503 std::string const& object_description, 1503 std::string const& object_description,
1504 QPDFTokenizer& tokenizer, 1504 QPDFTokenizer& tokenizer,
1505 bool& empty, 1505 bool& empty,
@@ -1510,7 +1510,7 @@ class QPDFObjectHandle @@ -1510,7 +1510,7 @@ class QPDFObjectHandle
1510 void parseContentStream_internal( 1510 void parseContentStream_internal(
1511 std::string const& description, ParserCallbacks* callbacks); 1511 std::string const& description, ParserCallbacks* callbacks);
1512 static void parseContentStream_data( 1512 static void parseContentStream_data(
1513 - PointerHolder<Buffer>, 1513 + std::shared_ptr<Buffer>,
1514 std::string const& description, 1514 std::string const& description,
1515 ParserCallbacks* callbacks, 1515 ParserCallbacks* callbacks,
1516 QPDF* context); 1516 QPDF* context);
@@ -1527,7 +1527,7 @@ class QPDFObjectHandle @@ -1527,7 +1527,7 @@ class QPDFObjectHandle
1527 QPDF* qpdf; 1527 QPDF* qpdf;
1528 int objid; // 0 for direct object 1528 int objid; // 0 for direct object
1529 int generation; 1529 int generation;
1530 - PointerHolder<QPDFObject> obj; 1530 + std::shared_ptr<QPDFObject> obj;
1531 bool reserved; 1531 bool reserved;
1532 }; 1532 };
1533 1533
@@ -1629,7 +1629,7 @@ class QPDFObjectHandle::QPDFDictItems @@ -1629,7 +1629,7 @@ class QPDFObjectHandle::QPDFDictItems
1629 std::set<std::string>::iterator iter; 1629 std::set<std::string>::iterator iter;
1630 bool is_end; 1630 bool is_end;
1631 }; 1631 };
1632 - PointerHolder<Members> m; 1632 + std::shared_ptr<Members> m;
1633 value_type ivalue; 1633 value_type ivalue;
1634 }; 1634 };
1635 1635
@@ -1727,7 +1727,7 @@ class QPDFObjectHandle::QPDFArrayItems @@ -1727,7 +1727,7 @@ class QPDFObjectHandle::QPDFArrayItems
1727 int item_number; 1727 int item_number;
1728 bool is_end; 1728 bool is_end;
1729 }; 1729 };
1730 - PointerHolder<Members> m; 1730 + std::shared_ptr<Members> m;
1731 value_type ivalue; 1731 value_type ivalue;
1732 }; 1732 };
1733 1733
include/qpdf/QPDFOutlineDocumentHelper.hh
@@ -97,11 +97,11 @@ class QPDFOutlineDocumentHelper: public QPDFDocumentHelper @@ -97,11 +97,11 @@ class QPDFOutlineDocumentHelper: public QPDFDocumentHelper
97 std::vector<QPDFOutlineObjectHelper> outlines; 97 std::vector<QPDFOutlineObjectHelper> outlines;
98 std::set<QPDFObjGen> seen; 98 std::set<QPDFObjGen> seen;
99 QPDFObjectHandle dest_dict; 99 QPDFObjectHandle dest_dict;
100 - PointerHolder<QPDFNameTreeObjectHelper> names_dest; 100 + std::shared_ptr<QPDFNameTreeObjectHelper> names_dest;
101 std::map<QPDFObjGen, std::vector<QPDFOutlineObjectHelper>> by_page; 101 std::map<QPDFObjGen, std::vector<QPDFOutlineObjectHelper>> by_page;
102 }; 102 };
103 103
104 - PointerHolder<Members> m; 104 + std::shared_ptr<Members> m;
105 }; 105 };
106 106
107 #endif // QPDFOUTLINEDOCUMENTHELPER_HH 107 #endif // QPDFOUTLINEDOCUMENTHELPER_HH
include/qpdf/QPDFOutlineObjectHelper.hh
@@ -51,7 +51,7 @@ class QPDFOutlineObjectHelper: public QPDFObjectHelper @@ -51,7 +51,7 @@ class QPDFOutlineObjectHelper: public QPDFObjectHelper
51 // Return parent pointer. Returns a null pointer if this is a 51 // Return parent pointer. Returns a null pointer if this is a
52 // top-level outline. 52 // top-level outline.
53 QPDF_DLL 53 QPDF_DLL
54 - PointerHolder<QPDFOutlineObjectHelper> getParent(); 54 + std::shared_ptr<QPDFOutlineObjectHelper> getParent();
55 55
56 // Return children as a list. 56 // Return children as a list.
57 QPDF_DLL 57 QPDF_DLL
@@ -112,11 +112,11 @@ class QPDFOutlineObjectHelper: public QPDFObjectHelper @@ -112,11 +112,11 @@ class QPDFOutlineObjectHelper: public QPDFObjectHelper
112 Members(Members const&); 112 Members(Members const&);
113 113
114 QPDFOutlineDocumentHelper& dh; 114 QPDFOutlineDocumentHelper& dh;
115 - PointerHolder<QPDFOutlineObjectHelper> parent; 115 + std::shared_ptr<QPDFOutlineObjectHelper> parent;
116 std::vector<QPDFOutlineObjectHelper> kids; 116 std::vector<QPDFOutlineObjectHelper> kids;
117 }; 117 };
118 118
119 - PointerHolder<Members> m; 119 + std::shared_ptr<Members> m;
120 }; 120 };
121 121
122 #endif // QPDFOUTLINEOBJECTHELPER_HH 122 #endif // QPDFOUTLINEOBJECTHELPER_HH
include/qpdf/QPDFPageDocumentHelper.hh
@@ -151,7 +151,7 @@ class QPDFPageDocumentHelper: public QPDFDocumentHelper @@ -151,7 +151,7 @@ class QPDFPageDocumentHelper: public QPDFDocumentHelper
151 Members(Members const&); 151 Members(Members const&);
152 }; 152 };
153 153
154 - PointerHolder<Members> m; 154 + std::shared_ptr<Members> m;
155 }; 155 };
156 156
157 #endif // QPDFPAGEDOCUMENTHELPER_HH 157 #endif // QPDFPAGEDOCUMENTHELPER_HH
include/qpdf/QPDFPageLabelDocumentHelper.hh
@@ -96,10 +96,10 @@ class QPDFPageLabelDocumentHelper: public QPDFDocumentHelper @@ -96,10 +96,10 @@ class QPDFPageLabelDocumentHelper: public QPDFDocumentHelper
96 Members(); 96 Members();
97 Members(Members const&); 97 Members(Members const&);
98 98
99 - PointerHolder<QPDFNumberTreeObjectHelper> labels; 99 + std::shared_ptr<QPDFNumberTreeObjectHelper> labels;
100 }; 100 };
101 101
102 - PointerHolder<Members> m; 102 + std::shared_ptr<Members> m;
103 }; 103 };
104 104
105 #endif // QPDFPAGELABELDOCUMENTHELPER_HH 105 #endif // QPDFPAGELABELDOCUMENTHELPER_HH
include/qpdf/QPDFPageObjectHelper.hh
@@ -225,7 +225,7 @@ class QPDFPageObjectHelper: public QPDFObjectHelper @@ -225,7 +225,7 @@ class QPDFPageObjectHelper: public QPDFObjectHelper
225 // stream. Also works on form XObjects. 225 // stream. Also works on form XObjects.
226 QPDF_DLL 226 QPDF_DLL
227 void addContentTokenFilter( 227 void addContentTokenFilter(
228 - PointerHolder<QPDFObjectHandle::TokenFilter> token_filter); 228 + std::shared_ptr<QPDFObjectHandle::TokenFilter> token_filter);
229 229
230 // A page's resources dictionary maps names to objects elsewhere 230 // A page's resources dictionary maps names to objects elsewhere
231 // in the file. This method walks through a page's contents and 231 // in the file. This method walks through a page's contents and
@@ -397,7 +397,7 @@ class QPDFPageObjectHelper: public QPDFObjectHelper @@ -397,7 +397,7 @@ class QPDFPageObjectHelper: public QPDFObjectHelper
397 Members(Members const&); 397 Members(Members const&);
398 }; 398 };
399 399
400 - PointerHolder<Members> m; 400 + std::shared_ptr<Members> m;
401 }; 401 };
402 402
403 #endif // QPDFPAGEOBJECTHELPER_HH 403 #endif // QPDFPAGEOBJECTHELPER_HH
include/qpdf/QPDFTokenizer.hh
@@ -173,7 +173,7 @@ class QPDFTokenizer @@ -173,7 +173,7 @@ class QPDFTokenizer
173 // beginning of the token. 173 // beginning of the token.
174 QPDF_DLL 174 QPDF_DLL
175 Token readToken( 175 Token readToken(
176 - PointerHolder<InputSource> input, 176 + std::shared_ptr<InputSource> input,
177 std::string const& context, 177 std::string const& context,
178 bool allow_bad = false, 178 bool allow_bad = false,
179 size_t max_len = 0); 179 size_t max_len = 0);
@@ -187,7 +187,7 @@ class QPDFTokenizer @@ -187,7 +187,7 @@ class QPDFTokenizer
187 // tt_inline_image or tt_bad. This is the only way readToken 187 // tt_inline_image or tt_bad. This is the only way readToken
188 // returns a tt_inline_image token. 188 // returns a tt_inline_image token.
189 QPDF_DLL 189 QPDF_DLL
190 - void expectInlineImage(PointerHolder<InputSource> input); 190 + void expectInlineImage(std::shared_ptr<InputSource> input);
191 191
192 private: 192 private:
193 QPDFTokenizer(QPDFTokenizer const&) = delete; 193 QPDFTokenizer(QPDFTokenizer const&) = delete;
@@ -196,7 +196,7 @@ class QPDFTokenizer @@ -196,7 +196,7 @@ class QPDFTokenizer
196 void resolveLiteral(); 196 void resolveLiteral();
197 bool isSpace(char); 197 bool isSpace(char);
198 bool isDelimiter(char); 198 bool isDelimiter(char);
199 - void findEI(PointerHolder<InputSource> input); 199 + void findEI(std::shared_ptr<InputSource> input);
200 200
201 enum state_e { 201 enum state_e {
202 st_top, 202 st_top,
@@ -246,7 +246,7 @@ class QPDFTokenizer @@ -246,7 +246,7 @@ class QPDFTokenizer
246 bool last_char_was_bs; 246 bool last_char_was_bs;
247 bool last_char_was_cr; 247 bool last_char_was_cr;
248 }; 248 };
249 - PointerHolder<Members> m; 249 + std::shared_ptr<Members> m;
250 }; 250 };
251 251
252 #endif // QPDFTOKENIZER_HH 252 #endif // QPDFTOKENIZER_HH
include/qpdf/QPDFWriter.hh
@@ -128,7 +128,7 @@ class QPDFWriter @@ -128,7 +128,7 @@ class QPDFWriter
128 128
129 // Return getBuffer() in a shared pointer. 129 // Return getBuffer() in a shared pointer.
130 QPDF_DLL 130 QPDF_DLL
131 - PointerHolder<Buffer> getBufferSharedPointer(); 131 + std::shared_ptr<Buffer> getBufferSharedPointer();
132 132
133 // Supply your own pipeline object. Output will be written to 133 // Supply your own pipeline object. Output will be written to
134 // this pipeline, and QPDFWriter will call finish() on the 134 // this pipeline, and QPDFWriter will call finish() on the
@@ -499,7 +499,7 @@ class QPDFWriter @@ -499,7 +499,7 @@ class QPDFWriter
499 // If you want to be notified of progress, derive a class from 499 // If you want to be notified of progress, derive a class from
500 // ProgressReporter and override the reportProgress method. 500 // ProgressReporter and override the reportProgress method.
501 QPDF_DLL 501 QPDF_DLL
502 - void registerProgressReporter(PointerHolder<ProgressReporter>); 502 + void registerProgressReporter(std::shared_ptr<ProgressReporter>);
503 503
504 // Return the PDF version that will be written into the header. 504 // Return the PDF version that will be written into the header.
505 // Calling this method does all the preparation for writing, so it 505 // Calling this method does all the preparation for writing, so it
@@ -550,7 +550,7 @@ class QPDFWriter @@ -550,7 +550,7 @@ class QPDFWriter
550 friend class QPDFWriter; 550 friend class QPDFWriter;
551 551
552 public: 552 public:
553 - PipelinePopper(QPDFWriter* qw, PointerHolder<Buffer>* bp = 0) : 553 + PipelinePopper(QPDFWriter* qw, std::shared_ptr<Buffer>* bp = 0) :
554 qw(qw), 554 qw(qw),
555 bp(bp) 555 bp(bp)
556 { 556 {
@@ -559,7 +559,7 @@ class QPDFWriter @@ -559,7 +559,7 @@ class QPDFWriter
559 559
560 private: 560 private:
561 QPDFWriter* qw; 561 QPDFWriter* qw;
562 - PointerHolder<Buffer>* bp; 562 + std::shared_ptr<Buffer>* bp;
563 std::string stack_id; 563 std::string stack_id;
564 }; 564 };
565 friend class PipelinePopper; 565 friend class PipelinePopper;
@@ -567,7 +567,7 @@ class QPDFWriter @@ -567,7 +567,7 @@ class QPDFWriter
567 unsigned int bytesNeeded(long long n); 567 unsigned int bytesNeeded(long long n);
568 void writeBinary(unsigned long long val, unsigned int bytes); 568 void writeBinary(unsigned long long val, unsigned int bytes);
569 void writeString(std::string const& str); 569 void writeString(std::string const& str);
570 - void writeBuffer(PointerHolder<Buffer>&); 570 + void writeBuffer(std::shared_ptr<Buffer>&);
571 void writeStringQDF(std::string const& str); 571 void writeStringQDF(std::string const& str);
572 void writeStringNoQDF(std::string const& str); 572 void writeStringNoQDF(std::string const& str);
573 void writePad(int nspaces); 573 void writePad(int nspaces);
@@ -587,7 +587,7 @@ class QPDFWriter @@ -587,7 +587,7 @@ class QPDFWriter
587 QPDFObjectHandle stream, 587 QPDFObjectHandle stream,
588 bool& compress_stream, 588 bool& compress_stream,
589 bool& is_metadata, 589 bool& is_metadata,
590 - PointerHolder<Buffer>* stream_data); 590 + std::shared_ptr<Buffer>* stream_data);
591 void unparseObject( 591 void unparseObject(
592 QPDFObjectHandle object, 592 QPDFObjectHandle object,
593 int level, 593 int level,
@@ -791,7 +791,7 @@ class QPDFWriter @@ -791,7 +791,7 @@ class QPDFWriter
791 std::map<int, int> object_to_object_stream_no_gen; 791 std::map<int, int> object_to_object_stream_no_gen;
792 792
793 // For progress reporting 793 // For progress reporting
794 - PointerHolder<ProgressReporter> progress_reporter; 794 + std::shared_ptr<ProgressReporter> progress_reporter;
795 int events_expected; 795 int events_expected;
796 int events_seen; 796 int events_seen;
797 int next_progress_report; 797 int next_progress_report;
@@ -800,7 +800,7 @@ class QPDFWriter @@ -800,7 +800,7 @@ class QPDFWriter
800 // Keep all member variables inside the Members object, which we 800 // Keep all member variables inside the Members object, which we
801 // dynamically allocate. This makes it possible to add new private 801 // dynamically allocate. This makes it possible to add new private
802 // members without breaking binary compatibility. 802 // members without breaking binary compatibility.
803 - PointerHolder<Members> m; 803 + std::shared_ptr<Members> m;
804 }; 804 };
805 805
806 #endif // QPDFWRITER_HH 806 #endif // QPDFWRITER_HH
include/qpdf/QUtil.hh
@@ -420,7 +420,7 @@ namespace QUtil @@ -420,7 +420,7 @@ namespace QUtil
420 420
421 QPDF_DLL 421 QPDF_DLL
422 void read_file_into_memory( 422 void read_file_into_memory(
423 - char const* filename, PointerHolder<char>& file_buf, size_t& size); 423 + char const* filename, std::shared_ptr<char>& file_buf, size_t& size);
424 424
425 // This used to be called strcasecmp, but that is a macro on some 425 // This used to be called strcasecmp, but that is a macro on some
426 // platforms, so we have to give it a name that is not likely to 426 // platforms, so we have to give it a name that is not likely to
libqpdf/Buffer.cc
@@ -52,7 +52,7 @@ void @@ -52,7 +52,7 @@ void
52 Buffer::copy(Buffer const& rhs) 52 Buffer::copy(Buffer const& rhs)
53 { 53 {
54 if (this != &rhs) { 54 if (this != &rhs) {
55 - this->m = PointerHolder<Members>(new Members(rhs.m->size, 0, true)); 55 + this->m = std::shared_ptr<Members>(new Members(rhs.m->size, 0, true));
56 if (this->m->size) { 56 if (this->m->size) {
57 memcpy(this->m->buf, rhs.m->buf, this->m->size); 57 memcpy(this->m->buf, rhs.m->buf, this->m->size);
58 } 58 }
libqpdf/ClosedFileInputSource.cc
@@ -26,7 +26,7 @@ void @@ -26,7 +26,7 @@ void
26 ClosedFileInputSource::before() 26 ClosedFileInputSource::before()
27 { 27 {
28 if (0 == this->m->fis.get()) { 28 if (0 == this->m->fis.get()) {
29 - this->m->fis = make_pointer_holder<FileInputSource>(); 29 + this->m->fis = std::make_shared<FileInputSource>();
30 this->m->fis->setFilename(this->m->filename.c_str()); 30 this->m->fis->setFilename(this->m->filename.c_str());
31 this->m->fis->seek(this->m->offset, SEEK_SET); 31 this->m->fis->seek(this->m->offset, SEEK_SET);
32 this->m->fis->setLastOffset(this->last_offset); 32 this->m->fis->setLastOffset(this->last_offset);
libqpdf/FileInputSource.cc
@@ -26,7 +26,7 @@ FileInputSource::FileInputSource() : @@ -26,7 +26,7 @@ FileInputSource::FileInputSource() :
26 void 26 void
27 FileInputSource::setFilename(char const* filename) 27 FileInputSource::setFilename(char const* filename)
28 { 28 {
29 - this->m = PointerHolder<Members>(new Members(true)); 29 + this->m = std::shared_ptr<Members>(new Members(true));
30 this->m->filename = filename; 30 this->m->filename = filename;
31 this->m->file = QUtil::safe_fopen(filename, "rb"); 31 this->m->file = QUtil::safe_fopen(filename, "rb");
32 } 32 }
@@ -34,7 +34,7 @@ FileInputSource::setFilename(char const* filename) @@ -34,7 +34,7 @@ FileInputSource::setFilename(char const* filename)
34 void 34 void
35 FileInputSource::setFile(char const* description, FILE* filep, bool close_file) 35 FileInputSource::setFile(char const* description, FILE* filep, bool close_file)
36 { 36 {
37 - this->m = PointerHolder<Members>(new Members(close_file)); 37 + this->m = std::shared_ptr<Members>(new Members(close_file));
38 this->m->filename = description; 38 this->m->filename = description;
39 this->m->file = filep; 39 this->m->file = filep;
40 this->seek(0, SEEK_SET); 40 this->seek(0, SEEK_SET);
libqpdf/OffsetInputSource.cc
@@ -5,7 +5,7 @@ @@ -5,7 +5,7 @@
5 #include <stdexcept> 5 #include <stdexcept>
6 6
7 OffsetInputSource::OffsetInputSource( 7 OffsetInputSource::OffsetInputSource(
8 - PointerHolder<InputSource> proxied, qpdf_offset_t global_offset) : 8 + std::shared_ptr<InputSource> proxied, qpdf_offset_t global_offset) :
9 proxied(proxied), 9 proxied(proxied),
10 global_offset(global_offset) 10 global_offset(global_offset)
11 { 11 {
libqpdf/Pl_Buffer.cc
@@ -30,13 +30,13 @@ void @@ -30,13 +30,13 @@ void
30 Pl_Buffer::write(unsigned char* buf, size_t len) 30 Pl_Buffer::write(unsigned char* buf, size_t len)
31 { 31 {
32 if (this->m->data.get() == 0) { 32 if (this->m->data.get() == 0) {
33 - this->m->data = make_pointer_holder<Buffer>(len); 33 + this->m->data = std::make_shared<Buffer>(len);
34 } 34 }
35 size_t cur_size = this->m->data->getSize(); 35 size_t cur_size = this->m->data->getSize();
36 size_t left = cur_size - this->m->total_size; 36 size_t left = cur_size - this->m->total_size;
37 if (left < len) { 37 if (left < len) {
38 size_t new_size = std::max(this->m->total_size + len, 2 * cur_size); 38 size_t new_size = std::max(this->m->total_size + len, 2 * cur_size);
39 - auto b = make_pointer_holder<Buffer>(new_size); 39 + auto b = std::make_shared<Buffer>(new_size);
40 memcpy(b->getBuffer(), this->m->data->getBuffer(), this->m->total_size); 40 memcpy(b->getBuffer(), this->m->data->getBuffer(), this->m->total_size);
41 this->m->data = b; 41 this->m->data = b;
42 } 42 }
@@ -72,14 +72,14 @@ Pl_Buffer::getBuffer() @@ -72,14 +72,14 @@ Pl_Buffer::getBuffer()
72 unsigned char* p = b->getBuffer(); 72 unsigned char* p = b->getBuffer();
73 memcpy(p, this->m->data->getBuffer(), this->m->total_size); 73 memcpy(p, this->m->data->getBuffer(), this->m->total_size);
74 } 74 }
75 - this->m = PointerHolder<Members>(new Members()); 75 + this->m = std::shared_ptr<Members>(new Members());
76 return b; 76 return b;
77 } 77 }
78 78
79 -PointerHolder<Buffer> 79 +std::shared_ptr<Buffer>
80 Pl_Buffer::getBufferSharedPointer() 80 Pl_Buffer::getBufferSharedPointer()
81 { 81 {
82 - return PointerHolder<Buffer>(getBuffer()); 82 + return std::shared_ptr<Buffer>(getBuffer());
83 } 83 }
84 84
85 void 85 void
@@ -97,5 +97,5 @@ Pl_Buffer::getMallocBuffer(unsigned char** buf, size_t* len) @@ -97,5 +97,5 @@ Pl_Buffer::getMallocBuffer(unsigned char** buf, size_t* len)
97 } else { 97 } else {
98 *buf = nullptr; 98 *buf = nullptr;
99 } 99 }
100 - this->m = PointerHolder<Members>(new Members()); 100 + this->m = std::shared_ptr<Members>(new Members());
101 } 101 }
libqpdf/Pl_DCT.cc
@@ -95,7 +95,7 @@ Pl_DCT::finish() @@ -95,7 +95,7 @@ Pl_DCT::finish()
95 { 95 {
96 this->m->buf.finish(); 96 this->m->buf.finish();
97 97
98 - // Using a PointerHolder<Buffer> here and passing it into compress 98 + // Using a std::shared_ptr<Buffer> here and passing it into compress
99 // and decompress causes a memory leak with setjmp/longjmp. Just 99 // and decompress causes a memory leak with setjmp/longjmp. Just
100 // use a pointer and delete it. 100 // use a pointer and delete it.
101 Buffer* b = this->m->buf.getBuffer(); 101 Buffer* b = this->m->buf.getBuffer();
libqpdf/Pl_PNGFilter.cc
@@ -48,9 +48,9 @@ Pl_PNGFilter::Pl_PNGFilter( @@ -48,9 +48,9 @@ Pl_PNGFilter::Pl_PNGFilter(
48 } 48 }
49 this->bytes_per_row = bpr & UINT_MAX; 49 this->bytes_per_row = bpr & UINT_MAX;
50 this->buf1 = 50 this->buf1 =
51 - make_array_pointer_holder<unsigned char>(this->bytes_per_row + 1); 51 + QUtil::make_shared_array<unsigned char>(this->bytes_per_row + 1);
52 this->buf2 = 52 this->buf2 =
53 - make_array_pointer_holder<unsigned char>(this->bytes_per_row + 1); 53 + QUtil::make_shared_array<unsigned char>(this->bytes_per_row + 1);
54 memset(this->buf1.get(), 0, this->bytes_per_row + 1); 54 memset(this->buf1.get(), 0, this->bytes_per_row + 1);
55 memset(this->buf2.get(), 0, this->bytes_per_row + 1); 55 memset(this->buf2.get(), 0, this->bytes_per_row + 1);
56 this->cur_row = this->buf1.get(); 56 this->cur_row = this->buf1.get();
libqpdf/Pl_QPDFTokenizer.cc
@@ -44,7 +44,7 @@ void @@ -44,7 +44,7 @@ void
44 Pl_QPDFTokenizer::finish() 44 Pl_QPDFTokenizer::finish()
45 { 45 {
46 this->m->buf.finish(); 46 this->m->buf.finish();
47 - auto input = PointerHolder<InputSource>( 47 + auto input = std::shared_ptr<InputSource>(
48 // line-break 48 // line-break
49 new BufferInputSource( 49 new BufferInputSource(
50 "tokenizer data", this->m->buf.getBuffer(), true)); 50 "tokenizer data", this->m->buf.getBuffer(), true));
libqpdf/Pl_RC4.cc
@@ -12,7 +12,7 @@ Pl_RC4::Pl_RC4( @@ -12,7 +12,7 @@ Pl_RC4::Pl_RC4(
12 out_bufsize(out_bufsize), 12 out_bufsize(out_bufsize),
13 rc4(key_data, key_len) 13 rc4(key_data, key_len)
14 { 14 {
15 - this->outbuf = make_array_pointer_holder<unsigned char>(out_bufsize); 15 + this->outbuf = QUtil::make_shared_array<unsigned char>(out_bufsize);
16 } 16 }
17 17
18 Pl_RC4::~Pl_RC4() 18 Pl_RC4::~Pl_RC4()
libqpdf/Pl_TIFFPredictor.cc
@@ -41,7 +41,7 @@ Pl_TIFFPredictor::Pl_TIFFPredictor( @@ -41,7 +41,7 @@ Pl_TIFFPredictor::Pl_TIFFPredictor(
41 } 41 }
42 this->bytes_per_row = bpr & UINT_MAX; 42 this->bytes_per_row = bpr & UINT_MAX;
43 this->cur_row = 43 this->cur_row =
44 - make_array_pointer_holder<unsigned char>(this->bytes_per_row); 44 + QUtil::make_shared_array<unsigned char>(this->bytes_per_row);
45 memset(this->cur_row.get(), 0, this->bytes_per_row); 45 memset(this->cur_row.get(), 0, this->bytes_per_row);
46 } 46 }
47 47
libqpdf/QPDF.cc
@@ -106,8 +106,8 @@ class InvalidInputSource: public InputSource @@ -106,8 +106,8 @@ class InvalidInputSource: public InputSource
106 }; 106 };
107 107
108 QPDF::ForeignStreamData::ForeignStreamData( 108 QPDF::ForeignStreamData::ForeignStreamData(
109 - PointerHolder<EncryptionParameters> encp,  
110 - PointerHolder<InputSource> file, 109 + std::shared_ptr<EncryptionParameters> encp,
  110 + std::shared_ptr<InputSource> file,
111 int foreign_objid, 111 int foreign_objid,
112 int foreign_generation, 112 int foreign_generation,
113 qpdf_offset_t offset, 113 qpdf_offset_t offset,
@@ -138,7 +138,7 @@ QPDF::CopiedStreamDataProvider::provideStreamData( @@ -138,7 +138,7 @@ QPDF::CopiedStreamDataProvider::provideStreamData(
138 bool suppress_warnings, 138 bool suppress_warnings,
139 bool will_retry) 139 bool will_retry)
140 { 140 {
141 - PointerHolder<ForeignStreamData> foreign_data = 141 + std::shared_ptr<ForeignStreamData> foreign_data =
142 this->foreign_stream_data[QPDFObjGen(objid, generation)]; 142 this->foreign_stream_data[QPDFObjGen(objid, generation)];
143 bool result = false; 143 bool result = false;
144 if (foreign_data.get()) { 144 if (foreign_data.get()) {
@@ -165,7 +165,8 @@ QPDF::CopiedStreamDataProvider::registerForeignStream( @@ -165,7 +165,8 @@ QPDF::CopiedStreamDataProvider::registerForeignStream(
165 165
166 void 166 void
167 QPDF::CopiedStreamDataProvider::registerForeignStream( 167 QPDF::CopiedStreamDataProvider::registerForeignStream(
168 - QPDFObjGen const& local_og, PointerHolder<ForeignStreamData> foreign_stream) 168 + QPDFObjGen const& local_og,
  169 + std::shared_ptr<ForeignStreamData> foreign_stream)
169 { 170 {
170 this->foreign_stream_data[local_og] = foreign_stream; 171 this->foreign_stream_data[local_og] = foreign_stream;
171 } 172 }
@@ -249,7 +250,7 @@ QPDF::~QPDF() @@ -249,7 +250,7 @@ QPDF::~QPDF()
249 // If two objects are mutually referential (through each object 250 // If two objects are mutually referential (through each object
250 // having an array or dictionary that contains an indirect 251 // having an array or dictionary that contains an indirect
251 // reference to the other), the circular references in the 252 // reference to the other), the circular references in the
252 - // PointerHolder objects will prevent the objects from being 253 + // std::shared_ptr objects will prevent the objects from being
253 // deleted. Walk through all objects in the object cache, which 254 // deleted. Walk through all objects in the object cache, which
254 // is those objects that we read from the file, and break all 255 // is those objects that we read from the file, and break all
255 // resolved references. At this point, obviously no one is still 256 // resolved references. At this point, obviously no one is still
@@ -274,7 +275,7 @@ QPDF::processFile(char const* filename, char const* password) @@ -274,7 +275,7 @@ QPDF::processFile(char const* filename, char const* password)
274 { 275 {
275 FileInputSource* fi = new FileInputSource(); 276 FileInputSource* fi = new FileInputSource();
276 fi->setFilename(filename); 277 fi->setFilename(filename);
277 - processInputSource(PointerHolder<InputSource>(fi), password); 278 + processInputSource(std::shared_ptr<InputSource>(fi), password);
278 } 279 }
279 280
280 void 281 void
@@ -283,7 +284,7 @@ QPDF::processFile( @@ -283,7 +284,7 @@ QPDF::processFile(
283 { 284 {
284 FileInputSource* fi = new FileInputSource(); 285 FileInputSource* fi = new FileInputSource();
285 fi->setFile(description, filep, close_file); 286 fi->setFile(description, filep, close_file);
286 - processInputSource(PointerHolder<InputSource>(fi), password); 287 + processInputSource(std::shared_ptr<InputSource>(fi), password);
287 } 288 }
288 289
289 void 290 void
@@ -294,7 +295,7 @@ QPDF::processMemoryFile( @@ -294,7 +295,7 @@ QPDF::processMemoryFile(
294 char const* password) 295 char const* password)
295 { 296 {
296 processInputSource( 297 processInputSource(
297 - PointerHolder<InputSource>( 298 + std::shared_ptr<InputSource>(
298 // line-break 299 // line-break
299 new BufferInputSource( 300 new BufferInputSource(
300 description, 301 description,
@@ -305,7 +306,7 @@ QPDF::processMemoryFile( @@ -305,7 +306,7 @@ QPDF::processMemoryFile(
305 306
306 void 307 void
307 QPDF::processInputSource( 308 QPDF::processInputSource(
308 - PointerHolder<InputSource> source, char const* password) 309 + std::shared_ptr<InputSource> source, char const* password)
309 { 310 {
310 this->m->file = source; 311 this->m->file = source;
311 parse(password); 312 parse(password);
@@ -314,7 +315,7 @@ QPDF::processInputSource( @@ -314,7 +315,7 @@ QPDF::processInputSource(
314 void 315 void
315 QPDF::closeInputSource() 316 QPDF::closeInputSource()
316 { 317 {
317 - this->m->file = PointerHolder<InputSource>(new InvalidInputSource()); 318 + this->m->file = std::shared_ptr<InputSource>(new InvalidInputSource());
318 } 319 }
319 320
320 void 321 void
@@ -425,7 +426,7 @@ QPDF::findHeader() @@ -425,7 +426,7 @@ QPDF::findHeader()
425 // offsets in the file are such that 0 points to the 426 // offsets in the file are such that 0 points to the
426 // beginning of the header. 427 // beginning of the header.
427 QTC::TC("qpdf", "QPDF global offset"); 428 QTC::TC("qpdf", "QPDF global offset");
428 - this->m->file = PointerHolder<InputSource>( 429 + this->m->file = std::shared_ptr<InputSource>(
429 new OffsetInputSource(this->m->file, global_offset)); 430 new OffsetInputSource(this->m->file, global_offset));
430 } 431 }
431 } 432 }
@@ -1182,7 +1183,7 @@ QPDF::processXRefStream(qpdf_offset_t xref_offset, QPDFObjectHandle&amp; xref_obj) @@ -1182,7 +1183,7 @@ QPDF::processXRefStream(qpdf_offset_t xref_offset, QPDFObjectHandle&amp; xref_obj)
1182 // that this multiplication does not cause an overflow. 1183 // that this multiplication does not cause an overflow.
1183 size_t expected_size = entry_size * num_entries; 1184 size_t expected_size = entry_size * num_entries;
1184 1185
1185 - PointerHolder<Buffer> bp = xref_obj.getStreamData(qpdf_dl_specialized); 1186 + std::shared_ptr<Buffer> bp = xref_obj.getStreamData(qpdf_dl_specialized);
1186 size_t actual_size = bp->getSize(); 1187 size_t actual_size = bp->getSize();
1187 1188
1188 if (expected_size != actual_size) { 1189 if (expected_size != actual_size) {
@@ -1516,7 +1517,7 @@ QPDF::setLastObjectDescription( @@ -1516,7 +1517,7 @@ QPDF::setLastObjectDescription(
1516 1517
1517 QPDFObjectHandle 1518 QPDFObjectHandle
1518 QPDF::readObject( 1519 QPDF::readObject(
1519 - PointerHolder<InputSource> input, 1520 + std::shared_ptr<InputSource> input,
1520 std::string const& description, 1521 std::string const& description,
1521 int objid, 1522 int objid,
1522 int generation, 1523 int generation,
@@ -1526,11 +1527,11 @@ QPDF::readObject( @@ -1526,11 +1527,11 @@ QPDF::readObject(
1526 qpdf_offset_t offset = input->tell(); 1527 qpdf_offset_t offset = input->tell();
1527 1528
1528 bool empty = false; 1529 bool empty = false;
1529 - PointerHolder<StringDecrypter> decrypter_ph; 1530 + std::shared_ptr<StringDecrypter> decrypter_ph;
1530 StringDecrypter* decrypter = 0; 1531 StringDecrypter* decrypter = 0;
1531 if (this->m->encp->encrypted && (!in_object_stream)) { 1532 if (this->m->encp->encrypted && (!in_object_stream)) {
1532 decrypter_ph = 1533 decrypter_ph =
1533 - make_pointer_holder<StringDecrypter>(this, objid, generation); 1534 + std::make_shared<StringDecrypter>(this, objid, generation);
1534 decrypter = decrypter_ph.get(); 1535 decrypter = decrypter_ph.get();
1535 } 1536 }
1536 QPDFObjectHandle object = QPDFObjectHandle::parse( 1537 QPDFObjectHandle object = QPDFObjectHandle::parse(
@@ -1706,7 +1707,7 @@ QPDF::findEndstream() @@ -1706,7 +1707,7 @@ QPDF::findEndstream()
1706 1707
1707 size_t 1708 size_t
1708 QPDF::recoverStreamLength( 1709 QPDF::recoverStreamLength(
1709 - PointerHolder<InputSource> input, 1710 + std::shared_ptr<InputSource> input,
1710 int objid, 1711 int objid,
1711 int generation, 1712 int generation,
1712 qpdf_offset_t stream_offset) 1713 qpdf_offset_t stream_offset)
@@ -1784,7 +1785,7 @@ QPDF::recoverStreamLength( @@ -1784,7 +1785,7 @@ QPDF::recoverStreamLength(
1784 } 1785 }
1785 1786
1786 QPDFTokenizer::Token 1787 QPDFTokenizer::Token
1787 -QPDF::readToken(PointerHolder<InputSource> input, size_t max_len) 1788 +QPDF::readToken(std::shared_ptr<InputSource> input, size_t max_len)
1788 { 1789 {
1789 return this->m->tokenizer.readToken( 1790 return this->m->tokenizer.readToken(
1790 input, this->m->last_object_description, true, max_len); 1791 input, this->m->last_object_description, true, max_len);
@@ -1971,7 +1972,7 @@ QPDF::readObjectAtOffset( @@ -1971,7 +1972,7 @@ QPDF::readObjectAtOffset(
1971 } 1972 }
1972 1973
1973 bool 1974 bool
1974 -QPDF::objectChanged(QPDFObjGen const& og, PointerHolder<QPDFObject>& oph) 1975 +QPDF::objectChanged(QPDFObjGen const& og, std::shared_ptr<QPDFObject>& oph)
1975 { 1976 {
1976 // See if the object cached at og, if any, is the one passed in. 1977 // See if the object cached at og, if any, is the one passed in.
1977 // QPDFObjectHandle uses this to detect outdated handles to 1978 // QPDFObjectHandle uses this to detect outdated handles to
@@ -1992,7 +1993,7 @@ QPDF::objectChanged(QPDFObjGen const&amp; og, PointerHolder&lt;QPDFObject&gt;&amp; oph) @@ -1992,7 +1993,7 @@ QPDF::objectChanged(QPDFObjGen const&amp; og, PointerHolder&lt;QPDFObject&gt;&amp; oph)
1992 return (c->second.object.get() != oph.get()); 1993 return (c->second.object.get() != oph.get());
1993 } 1994 }
1994 1995
1995 -PointerHolder<QPDFObject> 1996 +std::shared_ptr<QPDFObject>
1996 QPDF::resolve(int objid, int generation) 1997 QPDF::resolve(int objid, int generation)
1997 { 1998 {
1998 // Check object cache before checking xref table. This allows us 1999 // Check object cache before checking xref table. This allows us
@@ -2011,7 +2012,7 @@ QPDF::resolve(int objid, int generation) @@ -2011,7 +2012,7 @@ QPDF::resolve(int objid, int generation)
2011 this->m->file->getLastOffset(), 2012 this->m->file->getLastOffset(),
2012 ("loop detected resolving object " + QUtil::int_to_string(objid) + 2013 ("loop detected resolving object " + QUtil::int_to_string(objid) +
2013 " " + QUtil::int_to_string(generation)))); 2014 " " + QUtil::int_to_string(generation))));
2014 - return PointerHolder<QPDFObject>(new QPDF_Null); 2015 + return std::shared_ptr<QPDFObject>(new QPDF_Null);
2015 } 2016 }
2016 ResolveRecorder rr(this, og); 2017 ResolveRecorder rr(this, og);
2017 2018
@@ -2071,7 +2072,7 @@ QPDF::resolve(int objid, int generation) @@ -2071,7 +2072,7 @@ QPDF::resolve(int objid, int generation)
2071 ObjCache(QPDFObjectHandle::ObjAccessor::getObject(oh), -1, -1); 2072 ObjCache(QPDFObjectHandle::ObjAccessor::getObject(oh), -1, -1);
2072 } 2073 }
2073 2074
2074 - PointerHolder<QPDFObject> result(this->m->obj_cache[og].object); 2075 + std::shared_ptr<QPDFObject> result(this->m->obj_cache[og].object);
2075 if (!result->hasDescription()) { 2076 if (!result->hasDescription()) {
2076 result->setDescription( 2077 result->setDescription(
2077 this, 2078 this,
@@ -2135,8 +2136,8 @@ QPDF::resolveObjectsInStream(int obj_stream_number) @@ -2135,8 +2136,8 @@ QPDF::resolveObjectsInStream(int obj_stream_number)
2135 2136
2136 std::map<int, int> offsets; 2137 std::map<int, int> offsets;
2137 2138
2138 - PointerHolder<Buffer> bp = obj_stream.getStreamData(qpdf_dl_specialized);  
2139 - auto input = PointerHolder<InputSource>( 2139 + std::shared_ptr<Buffer> bp = obj_stream.getStreamData(qpdf_dl_specialized);
  2140 + auto input = std::shared_ptr<InputSource>(
2140 // line-break 2141 // line-break
2141 new BufferInputSource( 2142 new BufferInputSource(
2142 (this->m->file->getName() + " object stream " + 2143 (this->m->file->getName() + " object stream " +
@@ -2496,7 +2497,7 @@ QPDF::copyStreamData(QPDFObjectHandle result, QPDFObjectHandle foreign) @@ -2496,7 +2497,7 @@ QPDF::copyStreamData(QPDFObjectHandle result, QPDFObjectHandle foreign)
2496 this->m->copied_stream_data_provider = 2497 this->m->copied_stream_data_provider =
2497 new CopiedStreamDataProvider(*this); 2498 new CopiedStreamDataProvider(*this);
2498 this->m->copied_streams = 2499 this->m->copied_streams =
2499 - PointerHolder<QPDFObjectHandle::StreamDataProvider>( 2500 + std::shared_ptr<QPDFObjectHandle::StreamDataProvider>(
2500 this->m->copied_stream_data_provider); 2501 this->m->copied_stream_data_provider);
2501 } 2502 }
2502 QPDFObjGen local_og(result.getObjGen()); 2503 QPDFObjGen local_og(result.getObjGen());
@@ -2513,7 +2514,7 @@ QPDF::copyStreamData(QPDFObjectHandle result, QPDFObjectHandle foreign) @@ -2513,7 +2514,7 @@ QPDF::copyStreamData(QPDFObjectHandle result, QPDFObjectHandle foreign)
2513 throw std::logic_error("unable to retrieve underlying" 2514 throw std::logic_error("unable to retrieve underlying"
2514 " stream object from foreign stream"); 2515 " stream object from foreign stream");
2515 } 2516 }
2516 - PointerHolder<Buffer> stream_buffer = stream->getStreamDataBuffer(); 2517 + std::shared_ptr<Buffer> stream_buffer = stream->getStreamDataBuffer();
2517 if ((foreign_stream_qpdf->m->immediate_copy_from) && 2518 if ((foreign_stream_qpdf->m->immediate_copy_from) &&
2518 (stream_buffer.get() == 0)) { 2519 (stream_buffer.get() == 0)) {
2519 // Pull the stream data into a buffer before attempting 2520 // Pull the stream data into a buffer before attempting
@@ -2527,7 +2528,7 @@ QPDF::copyStreamData(QPDFObjectHandle result, QPDFObjectHandle foreign) @@ -2527,7 +2528,7 @@ QPDF::copyStreamData(QPDFObjectHandle result, QPDFObjectHandle foreign)
2527 old_dict.getKey("/DecodeParms")); 2528 old_dict.getKey("/DecodeParms"));
2528 stream_buffer = stream->getStreamDataBuffer(); 2529 stream_buffer = stream->getStreamDataBuffer();
2529 } 2530 }
2530 - PointerHolder<QPDFObjectHandle::StreamDataProvider> stream_provider = 2531 + std::shared_ptr<QPDFObjectHandle::StreamDataProvider> stream_provider =
2531 stream->getStreamDataProvider(); 2532 stream->getStreamDataProvider();
2532 if (stream_buffer.get()) { 2533 if (stream_buffer.get()) {
2533 QTC::TC("qpdf", "QPDF copy foreign stream with buffer"); 2534 QTC::TC("qpdf", "QPDF copy foreign stream with buffer");
@@ -2543,7 +2544,7 @@ QPDF::copyStreamData(QPDFObjectHandle result, QPDFObjectHandle foreign) @@ -2543,7 +2544,7 @@ QPDF::copyStreamData(QPDFObjectHandle result, QPDFObjectHandle foreign)
2543 dict.getKey("/Filter"), 2544 dict.getKey("/Filter"),
2544 dict.getKey("/DecodeParms")); 2545 dict.getKey("/DecodeParms"));
2545 } else { 2546 } else {
2546 - auto foreign_stream_data = make_pointer_holder<ForeignStreamData>( 2547 + auto foreign_stream_data = std::make_shared<ForeignStreamData>(
2547 foreign_stream_qpdf->m->encp, 2548 foreign_stream_qpdf->m->encp,
2548 foreign_stream_qpdf->m->file, 2549 foreign_stream_qpdf->m->file,
2549 foreign.getObjectID(), 2550 foreign.getObjectID(),
@@ -2758,8 +2759,8 @@ QPDF::getCompressibleObjGens() @@ -2758,8 +2759,8 @@ QPDF::getCompressibleObjGens()
2758 2759
2759 bool 2760 bool
2760 QPDF::pipeStreamData( 2761 QPDF::pipeStreamData(
2761 - PointerHolder<EncryptionParameters> encp,  
2762 - PointerHolder<InputSource> file, 2762 + std::shared_ptr<EncryptionParameters> encp,
  2763 + std::shared_ptr<InputSource> file,
2763 QPDF& qpdf_for_warning, 2764 QPDF& qpdf_for_warning,
2764 int objid, 2765 int objid,
2765 int generation, 2766 int generation,
@@ -2870,7 +2871,7 @@ QPDF::pipeStreamData( @@ -2870,7 +2871,7 @@ QPDF::pipeStreamData(
2870 2871
2871 bool 2872 bool
2872 QPDF::pipeForeignStreamData( 2873 QPDF::pipeForeignStreamData(
2873 - PointerHolder<ForeignStreamData> foreign, 2874 + std::shared_ptr<ForeignStreamData> foreign,
2874 Pipeline* pipeline, 2875 Pipeline* pipeline,
2875 bool suppress_warnings, 2876 bool suppress_warnings,
2876 bool will_retry) 2877 bool will_retry)
libqpdf/QPDFAcroFormDocumentHelper.cc
@@ -772,7 +772,7 @@ QPDFAcroFormDocumentHelper::adjustAppearanceStream( @@ -772,7 +772,7 @@ QPDFAcroFormDocumentHelper::adjustAppearanceStream(
772 QTC::TC("qpdf", "QPDFAcroFormDocumentHelper AP parse error"); 772 QTC::TC("qpdf", "QPDFAcroFormDocumentHelper AP parse error");
773 } 773 }
774 auto rr = new ResourceReplacer(dr_map, rf.getNamesByResourceType()); 774 auto rr = new ResourceReplacer(dr_map, rf.getNamesByResourceType());
775 - auto tf = PointerHolder<QPDFObjectHandle::TokenFilter>(rr); 775 + auto tf = std::shared_ptr<QPDFObjectHandle::TokenFilter>(rr);
776 stream.addTokenFilter(tf); 776 stream.addTokenFilter(tf);
777 } catch (std::exception& e) { 777 } catch (std::exception& e) {
778 // No way to reproduce in test suite right now since error 778 // No way to reproduce in test suite right now since error
@@ -792,13 +792,13 @@ QPDFAcroFormDocumentHelper::transformAnnotations( @@ -792,13 +792,13 @@ QPDFAcroFormDocumentHelper::transformAnnotations(
792 QPDF* from_qpdf, 792 QPDF* from_qpdf,
793 QPDFAcroFormDocumentHelper* from_afdh) 793 QPDFAcroFormDocumentHelper* from_afdh)
794 { 794 {
795 - PointerHolder<QPDFAcroFormDocumentHelper> afdhph; 795 + std::shared_ptr<QPDFAcroFormDocumentHelper> afdhph;
796 if (!from_qpdf) { 796 if (!from_qpdf) {
797 // Assume these are from the same QPDF. 797 // Assume these are from the same QPDF.
798 from_qpdf = &this->qpdf; 798 from_qpdf = &this->qpdf;
799 from_afdh = this; 799 from_afdh = this;
800 } else if ((from_qpdf != &this->qpdf) && (!from_afdh)) { 800 } else if ((from_qpdf != &this->qpdf) && (!from_afdh)) {
801 - afdhph = make_pointer_holder<QPDFAcroFormDocumentHelper>(*from_qpdf); 801 + afdhph = std::make_shared<QPDFAcroFormDocumentHelper>(*from_qpdf);
802 from_afdh = afdhph.get(); 802 from_afdh = afdhph.get();
803 } 803 }
804 bool foreign = (from_qpdf != &this->qpdf); 804 bool foreign = (from_qpdf != &this->qpdf);
libqpdf/QPDFEFStreamObjectHelper.cc
@@ -92,7 +92,8 @@ QPDFEFStreamObjectHelper::getChecksum() @@ -92,7 +92,8 @@ QPDFEFStreamObjectHelper::getChecksum()
92 } 92 }
93 93
94 QPDFEFStreamObjectHelper 94 QPDFEFStreamObjectHelper
95 -QPDFEFStreamObjectHelper::createEFStream(QPDF& qpdf, PointerHolder<Buffer> data) 95 +QPDFEFStreamObjectHelper::createEFStream(
  96 + QPDF& qpdf, std::shared_ptr<Buffer> data)
96 { 97 {
97 return newFromStream(QPDFObjectHandle::newStream(&qpdf, data)); 98 return newFromStream(QPDFObjectHandle::newStream(&qpdf, data));
98 } 99 }
libqpdf/QPDFFormFieldObjectHelper.cc
@@ -915,6 +915,6 @@ QPDFFormFieldObjectHelper::generateTextAppearance( @@ -915,6 +915,6 @@ QPDFFormFieldObjectHelper::generateTextAppearance(
915 915
916 AS.addTokenFilter( 916 AS.addTokenFilter(
917 // line-break 917 // line-break
918 - PointerHolder<QPDFObjectHandle::TokenFilter>( 918 + std::shared_ptr<QPDFObjectHandle::TokenFilter>(
919 new ValueSetter(DA, V, opt, tf, bbox))); 919 new ValueSetter(DA, V, opt, tf, bbox)));
920 } 920 }
libqpdf/QPDFJob.cc
@@ -1879,7 +1879,7 @@ QPDFJob::processFile( @@ -1879,7 +1879,7 @@ QPDFJob::processFile(
1879 1879
1880 std::shared_ptr<QPDF> 1880 std::shared_ptr<QPDF>
1881 QPDFJob::processInputSource( 1881 QPDFJob::processInputSource(
1882 - PointerHolder<InputSource> is, char const* password, bool used_for_input) 1882 + std::shared_ptr<InputSource> is, char const* password, bool used_for_input)
1883 { 1883 {
1884 auto f1 = std::mem_fn(&QPDF::processInputSource); 1884 auto f1 = std::mem_fn(&QPDF::processInputSource);
1885 auto fn = std::bind(f1, std::placeholders::_1, is, std::placeholders::_2); 1885 auto fn = std::bind(f1, std::placeholders::_1, is, std::placeholders::_2);
@@ -2238,7 +2238,7 @@ QPDFJob::handleTransformations(QPDF&amp; pdf) @@ -2238,7 +2238,7 @@ QPDFJob::handleTransformations(QPDF&amp; pdf)
2238 m->oi_min_height, 2238 m->oi_min_height,
2239 m->oi_min_area, 2239 m->oi_min_area,
2240 image); 2240 image);
2241 - PointerHolder<QPDFObjectHandle::StreamDataProvider> sdp(io); 2241 + std::shared_ptr<QPDFObjectHandle::StreamDataProvider> sdp(io);
2242 if (io->evaluate( 2242 if (io->evaluate(
2243 "image " + name + " on page " + 2243 "image " + name + " on page " +
2244 QUtil::int_to_string(pageno))) { 2244 QUtil::int_to_string(pageno))) {
@@ -2494,17 +2494,17 @@ QPDFJob::handlePageSpecs( @@ -2494,17 +2494,17 @@ QPDFJob::handlePageSpecs(
2494 cout << prefix << ": processing " << page_spec.filename 2494 cout << prefix << ": processing " << page_spec.filename
2495 << std::endl; 2495 << std::endl;
2496 }); 2496 });
2497 - PointerHolder<InputSource> is; 2497 + std::shared_ptr<InputSource> is;
2498 ClosedFileInputSource* cis = 0; 2498 ClosedFileInputSource* cis = 0;
2499 if (!m->keep_files_open) { 2499 if (!m->keep_files_open) {
2500 QTC::TC("qpdf", "QPDFJob keep files open n"); 2500 QTC::TC("qpdf", "QPDFJob keep files open n");
2501 cis = new ClosedFileInputSource(page_spec.filename.c_str()); 2501 cis = new ClosedFileInputSource(page_spec.filename.c_str());
2502 - is = PointerHolder<InputSource>(cis); 2502 + is = std::shared_ptr<InputSource>(cis);
2503 cis->stayOpen(true); 2503 cis->stayOpen(true);
2504 } else { 2504 } else {
2505 QTC::TC("qpdf", "QPDFJob keep files open y"); 2505 QTC::TC("qpdf", "QPDFJob keep files open y");
2506 FileInputSource* fis = new FileInputSource(); 2506 FileInputSource* fis = new FileInputSource();
2507 - is = PointerHolder<InputSource>(fis); 2507 + is = std::shared_ptr<InputSource>(fis);
2508 fis->setFilename(page_spec.filename.c_str()); 2508 fis->setFilename(page_spec.filename.c_str());
2509 } 2509 }
2510 std::shared_ptr<QPDF> qpdf_ph = 2510 std::shared_ptr<QPDF> qpdf_ph =
@@ -3064,12 +3064,13 @@ QPDFJob::setWriterOptions(QPDF&amp; pdf, QPDFWriter&amp; w) @@ -3064,12 +3064,13 @@ QPDFJob::setWriterOptions(QPDF&amp; pdf, QPDFWriter&amp; w)
3064 w.forcePDFVersion(version, extension_level); 3064 w.forcePDFVersion(version, extension_level);
3065 } 3065 }
3066 if (m->progress && m->outfilename) { 3066 if (m->progress && m->outfilename) {
3067 - w.registerProgressReporter(PointerHolder<QPDFWriter::ProgressReporter>(  
3068 - // line-break  
3069 - new ProgressReporter(  
3070 - *(this->m->cout),  
3071 - this->m->message_prefix,  
3072 - m->outfilename.get()))); 3067 + w.registerProgressReporter(
  3068 + std::shared_ptr<QPDFWriter::ProgressReporter>(
  3069 + // line-break
  3070 + new ProgressReporter(
  3071 + *(this->m->cout),
  3072 + this->m->message_prefix,
  3073 + m->outfilename.get())));
3073 } 3074 }
3074 } 3075 }
3075 3076
libqpdf/QPDFJob_config.cc
@@ -685,7 +685,7 @@ QPDFJob::Config::showObject(std::string const&amp; parameter) @@ -685,7 +685,7 @@ QPDFJob::Config::showObject(std::string const&amp; parameter)
685 QPDFJob::Config* 685 QPDFJob::Config*
686 QPDFJob::Config::jobJsonFile(std::string const& parameter) 686 QPDFJob::Config::jobJsonFile(std::string const& parameter)
687 { 687 {
688 - PointerHolder<char> file_buf; 688 + std::shared_ptr<char> file_buf;
689 size_t size; 689 size_t size;
690 QUtil::read_file_into_memory(parameter.c_str(), file_buf, size); 690 QUtil::read_file_into_memory(parameter.c_str(), file_buf, size);
691 try { 691 try {
libqpdf/QPDFObjectHandle.cc
@@ -252,7 +252,7 @@ QPDFObjectHandle::setObjectDescriptionFromInput( @@ -252,7 +252,7 @@ QPDFObjectHandle::setObjectDescriptionFromInput(
252 QPDFObjectHandle object, 252 QPDFObjectHandle object,
253 QPDF* context, 253 QPDF* context,
254 std::string const& description, 254 std::string const& description,
255 - PointerHolder<InputSource> input, 255 + std::shared_ptr<InputSource> input,
256 qpdf_offset_t offset) 256 qpdf_offset_t offset)
257 { 257 {
258 object.setObjectDescription( 258 object.setObjectDescription(
@@ -1337,14 +1337,14 @@ QPDFObjectHandle::replaceDict(QPDFObjectHandle new_dict) @@ -1337,14 +1337,14 @@ QPDFObjectHandle::replaceDict(QPDFObjectHandle new_dict)
1337 dynamic_cast<QPDF_Stream*>(obj.get())->replaceDict(new_dict); 1337 dynamic_cast<QPDF_Stream*>(obj.get())->replaceDict(new_dict);
1338 } 1338 }
1339 1339
1340 -PointerHolder<Buffer> 1340 +std::shared_ptr<Buffer>
1341 QPDFObjectHandle::getStreamData(qpdf_stream_decode_level_e level) 1341 QPDFObjectHandle::getStreamData(qpdf_stream_decode_level_e level)
1342 { 1342 {
1343 assertStream(); 1343 assertStream();
1344 return dynamic_cast<QPDF_Stream*>(obj.get())->getStreamData(level); 1344 return dynamic_cast<QPDF_Stream*>(obj.get())->getStreamData(level);
1345 } 1345 }
1346 1346
1347 -PointerHolder<Buffer> 1347 +std::shared_ptr<Buffer>
1348 QPDFObjectHandle::getRawStreamData() 1348 QPDFObjectHandle::getRawStreamData()
1349 { 1349 {
1350 assertStream(); 1350 assertStream();
@@ -1410,7 +1410,7 @@ QPDFObjectHandle::pipeStreamData( @@ -1410,7 +1410,7 @@ QPDFObjectHandle::pipeStreamData(
1410 1410
1411 void 1411 void
1412 QPDFObjectHandle::replaceStreamData( 1412 QPDFObjectHandle::replaceStreamData(
1413 - PointerHolder<Buffer> data, 1413 + std::shared_ptr<Buffer> data,
1414 QPDFObjectHandle const& filter, 1414 QPDFObjectHandle const& filter,
1415 QPDFObjectHandle const& decode_parms) 1415 QPDFObjectHandle const& decode_parms)
1416 { 1416 {
@@ -1426,7 +1426,7 @@ QPDFObjectHandle::replaceStreamData( @@ -1426,7 +1426,7 @@ QPDFObjectHandle::replaceStreamData(
1426 QPDFObjectHandle const& decode_parms) 1426 QPDFObjectHandle const& decode_parms)
1427 { 1427 {
1428 assertStream(); 1428 assertStream();
1429 - auto b = make_pointer_holder<Buffer>(data.length()); 1429 + auto b = std::make_shared<Buffer>(data.length());
1430 unsigned char* bp = b->getBuffer(); 1430 unsigned char* bp = b->getBuffer();
1431 memcpy(bp, data.c_str(), data.length()); 1431 memcpy(bp, data.c_str(), data.length());
1432 dynamic_cast<QPDF_Stream*>(obj.get())->replaceStreamData( 1432 dynamic_cast<QPDF_Stream*>(obj.get())->replaceStreamData(
@@ -1435,7 +1435,7 @@ QPDFObjectHandle::replaceStreamData( @@ -1435,7 +1435,7 @@ QPDFObjectHandle::replaceStreamData(
1435 1435
1436 void 1436 void
1437 QPDFObjectHandle::replaceStreamData( 1437 QPDFObjectHandle::replaceStreamData(
1438 - PointerHolder<StreamDataProvider> provider, 1438 + std::shared_ptr<StreamDataProvider> provider,
1439 QPDFObjectHandle const& filter, 1439 QPDFObjectHandle const& filter,
1440 QPDFObjectHandle const& decode_parms) 1440 QPDFObjectHandle const& decode_parms)
1441 { 1441 {
@@ -1487,7 +1487,7 @@ QPDFObjectHandle::replaceStreamData( @@ -1487,7 +1487,7 @@ QPDFObjectHandle::replaceStreamData(
1487 { 1487 {
1488 assertStream(); 1488 assertStream();
1489 auto sdp = 1489 auto sdp =
1490 - PointerHolder<StreamDataProvider>(new FunctionProvider(provider)); 1490 + std::shared_ptr<StreamDataProvider>(new FunctionProvider(provider));
1491 dynamic_cast<QPDF_Stream*>(obj.get())->replaceStreamData( 1491 dynamic_cast<QPDF_Stream*>(obj.get())->replaceStreamData(
1492 sdp, filter, decode_parms); 1492 sdp, filter, decode_parms);
1493 } 1493 }
@@ -1500,7 +1500,7 @@ QPDFObjectHandle::replaceStreamData( @@ -1500,7 +1500,7 @@ QPDFObjectHandle::replaceStreamData(
1500 { 1500 {
1501 assertStream(); 1501 assertStream();
1502 auto sdp = 1502 auto sdp =
1503 - PointerHolder<StreamDataProvider>(new FunctionProvider(provider)); 1503 + std::shared_ptr<StreamDataProvider>(new FunctionProvider(provider));
1504 dynamic_cast<QPDF_Stream*>(obj.get())->replaceStreamData( 1504 dynamic_cast<QPDF_Stream*>(obj.get())->replaceStreamData(
1505 sdp, filter, decode_parms); 1505 sdp, filter, decode_parms);
1506 } 1506 }
@@ -1694,7 +1694,7 @@ QPDFObjectHandle::coalesceContentStreams() @@ -1694,7 +1694,7 @@ QPDFObjectHandle::coalesceContentStreams()
1694 QPDFObjectHandle new_contents = newStream(qpdf); 1694 QPDFObjectHandle new_contents = newStream(qpdf);
1695 this->replaceKey("/Contents", new_contents); 1695 this->replaceKey("/Contents", new_contents);
1696 1696
1697 - auto provider = PointerHolder<StreamDataProvider>( 1697 + auto provider = std::shared_ptr<StreamDataProvider>(
1698 new CoalesceProvider(*this, contents)); 1698 new CoalesceProvider(*this, contents));
1699 new_contents.replaceStreamData(provider, newNull(), newNull()); 1699 new_contents.replaceStreamData(provider, newNull(), newNull());
1700 } 1700 }
@@ -1772,7 +1772,7 @@ QPDFObjectHandle::parse( @@ -1772,7 +1772,7 @@ QPDFObjectHandle::parse(
1772 std::string const& object_str, 1772 std::string const& object_str,
1773 std::string const& object_description) 1773 std::string const& object_description)
1774 { 1774 {
1775 - auto input = PointerHolder<InputSource>( 1775 + auto input = std::shared_ptr<InputSource>(
1776 new BufferInputSource("parsed object", object_str)); 1776 new BufferInputSource("parsed object", object_str));
1777 QPDFTokenizer tokenizer; 1777 QPDFTokenizer tokenizer;
1778 bool empty = false; 1778 bool empty = false;
@@ -1908,13 +1908,13 @@ QPDFObjectHandle::parseContentStream_internal( @@ -1908,13 +1908,13 @@ QPDFObjectHandle::parseContentStream_internal(
1908 1908
1909 void 1909 void
1910 QPDFObjectHandle::parseContentStream_data( 1910 QPDFObjectHandle::parseContentStream_data(
1911 - PointerHolder<Buffer> stream_data, 1911 + std::shared_ptr<Buffer> stream_data,
1912 std::string const& description, 1912 std::string const& description,
1913 ParserCallbacks* callbacks, 1913 ParserCallbacks* callbacks,
1914 QPDF* context) 1914 QPDF* context)
1915 { 1915 {
1916 size_t stream_length = stream_data->getSize(); 1916 size_t stream_length = stream_data->getSize();
1917 - auto input = PointerHolder<InputSource>( 1917 + auto input = std::shared_ptr<InputSource>(
1918 new BufferInputSource(description, stream_data.get())); 1918 new BufferInputSource(description, stream_data.get()));
1919 QPDFTokenizer tokenizer; 1919 QPDFTokenizer tokenizer;
1920 tokenizer.allowEOF(); 1920 tokenizer.allowEOF();
@@ -1969,14 +1969,14 @@ QPDFObjectHandle::parseContentStream_data( @@ -1969,14 +1969,14 @@ QPDFObjectHandle::parseContentStream_data(
1969 } 1969 }
1970 1970
1971 void 1971 void
1972 -QPDFObjectHandle::addContentTokenFilter(PointerHolder<TokenFilter> filter) 1972 +QPDFObjectHandle::addContentTokenFilter(std::shared_ptr<TokenFilter> filter)
1973 { 1973 {
1974 coalesceContentStreams(); 1974 coalesceContentStreams();
1975 this->getKey("/Contents").addTokenFilter(filter); 1975 this->getKey("/Contents").addTokenFilter(filter);
1976 } 1976 }
1977 1977
1978 void 1978 void
1979 -QPDFObjectHandle::addTokenFilter(PointerHolder<TokenFilter> filter) 1979 +QPDFObjectHandle::addTokenFilter(std::shared_ptr<TokenFilter> filter)
1980 { 1980 {
1981 assertStream(); 1981 assertStream();
1982 return dynamic_cast<QPDF_Stream*>(obj.get())->addTokenFilter(filter); 1982 return dynamic_cast<QPDF_Stream*>(obj.get())->addTokenFilter(filter);
@@ -1984,7 +1984,7 @@ QPDFObjectHandle::addTokenFilter(PointerHolder&lt;TokenFilter&gt; filter) @@ -1984,7 +1984,7 @@ QPDFObjectHandle::addTokenFilter(PointerHolder&lt;TokenFilter&gt; filter)
1984 1984
1985 QPDFObjectHandle 1985 QPDFObjectHandle
1986 QPDFObjectHandle::parse( 1986 QPDFObjectHandle::parse(
1987 - PointerHolder<InputSource> input, 1987 + std::shared_ptr<InputSource> input,
1988 std::string const& object_description, 1988 std::string const& object_description,
1989 QPDFTokenizer& tokenizer, 1989 QPDFTokenizer& tokenizer,
1990 bool& empty, 1990 bool& empty,
@@ -1997,7 +1997,7 @@ QPDFObjectHandle::parse( @@ -1997,7 +1997,7 @@ QPDFObjectHandle::parse(
1997 1997
1998 QPDFObjectHandle 1998 QPDFObjectHandle
1999 QPDFObjectHandle::parseInternal( 1999 QPDFObjectHandle::parseInternal(
2000 - PointerHolder<InputSource> input, 2000 + std::shared_ptr<InputSource> input,
2001 std::string const& object_description, 2001 std::string const& object_description,
2002 QPDFTokenizer& tokenizer, 2002 QPDFTokenizer& tokenizer,
2003 bool& empty, 2003 bool& empty,
@@ -2698,7 +2698,7 @@ QPDFObjectHandle::newStream(QPDF* qpdf) @@ -2698,7 +2698,7 @@ QPDFObjectHandle::newStream(QPDF* qpdf)
2698 } 2698 }
2699 2699
2700 QPDFObjectHandle 2700 QPDFObjectHandle
2701 -QPDFObjectHandle::newStream(QPDF* qpdf, PointerHolder<Buffer> data) 2701 +QPDFObjectHandle::newStream(QPDF* qpdf, std::shared_ptr<Buffer> data)
2702 { 2702 {
2703 QTC::TC("qpdf", "QPDFObjectHandle newStream with data"); 2703 QTC::TC("qpdf", "QPDFObjectHandle newStream with data");
2704 QPDFObjectHandle result = newStream(qpdf); 2704 QPDFObjectHandle result = newStream(qpdf);
@@ -2836,26 +2836,27 @@ QPDFObjectHandle::copyObject( @@ -2836,26 +2836,27 @@ QPDFObjectHandle::copyObject(
2836 this->objid = 0; 2836 this->objid = 0;
2837 this->generation = 0; 2837 this->generation = 0;
2838 2838
2839 - PointerHolder<QPDFObject> new_obj; 2839 + std::shared_ptr<QPDFObject> new_obj;
2840 2840
2841 if (isBool()) { 2841 if (isBool()) {
2842 QTC::TC("qpdf", "QPDFObjectHandle clone bool"); 2842 QTC::TC("qpdf", "QPDFObjectHandle clone bool");
2843 - new_obj = PointerHolder<QPDFObject>(new QPDF_Bool(getBoolValue())); 2843 + new_obj = std::shared_ptr<QPDFObject>(new QPDF_Bool(getBoolValue()));
2844 } else if (isNull()) { 2844 } else if (isNull()) {
2845 QTC::TC("qpdf", "QPDFObjectHandle clone null"); 2845 QTC::TC("qpdf", "QPDFObjectHandle clone null");
2846 - new_obj = PointerHolder<QPDFObject>(new QPDF_Null()); 2846 + new_obj = std::shared_ptr<QPDFObject>(new QPDF_Null());
2847 } else if (isInteger()) { 2847 } else if (isInteger()) {
2848 QTC::TC("qpdf", "QPDFObjectHandle clone integer"); 2848 QTC::TC("qpdf", "QPDFObjectHandle clone integer");
2849 - new_obj = PointerHolder<QPDFObject>(new QPDF_Integer(getIntValue())); 2849 + new_obj = std::shared_ptr<QPDFObject>(new QPDF_Integer(getIntValue()));
2850 } else if (isReal()) { 2850 } else if (isReal()) {
2851 QTC::TC("qpdf", "QPDFObjectHandle clone real"); 2851 QTC::TC("qpdf", "QPDFObjectHandle clone real");
2852 - new_obj = PointerHolder<QPDFObject>(new QPDF_Real(getRealValue())); 2852 + new_obj = std::shared_ptr<QPDFObject>(new QPDF_Real(getRealValue()));
2853 } else if (isName()) { 2853 } else if (isName()) {
2854 QTC::TC("qpdf", "QPDFObjectHandle clone name"); 2854 QTC::TC("qpdf", "QPDFObjectHandle clone name");
2855 - new_obj = PointerHolder<QPDFObject>(new QPDF_Name(getName())); 2855 + new_obj = std::shared_ptr<QPDFObject>(new QPDF_Name(getName()));
2856 } else if (isString()) { 2856 } else if (isString()) {
2857 QTC::TC("qpdf", "QPDFObjectHandle clone string"); 2857 QTC::TC("qpdf", "QPDFObjectHandle clone string");
2858 - new_obj = PointerHolder<QPDFObject>(new QPDF_String(getStringValue())); 2858 + new_obj =
  2859 + std::shared_ptr<QPDFObject>(new QPDF_String(getStringValue()));
2859 } else if (isArray()) { 2860 } else if (isArray()) {
2860 QTC::TC("qpdf", "QPDFObjectHandle clone array"); 2861 QTC::TC("qpdf", "QPDFObjectHandle clone array");
2861 std::vector<QPDFObjectHandle> items; 2862 std::vector<QPDFObjectHandle> items;
@@ -2868,7 +2869,7 @@ QPDFObjectHandle::copyObject( @@ -2868,7 +2869,7 @@ QPDFObjectHandle::copyObject(
2868 visited, cross_indirect, first_level_only, stop_at_streams); 2869 visited, cross_indirect, first_level_only, stop_at_streams);
2869 } 2870 }
2870 } 2871 }
2871 - new_obj = PointerHolder<QPDFObject>(new QPDF_Array(items)); 2872 + new_obj = std::shared_ptr<QPDFObject>(new QPDF_Array(items));
2872 } else if (isDictionary()) { 2873 } else if (isDictionary()) {
2873 QTC::TC("qpdf", "QPDFObjectHandle clone dictionary"); 2874 QTC::TC("qpdf", "QPDFObjectHandle clone dictionary");
2874 std::set<std::string> keys = getKeys(); 2875 std::set<std::string> keys = getKeys();
@@ -2883,7 +2884,7 @@ QPDFObjectHandle::copyObject( @@ -2883,7 +2884,7 @@ QPDFObjectHandle::copyObject(
2883 visited, cross_indirect, first_level_only, stop_at_streams); 2884 visited, cross_indirect, first_level_only, stop_at_streams);
2884 } 2885 }
2885 } 2886 }
2886 - new_obj = PointerHolder<QPDFObject>(new QPDF_Dictionary(items)); 2887 + new_obj = std::shared_ptr<QPDFObject>(new QPDF_Dictionary(items));
2887 } else { 2888 } else {
2888 throw std::logic_error("QPDFObjectHandle::makeDirectInternal: " 2889 throw std::logic_error("QPDFObjectHandle::makeDirectInternal: "
2889 "unknown object type"); 2890 "unknown object type");
@@ -3172,12 +3173,12 @@ QPDFObjectHandle::dereference() @@ -3172,12 +3173,12 @@ QPDFObjectHandle::dereference()
3172 this->obj = nullptr; 3173 this->obj = nullptr;
3173 } 3174 }
3174 if (this->obj.get() == 0) { 3175 if (this->obj.get() == 0) {
3175 - PointerHolder<QPDFObject> obj = 3176 + std::shared_ptr<QPDFObject> obj =
3176 QPDF::Resolver::resolve(this->qpdf, this->objid, this->generation); 3177 QPDF::Resolver::resolve(this->qpdf, this->objid, this->generation);
3177 if (obj.get() == 0) { 3178 if (obj.get() == 0) {
3178 // QPDF::resolve never returns an uninitialized object, but 3179 // QPDF::resolve never returns an uninitialized object, but
3179 // check just in case. 3180 // check just in case.
3180 - this->obj = PointerHolder<QPDFObject>(new QPDF_Null()); 3181 + this->obj = std::shared_ptr<QPDFObject>(new QPDF_Null());
3181 } else if (dynamic_cast<QPDF_Reserved*>(obj.get())) { 3182 } else if (dynamic_cast<QPDF_Reserved*>(obj.get())) {
3182 // Do not resolve 3183 // Do not resolve
3183 } else { 3184 } else {
libqpdf/QPDFOutlineDocumentHelper.cc
@@ -100,7 +100,7 @@ QPDFOutlineDocumentHelper::resolveNamedDest(QPDFObjectHandle name) @@ -100,7 +100,7 @@ QPDFOutlineDocumentHelper::resolveNamedDest(QPDFObjectHandle name)
100 QPDFObjectHandle dests = names.getKey("/Dests"); 100 QPDFObjectHandle dests = names.getKey("/Dests");
101 if (dests.isDictionary()) { 101 if (dests.isDictionary()) {
102 this->m->names_dest = 102 this->m->names_dest =
103 - make_pointer_holder<QPDFNameTreeObjectHelper>( 103 + std::make_shared<QPDFNameTreeObjectHelper>(
104 dests, this->qpdf); 104 dests, this->qpdf);
105 } 105 }
106 } 106 }
libqpdf/QPDFOutlineObjectHelper.cc
@@ -31,13 +31,13 @@ QPDFOutlineObjectHelper::QPDFOutlineObjectHelper( @@ -31,13 +31,13 @@ QPDFOutlineObjectHelper::QPDFOutlineObjectHelper(
31 QPDFObjectHandle cur = oh.getKey("/First"); 31 QPDFObjectHandle cur = oh.getKey("/First");
32 while (!cur.isNull()) { 32 while (!cur.isNull()) {
33 QPDFOutlineObjectHelper new_ooh(cur, dh, 1 + depth); 33 QPDFOutlineObjectHelper new_ooh(cur, dh, 1 + depth);
34 - new_ooh.m->parent = make_pointer_holder<QPDFOutlineObjectHelper>(*this); 34 + new_ooh.m->parent = std::make_shared<QPDFOutlineObjectHelper>(*this);
35 this->m->kids.push_back(new_ooh); 35 this->m->kids.push_back(new_ooh);
36 cur = cur.getKey("/Next"); 36 cur = cur.getKey("/Next");
37 } 37 }
38 } 38 }
39 39
40 -PointerHolder<QPDFOutlineObjectHelper> 40 +std::shared_ptr<QPDFOutlineObjectHelper>
41 QPDFOutlineObjectHelper::getParent() 41 QPDFOutlineObjectHelper::getParent()
42 { 42 {
43 return this->m->parent; 43 return this->m->parent;
libqpdf/QPDFPageLabelDocumentHelper.cc
@@ -16,7 +16,7 @@ QPDFPageLabelDocumentHelper::QPDFPageLabelDocumentHelper(QPDF&amp; qpdf) : @@ -16,7 +16,7 @@ QPDFPageLabelDocumentHelper::QPDFPageLabelDocumentHelper(QPDF&amp; qpdf) :
16 { 16 {
17 QPDFObjectHandle root = qpdf.getRoot(); 17 QPDFObjectHandle root = qpdf.getRoot();
18 if (root.hasKey("/PageLabels")) { 18 if (root.hasKey("/PageLabels")) {
19 - this->m->labels = make_pointer_holder<QPDFNumberTreeObjectHelper>( 19 + this->m->labels = std::make_shared<QPDFNumberTreeObjectHelper>(
20 root.getKey("/PageLabels"), this->qpdf); 20 root.getKey("/PageLabels"), this->qpdf);
21 } 21 }
22 } 22 }
libqpdf/QPDFPageObjectHelper.cc
@@ -556,7 +556,7 @@ QPDFPageObjectHelper::pipeContents(Pipeline* p) @@ -556,7 +556,7 @@ QPDFPageObjectHelper::pipeContents(Pipeline* p)
556 556
557 void 557 void
558 QPDFPageObjectHelper::addContentTokenFilter( 558 QPDFPageObjectHelper::addContentTokenFilter(
559 - PointerHolder<QPDFObjectHandle::TokenFilter> token_filter) 559 + std::shared_ptr<QPDFObjectHandle::TokenFilter> token_filter)
560 { 560 {
561 if (this->oh.isFormXObject()) { 561 if (this->oh.isFormXObject()) {
562 this->oh.addTokenFilter(token_filter); 562 this->oh.addTokenFilter(token_filter);
@@ -776,7 +776,7 @@ QPDFPageObjectHelper::getFormXObjectForPage(bool handle_transformations) @@ -776,7 +776,7 @@ QPDFPageObjectHelper::getFormXObjectForPage(bool handle_transformations)
776 " XObject created from page will not work"); 776 " XObject created from page will not work");
777 } 777 }
778 newdict.replaceKey("/BBox", bbox); 778 newdict.replaceKey("/BBox", bbox);
779 - auto provider = PointerHolder<QPDFObjectHandle::StreamDataProvider>( 779 + auto provider = std::shared_ptr<QPDFObjectHandle::StreamDataProvider>(
780 new ContentProvider(this->oh)); 780 new ContentProvider(this->oh));
781 result.replaceStreamData( 781 result.replaceStreamData(
782 provider, QPDFObjectHandle::newNull(), QPDFObjectHandle::newNull()); 782 provider, QPDFObjectHandle::newNull(), QPDFObjectHandle::newNull());
@@ -1060,9 +1060,9 @@ QPDFPageObjectHelper::flattenRotation(QPDFAcroFormDocumentHelper* afdh) @@ -1060,9 +1060,9 @@ QPDFPageObjectHelper::flattenRotation(QPDFAcroFormDocumentHelper* afdh)
1060 std::vector<QPDFObjectHandle> new_annots; 1060 std::vector<QPDFObjectHandle> new_annots;
1061 std::vector<QPDFObjectHandle> new_fields; 1061 std::vector<QPDFObjectHandle> new_fields;
1062 std::set<QPDFObjGen> old_fields; 1062 std::set<QPDFObjGen> old_fields;
1063 - PointerHolder<QPDFAcroFormDocumentHelper> afdhph; 1063 + std::shared_ptr<QPDFAcroFormDocumentHelper> afdhph;
1064 if (!afdh) { 1064 if (!afdh) {
1065 - afdhph = make_pointer_holder<QPDFAcroFormDocumentHelper>(*qpdf); 1065 + afdhph = std::make_shared<QPDFAcroFormDocumentHelper>(*qpdf);
1066 afdh = afdhph.get(); 1066 afdh = afdhph.get();
1067 } 1067 }
1068 afdh->transformAnnotations( 1068 afdh->transformAnnotations(
@@ -1101,10 +1101,10 @@ QPDFPageObjectHelper::copyAnnotations( @@ -1101,10 +1101,10 @@ QPDFPageObjectHelper::copyAnnotations(
1101 std::vector<QPDFObjectHandle> new_annots; 1101 std::vector<QPDFObjectHandle> new_annots;
1102 std::vector<QPDFObjectHandle> new_fields; 1102 std::vector<QPDFObjectHandle> new_fields;
1103 std::set<QPDFObjGen> old_fields; 1103 std::set<QPDFObjGen> old_fields;
1104 - PointerHolder<QPDFAcroFormDocumentHelper> afdhph;  
1105 - PointerHolder<QPDFAcroFormDocumentHelper> from_afdhph; 1104 + std::shared_ptr<QPDFAcroFormDocumentHelper> afdhph;
  1105 + std::shared_ptr<QPDFAcroFormDocumentHelper> from_afdhph;
1106 if (!afdh) { 1106 if (!afdh) {
1107 - afdhph = make_pointer_holder<QPDFAcroFormDocumentHelper>(*this_qpdf); 1107 + afdhph = std::make_shared<QPDFAcroFormDocumentHelper>(*this_qpdf);
1108 afdh = afdhph.get(); 1108 afdh = afdhph.get();
1109 } 1109 }
1110 if (this_qpdf == from_qpdf) { 1110 if (this_qpdf == from_qpdf) {
@@ -1116,8 +1116,7 @@ QPDFPageObjectHelper::copyAnnotations( @@ -1116,8 +1116,7 @@ QPDFPageObjectHelper::copyAnnotations(
1116 " is not from the same QPDF as from_page"); 1116 " is not from the same QPDF as from_page");
1117 } 1117 }
1118 } else { 1118 } else {
1119 - from_afdhph =  
1120 - make_pointer_holder<QPDFAcroFormDocumentHelper>(*from_qpdf); 1119 + from_afdhph = std::make_shared<QPDFAcroFormDocumentHelper>(*from_qpdf);
1121 from_afdh = from_afdhph.get(); 1120 from_afdh = from_afdhph.get();
1122 } 1121 }
1123 1122
libqpdf/QPDFTokenizer.cc
@@ -23,7 +23,8 @@ is_delimiter(char ch) @@ -23,7 +23,8 @@ is_delimiter(char ch)
23 class QPDFWordTokenFinder: public InputSource::Finder 23 class QPDFWordTokenFinder: public InputSource::Finder
24 { 24 {
25 public: 25 public:
26 - QPDFWordTokenFinder(PointerHolder<InputSource> is, std::string const& str) : 26 + QPDFWordTokenFinder(
  27 + std::shared_ptr<InputSource> is, std::string const& str) :
27 is(is), 28 is(is),
28 str(str) 29 str(str)
29 { 30 {
@@ -34,7 +35,7 @@ class QPDFWordTokenFinder: public InputSource::Finder @@ -34,7 +35,7 @@ class QPDFWordTokenFinder: public InputSource::Finder
34 virtual bool check(); 35 virtual bool check();
35 36
36 private: 37 private:
37 - PointerHolder<InputSource> is; 38 + std::shared_ptr<InputSource> is;
38 std::string str; 39 std::string str;
39 }; 40 };
40 41
@@ -503,7 +504,7 @@ QPDFTokenizer::presentEOF() @@ -503,7 +504,7 @@ QPDFTokenizer::presentEOF()
503 } 504 }
504 505
505 void 506 void
506 -QPDFTokenizer::expectInlineImage(PointerHolder<InputSource> input) 507 +QPDFTokenizer::expectInlineImage(std::shared_ptr<InputSource> input)
507 { 508 {
508 if (this->m->state != st_top) { 509 if (this->m->state != st_top) {
509 throw std::logic_error("QPDFTokenizer::expectInlineImage called" 510 throw std::logic_error("QPDFTokenizer::expectInlineImage called"
@@ -514,7 +515,7 @@ QPDFTokenizer::expectInlineImage(PointerHolder&lt;InputSource&gt; input) @@ -514,7 +515,7 @@ QPDFTokenizer::expectInlineImage(PointerHolder&lt;InputSource&gt; input)
514 } 515 }
515 516
516 void 517 void
517 -QPDFTokenizer::findEI(PointerHolder<InputSource> input) 518 +QPDFTokenizer::findEI(std::shared_ptr<InputSource> input)
518 { 519 {
519 if (!input.get()) { 520 if (!input.get()) {
520 return; 521 return;
@@ -645,7 +646,7 @@ QPDFTokenizer::betweenTokens() @@ -645,7 +646,7 @@ QPDFTokenizer::betweenTokens()
645 646
646 QPDFTokenizer::Token 647 QPDFTokenizer::Token
647 QPDFTokenizer::readToken( 648 QPDFTokenizer::readToken(
648 - PointerHolder<InputSource> input, 649 + std::shared_ptr<InputSource> input,
649 std::string const& context, 650 std::string const& context,
650 bool allow_bad, 651 bool allow_bad,
651 size_t max_len) 652 size_t max_len)
libqpdf/QPDFWriter.cc
@@ -153,10 +153,10 @@ QPDFWriter::getBuffer() @@ -153,10 +153,10 @@ QPDFWriter::getBuffer()
153 return result; 153 return result;
154 } 154 }
155 155
156 -PointerHolder<Buffer> 156 +std::shared_ptr<Buffer>
157 QPDFWriter::getBufferSharedPointer() 157 QPDFWriter::getBufferSharedPointer()
158 { 158 {
159 - return PointerHolder<Buffer>(getBuffer()); 159 + return std::shared_ptr<Buffer>(getBuffer());
160 } 160 }
161 161
162 void 162 void
@@ -1081,7 +1081,7 @@ QPDFWriter::writeString(std::string const&amp; str) @@ -1081,7 +1081,7 @@ QPDFWriter::writeString(std::string const&amp; str)
1081 } 1081 }
1082 1082
1083 void 1083 void
1084 -QPDFWriter::writeBuffer(PointerHolder<Buffer>& b) 1084 +QPDFWriter::writeBuffer(std::shared_ptr<Buffer>& b)
1085 { 1085 {
1086 this->m->pipeline->write(b->getBuffer(), b->getSize()); 1086 this->m->pipeline->write(b->getBuffer(), b->getSize());
1087 } 1087 }
@@ -1485,7 +1485,7 @@ QPDFWriter::willFilterStream( @@ -1485,7 +1485,7 @@ QPDFWriter::willFilterStream(
1485 QPDFObjectHandle stream, 1485 QPDFObjectHandle stream,
1486 bool& compress_stream, 1486 bool& compress_stream,
1487 bool& is_metadata, 1487 bool& is_metadata,
1488 - PointerHolder<Buffer>* stream_data) 1488 + std::shared_ptr<Buffer>* stream_data)
1489 { 1489 {
1490 compress_stream = false; 1490 compress_stream = false;
1491 is_metadata = false; 1491 is_metadata = false;
@@ -1819,7 +1819,7 @@ QPDFWriter::unparseObject( @@ -1819,7 +1819,7 @@ QPDFWriter::unparseObject(
1819 flags |= f_stream; 1819 flags |= f_stream;
1820 bool compress_stream = false; 1820 bool compress_stream = false;
1821 bool is_metadata = false; 1821 bool is_metadata = false;
1822 - PointerHolder<Buffer> stream_data; 1822 + std::shared_ptr<Buffer> stream_data;
1823 if (willFilterStream( 1823 if (willFilterStream(
1824 object, compress_stream, is_metadata, &stream_data)) { 1824 object, compress_stream, is_metadata, &stream_data)) {
1825 flags |= f_filtered; 1825 flags |= f_filtered;
@@ -1924,7 +1924,7 @@ QPDFWriter::writeObjectStream(QPDFObjectHandle object) @@ -1924,7 +1924,7 @@ QPDFWriter::writeObjectStream(QPDFObjectHandle object)
1924 1924
1925 // Generate stream itself. We have to do this in two passes so we 1925 // Generate stream itself. We have to do this in two passes so we
1926 // can calculate offsets in the first pass. 1926 // can calculate offsets in the first pass.
1927 - PointerHolder<Buffer> stream_buffer; 1927 + std::shared_ptr<Buffer> stream_buffer;
1928 int first_obj = -1; 1928 int first_obj = -1;
1929 bool compressed = false; 1929 bool compressed = false;
1930 for (int pass = 1; pass <= 2; ++pass) { 1930 for (int pass = 1; pass <= 2; ++pass) {
@@ -2667,7 +2667,7 @@ QPDFWriter::writeHeader() @@ -2667,7 +2667,7 @@ QPDFWriter::writeHeader()
2667 void 2667 void
2668 QPDFWriter::writeHintStream(int hint_id) 2668 QPDFWriter::writeHintStream(int hint_id)
2669 { 2669 {
2670 - PointerHolder<Buffer> hint_buffer; 2670 + std::shared_ptr<Buffer> hint_buffer;
2671 int S = 0; 2671 int S = 0;
2672 int O = 0; 2672 int O = 0;
2673 QPDF::Writer::generateHintStream( 2673 QPDF::Writer::generateHintStream(
@@ -2839,7 +2839,7 @@ QPDFWriter::writeXRefStream( @@ -2839,7 +2839,7 @@ QPDFWriter::writeXRefStream(
2839 p = pushPipeline( 2839 p = pushPipeline(
2840 new Pl_PNGFilter("pngify xref", p, Pl_PNGFilter::a_encode, esize)); 2840 new Pl_PNGFilter("pngify xref", p, Pl_PNGFilter::a_encode, esize));
2841 } 2841 }
2842 - PointerHolder<Buffer> xref_data; 2842 + std::shared_ptr<Buffer> xref_data;
2843 { 2843 {
2844 PipelinePopper pp_xref(this, &xref_data); 2844 PipelinePopper pp_xref(this, &xref_data);
2845 activatePipelineStack(pp_xref); 2845 activatePipelineStack(pp_xref);
@@ -3098,13 +3098,13 @@ QPDFWriter::writeLinearized() @@ -3098,13 +3098,13 @@ QPDFWriter::writeLinearized()
3098 } 3098 }
3099 3099
3100 qpdf_offset_t hint_length = 0; 3100 qpdf_offset_t hint_length = 0;
3101 - PointerHolder<Buffer> hint_buffer; 3101 + std::shared_ptr<Buffer> hint_buffer;
3102 3102
3103 // Write file in two passes. Part numbers refer to PDF spec 1.4. 3103 // Write file in two passes. Part numbers refer to PDF spec 1.4.
3104 3104
3105 FILE* lin_pass1_file = 0; 3105 FILE* lin_pass1_file = 0;
3106 - auto pp_pass1 = make_pointer_holder<PipelinePopper>(this);  
3107 - auto pp_md5 = make_pointer_holder<PipelinePopper>(this); 3106 + auto pp_pass1 = std::make_shared<PipelinePopper>(this);
  3107 + auto pp_md5 = std::make_shared<PipelinePopper>(this);
3108 for (int pass = 1; pass <= 2; ++pass) { 3108 for (int pass = 1; pass <= 2; ++pass) {
3109 if (pass == 1) { 3109 if (pass == 1) {
3110 if (!this->m->lin_pass1_filename.empty()) { 3110 if (!this->m->lin_pass1_filename.empty()) {
@@ -3489,7 +3489,7 @@ QPDFWriter::indicateProgress(bool decrement, bool finished) @@ -3489,7 +3489,7 @@ QPDFWriter::indicateProgress(bool decrement, bool finished)
3489 } 3489 }
3490 3490
3491 void 3491 void
3492 -QPDFWriter::registerProgressReporter(PointerHolder<ProgressReporter> pr) 3492 +QPDFWriter::registerProgressReporter(std::shared_ptr<ProgressReporter> pr)
3493 { 3493 {
3494 this->m->progress_reporter = pr; 3494 this->m->progress_reporter = pr;
3495 } 3495 }
@@ -3497,7 +3497,7 @@ QPDFWriter::registerProgressReporter(PointerHolder&lt;ProgressReporter&gt; pr) @@ -3497,7 +3497,7 @@ QPDFWriter::registerProgressReporter(PointerHolder&lt;ProgressReporter&gt; pr)
3497 void 3497 void
3498 QPDFWriter::writeStandard() 3498 QPDFWriter::writeStandard()
3499 { 3499 {
3500 - auto pp_md5 = make_pointer_holder<PipelinePopper>(this); 3500 + auto pp_md5 = std::make_shared<PipelinePopper>(this);
3501 if (this->m->deterministic_id) { 3501 if (this->m->deterministic_id) {
3502 pushMD5Pipeline(*pp_md5); 3502 pushMD5Pipeline(*pp_md5);
3503 } 3503 }
libqpdf/QPDF_Stream.cc
@@ -221,19 +221,19 @@ QPDF_Stream::getLength() const @@ -221,19 +221,19 @@ QPDF_Stream::getLength() const
221 return this->length; 221 return this->length;
222 } 222 }
223 223
224 -PointerHolder<Buffer> 224 +std::shared_ptr<Buffer>
225 QPDF_Stream::getStreamDataBuffer() const 225 QPDF_Stream::getStreamDataBuffer() const
226 { 226 {
227 return this->stream_data; 227 return this->stream_data;
228 } 228 }
229 229
230 -PointerHolder<QPDFObjectHandle::StreamDataProvider> 230 +std::shared_ptr<QPDFObjectHandle::StreamDataProvider>
231 QPDF_Stream::getStreamDataProvider() const 231 QPDF_Stream::getStreamDataProvider() const
232 { 232 {
233 return this->stream_provider; 233 return this->stream_provider;
234 } 234 }
235 235
236 -PointerHolder<Buffer> 236 +std::shared_ptr<Buffer>
237 QPDF_Stream::getStreamData(qpdf_stream_decode_level_e decode_level) 237 QPDF_Stream::getStreamData(qpdf_stream_decode_level_e decode_level)
238 { 238 {
239 Pl_Buffer buf("stream data buffer"); 239 Pl_Buffer buf("stream data buffer");
@@ -251,7 +251,7 @@ QPDF_Stream::getStreamData(qpdf_stream_decode_level_e decode_level) @@ -251,7 +251,7 @@ QPDF_Stream::getStreamData(qpdf_stream_decode_level_e decode_level)
251 return buf.getBufferSharedPointer(); 251 return buf.getBufferSharedPointer();
252 } 252 }
253 253
254 -PointerHolder<Buffer> 254 +std::shared_ptr<Buffer>
255 QPDF_Stream::getRawStreamData() 255 QPDF_Stream::getRawStreamData()
256 { 256 {
257 Pl_Buffer buf("stream data buffer"); 257 Pl_Buffer buf("stream data buffer");
@@ -438,7 +438,7 @@ QPDF_Stream::pipeStreamData( @@ -438,7 +438,7 @@ QPDF_Stream::pipeStreamData(
438 // objects. 438 // objects.
439 std::vector<std::shared_ptr<Pipeline>> to_delete; 439 std::vector<std::shared_ptr<Pipeline>> to_delete;
440 440
441 - PointerHolder<ContentNormalizer> normalizer; 441 + std::shared_ptr<ContentNormalizer> normalizer;
442 std::shared_ptr<Pipeline> new_pipeline; 442 std::shared_ptr<Pipeline> new_pipeline;
443 if (filter) { 443 if (filter) {
444 if (encode_flags & qpdf_ef_compress) { 444 if (encode_flags & qpdf_ef_compress) {
@@ -449,7 +449,7 @@ QPDF_Stream::pipeStreamData( @@ -449,7 +449,7 @@ QPDF_Stream::pipeStreamData(
449 } 449 }
450 450
451 if (encode_flags & qpdf_ef_normalize) { 451 if (encode_flags & qpdf_ef_normalize) {
452 - normalizer = make_pointer_holder<ContentNormalizer>(); 452 + normalizer = std::make_shared<ContentNormalizer>();
453 new_pipeline = std::make_shared<Pl_QPDFTokenizer>( 453 new_pipeline = std::make_shared<Pl_QPDFTokenizer>(
454 "normalizer", normalizer.get(), pipeline); 454 "normalizer", normalizer.get(), pipeline);
455 to_delete.push_back(new_pipeline); 455 to_delete.push_back(new_pipeline);
@@ -586,7 +586,7 @@ QPDF_Stream::pipeStreamData( @@ -586,7 +586,7 @@ QPDF_Stream::pipeStreamData(
586 586
587 void 587 void
588 QPDF_Stream::replaceStreamData( 588 QPDF_Stream::replaceStreamData(
589 - PointerHolder<Buffer> data, 589 + std::shared_ptr<Buffer> data,
590 QPDFObjectHandle const& filter, 590 QPDFObjectHandle const& filter,
591 QPDFObjectHandle const& decode_parms) 591 QPDFObjectHandle const& decode_parms)
592 { 592 {
@@ -597,7 +597,7 @@ QPDF_Stream::replaceStreamData( @@ -597,7 +597,7 @@ QPDF_Stream::replaceStreamData(
597 597
598 void 598 void
599 QPDF_Stream::replaceStreamData( 599 QPDF_Stream::replaceStreamData(
600 - PointerHolder<QPDFObjectHandle::StreamDataProvider> provider, 600 + std::shared_ptr<QPDFObjectHandle::StreamDataProvider> provider,
601 QPDFObjectHandle const& filter, 601 QPDFObjectHandle const& filter,
602 QPDFObjectHandle const& decode_parms) 602 QPDFObjectHandle const& decode_parms)
603 { 603 {
@@ -608,7 +608,7 @@ QPDF_Stream::replaceStreamData( @@ -608,7 +608,7 @@ QPDF_Stream::replaceStreamData(
608 608
609 void 609 void
610 QPDF_Stream::addTokenFilter( 610 QPDF_Stream::addTokenFilter(
611 - PointerHolder<QPDFObjectHandle::TokenFilter> token_filter) 611 + std::shared_ptr<QPDFObjectHandle::TokenFilter> token_filter)
612 { 612 {
613 this->token_filters.push_back(token_filter); 613 this->token_filters.push_back(token_filter);
614 } 614 }
libqpdf/QPDF_encryption.cc
@@ -754,7 +754,8 @@ QPDF::recover_encryption_key_with_password( @@ -754,7 +754,8 @@ QPDF::recover_encryption_key_with_password(
754 } 754 }
755 755
756 QPDF::encryption_method_e 756 QPDF::encryption_method_e
757 -QPDF::interpretCF(PointerHolder<EncryptionParameters> encp, QPDFObjectHandle cf) 757 +QPDF::interpretCF(
  758 + std::shared_ptr<EncryptionParameters> encp, QPDFObjectHandle cf)
758 { 759 {
759 if (cf.isName()) { 760 if (cf.isName()) {
760 std::string filter = cf.getName(); 761 std::string filter = cf.getName();
@@ -1079,7 +1080,7 @@ QPDF::initializeEncryption() @@ -1079,7 +1080,7 @@ QPDF::initializeEncryption()
1079 1080
1080 std::string 1081 std::string
1081 QPDF::getKeyForObject( 1082 QPDF::getKeyForObject(
1082 - PointerHolder<EncryptionParameters> encp, 1083 + std::shared_ptr<EncryptionParameters> encp,
1083 int objid, 1084 int objid,
1084 int generation, 1085 int generation,
1085 bool use_aes) 1086 bool use_aes)
@@ -1165,7 +1166,7 @@ QPDF::decryptString(std::string&amp; str, int objid, int generation) @@ -1165,7 +1166,7 @@ QPDF::decryptString(std::string&amp; str, int objid, int generation)
1165 } else { 1166 } else {
1166 QTC::TC("qpdf", "QPDF_encryption rc4 decode string"); 1167 QTC::TC("qpdf", "QPDF_encryption rc4 decode string");
1167 size_t vlen = str.length(); 1168 size_t vlen = str.length();
1168 - // Using PointerHolder guarantees that tmp will 1169 + // Using std::shared_ptr guarantees that tmp will
1169 // be freed even if rc4.process throws an exception. 1170 // be freed even if rc4.process throws an exception.
1170 auto tmp = QUtil::make_unique_cstr(str); 1171 auto tmp = QUtil::make_unique_cstr(str);
1171 RC4 rc4(QUtil::unsigned_char_pointer(key), toI(key.length())); 1172 RC4 rc4(QUtil::unsigned_char_pointer(key), toI(key.length()));
@@ -1188,8 +1189,8 @@ QPDF::decryptString(std::string&amp; str, int objid, int generation) @@ -1188,8 +1189,8 @@ QPDF::decryptString(std::string&amp; str, int objid, int generation)
1188 1189
1189 void 1190 void
1190 QPDF::decryptStream( 1191 QPDF::decryptStream(
1191 - PointerHolder<EncryptionParameters> encp,  
1192 - PointerHolder<InputSource> file, 1192 + std::shared_ptr<EncryptionParameters> encp,
  1193 + std::shared_ptr<InputSource> file,
1193 QPDF& qpdf_for_warning, 1194 QPDF& qpdf_for_warning,
1194 Pipeline*& pipeline, 1195 Pipeline*& pipeline,
1195 int objid, 1196 int objid,
libqpdf/QPDF_linearization.cc
@@ -2120,7 +2120,7 @@ QPDF::generateHintStream( @@ -2120,7 +2120,7 @@ QPDF::generateHintStream(
2120 std::map<int, QPDFXRefEntry> const& xref, 2120 std::map<int, QPDFXRefEntry> const& xref,
2121 std::map<int, qpdf_offset_t> const& lengths, 2121 std::map<int, qpdf_offset_t> const& lengths,
2122 std::map<int, int> const& obj_renumber, 2122 std::map<int, int> const& obj_renumber,
2123 - PointerHolder<Buffer>& hint_buffer, 2123 + std::shared_ptr<Buffer>& hint_buffer,
2124 int& S, 2124 int& S,
2125 int& O) 2125 int& O)
2126 { 2126 {
libqpdf/QUtil.cc
@@ -445,7 +445,7 @@ QUtil::os_wrapper(std::string const&amp; description, int status) @@ -445,7 +445,7 @@ QUtil::os_wrapper(std::string const&amp; description, int status)
445 } 445 }
446 446
447 #ifdef _WIN32 447 #ifdef _WIN32
448 -static PointerHolder<wchar_t> 448 +static std::shared_ptr<wchar_t>
449 win_convert_filename(char const* filename) 449 win_convert_filename(char const* filename)
450 { 450 {
451 // Convert the utf-8 encoded filename argument to wchar_t*. First, 451 // Convert the utf-8 encoded filename argument to wchar_t*. First,
@@ -454,7 +454,7 @@ win_convert_filename(char const* filename) @@ -454,7 +454,7 @@ win_convert_filename(char const* filename)
454 std::string u16 = QUtil::utf8_to_utf16(filename); 454 std::string u16 = QUtil::utf8_to_utf16(filename);
455 size_t len = u16.length(); 455 size_t len = u16.length();
456 size_t wlen = (len / 2) - 1; 456 size_t wlen = (len / 2) - 1;
457 - PointerHolder<wchar_t> wfilenamep(true, new wchar_t[wlen + 1]); 457 + auto wfilenamep = QUtil::make_shared_array<wchar_t>(wlen + 1);
458 wchar_t* wfilename = wfilenamep.get(); 458 wchar_t* wfilename = wfilenamep.get();
459 wfilename[wlen] = 0; 459 wfilename[wlen] = 0;
460 for (unsigned int i = 2; i < len; i += 2) { 460 for (unsigned int i = 2; i < len; i += 2) {
@@ -471,9 +471,9 @@ QUtil::safe_fopen(char const* filename, char const* mode) @@ -471,9 +471,9 @@ QUtil::safe_fopen(char const* filename, char const* mode)
471 { 471 {
472 FILE* f = 0; 472 FILE* f = 0;
473 #ifdef _WIN32 473 #ifdef _WIN32
474 - PointerHolder<wchar_t> wfilenamep = win_convert_filename(filename); 474 + std::shared_ptr<wchar_t> wfilenamep = win_convert_filename(filename);
475 wchar_t* wfilename = wfilenamep.get(); 475 wchar_t* wfilename = wfilenamep.get();
476 - PointerHolder<wchar_t> wmodep(true, new wchar_t[strlen(mode) + 1]); 476 + auto wmodep = QUtil::make_shared_array<wchar_t>(strlen(mode) + 1);
477 wchar_t* wmode = wmodep.get(); 477 wchar_t* wmode = wmodep.get();
478 wmode[strlen(mode)] = 0; 478 wmode[strlen(mode)] = 0;
479 for (size_t i = 0; i < strlen(mode); ++i) { 479 for (size_t i = 0; i < strlen(mode); ++i) {
@@ -612,7 +612,7 @@ void @@ -612,7 +612,7 @@ void
612 QUtil::remove_file(char const* path) 612 QUtil::remove_file(char const* path)
613 { 613 {
614 #ifdef _WIN32 614 #ifdef _WIN32
615 - PointerHolder<wchar_t> wpath = win_convert_filename(path); 615 + std::shared_ptr<wchar_t> wpath = win_convert_filename(path);
616 os_wrapper(std::string("remove ") + path, _wunlink(wpath.get())); 616 os_wrapper(std::string("remove ") + path, _wunlink(wpath.get()));
617 #else 617 #else
618 os_wrapper(std::string("remove ") + path, unlink(path)); 618 os_wrapper(std::string("remove ") + path, unlink(path));
@@ -628,8 +628,8 @@ QUtil::rename_file(char const* oldname, char const* newname) @@ -628,8 +628,8 @@ QUtil::rename_file(char const* oldname, char const* newname)
628 } catch (QPDFSystemError&) { 628 } catch (QPDFSystemError&) {
629 // ignore 629 // ignore
630 } 630 }
631 - PointerHolder<wchar_t> wold = win_convert_filename(oldname);  
632 - PointerHolder<wchar_t> wnew = win_convert_filename(newname); 631 + std::shared_ptr<wchar_t> wold = win_convert_filename(oldname);
  632 + std::shared_ptr<wchar_t> wnew = win_convert_filename(newname);
633 os_wrapper( 633 os_wrapper(
634 std::string("rename ") + oldname + " " + newname, 634 std::string("rename ") + oldname + " " + newname,
635 _wrename(wold.get(), wnew.get())); 635 _wrename(wold.get(), wnew.get()));
@@ -824,7 +824,7 @@ QUtil::get_env(std::string const&amp; var, std::string* value) @@ -824,7 +824,7 @@ QUtil::get_env(std::string const&amp; var, std::string* value)
824 } 824 }
825 825
826 if (value) { 826 if (value) {
827 - PointerHolder<char> t = PointerHolder<char>(true, new char[len + 1]); 827 + auto t = QUtil::make_shared_array<char>(len + 1);
828 ::GetEnvironmentVariable(var.c_str(), t.get(), len); 828 ::GetEnvironmentVariable(var.c_str(), t.get(), len);
829 *value = t.get(); 829 *value = t.get();
830 } 830 }
@@ -1173,14 +1173,14 @@ QUtil::is_number(char const* p) @@ -1173,14 +1173,14 @@ QUtil::is_number(char const* p)
1173 1173
1174 void 1174 void
1175 QUtil::read_file_into_memory( 1175 QUtil::read_file_into_memory(
1176 - char const* filename, PointerHolder<char>& file_buf, size_t& size) 1176 + char const* filename, std::shared_ptr<char>& file_buf, size_t& size)
1177 { 1177 {
1178 FILE* f = safe_fopen(filename, "rb"); 1178 FILE* f = safe_fopen(filename, "rb");
1179 FileCloser fc(f); 1179 FileCloser fc(f);
1180 fseek(f, 0, SEEK_END); 1180 fseek(f, 0, SEEK_END);
1181 size = QIntC::to_size(QUtil::tell(f)); 1181 size = QIntC::to_size(QUtil::tell(f));
1182 fseek(f, 0, SEEK_SET); 1182 fseek(f, 0, SEEK_SET);
1183 - file_buf = make_array_pointer_holder<char>(size); 1183 + file_buf = QUtil::make_shared_array<char>(size);
1184 char* buf_p = file_buf.get(); 1184 char* buf_p = file_buf.get();
1185 size_t bytes_read = 0; 1185 size_t bytes_read = 0;
1186 size_t len = 0; 1186 size_t len = 0;
libqpdf/qpdf-c.cc
@@ -18,7 +18,7 @@ @@ -18,7 +18,7 @@
18 18
19 struct _qpdf_error 19 struct _qpdf_error
20 { 20 {
21 - PointerHolder<QPDFExc> exc; 21 + std::shared_ptr<QPDFExc> exc;
22 }; 22 };
23 23
24 struct _qpdf_data 24 struct _qpdf_data
@@ -26,10 +26,10 @@ struct _qpdf_data @@ -26,10 +26,10 @@ struct _qpdf_data
26 _qpdf_data(); 26 _qpdf_data();
27 ~_qpdf_data(); 27 ~_qpdf_data();
28 28
29 - PointerHolder<QPDF> qpdf;  
30 - PointerHolder<QPDFWriter> qpdf_writer; 29 + std::shared_ptr<QPDF> qpdf;
  30 + std::shared_ptr<QPDFWriter> qpdf_writer;
31 31
32 - PointerHolder<QPDFExc> error; 32 + std::shared_ptr<QPDFExc> error;
33 _qpdf_error tmp_error; 33 _qpdf_error tmp_error;
34 std::list<QPDFExc> warnings; 34 std::list<QPDFExc> warnings;
35 std::string tmp_string; 35 std::string tmp_string;
@@ -40,12 +40,12 @@ struct _qpdf_data @@ -40,12 +40,12 @@ struct _qpdf_data
40 unsigned long long size; 40 unsigned long long size;
41 char const* password; 41 char const* password;
42 bool write_memory; 42 bool write_memory;
43 - PointerHolder<Buffer> output_buffer; 43 + std::shared_ptr<Buffer> output_buffer;
44 44
45 // QPDFObjectHandle support 45 // QPDFObjectHandle support
46 bool silence_errors; 46 bool silence_errors;
47 bool oh_error_occurred; 47 bool oh_error_occurred;
48 - std::map<qpdf_oh, PointerHolder<QPDFObjectHandle>> oh_cache; 48 + std::map<qpdf_oh, std::shared_ptr<QPDFObjectHandle>> oh_cache;
49 qpdf_oh next_oh; 49 qpdf_oh next_oh;
50 std::set<std::string> cur_iter_dict_keys; 50 std::set<std::string> cur_iter_dict_keys;
51 std::set<std::string>::const_iterator dict_iter; 51 std::set<std::string>::const_iterator dict_iter;
@@ -111,13 +111,13 @@ static void @@ -111,13 +111,13 @@ static void
111 call_init_write(qpdf_data qpdf) 111 call_init_write(qpdf_data qpdf)
112 { 112 {
113 qpdf->qpdf_writer = 113 qpdf->qpdf_writer =
114 - make_pointer_holder<QPDFWriter>(*(qpdf->qpdf), qpdf->filename); 114 + std::make_shared<QPDFWriter>(*(qpdf->qpdf), qpdf->filename);
115 } 115 }
116 116
117 static void 117 static void
118 call_init_write_memory(qpdf_data qpdf) 118 call_init_write_memory(qpdf_data qpdf)
119 { 119 {
120 - qpdf->qpdf_writer = make_pointer_holder<QPDFWriter>(*(qpdf->qpdf)); 120 + qpdf->qpdf_writer = std::make_shared<QPDFWriter>(*(qpdf->qpdf));
121 qpdf->qpdf_writer->setOutputMemory(); 121 qpdf->qpdf_writer->setOutputMemory();
122 } 122 }
123 123
@@ -144,15 +144,15 @@ trap_errors(qpdf_data qpdf, std::function&lt;void(qpdf_data)&gt; fn) @@ -144,15 +144,15 @@ trap_errors(qpdf_data qpdf, std::function&lt;void(qpdf_data)&gt; fn)
144 try { 144 try {
145 fn(qpdf); 145 fn(qpdf);
146 } catch (QPDFExc& e) { 146 } catch (QPDFExc& e) {
147 - qpdf->error = make_pointer_holder<QPDFExc>(e); 147 + qpdf->error = std::make_shared<QPDFExc>(e);
148 status |= QPDF_ERRORS; 148 status |= QPDF_ERRORS;
149 } catch (std::runtime_error& e) { 149 } catch (std::runtime_error& e) {
150 qpdf->error = 150 qpdf->error =
151 - make_pointer_holder<QPDFExc>(qpdf_e_system, "", "", 0, e.what()); 151 + std::make_shared<QPDFExc>(qpdf_e_system, "", "", 0, e.what());
152 status |= QPDF_ERRORS; 152 status |= QPDF_ERRORS;
153 } catch (std::exception& e) { 153 } catch (std::exception& e) {
154 qpdf->error = 154 qpdf->error =
155 - make_pointer_holder<QPDFExc>(qpdf_e_internal, "", "", 0, e.what()); 155 + std::make_shared<QPDFExc>(qpdf_e_internal, "", "", 0, e.what());
156 status |= QPDF_ERRORS; 156 status |= QPDF_ERRORS;
157 } 157 }
158 158
@@ -175,7 +175,7 @@ qpdf_init() @@ -175,7 +175,7 @@ qpdf_init()
175 { 175 {
176 QTC::TC("qpdf", "qpdf-c called qpdf_init"); 176 QTC::TC("qpdf", "qpdf-c called qpdf_init");
177 qpdf_data qpdf = new _qpdf_data(); 177 qpdf_data qpdf = new _qpdf_data();
178 - qpdf->qpdf = make_pointer_holder<QPDF>(); 178 + qpdf->qpdf = std::make_shared<QPDF>();
179 return qpdf; 179 return qpdf;
180 } 180 }
181 181
@@ -241,8 +241,7 @@ qpdf_error @@ -241,8 +241,7 @@ qpdf_error
241 qpdf_next_warning(qpdf_data qpdf) 241 qpdf_next_warning(qpdf_data qpdf)
242 { 242 {
243 if (qpdf_more_warnings(qpdf)) { 243 if (qpdf_more_warnings(qpdf)) {
244 - qpdf->tmp_error.exc =  
245 - make_pointer_holder<QPDFExc>(qpdf->warnings.front()); 244 + qpdf->tmp_error.exc = std::make_shared<QPDFExc>(qpdf->warnings.front());
246 qpdf->warnings.pop_front(); 245 qpdf->warnings.pop_front();
247 QTC::TC("qpdf", "qpdf-c qpdf_next_warning returned warning"); 246 QTC::TC("qpdf", "qpdf-c qpdf_next_warning returned warning");
248 return &qpdf->tmp_error; 247 return &qpdf->tmp_error;
@@ -974,7 +973,7 @@ qpdf_register_progress_reporter( @@ -974,7 +973,7 @@ qpdf_register_progress_reporter(
974 { 973 {
975 QTC::TC("qpdf", "qpdf-c registered progress reporter"); 974 QTC::TC("qpdf", "qpdf-c registered progress reporter");
976 qpdf->qpdf_writer->registerProgressReporter( 975 qpdf->qpdf_writer->registerProgressReporter(
977 - PointerHolder<QPDFWriter::ProgressReporter>( 976 + std::shared_ptr<QPDFWriter::ProgressReporter>(
978 new ProgressReporter(report_progress, data))); 977 new ProgressReporter(report_progress, data)));
979 } 978 }
980 979
@@ -1035,7 +1034,7 @@ static qpdf_oh @@ -1035,7 +1034,7 @@ static qpdf_oh
1035 new_object(qpdf_data qpdf, QPDFObjectHandle const& qoh) 1034 new_object(qpdf_data qpdf, QPDFObjectHandle const& qoh)
1036 { 1035 {
1037 qpdf_oh oh = ++qpdf->next_oh; // never return 0 1036 qpdf_oh oh = ++qpdf->next_oh; // never return 0
1038 - qpdf->oh_cache[oh] = make_pointer_holder<QPDFObjectHandle>(qoh); 1037 + qpdf->oh_cache[oh] = std::make_shared<QPDFObjectHandle>(qoh);
1039 return oh; 1038 return oh;
1040 } 1039 }
1041 1040
libqpdf/qpdf/JSONHandler.hh
@@ -125,7 +125,7 @@ class JSONHandler @@ -125,7 +125,7 @@ class JSONHandler
125 125
126 Handlers h; 126 Handlers h;
127 }; 127 };
128 - PointerHolder<Members> m; 128 + std::shared_ptr<Members> m;
129 }; 129 };
130 130
131 #endif // JSONHANDLER_HH 131 #endif // JSONHANDLER_HH
libqpdf/qpdf/OffsetInputSource.hh
@@ -10,7 +10,8 @@ @@ -10,7 +10,8 @@
10 class OffsetInputSource: public InputSource 10 class OffsetInputSource: public InputSource
11 { 11 {
12 public: 12 public:
13 - OffsetInputSource(PointerHolder<InputSource>, qpdf_offset_t global_offset); 13 + OffsetInputSource(
  14 + std::shared_ptr<InputSource>, qpdf_offset_t global_offset);
14 virtual ~OffsetInputSource(); 15 virtual ~OffsetInputSource();
15 16
16 virtual qpdf_offset_t findAndSkipNextEOL(); 17 virtual qpdf_offset_t findAndSkipNextEOL();
@@ -22,7 +23,7 @@ class OffsetInputSource: public InputSource @@ -22,7 +23,7 @@ class OffsetInputSource: public InputSource
22 virtual void unreadCh(char ch); 23 virtual void unreadCh(char ch);
23 24
24 private: 25 private:
25 - PointerHolder<InputSource> proxied; 26 + std::shared_ptr<InputSource> proxied;
26 qpdf_offset_t global_offset; 27 qpdf_offset_t global_offset;
27 qpdf_offset_t max_safe_offset; 28 qpdf_offset_t max_safe_offset;
28 }; 29 };
libqpdf/qpdf/Pl_PNGFilter.hh
@@ -46,8 +46,8 @@ class Pl_PNGFilter: public Pipeline @@ -46,8 +46,8 @@ class Pl_PNGFilter: public Pipeline
46 unsigned int bytes_per_pixel; 46 unsigned int bytes_per_pixel;
47 unsigned char* cur_row; // points to buf1 or buf2 47 unsigned char* cur_row; // points to buf1 or buf2
48 unsigned char* prev_row; // points to buf1 or buf2 48 unsigned char* prev_row; // points to buf1 or buf2
49 - PointerHolder<unsigned char> buf1;  
50 - PointerHolder<unsigned char> buf2; 49 + std::shared_ptr<unsigned char> buf1;
  50 + std::shared_ptr<unsigned char> buf2;
51 size_t pos; 51 size_t pos;
52 size_t incoming; 52 size_t incoming;
53 }; 53 };
libqpdf/qpdf/Pl_RC4.hh
@@ -27,7 +27,7 @@ class Pl_RC4: public Pipeline @@ -27,7 +27,7 @@ class Pl_RC4: public Pipeline
27 virtual void finish(); 27 virtual void finish();
28 28
29 private: 29 private:
30 - PointerHolder<unsigned char> outbuf; 30 + std::shared_ptr<unsigned char> outbuf;
31 size_t out_bufsize; 31 size_t out_bufsize;
32 RC4 rc4; 32 RC4 rc4;
33 }; 33 };
libqpdf/qpdf/Pl_TIFFPredictor.hh
@@ -35,7 +35,7 @@ class Pl_TIFFPredictor: public Pipeline @@ -35,7 +35,7 @@ class Pl_TIFFPredictor: public Pipeline
35 unsigned int bytes_per_row; 35 unsigned int bytes_per_row;
36 unsigned int samples_per_pixel; 36 unsigned int samples_per_pixel;
37 unsigned int bits_per_sample; 37 unsigned int bits_per_sample;
38 - PointerHolder<unsigned char> cur_row; 38 + std::shared_ptr<unsigned char> cur_row;
39 size_t pos; 39 size_t pos;
40 }; 40 };
41 41
libqpdf/qpdf/QPDF_Stream.hh
@@ -37,8 +37,8 @@ class QPDF_Stream: public QPDFObject @@ -37,8 +37,8 @@ class QPDF_Stream: public QPDFObject
37 // Methods to help QPDF copy foreign streams 37 // Methods to help QPDF copy foreign streams
38 qpdf_offset_t getOffset() const; 38 qpdf_offset_t getOffset() const;
39 size_t getLength() const; 39 size_t getLength() const;
40 - PointerHolder<Buffer> getStreamDataBuffer() const;  
41 - PointerHolder<QPDFObjectHandle::StreamDataProvider> 40 + std::shared_ptr<Buffer> getStreamDataBuffer() const;
  41 + std::shared_ptr<QPDFObjectHandle::StreamDataProvider>
42 getStreamDataProvider() const; 42 getStreamDataProvider() const;
43 43
44 // See comments in QPDFObjectHandle.hh for these methods. 44 // See comments in QPDFObjectHandle.hh for these methods.
@@ -49,18 +49,18 @@ class QPDF_Stream: public QPDFObject @@ -49,18 +49,18 @@ class QPDF_Stream: public QPDFObject
49 qpdf_stream_decode_level_e decode_level, 49 qpdf_stream_decode_level_e decode_level,
50 bool suppress_warnings, 50 bool suppress_warnings,
51 bool will_retry); 51 bool will_retry);
52 - PointerHolder<Buffer> getStreamData(qpdf_stream_decode_level_e);  
53 - PointerHolder<Buffer> getRawStreamData(); 52 + std::shared_ptr<Buffer> getStreamData(qpdf_stream_decode_level_e);
  53 + std::shared_ptr<Buffer> getRawStreamData();
54 void replaceStreamData( 54 void replaceStreamData(
55 - PointerHolder<Buffer> data, 55 + std::shared_ptr<Buffer> data,
56 QPDFObjectHandle const& filter, 56 QPDFObjectHandle const& filter,
57 QPDFObjectHandle const& decode_parms); 57 QPDFObjectHandle const& decode_parms);
58 void replaceStreamData( 58 void replaceStreamData(
59 - PointerHolder<QPDFObjectHandle::StreamDataProvider> provider, 59 + std::shared_ptr<QPDFObjectHandle::StreamDataProvider> provider,
60 QPDFObjectHandle const& filter, 60 QPDFObjectHandle const& filter,
61 QPDFObjectHandle const& decode_parms); 61 QPDFObjectHandle const& decode_parms);
62 void 62 void
63 - addTokenFilter(PointerHolder<QPDFObjectHandle::TokenFilter> token_filter); 63 + addTokenFilter(std::shared_ptr<QPDFObjectHandle::TokenFilter> token_filter);
64 64
65 void replaceDict(QPDFObjectHandle new_dict); 65 void replaceDict(QPDFObjectHandle new_dict);
66 66
@@ -101,9 +101,9 @@ class QPDF_Stream: public QPDFObject @@ -101,9 +101,9 @@ class QPDF_Stream: public QPDFObject
101 QPDFObjectHandle stream_dict; 101 QPDFObjectHandle stream_dict;
102 qpdf_offset_t offset; 102 qpdf_offset_t offset;
103 size_t length; 103 size_t length;
104 - PointerHolder<Buffer> stream_data;  
105 - PointerHolder<QPDFObjectHandle::StreamDataProvider> stream_provider;  
106 - std::vector<PointerHolder<QPDFObjectHandle::TokenFilter>> token_filters; 104 + std::shared_ptr<Buffer> stream_data;
  105 + std::shared_ptr<QPDFObjectHandle::StreamDataProvider> stream_provider;
  106 + std::vector<std::shared_ptr<QPDFObjectHandle::TokenFilter>> token_filters;
107 }; 107 };
108 108
109 #endif // QPDF_STREAM_HH 109 #endif // QPDF_STREAM_HH