diff options
author | Jay Berkenbilt <jberkenbilt@users.noreply.github.com> | 2023-02-18 23:49:18 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-02-18 23:49:18 +0100 |
commit | b3cfa1010f95514a13590266dd50677445f74309 (patch) | |
tree | 68ff8d71c63d27d59d05b1b0d8ed503319463a91 /include | |
parent | e4e03e9ac10d8ea0c1a8ef8c78f0103068928822 (diff) | |
parent | 07bb5c3dd6213af9c9a64e17ae2d457cf4fc7190 (diff) | |
download | qpdf-b3cfa1010f95514a13590266dd50677445f74309.tar.zst |
Merge pull request #902 from m-holger/od
Refactor creation of object descriptions
Diffstat (limited to 'include')
-rw-r--r-- | include/qpdf/QPDF.hh | 66 |
1 files changed, 1 insertions, 65 deletions
diff --git a/include/qpdf/QPDF.hh b/include/qpdf/QPDF.hh index d6b32fe9..54af0d17 100644 --- a/include/qpdf/QPDF.hh +++ b/include/qpdf/QPDF.hh @@ -1108,71 +1108,7 @@ class QPDF std::set<QPDFObjGen>::const_iterator iter; }; - class JSONReactor: public JSON::Reactor - { - public: - JSONReactor( - QPDF&, std::shared_ptr<InputSource> is, bool must_be_complete); - virtual ~JSONReactor() = default; - virtual void dictionaryStart() override; - virtual void arrayStart() override; - virtual void containerEnd(JSON const& value) override; - virtual void topLevelScalar() override; - virtual bool - dictionaryItem(std::string const& key, JSON const& value) override; - virtual bool arrayItem(JSON const& value) override; - - bool anyErrors() const; - - private: - enum state_e { - st_initial, - st_top, - st_qpdf, - st_qpdf_meta, - st_objects, - st_trailer, - st_object_top, - st_stream, - st_object, - st_ignore, - }; - - void containerStart(); - void nestedState(std::string const& key, JSON const& value, state_e); - void setObjectDescription(QPDFObjectHandle& oh, JSON const& value); - QPDFObjectHandle makeObject(JSON const& value); - void error(qpdf_offset_t offset, std::string const& message); - QPDFObjectHandle reserveObject(int obj, int gen); - void replaceObject( - QPDFObjectHandle to_replace, - QPDFObjectHandle replacement, - JSON const& value); - - QPDF& pdf; - std::shared_ptr<InputSource> is; - bool must_be_complete; - bool errors; - bool parse_error; - bool saw_qpdf; - bool saw_qpdf_meta; - bool saw_objects; - bool saw_json_version; - bool saw_pdf_version; - bool saw_trailer; - state_e state; - state_e next_state; - std::string cur_object; - bool saw_value; - bool saw_stream; - bool saw_dict; - bool saw_data; - bool saw_datafile; - bool this_stream_needs_data; - std::vector<state_e> state_stack; - std::vector<QPDFObjectHandle> object_stack; - std::set<QPDFObjGen> reserved; - }; + class JSONReactor; void parse(char const* password); void inParse(bool); |