aboutsummaryrefslogtreecommitdiffstats
path: root/libqpdf/qpdf/QPDFParser.hh
diff options
context:
space:
mode:
Diffstat (limited to 'libqpdf/qpdf/QPDFParser.hh')
-rw-r--r--libqpdf/qpdf/QPDFParser.hh50
1 files changed, 50 insertions, 0 deletions
diff --git a/libqpdf/qpdf/QPDFParser.hh b/libqpdf/qpdf/QPDFParser.hh
new file mode 100644
index 00000000..e929c3f2
--- /dev/null
+++ b/libqpdf/qpdf/QPDFParser.hh
@@ -0,0 +1,50 @@
+#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
+ };
+
+ static void warn(QPDF*, QPDFExc const&);
+ void setParsedOffset(qpdf_offset_t offset);
+
+ std::shared_ptr<InputSource> input;
+ std::string const& object_description;
+ QPDFTokenizer& tokenizer;
+ QPDFObjectHandle::StringDecrypter* decrypter;
+ QPDF* context;
+};
+
+#endif // QPDFPARSER_HH