Commit 00b5997901cd5d292b43d95e0338415d8b9653a2

Authored by m-holger
1 parent 39bc2eb4

In QPDFParser access qpdf::Tokenizer directly

Remove remaining QPDFTokenizer private methods.
Remove QPDFTokenizer privileged access to Tokenizer.
include/qpdf/QPDFTokenizer.hh
@@ -206,23 +206,6 @@ class QPDFTokenizer @@ -206,23 +206,6 @@ class QPDFTokenizer
206 private: 206 private:
207 friend class QPDFParser; 207 friend class QPDFParser;
208 208
209 - // Read a token from an input source. Context describes the context in which the token is being  
210 - // read and is used in the exception thrown if there is an error. After a token is read, the  
211 - // position of the input source returned by input->tell() points to just after the token, and  
212 - // the input source's "last offset" as returned by input->getLastOffset() points to the  
213 - // beginning of the token. Returns false if the token is bad or if scanning produced an error  
214 - // message for any reason.  
215 -  
216 - bool nextToken(InputSource& input, std::string const& context, size_t max_len = 0);  
217 -  
218 - // The following methods are only valid after nextToken has been called and until another  
219 - // QPDFTokenizer method is called. They allow the results of calling nextToken to be accessed  
220 - // without creating a Token, thus avoiding copying information that may not be needed.  
221 - inline token_type_e getType() const noexcept;  
222 - inline std::string const& getValue() const noexcept;  
223 - inline std::string const& getRawValue() const noexcept;  
224 - inline std::string const& getErrorMessage() const noexcept;  
225 -  
226 QPDFTokenizer(QPDFTokenizer const&) = delete; 209 QPDFTokenizer(QPDFTokenizer const&) = delete;
227 QPDFTokenizer& operator=(QPDFTokenizer const&) = delete; 210 QPDFTokenizer& operator=(QPDFTokenizer const&) = delete;
228 211
libqpdf/QPDFTokenizer.cc
@@ -936,7 +936,13 @@ Tokenizer::getToken(Token& token, bool& unread_char, char& ch) @@ -936,7 +936,13 @@ Tokenizer::getToken(Token& token, bool& unread_char, char& ch)
936 bool 936 bool
937 QPDFTokenizer::betweenTokens() 937 QPDFTokenizer::betweenTokens()
938 { 938 {
939 - return m->before_token; 939 + return m->betweenTokens();
  940 +}
  941 +
  942 +bool
  943 +Tokenizer::betweenTokens()
  944 +{
  945 + return before_token;
940 } 946 }
941 947
942 QPDFTokenizer::Token 948 QPDFTokenizer::Token
@@ -986,12 +992,6 @@ Tokenizer::readToken( @@ -986,12 +992,6 @@ Tokenizer::readToken(
986 } 992 }
987 993
988 bool 994 bool
989 -QPDFTokenizer::nextToken(InputSource& input, std::string const& context, size_t max_len)  
990 -{  
991 - return m->nextToken(input, context, max_len);  
992 -}  
993 -  
994 -bool  
995 Tokenizer::nextToken(InputSource& input, std::string const& context, size_t max_len) 995 Tokenizer::nextToken(InputSource& input, std::string const& context, size_t max_len)
996 { 996 {
997 if (this->state != st_inline_image) { 997 if (this->state != st_inline_image) {
libqpdf/qpdf/QPDFParser.hh
@@ -3,6 +3,7 @@ @@ -3,6 +3,7 @@
3 3
4 #include <qpdf/QPDFObjectHandle_private.hh> 4 #include <qpdf/QPDFObjectHandle_private.hh>
5 #include <qpdf/QPDFObject_private.hh> 5 #include <qpdf/QPDFObject_private.hh>
  6 +#include <qpdf/QPDFTokenizer_private.hh>
6 7
7 #include <memory> 8 #include <memory>
8 #include <string> 9 #include <string>
@@ -20,7 +21,7 @@ class QPDFParser @@ -20,7 +21,7 @@ class QPDFParser
20 bool parse_pdf) : 21 bool parse_pdf) :
21 input(input), 22 input(input),
22 object_description(object_description), 23 object_description(object_description),
23 - tokenizer(tokenizer), 24 + tokenizer(*tokenizer.m),
24 decrypter(decrypter), 25 decrypter(decrypter),
25 context(context), 26 context(context),
26 description( 27 description(
@@ -75,7 +76,7 @@ class QPDFParser @@ -75,7 +76,7 @@ class QPDFParser
75 void setDescription(std::shared_ptr<QPDFObject>& obj, qpdf_offset_t parsed_offset); 76 void setDescription(std::shared_ptr<QPDFObject>& obj, qpdf_offset_t parsed_offset);
76 InputSource& input; 77 InputSource& input;
77 std::string const& object_description; 78 std::string const& object_description;
78 - QPDFTokenizer& tokenizer; 79 + qpdf::Tokenizer& tokenizer;
79 QPDFObjectHandle::StringDecrypter* decrypter; 80 QPDFObjectHandle::StringDecrypter* decrypter;
80 QPDF* context; 81 QPDF* context;
81 std::shared_ptr<QPDFObject::Description> description; 82 std::shared_ptr<QPDFObject::Description> description;
libqpdf/qpdf/QPDFTokenizer_private.hh
@@ -8,10 +8,10 @@ namespace qpdf @@ -8,10 +8,10 @@ namespace qpdf
8 8
9 class Tokenizer 9 class Tokenizer
10 { 10 {
11 - friend class ::QPDFTokenizer;  
12 -  
13 public: 11 public:
14 Tokenizer(); 12 Tokenizer();
  13 + Tokenizer(Tokenizer const&) = delete;
  14 + Tokenizer& operator=(Tokenizer const&) = delete;
15 15
16 // Methods to support QPDFTokenizer. See QPDFTokenizer.hh for detail. Some of these are used 16 // Methods to support QPDFTokenizer. See QPDFTokenizer.hh for detail. Some of these are used
17 // by Tokenizer internally but are not accessed directly by the rest of qpdf. 17 // by Tokenizer internally but are not accessed directly by the rest of qpdf.
@@ -20,14 +20,13 @@ namespace qpdf @@ -20,14 +20,13 @@ namespace qpdf
20 void includeIgnorable(); 20 void includeIgnorable();
21 void presentCharacter(char ch); 21 void presentCharacter(char ch);
22 void presentEOF(); 22 void presentEOF();
  23 + bool betweenTokens();
23 24
24 // If a token is available, return true and initialize token with the token, unread_char 25 // If a token is available, return true and initialize token with the token, unread_char
25 // with whether or not we have to unread the last character, and if unread_char, ch with the 26 // with whether or not we have to unread the last character, and if unread_char, ch with the
26 // character to unread. 27 // character to unread.
27 bool getToken(QPDFTokenizer::Token& token, bool& unread_char, char& ch); 28 bool getToken(QPDFTokenizer::Token& token, bool& unread_char, char& ch);
28 29
29 - // Pull mode:  
30 -  
31 // Read a token from an input source. Context describes the context in which the token is 30 // Read a token from an input source. Context describes the context in which the token is
32 // being read and is used in the exception thrown if there is an error. After a token is 31 // being read and is used in the exception thrown if there is an error. After a token is
33 // read, the position of the input source returned by input->tell() points to just after the 32 // read, the position of the input source returned by input->tell() points to just after the
@@ -55,7 +54,6 @@ namespace qpdf @@ -55,7 +54,6 @@ namespace qpdf
55 54
56 void expectInlineImage(InputSource& input); 55 void expectInlineImage(InputSource& input);
57 56
58 - private:  
59 // Read a token from an input source. Context describes the context in which the token is 57 // Read a token from an input source. Context describes the context in which the token is
60 // being read and is used in the exception thrown if there is an error. After a token is 58 // being read and is used in the exception thrown if there is an error. After a token is
61 // read, the position of the input source returned by input->tell() points to just after the 59 // read, the position of the input source returned by input->tell() points to just after the
@@ -73,9 +71,7 @@ namespace qpdf @@ -73,9 +71,7 @@ namespace qpdf
73 inline std::string const& getRawValue() const; 71 inline std::string const& getRawValue() const;
74 inline std::string const& getErrorMessage() const; 72 inline std::string const& getErrorMessage() const;
75 73
76 - Tokenizer(Tokenizer const&) = delete;  
77 - Tokenizer& operator=(Tokenizer const&) = delete;  
78 - 74 + private:
79 bool isSpace(char); 75 bool isSpace(char);
80 bool isDelimiter(char); 76 bool isDelimiter(char);
81 void findEI(InputSource& input); 77 void findEI(InputSource& input);
@@ -179,25 +175,4 @@ namespace qpdf @@ -179,25 +175,4 @@ namespace qpdf
179 175
180 } // namespace qpdf 176 } // namespace qpdf
181 177
182 -inline QPDFTokenizer::token_type_e  
183 -QPDFTokenizer::getType() const noexcept  
184 -{  
185 - return m->type;  
186 -}  
187 -inline std::string const&  
188 -QPDFTokenizer::getValue() const noexcept  
189 -{  
190 - return (m->type == tt_name || m->type == tt_string) ? m->val : m->raw_val;  
191 -}  
192 -inline std::string const&  
193 -QPDFTokenizer::getRawValue() const noexcept  
194 -{  
195 - return m->raw_val;  
196 -}  
197 -inline std::string const&  
198 -QPDFTokenizer::getErrorMessage() const noexcept  
199 -{  
200 - return m->error_message;  
201 -}  
202 -  
203 #endif // QPDFTOKENIZER_PRIVATE_HH 178 #endif // QPDFTOKENIZER_PRIVATE_HH