summaryrefslogtreecommitdiff
path: root/writerfilter/source/rtftok/rtflookahead.hxx
diff options
context:
space:
mode:
authorMiklos Vajna <vmiklos@suse.cz>2013-07-05 17:38:12 +0200
committerMiklos Vajna <vmiklos@suse.cz>2013-07-05 18:11:07 +0200
commit05f0859afba779ce28d24e3195d8266d616259d1 (patch)
treee9ce2928912360e1d77ec9a1cbeb0f8e82f996eb /writerfilter/source/rtftok/rtflookahead.hxx
parent26bc5a20b39df07abce37ccf8717221ffe3d8373 (diff)
writerfilter: add RTFLookahead to be able to look ahead during import
Change-Id: I1da765373c352c8a2aa486fe6210b16bf492728c
Diffstat (limited to 'writerfilter/source/rtftok/rtflookahead.hxx')
-rw-r--r--writerfilter/source/rtftok/rtflookahead.hxx56
1 files changed, 56 insertions, 0 deletions
diff --git a/writerfilter/source/rtftok/rtflookahead.hxx b/writerfilter/source/rtftok/rtflookahead.hxx
new file mode 100644
index 000000000000..958700edb27b
--- /dev/null
+++ b/writerfilter/source/rtftok/rtflookahead.hxx
@@ -0,0 +1,56 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#ifndef _RTFLOOKAHEAD_HXX_
+#define _RTFLOOKAHEAD_HXX_
+
+#include <rtflistener.hxx>
+#include <rtftokenizer.hxx>
+
+class SvStream;
+
+namespace writerfilter {
+ namespace rtftok {
+ /**
+ * This acts like an importer, but used for looking ahead, e.g. to
+ * determine if the current group contains a table, etc.
+ */
+ class RTFLookahead : public RTFListener
+ {
+ public:
+ RTFLookahead(SvStream& rStream, sal_Size nGroupStart);
+ virtual ~RTFLookahead();
+ virtual int dispatchDestination(RTFKeyword nKeyword);
+ virtual int dispatchFlag(RTFKeyword nKeyword);
+ virtual int dispatchSymbol(RTFKeyword nKeyword);
+ virtual int dispatchToggle(RTFKeyword nKeyword, bool bParam, int nParam);
+ virtual int dispatchValue(RTFKeyword nKeyword, int nParam);
+ virtual int resolveChars(char ch);
+ virtual int pushState();
+ virtual int popState();
+ virtual RTFDestinationState getDestinationState();
+ virtual void setDestinationState(RTFDestinationState nDestinationState);
+ virtual RTFInternalState getInternalState();
+ virtual void setInternalState(RTFInternalState nInternalState);
+ virtual bool getSkipUnknown();
+ virtual void setSkipUnknown(bool bSkipUnknown);
+ virtual void finishSubstream();
+ virtual bool isSubstream() const;
+ bool hasTable();
+ private:
+ boost::shared_ptr<RTFTokenizer> m_pTokenizer;
+ SvStream& m_rStream;
+ bool m_bHasTable;
+ };
+ } // namespace rtftok
+} // namespace writerfilter
+
+#endif // _RTFDOCUMENTIMPL_HXX_
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */