1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
3 * This file is part of the LibreOffice project.
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/.
9 * This file incorporates work covered by the following license notice:
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 .
20 #ifndef INCLUDED_SW_SOURCE_FILTER_XML_XMLITMAP_HXX
21 #define INCLUDED_SW_SOURCE_FILTER_XML_XMLITMAP_HXX
23 #include <sal/types.h>
24 #include <tools/ref.hxx>
25 #include <xmloff/xmltoken.hxx>
26 #include <o3tl/span.hxx>
29 #define MID_SW_FLAG_MASK 0x0000ffff
31 // this flags are used in the item mapper for import and export
32 #define MID_SW_FLAG_SPECIAL_ITEM_IMPORT 0x80000000
33 #define MID_SW_FLAG_NO_ITEM_IMPORT 0x40000000
34 #define MID_SW_FLAG_SPECIAL_ITEM_EXPORT 0x20000000
35 #define MID_SW_FLAG_NO_ITEM_EXPORT 0x10000000
36 #define MID_SW_FLAG_ELEMENT_ITEM_IMPORT 0x08000000
37 #define MID_SW_FLAG_ELEMENT_ITEM_EXPORT 0x04000000
38 #define MID_SW_FLAG_ELEMENT_ITEM 0x0c000000 // both import and export
40 struct SvXMLItemMapEntry
42 sal_uInt16 nNameSpace
; // declares the Namespace in which this item
44 sal_uInt16 nWhichId
; // the WhichId to identify the item
46 enum ::xmloff::token::XMLTokenEnum
const eLocalName
;
47 // the local name for the item inside
48 // the Namespace (as an XMLTokenEnum)
49 sal_uInt32 nMemberId
; // the memberid specifies which part
50 // of the item should be imported or
51 // exported with this Namespace
55 enum ::xmloff::token::XMLTokenEnum localName
,
58 : nNameSpace(nameSpace
), nWhichId(whichId
), eLocalName(localName
), nMemberId(memberId
) {}
61 /** this class manages an array of SvXMLItemMapEntry. It is
62 used for optimizing the static array on startup of import
64 class SvXMLItemMapEntries final
: public SvRefBase
66 o3tl::span
<SvXMLItemMapEntry
const> mpEntries
;
69 explicit SvXMLItemMapEntries(o3tl::span
<SvXMLItemMapEntry
const> pEntries
) : mpEntries(pEntries
) {}
70 virtual ~SvXMLItemMapEntries() override
;
72 SvXMLItemMapEntry
const * getByName( sal_Int32 nElement
) const;
73 SvXMLItemMapEntry
const & getByIndex( sal_uInt16 nIndex
) const { return mpEntries
[nIndex
]; }
75 sal_uInt16
getCount() const { return mpEntries
.size(); }
78 typedef tools::SvRef
<SvXMLItemMapEntries
> SvXMLItemMapEntriesRef
;
80 extern const o3tl::span
<SvXMLItemMapEntry
const> aXMLTableItemMap
;
81 extern const o3tl::span
<SvXMLItemMapEntry
const> aXMLTableColItemMap
;
82 extern const o3tl::span
<SvXMLItemMapEntry
const> aXMLTableRowItemMap
;
83 extern const o3tl::span
<SvXMLItemMapEntry
const> aXMLTableCellItemMap
;
85 #endif // INCLUDED_SW_SOURCE_FILTER_XML_XMLITMAP_HXX
87 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */