Commit dc5c8b82eb79d0ae5b92600a52162b9c0e352d6c

Authored by m-holger
1 parent 7108cd7b

Remove FileInputSource::Members

include/qpdf/FileInputSource.hh
... ... @@ -58,24 +58,9 @@ class QPDF_DLL_CLASS FileInputSource: public InputSource
58 58 FileInputSource(FileInputSource const&) = delete;
59 59 FileInputSource& operator=(FileInputSource const&) = delete;
60 60  
61   - class QPDF_DLL_PRIVATE Members
62   - {
63   - friend class FileInputSource;
64   -
65   - public:
66   - QPDF_DLL
67   - ~Members();
68   -
69   - private:
70   - Members(bool close_file);
71   - Members(Members const&) = delete;
72   -
73   - bool close_file;
74   - std::string filename;
75   - FILE* file;
76   - };
77   -
78   - std::shared_ptr<Members> m;
  61 + bool close_file;
  62 + std::string filename;
  63 + FILE* file;
79 64 };
80 65  
81 66 #endif // QPDF_FILEINPUTSOURCE_HH
... ...
libqpdf/FileInputSource.cc
... ... @@ -5,60 +5,52 @@
5 5 #include <algorithm>
6 6 #include <string.h>
7 7  
8   -FileInputSource::Members::Members(bool close_file) :
9   - close_file(close_file),
10   - file(nullptr)
11   -{
12   -}
13   -
14   -FileInputSource::Members::~Members()
15   -{
16   - if (this->file && this->close_file) {
17   - fclose(this->file);
18   - }
19   -}
20   -
21 8 FileInputSource::FileInputSource() :
22   - m(new Members(false))
  9 + close_file(false),
  10 + file(nullptr)
23 11 {
24 12 }
25 13  
26 14 FileInputSource::FileInputSource(char const* filename) :
27   - m(new Members(false))
  15 + close_file(true),
  16 + filename(filename),
  17 + file(QUtil::safe_fopen(filename, "rb"))
28 18 {
29   - setFilename(filename);
30 19 }
31 20  
32 21 FileInputSource::FileInputSource(
33 22 char const* description, FILE* filep, bool close_file) :
34   - m(new Members(false))
  23 + close_file(close_file),
  24 + filename(description),
  25 + file(filep)
  26 +{
  27 +}
  28 +
  29 +FileInputSource::~FileInputSource()
35 30 {
36   - setFile(description, filep, close_file);
  31 + // Must be explicit and not inline -- see QPDF_DLL_CLASS in
  32 + // README-maintainer
  33 + if (this->file && this->close_file) {
  34 + fclose(this->file);
  35 + }
37 36 }
38 37  
39 38 void
40 39 FileInputSource::setFilename(char const* filename)
41 40 {
42   - this->m = std::shared_ptr<Members>(new Members(true));
43   - this->m->filename = filename;
44   - this->m->file = QUtil::safe_fopen(filename, "rb");
  41 + this->close_file = true;
  42 + this->filename = filename;
  43 + this->file = QUtil::safe_fopen(filename, "rb");
45 44 }
46 45  
47 46 void
48 47 FileInputSource::setFile(char const* description, FILE* filep, bool close_file)
49 48 {
50   - this->m = std::shared_ptr<Members>(new Members(close_file));
51   - this->m->filename = description;
52   - this->m->file = filep;
  49 + this->filename = description;
  50 + this->file = filep;
53 51 this->seek(0, SEEK_SET);
54 52 }
55 53  
56   -FileInputSource::~FileInputSource()
57   -{
58   - // Must be explicit and not inline -- see QPDF_DLL_CLASS in
59   - // README-maintainer
60   -}
61   -
62 54 qpdf_offset_t
63 55 FileInputSource::findAndSkipNextEOL()
64 56 {
... ... @@ -66,7 +58,7 @@ FileInputSource::findAndSkipNextEOL()
66 58 bool done = false;
67 59 char buf[10240];
68 60 while (!done) {
69   - qpdf_offset_t cur_offset = QUtil::tell(this->m->file);
  61 + qpdf_offset_t cur_offset = QUtil::tell(this->file);
70 62 size_t len = this->read(buf, sizeof(buf));
71 63 if (len == 0) {
72 64 done = true;
... ... @@ -98,41 +90,41 @@ FileInputSource::findAndSkipNextEOL()
98 90 std::string const&
99 91 FileInputSource::getName() const
100 92 {
101   - return this->m->filename;
  93 + return this->filename;
102 94 }
103 95  
104 96 qpdf_offset_t
105 97 FileInputSource::tell()
106 98 {
107   - return QUtil::tell(this->m->file);
  99 + return QUtil::tell(this->file);
108 100 }
109 101  
110 102 void
111 103 FileInputSource::seek(qpdf_offset_t offset, int whence)
112 104 {
113 105 QUtil::os_wrapper(
114   - (std::string("seek to ") + this->m->filename + ", offset " +
  106 + (std::string("seek to ") + this->filename + ", offset " +
115 107 QUtil::int_to_string(offset) + " (" + QUtil::int_to_string(whence) +
116 108 ")"),
117   - QUtil::seek(this->m->file, offset, whence));
  109 + QUtil::seek(this->file, offset, whence));
118 110 }
119 111  
120 112 void
121 113 FileInputSource::rewind()
122 114 {
123   - ::rewind(this->m->file);
  115 + ::rewind(this->file);
124 116 }
125 117  
126 118 size_t
127 119 FileInputSource::read(char* buffer, size_t length)
128 120 {
129 121 this->last_offset = this->tell();
130   - size_t len = fread(buffer, 1, length, this->m->file);
  122 + size_t len = fread(buffer, 1, length, this->file);
131 123 if (len == 0) {
132   - if (ferror(this->m->file)) {
  124 + if (ferror(this->file)) {
133 125 throw QPDFExc(
134 126 qpdf_e_system,
135   - this->m->filename,
  127 + this->filename,
136 128 "",
137 129 this->last_offset,
138 130 (std::string("read ") + QUtil::uint_to_string(length) +
... ... @@ -149,6 +141,6 @@ void
149 141 FileInputSource::unreadCh(char ch)
150 142 {
151 143 QUtil::os_wrapper(
152   - this->m->filename + ": unread character",
153   - ungetc(static_cast<unsigned char>(ch), this->m->file));
  144 + this->filename + ": unread character",
  145 + ungetc(static_cast<unsigned char>(ch), this->file));
154 146 }
... ...