1  /*************************************************************************
2   *
3   * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4   *
5   * Copyright 2000, 2010 Oracle and/or its affiliates.
6   *
7   * OpenOffice.org - a multi-platform office productivity suite
8   *
9   * This file is part of OpenOffice.org.
10   *
11   * OpenOffice.org is free software: you can redistribute it and/or modify
12   * it under the terms of the GNU Lesser General Public License version 3
13   * only, as published by the Free Software Foundation.
14   *
15   * OpenOffice.org is distributed in the hope that it will be useful,
16   * but WITHOUT ANY WARRANTY; without even the implied warranty of
17   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18   * GNU Lesser General Public License version 3 for more details
19   * (a copy is included in the LICENSE file that accompanied this code).
20   *
21   * You should have received a copy of the GNU Lesser General Public License
22   * version 3 along with OpenOffice.org.  If not, see
23   * <http://www.openoffice.org/license.html>
24   * for a copy of the LGPLv3 License.
25   *
26   ************************************************************************/
27  #include "unotools/unotoolsdllapi.h"
28  
29  #ifndef _UNOTOOLS_COLLATORWRAPPER_HXX
30  #define _UNOTOOLS_COLLATORWRAPPER_HXX
31  
32  #ifndef _COM_SUN_STAR_UTIL_XCOLLATOR_HPP_
33  #include <com/sun/star/i18n/XCollator.hpp>
34  #endif
35  
36  namespace com { namespace sun { namespace star { namespace lang {
37  		class XMultiServiceFactory;
38  }}}}
39  
40  class UNOTOOLS_DLLPUBLIC CollatorWrapper
41  {
42  	private:
43  
44  		::com::sun::star::uno::Reference<
45  				::com::sun::star::lang::XMultiServiceFactory
46  			> mxServiceFactory;
47  
48  		::com::sun::star::uno::Reference<
49  				::com::sun::star::i18n::XCollator
50  			> mxInternationalCollator;
51  
52  	public:
53  
54      	CollatorWrapper (
55  				const ::com::sun::star::uno::Reference<
56  					::com::sun::star::lang::XMultiServiceFactory > &xServiceFactoryIn);
57  
58      	~CollatorWrapper();
59  
60      	sal_Int32
61  		compareSubstring (
62  				const ::rtl::OUString& s1, sal_Int32 off1, sal_Int32 len1,
63                  const ::rtl::OUString& s2, sal_Int32 off2, sal_Int32 len2) const;
64  
65     		sal_Int32
66  		compareString (
67                  const ::rtl::OUString& s1, const ::rtl::OUString& s2) const;
68  
69      	::com::sun::star::uno::Sequence< ::rtl::OUString >
70  		listCollatorAlgorithms (
71                  const ::com::sun::star::lang::Locale& rLocale) const;
72  
73      	::com::sun::star::uno::Sequence< sal_Int32 >
74  		listCollatorOptions (
75                  const ::rtl::OUString& rAlgorithm) const;
76  
77      	sal_Int32
78  		loadDefaultCollator (
79  				const ::com::sun::star::lang::Locale& rLocale, sal_Int32 nOption);
80  
81      	sal_Int32
82  		loadCollatorAlgorithm (
83  				const ::rtl::OUString& rAlgorithm,
84  				const ::com::sun::star::lang::Locale& rLocale, sal_Int32 nOption);
85  
86      	void
87  		loadCollatorAlgorithmWithEndUserOption (
88  				const ::rtl::OUString& rAlgorithm,
89  				const ::com::sun::star::lang::Locale& rLocale,
90  				const ::com::sun::star::uno::Sequence< sal_Int32 >& rOption);
91  
92  	protected:
93  
94  		CollatorWrapper();
95  };
96  
97  #endif /* _UNOTOOLS_COLLATORWRAPPER_HXX */
98