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  * This file incorporates work covered by the following license notice:
10  *
11  *   Licensed to the Apache Software Foundation (ASF) under one or more
12  *   contributor license agreements. See the NOTICE file distributed
13  *   with this work for additional information regarding copyright
14  *   ownership. The ASF licenses this file to you under the Apache
15  *   License, Version 2.0 (the "License"); you may not use this file
16  *   except in compliance with the License. You may obtain a copy of
17  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
18  */
19 #ifndef INCLUDED_SW_INC_UNOCOLL_HXX
20 #define INCLUDED_SW_INC_UNOCOLL_HXX
21 #include <limits.h>
22 #include "flyenum.hxx"
23 #include <com/sun/star/lang/XServiceInfo.hpp>
24 #include <com/sun/star/container/XEnumerationAccess.hpp>
25 #include <com/sun/star/container/XNameAccess.hpp>
26 #include <com/sun/star/container/XIndexAccess.hpp>
27 #include <cppuhelper/implbase.hxx>
28 #include "swdllapi.h"
29 
30 class SwDoc;
31 class SwFrameFormat;
32 namespace com{namespace sun {namespace star {namespace text
33 {
34     class XTextTable;
35     class XTextSection;
36     class XFootnote;
37 }}}}
38 class SwFormatFootnote;
39 class SwSectionFormat;
40 struct SvEventDescription;
41 
42 const SvEventDescription* sw_GetSupportedMacroItems();
43 
44 class SwUnoCollection
45 {
46     SwDoc*      m_pDoc;
47     bool    m_bObjectValid;
48 
49     public:
SwUnoCollection(SwDoc * p)50         SwUnoCollection(SwDoc* p) :
51             m_pDoc(p),
52             m_bObjectValid(true){}
53 
~SwUnoCollection()54     virtual ~SwUnoCollection() {}
55 
56     virtual void                Invalidate();
IsValid() const57     bool                        IsValid() const {return m_bObjectValid;}
58 
GetDoc() const59     SwDoc*          GetDoc() const {return m_pDoc;}
60 };
61 
62 /** entries in this enum are mapped in an array in unocoll.cxx */
63 enum class SwServiceType {
64     TypeTextTable                   =   0,
65     TypeTextFrame                   =   1,
66     TypeGraphic                     =   2,
67     TypeOLE                         =   3,
68     TypeBookmark                    =   4,
69     TypeFootnote                    =   5,
70     TypeEndnote                     =   6,
71     TypeIndexMark                   =   7,
72     TypeIndex                       =   8,
73     ReferenceMark                   =   9,
74     StyleCharacter                  =  10,
75     StyleParagraph                  =  11,
76     StyleFrame                      =  12,
77     StylePage                       =  13,
78     StyleNumbering                  =  14,
79     ContentIndexMark                =  15,
80     ContentIndex                    =  16,
81     UserIndexMark                   =  17,
82     UserIndex                       =  18,
83     TextSection                     =  19,
84     FieldTypeDateTime               =  20,
85     FieldTypeUser                   =  21,
86     FieldTypeSetExp                 =  22,
87     FieldTypeGetExp                 =  23,
88     FieldTypeFileName               =  24,
89     FieldTypePageNum                =  25,
90     FieldTypeAuthor                 =  26,
91     FieldTypeChapter                =  27,
92     FieldTypeDummy0                 =  28,
93     FieldTypeGetReference           =  29,
94     FieldTypeConditionedText        =  30,
95     FieldTypeAnnotation             =  31,
96     FieldTypeInput                  =  32,
97     FieldTypeMacro                  =  33,
98     FieldTypeDDE                    =  34,
99     FieldTypeHiddenPara             =  35,
100     FieldTypeDocInfo                =  36,
101     FieldTypeTemplateName           =  37,
102     FieldTypeUserExt                =  38,
103     FieldTypeRefPageSet             =  39,
104     FieldTypeRefPageGet             =  40,
105     FieldTypeJumpEdit               =  41,
106     FieldTypeScript                 =  42,
107     FieldTypeDatabaseNextSet        =  43,
108     FieldTypeDatabaseNumSet         =  44,
109     FieldTypeDatabaseSetNum         =  45,
110     FieldTypeDatabase               =  46,
111     FieldTypeDatabaseName           =  47,
112     FieldTypeTableFormula           =  48,
113     FieldTypePageCount              =  49,
114     FieldTypeParagraphCount         =  50,
115     FieldTypeWordCount              =  51,
116     FieldTypeCharacterCount         =  52,
117     FieldTypeTableCount             =  53,
118     FieldTypeGraphicObjectCount     =  54,
119     FieldTypeEmbeddedObjectCount    =  55,
120     FieldTypeDocInfoChangeAuthor    =  56,
121     FieldTypeDocInfoChangeDateTime  =  57,
122     FieldTypeDocInfoEditTime        =  58,
123     FieldTypeDocInfoDescription     =  59,
124     FieldTypeDocInfoCreateAuthor    =  60,
125     FieldTypeDocInfoCreateDateTime  =  61,
126     FieldTypeDummy1                 =  63,
127     FieldTypeDummy2                 =  64,
128     FieldTypeDummy3                 =  65,
129     FieldTypeDocInfoCustom          =  66,
130     FieldTypeDocInfoPrintAuthor     =  67,
131     FieldTypeDocInfoPrintDateTime   =  68,
132     FieldTypeDocInfoKeywords        =  69,
133     FieldTypeDocInfoSubject         =  70,
134     FieldTypeDocInfoTitle           =  71,
135     FieldTypeDocInfoRevision        =  72,
136     FieldTypeBibliography           =  73,
137     FieldTypeCombinedCharacters     =  74,
138     FieldTypeDropdown               =  75,
139     FieldTypeMetafield              =  76,
140     FieldTypeDummy4                 =  77,
141     FieldTypeDummy5                 =  78,
142     FieldTypeDummy6                 =  79,
143     FieldTypeDummy7                 =  80,
144     FieldMasterUser                 =  81,
145     FieldMasterDDE                  =  82,
146     FieldMasterSetExp               =  83,
147     FieldMasterDatabase             =  84,
148     FieldMasterBibliography         =  85,
149     FieldMasterDummy2               =  86,
150     FieldMasterDummy3               =  87,
151     FieldMasterDummy4               =  88,
152     FieldMasterDummy5               =  89,
153     IndexIllustrations              =  90,
154     IndexObjects                    =  91,
155     IndexTables                     =  92,
156     IndexBibliography               =  93,
157     Paragraph                       =  94,
158     FieldTypeInputUser              =  95,
159     FieldTypeHiddenText             =  96,
160     StyleConditionalParagraph       =  97,
161     NumberingRules                  =  98,
162     TextColumns                     =  99,
163     IndexHeaderSection              = 100,
164     Defaults                        = 101,
165     IMapRectangle                   = 102,
166     IMapCircle                      = 103,
167     IMapPolygon                     = 104,
168     TypeTextGraphic                 = 105,
169     Chart2DataProvider              = 106,
170     TypeFieldMark                   = 107,
171     TypeFormFieldMark               = 108,
172     TypeMeta                        = 109,
173     VbaObjectProvider               = 110,
174     VbaCodeNameProvider             = 111,
175     VbaProjectNameProvider          = 112,
176     VbaGlobals                      = 113,
177     StyleTable                      = 114,
178     StyleCell                       = 115,
179 
180     Invalid                         = USHRT_MAX
181 };
182 
183 // case-corrected versions of service-names (see #i67811)
184 
185 #define CSS_TEXT_TEXTFIELD_DATE_TIME                    "com.sun.star.text.textfield.DateTime"
186 #define CSS_TEXT_TEXTFIELD_USER                         "com.sun.star.text.textfield.User"
187 #define CSS_TEXT_TEXTFIELD_SET_EXPRESSION               "com.sun.star.text.textfield.SetExpression"
188 #define CSS_TEXT_TEXTFIELD_GET_EXPRESSION               "com.sun.star.text.textfield.GetExpression"
189 #define CSS_TEXT_TEXTFIELD_FILE_NAME                    "com.sun.star.text.textfield.FileName"
190 #define CSS_TEXT_TEXTFIELD_PAGE_NUMBER                  "com.sun.star.text.textfield.PageNumber"
191 #define CSS_TEXT_TEXTFIELD_AUTHOR                       "com.sun.star.text.textfield.Author"
192 #define CSS_TEXT_TEXTFIELD_CHAPTER                      "com.sun.star.text.textfield.Chapter"
193 #define CSS_TEXT_TEXTFIELD_GET_REFERENCE                "com.sun.star.text.textfield.GetReference"
194 #define CSS_TEXT_TEXTFIELD_CONDITIONAL_TEXT             "com.sun.star.text.textfield.ConditionalText"
195 #define CSS_TEXT_TEXTFIELD_ANNOTATION                   "com.sun.star.text.textfield.Annotation"
196 #define CSS_TEXT_TEXTFIELD_INPUT                        "com.sun.star.text.textfield.Input"
197 #define CSS_TEXT_TEXTFIELD_MACRO                        "com.sun.star.text.textfield.Macro"
198 #define CSS_TEXT_TEXTFIELD_DDE                          "com.sun.star.text.textfield.DDE"
199 #define CSS_TEXT_TEXTFIELD_HIDDEN_PARAGRAPH             "com.sun.star.text.textfield.HiddenParagraph"
200 #define CSS_TEXT_TEXTFIELD_TEMPLATE_NAME                "com.sun.star.text.textfield.TemplateName"
201 #define CSS_TEXT_TEXTFIELD_EXTENDED_USER                "com.sun.star.text.textfield.ExtendedUser"
202 #define CSS_TEXT_TEXTFIELD_REFERENCE_PAGE_SET           "com.sun.star.text.textfield.ReferencePageSet"
203 #define CSS_TEXT_TEXTFIELD_REFERENCE_PAGE_GET           "com.sun.star.text.textfield.ReferencePageGet"
204 #define CSS_TEXT_TEXTFIELD_JUMP_EDIT                    "com.sun.star.text.textfield.JumpEdit"
205 #define CSS_TEXT_TEXTFIELD_SCRIPT                       "com.sun.star.text.textfield.Script"
206 #define CSS_TEXT_TEXTFIELD_DATABASE_NEXT_SET            "com.sun.star.text.textfield.DatabaseNextSet"
207 #define CSS_TEXT_TEXTFIELD_DATABASE_NUMBER_OF_SET       "com.sun.star.text.textfield.DatabaseNumberOfSet"
208 #define CSS_TEXT_TEXTFIELD_DATABASE_SET_NUMBER          "com.sun.star.text.textfield.DatabaseSetNumber"
209 #define CSS_TEXT_TEXTFIELD_DATABASE                     "com.sun.star.text.textfield.Database"
210 #define CSS_TEXT_TEXTFIELD_DATABASE_NAME                "com.sun.star.text.textfield.DatabaseName"
211 #define CSS_TEXT_TEXTFIELD_TABLE_FORMULA                "com.sun.star.text.textfield.TableFormula"
212 #define CSS_TEXT_TEXTFIELD_PAGE_COUNT                   "com.sun.star.text.textfield.PageCount"
213 #define CSS_TEXT_TEXTFIELD_PARAGRAPH_COUNT              "com.sun.star.text.textfield.ParagraphCount"
214 #define CSS_TEXT_TEXTFIELD_WORD_COUNT                   "com.sun.star.text.textfield.WordCount"
215 #define CSS_TEXT_TEXTFIELD_CHARACTER_COUNT              "com.sun.star.text.textfield.CharacterCount"
216 #define CSS_TEXT_TEXTFIELD_TABLE_COUNT                  "com.sun.star.text.textfield.TableCount"
217 #define CSS_TEXT_TEXTFIELD_GRAPHIC_OBJECT_COUNT         "com.sun.star.text.textfield.GraphicObjectCount"
218 #define CSS_TEXT_TEXTFIELD_EMBEDDED_OBJECT_COUNT        "com.sun.star.text.textfield.EmbeddedObjectCount"
219 #define CSS_TEXT_TEXTFIELD_DOCINFO_CHANGE_AUTHOR        "com.sun.star.text.textfield.docinfo.ChangeAuthor"
220 #define CSS_TEXT_TEXTFIELD_DOCINFO_CHANGE_DATE_TIME     "com.sun.star.text.textfield.docinfo.ChangeDateTime"
221 #define CSS_TEXT_TEXTFIELD_DOCINFO_EDIT_TIME            "com.sun.star.text.textfield.docinfo.EditTime"
222 #define CSS_TEXT_TEXTFIELD_DOCINFO_DESCRIPTION          "com.sun.star.text.textfield.docinfo.Description"
223 #define CSS_TEXT_TEXTFIELD_DOCINFO_CREATE_AUTHOR        "com.sun.star.text.textfield.docinfo.CreateAuthor"
224 #define CSS_TEXT_TEXTFIELD_DOCINFO_CREATE_DATE_TIME     "com.sun.star.text.textfield.docinfo.CreateDateTime"
225 #define CSS_TEXT_TEXTFIELD_DOCINFO_PRINT_AUTHOR         "com.sun.star.text.textfield.docinfo.PrintAuthor"
226 #define CSS_TEXT_TEXTFIELD_DOCINFO_PRINT_DATE_TIME      "com.sun.star.text.textfield.docinfo.PrintDateTime"
227 #define CSS_TEXT_TEXTFIELD_DOCINFO_KEY_WORDS            "com.sun.star.text.textfield.docinfo.KeyWords"
228 #define CSS_TEXT_TEXTFIELD_DOCINFO_SUBJECT              "com.sun.star.text.textfield.docinfo.Subject"
229 #define CSS_TEXT_TEXTFIELD_DOCINFO_TITLE                "com.sun.star.text.textfield.docinfo.Title"
230 #define CSS_TEXT_TEXTFIELD_DOCINFO_REVISION             "com.sun.star.text.textfield.docinfo.Revision"
231 #define CSS_TEXT_TEXTFIELD_DOCINFO_CUSTOM               "com.sun.star.text.textfield.docinfo.Custom"
232 #define CSS_TEXT_TEXTFIELD_BIBLIOGRAPHY                 "com.sun.star.text.textfield.Bibliography"
233 #define CSS_TEXT_TEXTFIELD_COMBINED_CHARACTERS          "com.sun.star.text.textfield.CombinedCharacters"
234 #define CSS_TEXT_TEXTFIELD_DROP_DOWN                    "com.sun.star.text.textfield.DropDown"
235 #define CSS_TEXT_TEXTFIELD_INPUT_USER                   "com.sun.star.text.textfield.InputUser"
236 #define CSS_TEXT_TEXTFIELD_HIDDEN_TEXT                  "com.sun.star.text.textfield.HiddenText"
237 #define CSS_TEXT_FIELDMASTER_USER                       "com.sun.star.text.fieldmaster.User"
238 #define CSS_TEXT_FIELDMASTER_DDE                        "com.sun.star.text.fieldmaster.DDE"
239 #define CSS_TEXT_FIELDMASTER_SET_EXPRESSION             "com.sun.star.text.fieldmaster.SetExpression"
240 #define CSS_TEXT_FIELDMASTER_DATABASE                   "com.sun.star.text.fieldmaster.Database"
241 #define CSS_TEXT_FIELDMASTER_BIBLIOGRAPHY               "com.sun.star.text.fieldmaster.Bibliography"
242 
243 class SwXServiceProvider
244 {
245 public:
246     static OUString             GetProviderName(SwServiceType nObjectType);
247     static SwServiceType        GetProviderType(const OUString& rServiceName);
248     static css::uno::Reference< css::uno::XInterface >  MakeInstance(SwServiceType nObjectType, SwDoc & rDoc);
249     static css::uno::Sequence<OUString>   GetAllServiceNames();
250 
251 };
252 
253 typedef
254 cppu::WeakImplHelper
255 <
256     css::container::XNameAccess,
257     css::container::XIndexAccess,
258     css::lang::XServiceInfo
259 >
260 SwCollectionBaseClass;
261 class SW_DLLPUBLIC SwXTextTables final : public SwCollectionBaseClass,
262     public SwUnoCollection
263 {
264     virtual ~SwXTextTables() override;
265 public:
266     SwXTextTables(SwDoc* pDoc);
267 
268     //XIndexAccess
269     virtual sal_Int32 SAL_CALL getCount(  ) override;
270     virtual css::uno::Any SAL_CALL getByIndex(sal_Int32 nIndex) override;
271 
272     //XNameAccess
273     virtual css::uno::Any SAL_CALL getByName(const OUString& Name) override;
274     virtual css::uno::Sequence< OUString > SAL_CALL getElementNames() override;
275     virtual sal_Bool SAL_CALL hasByName(const OUString& Name) override;
276 
277     //XElementAccess
278     virtual css::uno::Type SAL_CALL getElementType(  ) override;
279     virtual sal_Bool SAL_CALL hasElements(  ) override;
280 
281     //XServiceInfo
282     virtual OUString SAL_CALL getImplementationName() override;
283     virtual sal_Bool SAL_CALL supportsService(const OUString& ServiceName) override;
284     virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override;
285 
286     static css::uno::Reference<css::text::XTextTable> GetObject(SwFrameFormat& rFormat);
287 };
288 
289 typedef
290 cppu::WeakImplHelper
291 <
292     css::container::XEnumerationAccess,
293     css::container::XNameAccess,
294     css::container::XIndexAccess,
295     css::lang::XServiceInfo
296 > SwXFramesBaseClass;
297 
298 class SwXFrames : public SwXFramesBaseClass,
299     public SwUnoCollection
300 {
301     const FlyCntType    m_eType;
302 protected:
303     virtual ~SwXFrames() override;
304 public:
305     SwXFrames(SwDoc* pDoc, FlyCntType eSet);
306 
307     //XEnumerationAccess
308     virtual css::uno::Reference< css::container::XEnumeration > SAL_CALL createEnumeration() override;
309 
310     //XIndexAccess
311     virtual sal_Int32 SAL_CALL getCount() override;
312     virtual css::uno::Any SAL_CALL getByIndex(sal_Int32 nIndex) override;
313 
314     //XNameAccess
315     virtual css::uno::Any SAL_CALL getByName(const OUString& Name) override;
316     virtual css::uno::Sequence< OUString > SAL_CALL getElementNames() override;
317     virtual sal_Bool SAL_CALL hasByName(const OUString& Name) override;
318 
319     //XElementAccess
320     virtual css::uno::Type SAL_CALL getElementType(  ) override;
321     virtual sal_Bool SAL_CALL hasElements(  ) override;
322 
323     //XServiceInfo
324     virtual OUString SAL_CALL getImplementationName() override;
325     virtual sal_Bool SAL_CALL supportsService(const OUString& ServiceName) override;
326     virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override;
327 };
328 
329 class SwXTextFrames final : public SwXFrames
330 {
331     virtual ~SwXTextFrames() override;
332 public:
333     SwXTextFrames(SwDoc* pDoc);
334 
335     //XServiceInfo
336     virtual OUString SAL_CALL getImplementationName() override;
337     virtual sal_Bool SAL_CALL supportsService(const OUString& ServiceName) override;
338     virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override;
339 
340 };
341 
342 class SwXTextGraphicObjects final : public SwXFrames
343 {
344     virtual ~SwXTextGraphicObjects() override;
345 public:
346         SwXTextGraphicObjects(SwDoc* pDoc);
347 
348     //XServiceInfo
349     virtual OUString SAL_CALL getImplementationName() override;
350     virtual sal_Bool SAL_CALL supportsService(const OUString& ServiceName) override;
351     virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override;
352 
353 };
354 
355 class SwXTextEmbeddedObjects final : public SwXFrames
356 {
357     virtual ~SwXTextEmbeddedObjects() override;
358 public:
359     SwXTextEmbeddedObjects(SwDoc* pDoc);
360 
361     //XServiceInfo
362     virtual OUString SAL_CALL getImplementationName() override;
363     virtual sal_Bool SAL_CALL supportsService(const OUString& ServiceName) override;
364     virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override;
365 
366 };
367 
368 class SwXTextSections final : public SwCollectionBaseClass,
369                         public SwUnoCollection
370 {
371     virtual ~SwXTextSections() override;
372 public:
373     SwXTextSections(SwDoc* pDoc);
374 
375     //XIndexAccess
376     virtual sal_Int32 SAL_CALL getCount() override;
377     virtual css::uno::Any SAL_CALL getByIndex(sal_Int32 nIndex) override;
378 
379     //XNameAccess
380     virtual css::uno::Any SAL_CALL getByName(const OUString& Name) override;
381     virtual css::uno::Sequence< OUString > SAL_CALL getElementNames() override;
382     virtual sal_Bool SAL_CALL hasByName(const OUString& Name) override;
383 
384     //XElementAccess
385     virtual css::uno::Type SAL_CALL getElementType(  ) override;
386     virtual sal_Bool SAL_CALL hasElements(  ) override;
387 
388     //XServiceInfo
389     virtual OUString SAL_CALL getImplementationName() override;
390     virtual sal_Bool SAL_CALL supportsService(const OUString& ServiceName) override;
391     virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override;
392 
393     static css::uno::Reference< css::text::XTextSection> GetObject( SwSectionFormat& rFormat );
394 };
395 
396 class SwXBookmarks final : public SwCollectionBaseClass,
397     public SwUnoCollection
398 {
399         virtual ~SwXBookmarks() override;
400     public:
401         SwXBookmarks(SwDoc* pDoc);
402 
403         //XIndexAccess
404         virtual sal_Int32 SAL_CALL getCount() override;
405         virtual css::uno::Any SAL_CALL getByIndex(sal_Int32 nIndex) override;
406 
407         //XNameAccess
408         virtual css::uno::Any SAL_CALL getByName(const OUString& Name) override;
409         virtual css::uno::Sequence< OUString > SAL_CALL getElementNames() override;
410         virtual sal_Bool SAL_CALL hasByName(const OUString& Name) override;
411 
412         //XElementAccess
413         virtual css::uno::Type SAL_CALL getElementType(  ) override;
414         virtual sal_Bool SAL_CALL hasElements(  ) override;
415 
416         //XServiceInfo
417         virtual OUString SAL_CALL getImplementationName() override;
418         virtual sal_Bool SAL_CALL supportsService(const OUString& ServiceName) override;
419         virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override;
420 
421 };
422 
423 class SwXNumberingRulesCollection final : public cppu::WeakImplHelper
424 <
425     css::container::XIndexAccess
426 >,
427     public SwUnoCollection
428 {
429     virtual ~SwXNumberingRulesCollection() override;
430 
431 public:
432     SwXNumberingRulesCollection( SwDoc* pDoc );
433 
434     //XIndexAccess
435     virtual sal_Int32 SAL_CALL getCount() override;
436     virtual css::uno::Any SAL_CALL getByIndex(sal_Int32 nIndex) override;
437 
438     //XElementAccess
439     virtual css::uno::Type SAL_CALL getElementType(  ) override;
440     virtual sal_Bool SAL_CALL hasElements(  ) override;
441 };
442 
443 typedef
444 cppu::WeakImplHelper
445 <
446     css::container::XIndexAccess,
447     css::lang::XServiceInfo
448 >
449 SwSimpleIndexAccessBaseClass;
450 
451 class SwXFootnotes final : public SwSimpleIndexAccessBaseClass,
452                      public SwUnoCollection
453 {
454     const bool m_bEndnote;
455 
456     virtual ~SwXFootnotes() override;
457 public:
458     SwXFootnotes(bool bEnd, SwDoc* pDoc);
459 
460     //XIndexAccess
461     virtual sal_Int32 SAL_CALL getCount() override;
462     virtual css::uno::Any SAL_CALL getByIndex(sal_Int32 nIndex) override;
463 
464     //XElementAccess
465     virtual css::uno::Type SAL_CALL getElementType(  ) override;
466     virtual sal_Bool SAL_CALL hasElements(  ) override;
467 
468     //XServiceInfo
469     virtual OUString SAL_CALL getImplementationName() override;
470     virtual sal_Bool SAL_CALL supportsService(const OUString& ServiceName) override;
471     virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override;
472 
473     static css::uno::Reference< css::text::XFootnote> GetObject( SwDoc& rDoc, const SwFormatFootnote& rFormat );
474 };
475 
476 class SwXReferenceMarks final : public SwCollectionBaseClass,
477     public SwUnoCollection
478 {
479     virtual ~SwXReferenceMarks() override;
480 public:
481     SwXReferenceMarks(SwDoc* pDoc);
482 
483     //XIndexAccess
484     virtual sal_Int32 SAL_CALL getCount() override;
485     virtual css::uno::Any SAL_CALL getByIndex(sal_Int32 nIndex) override;
486 
487     //XNameAccess
488     virtual css::uno::Any SAL_CALL getByName(const OUString& Name) override;
489     virtual css::uno::Sequence< OUString > SAL_CALL getElementNames() override;
490     virtual sal_Bool SAL_CALL hasByName(const OUString& Name) override;
491 
492     //XElementAccess
493     virtual css::uno::Type SAL_CALL getElementType(  ) override;
494     virtual sal_Bool SAL_CALL hasElements(  ) override;
495 
496     //XServiceInfo
497     virtual OUString SAL_CALL getImplementationName() override;
498     virtual sal_Bool SAL_CALL supportsService(const OUString& ServiceName) override;
499     virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override;
500 
501 };
502 
503 #endif
504 
505 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
506