mirror of https://github.com/qpdf/qpdf.git
Change QPDFParser::parse to use QPDFTokenizer::nextToken
This commit is contained in:
parent
b252e70cb6
commit
60538f1958
|
@ -81,15 +81,11 @@ QPDFParser::parse(bool& empty, bool content_stream)
|
||||||
object = nullptr;
|
object = nullptr;
|
||||||
set_offset = false;
|
set_offset = false;
|
||||||
|
|
||||||
QPDFTokenizer::Token token =
|
if (!tokenizer.nextToken(*input, object_description)) {
|
||||||
tokenizer.readToken(input, object_description, true);
|
warn(tokenizer.getErrorMessage());
|
||||||
std::string const& token_error_message = token.getErrorMessage();
|
|
||||||
if (!token_error_message.empty()) {
|
|
||||||
// Tokens other than tt_bad can still generate warnings.
|
|
||||||
warn(token_error_message);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (token.getType()) {
|
switch (tokenizer.getType()) {
|
||||||
case QPDFTokenizer::tt_eof:
|
case QPDFTokenizer::tt_eof:
|
||||||
if (!content_stream) {
|
if (!content_stream) {
|
||||||
QTC::TC("qpdf", "QPDFParser eof in parse");
|
QTC::TC("qpdf", "QPDFParser eof in parse");
|
||||||
|
@ -146,7 +142,7 @@ QPDFParser::parse(bool& empty, bool content_stream)
|
||||||
} else {
|
} else {
|
||||||
state = st_start;
|
state = st_start;
|
||||||
state_stack.push_back(
|
state_stack.push_back(
|
||||||
(token.getType() == QPDFTokenizer::tt_array_open)
|
(tokenizer.getType() == QPDFTokenizer::tt_array_open)
|
||||||
? st_array
|
? st_array
|
||||||
: st_dictionary);
|
: st_dictionary);
|
||||||
b_contents = false;
|
b_contents = false;
|
||||||
|
@ -155,7 +151,7 @@ QPDFParser::parse(bool& empty, bool content_stream)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case QPDFTokenizer::tt_bool:
|
case QPDFTokenizer::tt_bool:
|
||||||
object = QPDF_Bool::create((token.getValue() == "true"));
|
object = QPDF_Bool::create((tokenizer.getValue() == "true"));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case QPDFTokenizer::tt_null:
|
case QPDFTokenizer::tt_null:
|
||||||
|
@ -164,16 +160,16 @@ QPDFParser::parse(bool& empty, bool content_stream)
|
||||||
|
|
||||||
case QPDFTokenizer::tt_integer:
|
case QPDFTokenizer::tt_integer:
|
||||||
object = QPDF_Integer::create(
|
object = QPDF_Integer::create(
|
||||||
QUtil::string_to_ll(token.getValue().c_str()));
|
QUtil::string_to_ll(std::string(tokenizer.getValue()).c_str()));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case QPDFTokenizer::tt_real:
|
case QPDFTokenizer::tt_real:
|
||||||
object = QPDF_Real::create(token.getValue());
|
object = QPDF_Real::create(tokenizer.getValue());
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case QPDFTokenizer::tt_name:
|
case QPDFTokenizer::tt_name:
|
||||||
{
|
{
|
||||||
std::string name = token.getValue();
|
auto name = tokenizer.getValue();
|
||||||
object = QPDF_Name::create(name);
|
object = QPDF_Name::create(name);
|
||||||
|
|
||||||
if (name == "/Contents") {
|
if (name == "/Contents") {
|
||||||
|
@ -186,7 +182,7 @@ QPDFParser::parse(bool& empty, bool content_stream)
|
||||||
|
|
||||||
case QPDFTokenizer::tt_word:
|
case QPDFTokenizer::tt_word:
|
||||||
{
|
{
|
||||||
std::string const& value = token.getValue();
|
auto value = tokenizer.getValue();
|
||||||
auto size = olist.size();
|
auto size = olist.size();
|
||||||
if (content_stream) {
|
if (content_stream) {
|
||||||
object = QPDF_Operator::create(value);
|
object = QPDF_Operator::create(value);
|
||||||
|
@ -240,16 +236,19 @@ QPDFParser::parse(bool& empty, bool content_stream)
|
||||||
|
|
||||||
case QPDFTokenizer::tt_string:
|
case QPDFTokenizer::tt_string:
|
||||||
{
|
{
|
||||||
std::string val = token.getValue();
|
auto val = tokenizer.getValue();
|
||||||
if (decrypter) {
|
if (decrypter) {
|
||||||
if (b_contents) {
|
if (b_contents) {
|
||||||
frame.contents_string = val;
|
frame.contents_string = val;
|
||||||
frame.contents_offset = input->getLastOffset();
|
frame.contents_offset = input->getLastOffset();
|
||||||
b_contents = false;
|
b_contents = false;
|
||||||
}
|
}
|
||||||
decrypter->decryptString(val);
|
std::string s{val};
|
||||||
|
decrypter->decryptString(s);
|
||||||
|
object = QPDF_String::create(s);
|
||||||
|
} else {
|
||||||
|
object = QPDF_String::create(val);
|
||||||
}
|
}
|
||||||
object = QPDF_String::create(val);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Reference in New Issue