xref: /aoo4110/main/oox/inc/oox/core/fastparser.hxx (revision b1cdbd2c)
1*b1cdbd2cSJim Jagielski /**************************************************************
2*b1cdbd2cSJim Jagielski  *
3*b1cdbd2cSJim Jagielski  * Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski  * or more contributor license agreements.  See the NOTICE file
5*b1cdbd2cSJim Jagielski  * distributed with this work for additional information
6*b1cdbd2cSJim Jagielski  * regarding copyright ownership.  The ASF licenses this file
7*b1cdbd2cSJim Jagielski  * to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski  * "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski  * with the License.  You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski  *
11*b1cdbd2cSJim Jagielski  *   http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski  *
13*b1cdbd2cSJim Jagielski  * Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski  * software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski  * KIND, either express or implied.  See the License for the
17*b1cdbd2cSJim Jagielski  * specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski  * under the License.
19*b1cdbd2cSJim Jagielski  *
20*b1cdbd2cSJim Jagielski  *************************************************************/
21*b1cdbd2cSJim Jagielski 
22*b1cdbd2cSJim Jagielski 
23*b1cdbd2cSJim Jagielski 
24*b1cdbd2cSJim Jagielski #ifndef OOX_CORE_FASTPARSER_HXX
25*b1cdbd2cSJim Jagielski #define OOX_CORE_FASTPARSER_HXX
26*b1cdbd2cSJim Jagielski 
27*b1cdbd2cSJim Jagielski #include <com/sun/star/uno/XComponentContext.hpp>
28*b1cdbd2cSJim Jagielski #include <com/sun/star/xml/sax/XFastParser.hpp>
29*b1cdbd2cSJim Jagielski 
30*b1cdbd2cSJim Jagielski namespace oox {
31*b1cdbd2cSJim Jagielski     struct NamespaceMap;
32*b1cdbd2cSJim Jagielski     class StorageBase;
33*b1cdbd2cSJim Jagielski }
34*b1cdbd2cSJim Jagielski 
35*b1cdbd2cSJim Jagielski namespace oox {
36*b1cdbd2cSJim Jagielski namespace core {
37*b1cdbd2cSJim Jagielski 
38*b1cdbd2cSJim Jagielski // ============================================================================
39*b1cdbd2cSJim Jagielski 
40*b1cdbd2cSJim Jagielski /** Wrapper for a fast SAX parser that works on automatically generated OOXML
41*b1cdbd2cSJim Jagielski     token and namespace identifiers.
42*b1cdbd2cSJim Jagielski  */
43*b1cdbd2cSJim Jagielski class FastParser
44*b1cdbd2cSJim Jagielski {
45*b1cdbd2cSJim Jagielski public:
46*b1cdbd2cSJim Jagielski     explicit            FastParser(
47*b1cdbd2cSJim Jagielski                             const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext >& rxContext )
48*b1cdbd2cSJim Jagielski                             throw( ::com::sun::star::uno::RuntimeException );
49*b1cdbd2cSJim Jagielski 
50*b1cdbd2cSJim Jagielski     virtual             ~FastParser();
51*b1cdbd2cSJim Jagielski 
52*b1cdbd2cSJim Jagielski     /** Registers an OOXML namespace at the parser. */
53*b1cdbd2cSJim Jagielski     void                registerNamespace( sal_Int32 nNamespaceId )
54*b1cdbd2cSJim Jagielski     		                throw( ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException );
55*b1cdbd2cSJim Jagielski 
56*b1cdbd2cSJim Jagielski     /** Sets the passed document handler that will receive the SAX parser events. */
57*b1cdbd2cSJim Jagielski     void                setDocumentHandler(
58*b1cdbd2cSJim Jagielski                             const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XFastDocumentHandler >& rxDocHandler )
59*b1cdbd2cSJim Jagielski     		                throw( ::com::sun::star::uno::RuntimeException );
60*b1cdbd2cSJim Jagielski 
61*b1cdbd2cSJim Jagielski     /** Parses the passed SAX input source.
62*b1cdbd2cSJim Jagielski         @param bCloseStream  True = closes the stream in the input source after parsing. */
63*b1cdbd2cSJim Jagielski     void                parseStream( const ::com::sun::star::xml::sax::InputSource& rInputSource, bool bCloseStream = false )
64*b1cdbd2cSJim Jagielski                             throw( ::com::sun::star::xml::sax::SAXException, ::com::sun::star::io::IOException, ::com::sun::star::uno::RuntimeException );
65*b1cdbd2cSJim Jagielski 
66*b1cdbd2cSJim Jagielski     /** Parses the passed input stream.
67*b1cdbd2cSJim Jagielski         @param bCloseStream  True = closes the passed stream after parsing. */
68*b1cdbd2cSJim Jagielski     void                parseStream(
69*b1cdbd2cSJim Jagielski                             const ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream >& rxInStream,
70*b1cdbd2cSJim Jagielski                             const ::rtl::OUString& rStreamName, bool bCloseStream = false )
71*b1cdbd2cSJim Jagielski                             throw( ::com::sun::star::xml::sax::SAXException, ::com::sun::star::io::IOException, ::com::sun::star::uno::RuntimeException );
72*b1cdbd2cSJim Jagielski 
73*b1cdbd2cSJim Jagielski     /** Parses a stream from the passed storage with the specified name.
74*b1cdbd2cSJim Jagielski         @param bCloseStream  True = closes the stream after parsing. */
75*b1cdbd2cSJim Jagielski     void                parseStream( StorageBase& rStorage, const ::rtl::OUString& rStreamName, bool bCloseStream = false )
76*b1cdbd2cSJim Jagielski                             throw( ::com::sun::star::xml::sax::SAXException, ::com::sun::star::io::IOException, ::com::sun::star::uno::RuntimeException );
77*b1cdbd2cSJim Jagielski 
78*b1cdbd2cSJim Jagielski private:
79*b1cdbd2cSJim Jagielski     ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XFastParser >
80*b1cdbd2cSJim Jagielski                         mxParser;
81*b1cdbd2cSJim Jagielski     const NamespaceMap& mrNamespaceMap;
82*b1cdbd2cSJim Jagielski };
83*b1cdbd2cSJim Jagielski 
84*b1cdbd2cSJim Jagielski // ============================================================================
85*b1cdbd2cSJim Jagielski 
86*b1cdbd2cSJim Jagielski } // namespace core
87*b1cdbd2cSJim Jagielski } // namespace oox
88*b1cdbd2cSJim Jagielski 
89*b1cdbd2cSJim Jagielski #endif
90