diff options
Diffstat (limited to 'libqpdf/qpdf/QPDFParser.hh')
-rw-r--r-- | libqpdf/qpdf/QPDFParser.hh | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/libqpdf/qpdf/QPDFParser.hh b/libqpdf/qpdf/QPDFParser.hh new file mode 100644 index 00000000..b83dbb1c --- /dev/null +++ b/libqpdf/qpdf/QPDFParser.hh @@ -0,0 +1,53 @@ +#ifndef QPDFPARSER_HH +#define QPDFPARSER_HH + +#include <qpdf/QPDFObjectHandle.hh> + +#include <memory> +#include <string> + +class QPDFParser +{ + public: + QPDFParser() = delete; + QPDFParser( + std::shared_ptr<InputSource> input, + std::string const& object_description, + QPDFTokenizer& tokenizer, + QPDFObjectHandle::StringDecrypter* decrypter, + QPDF* context) : + input(input), + object_description(object_description), + tokenizer(tokenizer), + decrypter(decrypter), + context(context) + { + } + virtual ~QPDFParser() = default; + + QPDFObjectHandle parse(bool& empty, bool content_stream); + + private: + enum parser_state_e { + st_top, + st_start, + st_stop, + st_eof, + st_dictionary, + st_array + }; + + void warn(qpdf_offset_t offset, std::string const& msg) const; + void warn(std::string const& msg) const; + static void warn(QPDF*, QPDFExc const&); + void setParsedOffset(qpdf_offset_t offset); + void + setDescriptionFromInput(QPDFObjectHandle oh, qpdf_offset_t offset) const; + std::shared_ptr<InputSource> input; + std::string const& object_description; + QPDFTokenizer& tokenizer; + QPDFObjectHandle::StringDecrypter* decrypter; + QPDF* context; +}; + +#endif // QPDFPARSER_HH |