Line data Source code
1 : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 : /*
3 : * This file is part of the LibreOffice project.
4 : *
5 : * This Source Code Form is subject to the terms of the Mozilla Public
6 : * License, v. 2.0. If a copy of the MPL was not distributed with this
7 : * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 : */
9 :
10 : #ifndef INCLUDED_WRITERFILTER_SOURCE_RTFTOK_RTFLOOKAHEAD_HXX
11 : #define INCLUDED_WRITERFILTER_SOURCE_RTFTOK_RTFLOOKAHEAD_HXX
12 :
13 : #include <memory>
14 : #include <rtflistener.hxx>
15 : #include <rtftokenizer.hxx>
16 :
17 : class SvStream;
18 :
19 : namespace writerfilter
20 : {
21 : namespace rtftok
22 : {
23 : /**
24 : * This acts like an importer, but used for looking ahead, e.g. to
25 : * determine if the current group contains a table, etc.
26 : */
27 : class RTFLookahead : public RTFListener
28 : {
29 : public:
30 : RTFLookahead(SvStream& rStream, sal_Size nGroupStart);
31 : virtual ~RTFLookahead();
32 : virtual RTFError dispatchDestination(RTFKeyword nKeyword) SAL_OVERRIDE;
33 : virtual RTFError dispatchFlag(RTFKeyword nKeyword) SAL_OVERRIDE;
34 : virtual RTFError dispatchSymbol(RTFKeyword nKeyword) SAL_OVERRIDE;
35 : virtual RTFError dispatchToggle(RTFKeyword nKeyword, bool bParam, int nParam) SAL_OVERRIDE;
36 : virtual RTFError dispatchValue(RTFKeyword nKeyword, int nParam) SAL_OVERRIDE;
37 : virtual RTFError resolveChars(char ch) SAL_OVERRIDE;
38 : virtual RTFError pushState() SAL_OVERRIDE;
39 : virtual RTFError popState() SAL_OVERRIDE;
40 : virtual Destination getDestination() SAL_OVERRIDE;
41 : virtual void setDestination(Destination eDestination) SAL_OVERRIDE;
42 : virtual RTFInternalState getInternalState() SAL_OVERRIDE;
43 : virtual void setInternalState(RTFInternalState nInternalState) SAL_OVERRIDE;
44 : virtual bool getSkipUnknown() SAL_OVERRIDE;
45 : virtual void setSkipUnknown(bool bSkipUnknown) SAL_OVERRIDE;
46 : virtual void finishSubstream() SAL_OVERRIDE;
47 : virtual bool isSubstream() const SAL_OVERRIDE;
48 8 : bool hasTable()
49 : {
50 8 : return m_bHasTable;
51 : }
52 : private:
53 : std::shared_ptr<RTFTokenizer> m_pTokenizer;
54 : SvStream& m_rStream;
55 : bool m_bHasTable;
56 : };
57 : } // namespace rtftok
58 : } // namespace writerfilter
59 :
60 : #endif // INCLUDED_WRITERFILTER_SOURCE_RTFTOK_RTFLOOKAHEAD_HXX
61 :
62 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|