diff options
Diffstat (limited to 'writerfilter/source/rtftok/rtfdocumentimpl.hxx')
-rw-r--r-- | writerfilter/source/rtftok/rtfdocumentimpl.hxx | 31 |
1 files changed, 27 insertions, 4 deletions
diff --git a/writerfilter/source/rtftok/rtfdocumentimpl.hxx b/writerfilter/source/rtftok/rtfdocumentimpl.hxx index d1f261d9f486..393074a7acda 100644 --- a/writerfilter/source/rtftok/rtfdocumentimpl.hxx +++ b/writerfilter/source/rtftok/rtfdocumentimpl.hxx @@ -310,19 +310,42 @@ public: }; /// An RTF stack is similar to std::stack, except that it has an operator[]. -struct RTFStack : public std::deque<RTFParserState> +struct RTFStack { +private: + std::deque<RTFParserState> m_Impl; +public: RTFParserState& top() { - return back(); + if (m_Impl.empty()) + throw std::out_of_range("empty rtf state stack"); + return m_Impl.back(); } void pop() { - return pop_back(); + if (m_Impl.empty()) + throw std::out_of_range("empty rtf state stack"); + return m_Impl.pop_back(); } void push(RTFParserState const& rState) { - return push_back(rState); + return m_Impl.push_back(rState); + } + bool empty() const + { + return m_Impl.empty(); + } + size_t size() const + { + return m_Impl.size(); + } + const RTFParserState& operator[](size_t nIndex) const + { + return m_Impl[nIndex]; + } + RTFParserState& operator[](size_t nIndex) + { + return m_Impl[nIndex]; } }; |