xref: /AOO41X/main/scaddins/source/datefunc/datefunc.hxx (revision f6a6b25f1885e86d6053da7fca75a43e7c94e309)
1*f6a6b25fSAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
3*f6a6b25fSAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
4*f6a6b25fSAndrew Rist  * or more contributor license agreements.  See the NOTICE file
5*f6a6b25fSAndrew Rist  * distributed with this work for additional information
6*f6a6b25fSAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
7*f6a6b25fSAndrew Rist  * to you under the Apache License, Version 2.0 (the
8*f6a6b25fSAndrew Rist  * "License"); you may not use this file except in compliance
9*f6a6b25fSAndrew Rist  * with the License.  You may obtain a copy of the License at
10cdf0e10cSrcweir  *
11*f6a6b25fSAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12cdf0e10cSrcweir  *
13*f6a6b25fSAndrew Rist  * Unless required by applicable law or agreed to in writing,
14*f6a6b25fSAndrew Rist  * software distributed under the License is distributed on an
15*f6a6b25fSAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*f6a6b25fSAndrew Rist  * KIND, either express or implied.  See the License for the
17*f6a6b25fSAndrew Rist  * specific language governing permissions and limitations
18*f6a6b25fSAndrew Rist  * under the License.
19cdf0e10cSrcweir  *
20*f6a6b25fSAndrew Rist  *************************************************************/
21*f6a6b25fSAndrew Rist 
22*f6a6b25fSAndrew Rist 
23cdf0e10cSrcweir 
24cdf0e10cSrcweir //------------------------------------------------------------------
25cdf0e10cSrcweir //
26cdf0e10cSrcweir // date functions add in
27cdf0e10cSrcweir //
28cdf0e10cSrcweir //------------------------------------------------------------------
29cdf0e10cSrcweir 
30cdf0e10cSrcweir #ifndef _SCA_DATEFUNC_HXX
31cdf0e10cSrcweir #define _SCA_DATEFUNC_HXX
32cdf0e10cSrcweir 
33cdf0e10cSrcweir #include <string.h>
34cdf0e10cSrcweir #include <com/sun/star/lang/XServiceName.hpp>
35cdf0e10cSrcweir #include <com/sun/star/lang/XServiceInfo.hpp>
36cdf0e10cSrcweir #include <com/sun/star/sheet/XAddIn.hpp>
37cdf0e10cSrcweir #include <com/sun/star/sheet/XCompatibilityNames.hpp>
38cdf0e10cSrcweir #include <com/sun/star/sheet/addin/XDateFunctions.hpp>
39cdf0e10cSrcweir #include <com/sun/star/sheet/addin/XMiscFunctions.hpp>
40cdf0e10cSrcweir #include <cppuhelper/implbase6.hxx>             // helper for implementations
41cdf0e10cSrcweir #include <tools/resid.hxx>
42cdf0e10cSrcweir #include <tools/rc.hxx>
43cdf0e10cSrcweir #include <tools/resary.hxx>
44cdf0e10cSrcweir 
45cdf0e10cSrcweir //------------------------------------------------------------------
46cdf0e10cSrcweir 
47cdf0e10cSrcweir class ScaList
48cdf0e10cSrcweir {
49cdf0e10cSrcweir private:
50cdf0e10cSrcweir     static const sal_uInt32     nStartSize;
51cdf0e10cSrcweir     static const sal_uInt32     nIncrSize;
52cdf0e10cSrcweir 
53cdf0e10cSrcweir     void**                      pData;          // pointer array
54cdf0e10cSrcweir     sal_uInt32                  nSize;          // array size
55cdf0e10cSrcweir     sal_uInt32                  nCount;         // next index to be inserted at
56cdf0e10cSrcweir     sal_uInt32                  nCurr;          // current pos for iterations
57cdf0e10cSrcweir 
58cdf0e10cSrcweir     void                        _Grow();
59cdf0e10cSrcweir     inline void                 Grow();
60cdf0e10cSrcweir 
61cdf0e10cSrcweir public:
62cdf0e10cSrcweir                                 ScaList();
63cdf0e10cSrcweir     virtual                     ~ScaList();
64cdf0e10cSrcweir 
Count() const65cdf0e10cSrcweir     inline sal_uInt32           Count() const       { return nCount; }
66cdf0e10cSrcweir 
GetObject(sal_uInt32 nIndex) const67cdf0e10cSrcweir     inline const void*          GetObject( sal_uInt32 nIndex ) const
68cdf0e10cSrcweir                                     { return (nIndex < nCount) ? pData[ nIndex ] : NULL; }
69cdf0e10cSrcweir 
First()70cdf0e10cSrcweir     inline void*                First() { return nCount ? pData[ nCurr = 0 ] : NULL; }
Next()71cdf0e10cSrcweir     inline void*                Next()  { return (nCurr + 1 < nCount) ? pData[ ++nCurr ] : NULL; }
72cdf0e10cSrcweir 
73cdf0e10cSrcweir     inline void                 Append( void* pNew );
74cdf0e10cSrcweir     void                        Insert( void* pNew, sal_uInt32 nIndex );
75cdf0e10cSrcweir };
76cdf0e10cSrcweir 
77cdf0e10cSrcweir 
Grow()78cdf0e10cSrcweir inline void ScaList::Grow()
79cdf0e10cSrcweir {
80cdf0e10cSrcweir     if( nCount >= nSize )
81cdf0e10cSrcweir 		_Grow();
82cdf0e10cSrcweir }
83cdf0e10cSrcweir 
Append(void * pNew)84cdf0e10cSrcweir inline void ScaList::Append( void* pNew )
85cdf0e10cSrcweir {
86cdf0e10cSrcweir 	Grow();
87cdf0e10cSrcweir     pData[ nCount++ ] = pNew;
88cdf0e10cSrcweir }
89cdf0e10cSrcweir 
90cdf0e10cSrcweir 
91cdf0e10cSrcweir //------------------------------------------------------------------
92cdf0e10cSrcweir 
93cdf0e10cSrcweir class ScaStringList : protected ScaList
94cdf0e10cSrcweir {
95cdf0e10cSrcweir public:
ScaStringList()96cdf0e10cSrcweir     inline                      ScaStringList() : ScaList() {};
97cdf0e10cSrcweir     virtual                     ~ScaStringList();
98cdf0e10cSrcweir 
99cdf0e10cSrcweir                                 using ScaList::Count;
100cdf0e10cSrcweir 
101cdf0e10cSrcweir     inline const ::rtl::OUString* Get( sal_uInt32 nIndex ) const;
102cdf0e10cSrcweir 
103cdf0e10cSrcweir     inline ::rtl::OUString*     First();
104cdf0e10cSrcweir     inline ::rtl::OUString*     Next();
105cdf0e10cSrcweir 
106cdf0e10cSrcweir     using ScaList::Append;
107cdf0e10cSrcweir     inline void                 Append( ::rtl::OUString* pNew );
108cdf0e10cSrcweir     inline void                 Append( const ::rtl::OUString& rNew );
109cdf0e10cSrcweir };
110cdf0e10cSrcweir 
111cdf0e10cSrcweir 
Get(sal_uInt32 nIndex) const112cdf0e10cSrcweir inline const ::rtl::OUString* ScaStringList::Get( sal_uInt32 nIndex ) const
113cdf0e10cSrcweir {
114cdf0e10cSrcweir     return static_cast< const ::rtl::OUString* >( ScaList::GetObject( nIndex ) );
115cdf0e10cSrcweir }
116cdf0e10cSrcweir 
First()117cdf0e10cSrcweir inline ::rtl::OUString* ScaStringList::First()
118cdf0e10cSrcweir {
119cdf0e10cSrcweir     return static_cast< ::rtl::OUString* >( ScaList::First() );
120cdf0e10cSrcweir }
121cdf0e10cSrcweir 
Next()122cdf0e10cSrcweir inline ::rtl::OUString* ScaStringList::Next()
123cdf0e10cSrcweir {
124cdf0e10cSrcweir     return static_cast< ::rtl::OUString* >( ScaList::Next() );
125cdf0e10cSrcweir }
126cdf0e10cSrcweir 
Append(::rtl::OUString * pNew)127cdf0e10cSrcweir inline void ScaStringList::Append( ::rtl::OUString* pNew )
128cdf0e10cSrcweir {
129cdf0e10cSrcweir     ScaList::Append( pNew );
130cdf0e10cSrcweir }
131cdf0e10cSrcweir 
Append(const::rtl::OUString & rNew)132cdf0e10cSrcweir inline void ScaStringList::Append( const ::rtl::OUString& rNew )
133cdf0e10cSrcweir {
134cdf0e10cSrcweir     ScaList::Append( new ::rtl::OUString( rNew ) );
135cdf0e10cSrcweir }
136cdf0e10cSrcweir 
137cdf0e10cSrcweir 
138cdf0e10cSrcweir //------------------------------------------------------------------
139cdf0e10cSrcweir 
140cdf0e10cSrcweir class ScaResId : public ResId
141cdf0e10cSrcweir {
142cdf0e10cSrcweir public:
143cdf0e10cSrcweir                                 ScaResId( sal_uInt16 nResId, ResMgr& rResMgr );
144cdf0e10cSrcweir };
145cdf0e10cSrcweir 
146cdf0e10cSrcweir 
147cdf0e10cSrcweir //------------------------------------------------------------------
148cdf0e10cSrcweir 
149cdf0e10cSrcweir class ScaResStringLoader : public Resource
150cdf0e10cSrcweir {
151cdf0e10cSrcweir private:
152cdf0e10cSrcweir     String                      aStr;
153cdf0e10cSrcweir 
154cdf0e10cSrcweir public:
155cdf0e10cSrcweir     inline                      ScaResStringLoader( sal_uInt16 nResId, sal_uInt16 nStrId, ResMgr& rResMgr );
156cdf0e10cSrcweir 
GetString() const157cdf0e10cSrcweir     inline const String&        GetString() const   { return aStr; }
158cdf0e10cSrcweir 
159cdf0e10cSrcweir };
160cdf0e10cSrcweir 
161cdf0e10cSrcweir 
ScaResStringLoader(sal_uInt16 nResId,sal_uInt16 nStrId,ResMgr & rResMgr)162cdf0e10cSrcweir inline ScaResStringLoader::ScaResStringLoader( sal_uInt16 nResId, sal_uInt16 nStrId, ResMgr& rResMgr ) :
163cdf0e10cSrcweir     Resource( ScaResId( nResId, rResMgr ) ),
164cdf0e10cSrcweir     aStr( ScaResId( nStrId, rResMgr ) )
165cdf0e10cSrcweir {
166cdf0e10cSrcweir     FreeResource();
167cdf0e10cSrcweir }
168cdf0e10cSrcweir 
169cdf0e10cSrcweir 
170cdf0e10cSrcweir //------------------------------------------------------------------
171cdf0e10cSrcweir 
172cdf0e10cSrcweir class ScaResStringArrLoader : public Resource
173cdf0e10cSrcweir {
174cdf0e10cSrcweir private:
175cdf0e10cSrcweir     ResStringArray              aStrArray;
176cdf0e10cSrcweir 
177cdf0e10cSrcweir public:
178cdf0e10cSrcweir     inline                      ScaResStringArrLoader( sal_uInt16 nResId, sal_uInt16 nArrayId, ResMgr& rResMgr );
179cdf0e10cSrcweir 
GetStringArray() const180cdf0e10cSrcweir     inline const ResStringArray& GetStringArray() const { return aStrArray; }
181cdf0e10cSrcweir };
182cdf0e10cSrcweir 
183cdf0e10cSrcweir 
184cdf0e10cSrcweir 
ScaResStringArrLoader(sal_uInt16 nResId,sal_uInt16 nArrayId,ResMgr & rResMgr)185cdf0e10cSrcweir inline ScaResStringArrLoader::ScaResStringArrLoader( sal_uInt16 nResId, sal_uInt16 nArrayId, ResMgr& rResMgr ) :
186cdf0e10cSrcweir     Resource( ScaResId( nResId, rResMgr ) ),
187cdf0e10cSrcweir     aStrArray( ScaResId( nArrayId, rResMgr ) )
188cdf0e10cSrcweir {
189cdf0e10cSrcweir     FreeResource();
190cdf0e10cSrcweir }
191cdf0e10cSrcweir 
192cdf0e10cSrcweir 
193cdf0e10cSrcweir //------------------------------------------------------------------
194cdf0e10cSrcweir 
195cdf0e10cSrcweir class ScaResPublisher : public Resource
196cdf0e10cSrcweir {
197cdf0e10cSrcweir public:
ScaResPublisher(const ScaResId & rResId)198cdf0e10cSrcweir     inline                      ScaResPublisher( const ScaResId& rResId ) : Resource( rResId ) {}
199cdf0e10cSrcweir 
IsAvailableRes(const ResId & rResId) const200cdf0e10cSrcweir     inline sal_Bool             IsAvailableRes( const ResId& rResId ) const
201cdf0e10cSrcweir                                     { return Resource::IsAvailableRes( rResId ); }
FreeResource()202cdf0e10cSrcweir     inline void                 FreeResource()
203cdf0e10cSrcweir                                     { Resource::FreeResource(); }
204cdf0e10cSrcweir };
205cdf0e10cSrcweir 
206cdf0e10cSrcweir 
207cdf0e10cSrcweir //------------------------------------------------------------------
208cdf0e10cSrcweir 
209cdf0e10cSrcweir class ScaFuncRes : public Resource
210cdf0e10cSrcweir {
211cdf0e10cSrcweir public:
212cdf0e10cSrcweir                                 ScaFuncRes( ResId& rResId, ResMgr& rResMgr, sal_uInt16 nIndex, ::rtl::OUString& rRet );
213cdf0e10cSrcweir };
214cdf0e10cSrcweir 
215cdf0e10cSrcweir 
216cdf0e10cSrcweir //------------------------------------------------------------------
217cdf0e10cSrcweir 
218cdf0e10cSrcweir enum ScaCategory
219cdf0e10cSrcweir {
220cdf0e10cSrcweir     ScaCat_AddIn,
221cdf0e10cSrcweir     ScaCat_DateTime,
222cdf0e10cSrcweir     ScaCat_Text,
223cdf0e10cSrcweir     ScaCat_Finance,
224cdf0e10cSrcweir     ScaCat_Inf,
225cdf0e10cSrcweir     ScaCat_Math,
226cdf0e10cSrcweir     ScaCat_Tech
227cdf0e10cSrcweir };
228cdf0e10cSrcweir 
229cdf0e10cSrcweir struct ScaFuncDataBase
230cdf0e10cSrcweir {
231cdf0e10cSrcweir     const sal_Char*             pIntName;           // internal name (get***)
232cdf0e10cSrcweir     sal_uInt16                  nUINameID;          // resource ID to UI name
233cdf0e10cSrcweir     sal_uInt16                  nDescrID;           // resource ID to description, parameter names and ~ description
234cdf0e10cSrcweir     sal_uInt16                  nCompListID;        // resource ID to list of valid names
235cdf0e10cSrcweir     sal_uInt16                  nParamCount;        // number of named / described parameters
236cdf0e10cSrcweir     ScaCategory                 eCat;               // function category
237cdf0e10cSrcweir     sal_Bool                    bDouble;            // name already exist in Calc
238cdf0e10cSrcweir     sal_Bool                    bWithOpt;           // first parameter is internal
239cdf0e10cSrcweir };
240cdf0e10cSrcweir 
241cdf0e10cSrcweir class ScaFuncData
242cdf0e10cSrcweir {
243cdf0e10cSrcweir private:
244cdf0e10cSrcweir     ::rtl::OUString             aIntName;           // internal name (get***)
245cdf0e10cSrcweir     sal_uInt16                  nUINameID;          // resource ID to UI name
246cdf0e10cSrcweir     sal_uInt16                  nDescrID;           // leads also to parameter descriptions!
247cdf0e10cSrcweir     sal_uInt16                  nCompListID;        // resource ID to list of valid names
248cdf0e10cSrcweir     sal_uInt16                  nParamCount;        // num of parameters
249cdf0e10cSrcweir     ScaStringList               aCompList;          // list of all valid names
250cdf0e10cSrcweir     ScaCategory                 eCat;               // function category
251cdf0e10cSrcweir     sal_Bool                    bDouble;            // name already exist in Calc
252cdf0e10cSrcweir     sal_Bool                    bWithOpt;           // first parameter is internal
253cdf0e10cSrcweir 
254cdf0e10cSrcweir public:
255cdf0e10cSrcweir                                 ScaFuncData( const ScaFuncDataBase& rBaseData, ResMgr& rRscMgr );
256cdf0e10cSrcweir     virtual                     ~ScaFuncData();
257cdf0e10cSrcweir 
GetUINameID() const258cdf0e10cSrcweir     inline sal_uInt16           GetUINameID() const     { return nUINameID; }
GetDescrID() const259cdf0e10cSrcweir     inline sal_uInt16           GetDescrID() const      { return nDescrID; }
GetCategory() const260cdf0e10cSrcweir     inline ScaCategory          GetCategory() const     { return eCat; }
IsDouble() const261cdf0e10cSrcweir     inline sal_Bool             IsDouble() const        { return bDouble; }
HasIntParam() const262cdf0e10cSrcweir     inline sal_Bool             HasIntParam() const     { return bWithOpt; }
263cdf0e10cSrcweir 
264cdf0e10cSrcweir     sal_uInt16                  GetStrIndex( sal_uInt16 nParam ) const;
Is(const::rtl::OUString & rCompare) const265cdf0e10cSrcweir     inline sal_Bool             Is( const ::rtl::OUString& rCompare ) const
266cdf0e10cSrcweir                                                     { return aIntName == rCompare; }
267cdf0e10cSrcweir 
GetCompNameList() const268cdf0e10cSrcweir     inline const ScaStringList& GetCompNameList() const { return aCompList; }
269cdf0e10cSrcweir };
270cdf0e10cSrcweir 
271cdf0e10cSrcweir 
272cdf0e10cSrcweir //------------------------------------------------------------------
273cdf0e10cSrcweir 
274cdf0e10cSrcweir class ScaFuncDataList : private ScaList
275cdf0e10cSrcweir {
276cdf0e10cSrcweir     ::rtl::OUString             aLastName;
277cdf0e10cSrcweir     sal_uInt32                  nLast;
278cdf0e10cSrcweir 
279cdf0e10cSrcweir public:
280cdf0e10cSrcweir                                 ScaFuncDataList( ResMgr& rResMgr );
281cdf0e10cSrcweir     virtual                     ~ScaFuncDataList();
282cdf0e10cSrcweir 
283cdf0e10cSrcweir                                 using ScaList::Count;
284cdf0e10cSrcweir 
285cdf0e10cSrcweir     inline const ScaFuncData*   Get( sal_uInt32 nIndex ) const;
286cdf0e10cSrcweir     const ScaFuncData*          Get( const ::rtl::OUString& rProgrammaticName ) const;
287cdf0e10cSrcweir     inline ScaFuncData*         First();
288cdf0e10cSrcweir     inline ScaFuncData*         Next();
289cdf0e10cSrcweir 
290cdf0e10cSrcweir     using ScaList::Append;
Append(ScaFuncData * pNew)291cdf0e10cSrcweir     inline void                 Append( ScaFuncData* pNew ) { ScaList::Append( pNew ); }
292cdf0e10cSrcweir };
293cdf0e10cSrcweir 
294cdf0e10cSrcweir 
Get(sal_uInt32 nIndex) const295cdf0e10cSrcweir inline const ScaFuncData* ScaFuncDataList::Get( sal_uInt32 nIndex ) const
296cdf0e10cSrcweir {
297cdf0e10cSrcweir     return static_cast< const ScaFuncData* >( ScaList::GetObject( nIndex ) );
298cdf0e10cSrcweir }
299cdf0e10cSrcweir 
First()300cdf0e10cSrcweir inline ScaFuncData* ScaFuncDataList::First()
301cdf0e10cSrcweir {
302cdf0e10cSrcweir     return static_cast< ScaFuncData* >( ScaList::First() );
303cdf0e10cSrcweir }
304cdf0e10cSrcweir 
Next()305cdf0e10cSrcweir inline ScaFuncData* ScaFuncDataList::Next()
306cdf0e10cSrcweir {
307cdf0e10cSrcweir     return static_cast< ScaFuncData* >( ScaList::Next() );
308cdf0e10cSrcweir }
309cdf0e10cSrcweir 
310cdf0e10cSrcweir 
311cdf0e10cSrcweir //------------------------------------------------------------------
312cdf0e10cSrcweir //------------------------------------------------------------------
313cdf0e10cSrcweir 
314cdf0e10cSrcweir ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL DateFunctionAddIn_CreateInstance(
315cdf0e10cSrcweir     const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& );
316cdf0e10cSrcweir 
317cdf0e10cSrcweir 
318cdf0e10cSrcweir // THE AddIn class for date functions
319cdf0e10cSrcweir 
320cdf0e10cSrcweir class ScaDateAddIn : public ::cppu::WeakImplHelper6<
321cdf0e10cSrcweir                                 ::com::sun::star::sheet::XAddIn,
322cdf0e10cSrcweir                                 ::com::sun::star::sheet::XCompatibilityNames,
323cdf0e10cSrcweir                                 ::com::sun::star::sheet::addin::XDateFunctions,
324cdf0e10cSrcweir                                 ::com::sun::star::sheet::addin::XMiscFunctions,
325cdf0e10cSrcweir                                 ::com::sun::star::lang::XServiceName,
326cdf0e10cSrcweir                                 ::com::sun::star::lang::XServiceInfo >
327cdf0e10cSrcweir {
328cdf0e10cSrcweir private:
329cdf0e10cSrcweir     ::com::sun::star::lang::Locale  aFuncLoc;
330cdf0e10cSrcweir     ::com::sun::star::lang::Locale* pDefLocales;
331cdf0e10cSrcweir 	ResMgr*						pResMgr;
332cdf0e10cSrcweir     ScaFuncDataList*            pFuncDataList;
333cdf0e10cSrcweir 
334cdf0e10cSrcweir 
335cdf0e10cSrcweir     void                        InitDefLocales();
336cdf0e10cSrcweir     const ::com::sun::star::lang::Locale& GetLocale( sal_uInt32 nIndex );
337cdf0e10cSrcweir     ResMgr&                     GetResMgr() throw( ::com::sun::star::uno::RuntimeException );
338cdf0e10cSrcweir     void                        InitData();
339cdf0e10cSrcweir 
340cdf0e10cSrcweir     ::rtl::OUString             GetDisplFuncStr( sal_uInt16 nResId ) throw( ::com::sun::star::uno::RuntimeException );
341cdf0e10cSrcweir     ::rtl::OUString             GetFuncDescrStr( sal_uInt16 nResId, sal_uInt16 nStrIndex ) throw( ::com::sun::star::uno::RuntimeException );
342cdf0e10cSrcweir 
343cdf0e10cSrcweir public:
344cdf0e10cSrcweir                                 ScaDateAddIn();
345cdf0e10cSrcweir     virtual                     ~ScaDateAddIn();
346cdf0e10cSrcweir 
347cdf0e10cSrcweir     static ::rtl::OUString      getImplementationName_Static();
348cdf0e10cSrcweir     static ::com::sun::star::uno::Sequence< ::rtl::OUString > getSupportedServiceNames_Static();
349cdf0e10cSrcweir 
350cdf0e10cSrcweir                                 // XAddIn
351cdf0e10cSrcweir     virtual ::rtl::OUString SAL_CALL getProgrammaticFuntionName( const ::rtl::OUString& aDisplayName ) throw( ::com::sun::star::uno::RuntimeException );
352cdf0e10cSrcweir     virtual ::rtl::OUString SAL_CALL getDisplayFunctionName( const ::rtl::OUString& aProgrammaticName ) throw( ::com::sun::star::uno::RuntimeException );
353cdf0e10cSrcweir     virtual ::rtl::OUString SAL_CALL getFunctionDescription( const ::rtl::OUString& aProgrammaticName ) throw( ::com::sun::star::uno::RuntimeException );
354cdf0e10cSrcweir     virtual ::rtl::OUString SAL_CALL getDisplayArgumentName( const ::rtl::OUString& aProgrammaticName, sal_Int32 nArgument ) throw( ::com::sun::star::uno::RuntimeException );
355cdf0e10cSrcweir     virtual ::rtl::OUString SAL_CALL getArgumentDescription( const ::rtl::OUString& aProgrammaticName, sal_Int32 nArgument ) throw( ::com::sun::star::uno::RuntimeException );
356cdf0e10cSrcweir     virtual ::rtl::OUString SAL_CALL getProgrammaticCategoryName( const ::rtl::OUString& aProgrammaticName ) throw( ::com::sun::star::uno::RuntimeException );
357cdf0e10cSrcweir     virtual ::rtl::OUString SAL_CALL getDisplayCategoryName( const ::rtl::OUString& aProgrammaticName ) throw( ::com::sun::star::uno::RuntimeException );
358cdf0e10cSrcweir 
359cdf0e10cSrcweir                                 // XCompatibilityNames
360cdf0e10cSrcweir     virtual ::com::sun::star::uno::Sequence< ::com::sun::star::sheet::LocalizedName > SAL_CALL getCompatibilityNames( const ::rtl::OUString& aProgrammaticName ) throw( ::com::sun::star::uno::RuntimeException );
361cdf0e10cSrcweir 
362cdf0e10cSrcweir                                 // XLocalizable
363cdf0e10cSrcweir     virtual void SAL_CALL       setLocale( const ::com::sun::star::lang::Locale& eLocale ) throw( ::com::sun::star::uno::RuntimeException );
364cdf0e10cSrcweir     virtual ::com::sun::star::lang::Locale SAL_CALL getLocale() throw( ::com::sun::star::uno::RuntimeException );
365cdf0e10cSrcweir 
366cdf0e10cSrcweir                                 // XServiceName
367cdf0e10cSrcweir     virtual ::rtl::OUString SAL_CALL getServiceName() throw( ::com::sun::star::uno::RuntimeException );
368cdf0e10cSrcweir 
369cdf0e10cSrcweir                                 // XServiceInfo
370cdf0e10cSrcweir     virtual ::rtl::OUString SAL_CALL getImplementationName() throw( ::com::sun::star::uno::RuntimeException );
371cdf0e10cSrcweir     virtual sal_Bool SAL_CALL   supportsService( const ::rtl::OUString& ServiceName ) throw( ::com::sun::star::uno::RuntimeException );
372cdf0e10cSrcweir     virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() throw( ::com::sun::star::uno::RuntimeException );
373cdf0e10cSrcweir 
374cdf0e10cSrcweir     //  methods from own interfaces start here
375cdf0e10cSrcweir 
376cdf0e10cSrcweir                                 // XDateFunctions
377cdf0e10cSrcweir     virtual sal_Int32 SAL_CALL  getDiffWeeks(
378cdf0e10cSrcweir                                     const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& xOptions,
379cdf0e10cSrcweir                                     sal_Int32 nEndDate, sal_Int32 nStartDate,
380cdf0e10cSrcweir                                     sal_Int32 nMode )
381cdf0e10cSrcweir                                 throw( ::com::sun::star::uno::RuntimeException, ::com::sun::star::lang::IllegalArgumentException );
382cdf0e10cSrcweir 
383cdf0e10cSrcweir     virtual sal_Int32 SAL_CALL  getDiffMonths(
384cdf0e10cSrcweir                                     const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& xOptions,
385cdf0e10cSrcweir                                     sal_Int32 nEndDate, sal_Int32 nStartDate,
386cdf0e10cSrcweir                                     sal_Int32 nMode )
387cdf0e10cSrcweir                                 throw( ::com::sun::star::uno::RuntimeException, ::com::sun::star::lang::IllegalArgumentException );
388cdf0e10cSrcweir 
389cdf0e10cSrcweir     virtual sal_Int32 SAL_CALL  getDiffYears(
390cdf0e10cSrcweir                                     const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& xOptions,
391cdf0e10cSrcweir                                     sal_Int32 nEndDate, sal_Int32 nStartDate,
392cdf0e10cSrcweir                                     sal_Int32 nMode )
393cdf0e10cSrcweir                                 throw( ::com::sun::star::uno::RuntimeException, ::com::sun::star::lang::IllegalArgumentException );
394cdf0e10cSrcweir 
395cdf0e10cSrcweir     virtual sal_Int32 SAL_CALL  getIsLeapYear(
396cdf0e10cSrcweir                                     const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& xOptions,
397cdf0e10cSrcweir                                     sal_Int32 nDate )
398cdf0e10cSrcweir                                 throw( ::com::sun::star::uno::RuntimeException, ::com::sun::star::lang::IllegalArgumentException );
399cdf0e10cSrcweir 
400cdf0e10cSrcweir     virtual sal_Int32 SAL_CALL  getDaysInMonth(
401cdf0e10cSrcweir                                     const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& xOptions,
402cdf0e10cSrcweir                                     sal_Int32 nDate )
403cdf0e10cSrcweir                                 throw( ::com::sun::star::uno::RuntimeException, ::com::sun::star::lang::IllegalArgumentException );
404cdf0e10cSrcweir 
405cdf0e10cSrcweir     virtual sal_Int32 SAL_CALL  getDaysInYear(
406cdf0e10cSrcweir                                     const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& xOptions,
407cdf0e10cSrcweir                                     sal_Int32 nDate )
408cdf0e10cSrcweir                                 throw( ::com::sun::star::uno::RuntimeException, ::com::sun::star::lang::IllegalArgumentException );
409cdf0e10cSrcweir 
410cdf0e10cSrcweir     virtual sal_Int32 SAL_CALL  getWeeksInYear(
411cdf0e10cSrcweir                                     const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& xOptions,
412cdf0e10cSrcweir                                     sal_Int32 nDate )
413cdf0e10cSrcweir                                 throw( ::com::sun::star::uno::RuntimeException, ::com::sun::star::lang::IllegalArgumentException );
414cdf0e10cSrcweir 
415cdf0e10cSrcweir                                 // XMiscFunctions
416cdf0e10cSrcweir     virtual ::rtl::OUString SAL_CALL getRot13(
417cdf0e10cSrcweir                                     const ::rtl::OUString& aSrcText )
418cdf0e10cSrcweir                                 throw( ::com::sun::star::uno::RuntimeException, ::com::sun::star::lang::IllegalArgumentException );
419cdf0e10cSrcweir };
420cdf0e10cSrcweir 
421cdf0e10cSrcweir //------------------------------------------------------------------
422cdf0e10cSrcweir 
423cdf0e10cSrcweir #endif  // _SCA_DATEFUNC_HXX
424cdf0e10cSrcweir 
425