sot/source/base/exchange.cxx |    8 
 vcl/Library_vclplug_win.mk   |    1 
 vcl/win/dtrans/ftransl.cxx   |  466 ++++++++++++++++---------------------------
 3 files changed, 179 insertions(+), 296 deletions(-)

New commits:
commit dbdc2f17d64a737f9000e44d1aa876a4a7787eef
Author:     Mike Kaganski <[email protected]>
AuthorDate: Mon Nov 10 02:49:50 2025 +0500
Commit:     Mike Kaganski <[email protected]>
CommitDate: Mon Nov 10 07:38:32 2025 +0100

    Refactor initialization of translation table
    
    Most of the table in ftransl.cxx reuses data from exchange.cxx. The fact
    that we duplicate everything in several places naturally leads to errors,
    which shows in this change.
    
    1. Introduce a FormatEntry ctor taking SotClipboardFormatId, to obtain
    DataFlavor from that identifier, instead of using a copy of MIME type
    strings and corresponding human-presentable-names and data types for
    creation of DataFlavor.
    
    2. Use it for all elements that have SotClipboardFormatId for them. It
    turns out, that in the end, only one element can't be constructed that
    way, because there is no SotClipboardFormatId for CF_LOCALE.
    
    2.1. While at it, make some elements' data consistent.
    Fixed MIME types (all were errors):
    * application/x-openoffice-svbx -> application/x-openoffice-svxb
    * application/x-openoffice-msgattachfile -> 
application/x-openoffice-cnt-msgattachfile
    * application/x-openofficesba-tabed -> application/x-openoffice-sba-tabed
    Fixed native format names (these are mostly unimportant cosmetics):
    * Unicode-Text -> Text
    * EditEngine ODF -> Flat XML format (EditEngine ODF)
    * StatusInfo vom SvxInternalLink -> StatusInfo of SvxInternalLink
    * PNG -> PNG Bitmap
    
    2.2. Drop SO_DUMMYFORMAT_3 and SO_DUMMYFORMAT_4, which were never used from
    initial import.
    
    3. Obtain native format name from MIME types, where "windows_formatname"
    parameter is defined. This allows to drop another redundancy.
    
    4. To avoid building the table before program initializes (and process
    component context is available, needed to create XMimeContentTypeFactory,
    needed to parse MIME type parameters), make table function-local static.
    
    Change-Id: I72320aa54f154e9cc79c8b9ba700c7afecf89eb7
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/193691
    Tested-by: Jenkins
    Reviewed-by: Mike Kaganski <[email protected]>

diff --git a/sot/source/base/exchange.cxx b/sot/source/base/exchange.cxx
index a62b208b3952..a9f741d4bfdd 100644
--- a/sot/source/base/exchange.cxx
+++ b/sot/source/base/exchange.cxx
@@ -64,7 +64,7 @@ const DataFlavor* FormatArray_Impl()
         /* 13 SVIM*/                      { 
u"application/x-openoffice-svim;windows_formatname=\"SVIM (StarView 
ImageMap)\""_ustr, u"SVIM (StarView ImageMap)"_ustr, 
cppu::UnoType<Sequence<sal_Int8>>::get() },
         /* 14 XFA*/                       { 
u"application/x-libreoffice-xfa;windows_formatname=\"XFA (XOutDev FillAttr 
Any)\""_ustr, u"XFA (XOutDev FillAttr Any)"_ustr, 
cppu::UnoType<Sequence<sal_Int8>>::get() },
         /* 15 EDITENGINE_ODF_TEXT_FLAT*/  { 
u"application/vnd.oasis.opendocument.text-flat-xml"_ustr, u"Flat XML format 
(EditEngine ODF)"_ustr, cppu::UnoType<Sequence<sal_Int8>>::get() },
-        /* 16 INTERNALLINK_STATE*/        { 
u"application/x-openoffice-internallink-state;windows_formatname=\"StatusInfo 
vom SvxInternalLink\""_ustr, u"StatusInfo vom SvxInternalLink"_ustr, 
cppu::UnoType<Sequence<sal_Int8>>::get() },
+        /* 16 INTERNALLINK_STATE*/        { 
u"application/x-openoffice-internallink-state;windows_formatname=\"StatusInfo 
of SvxInternalLink\""_ustr, u"StatusInfo of SvxInternalLink"_ustr, 
cppu::UnoType<Sequence<sal_Int8>>::get() },
         /* 17 SOLK*/                      { 
u"application/x-openoffice-solk;windows_formatname=\"SOLK (StarOffice 
Link)\""_ustr, u"SOLK (StarOffice Link)"_ustr, 
cppu::UnoType<Sequence<sal_Int8>>::get() },
         /* 18 NETSCAPE_BOOKMARK*/         { 
u"application/x-openoffice-netscape-bookmark;windows_formatname=\"Netscape 
Bookmark\""_ustr, u"Netscape Bookmark"_ustr, 
cppu::UnoType<Sequence<sal_Int8>>::get() },
         /* 19 TREELISTBOX*/               { 
u"application/x-openoffice-treelistbox;windows_formatname=\"SV_LBOX_DD_FORMAT\""_ustr,
 u"SV_LBOX_DD_FORMAT"_ustr, cppu::UnoType<Sequence<sal_Int8>>::get() },
@@ -128,7 +128,7 @@ const DataFlavor* FormatArray_Impl()
         /* 77 SBA_DATAEXCHANGE*/          { 
u"application/x-openoffice-sba-dataexchange;windows_formatname=\"SBA-DATAFORMAT\""_ustr,
 u"SBA-DATAFORMAT"_ustr, cppu::UnoType<Sequence<sal_Int8>>::get() },
         /* 78 SBA_FIELDDATAEXCHANGE*/     { 
u"application/x-openoffice-sba-fielddataexchange;windows_formatname=\"SBA-FIELDFORMAT\""_ustr,
 u"SBA-FIELDFORMAT"_ustr, cppu::UnoType<Sequence<sal_Int8>>::get() },
         /* 79 SBA_PRIVATE_URL*/           { 
u"application/x-openoffice-sba-private-url;windows_formatname=\"SBA-PRIVATEURLFORMAT\""_ustr,
 u"SBA-PRIVATEURLFORMAT"_ustr, cppu::UnoType<Sequence<sal_Int8>>::get() },
-        /* 80 SBA_TABED*/                 { 
u"application/x-openofficesba-tabed;windows_formatname=\"Tabed\""_ustr, 
u"Tabed"_ustr, cppu::UnoType<Sequence<sal_Int8>>::get() },
+        /* 80 SBA_TABED*/                 { 
u"application/x-openoffice-sba-tabed;windows_formatname=\"Tabed\""_ustr, 
u"Tabed"_ustr, cppu::UnoType<Sequence<sal_Int8>>::get() },
         /* 81 SBA_TABID*/                 { 
u"application/x-openoffice-sba-tabid;windows_formatname=\"Tabid\""_ustr, 
u"Tabid"_ustr, cppu::UnoType<Sequence<sal_Int8>>::get() },
         /* 82 SBA_JOIN*/                  { 
u"application/x-openoffice-sba-join;windows_formatname=\"SBA-JOINFORMAT\""_ustr,
 u"SBA-JOINFORMAT"_ustr, cppu::UnoType<Sequence<sal_Int8>>::get() },
         /* 83 OBJECTDESCRIPTOR*/          { 
u"application/x-openoffice-objectdescriptor-xml;windows_formatname=\"Star 
Object Descriptor (XML)\""_ustr, u"Star Object Descriptor (XML)"_ustr, 
cppu::UnoType<Sequence<sal_Int8>>::get() },
@@ -158,7 +158,7 @@ const DataFlavor* FormatArray_Impl()
         /*107 STARWRITER_60*/             { MIMETYPE_VND_SUN_XML_WRITER, 
u"Writer 6.0"_ustr, cppu::UnoType<Sequence<sal_Int8>>::get() },
         /*108 STARWRITERWEB_60*/          { MIMETYPE_VND_SUN_XML_WRITER_WEB, 
u"Writer/Web 6.0"_ustr, cppu::UnoType<Sequence<sal_Int8>>::get() },
         /*109 STARWRITERGLOB_60*/         { 
MIMETYPE_VND_SUN_XML_WRITER_GLOBAL, u"Writer/Global 6.0"_ustr, 
cppu::UnoType<Sequence<sal_Int8>>::get() },
-        /*110 STARWDRAW_60*/              { MIMETYPE_VND_SUN_XML_DRAW, u"Draw 
6.0"_ustr, cppu::UnoType<Sequence<sal_Int8>>::get() },
+        /*110 STARDRAW_60*/               { MIMETYPE_VND_SUN_XML_DRAW, u"Draw 
6.0"_ustr, cppu::UnoType<Sequence<sal_Int8>>::get() },
         /*111 STARIMPRESS_60*/            { MIMETYPE_VND_SUN_XML_IMPRESS, 
u"Impress 6.0"_ustr, cppu::UnoType<Sequence<sal_Int8>>::get() },
         /*112 STARCALC_60*/               { MIMETYPE_VND_SUN_XML_CALC, u"Calc 
6.0"_ustr, cppu::UnoType<Sequence<sal_Int8>>::get() },
         /*113 STARCHART_60*/              { MIMETYPE_VND_SUN_XML_CHART, 
u"Chart 6.0"_ustr, cppu::UnoType<Sequence<sal_Int8>>::get() },
@@ -189,7 +189,7 @@ const DataFlavor* FormatArray_Impl()
         /*138 STARMATH_8_TEMPLATE*/       { 
MIMETYPE_OASIS_OPENDOCUMENT_FORMULA_TEMPLATE, u"Math 8 Template"_ustr, 
cppu::UnoType<Sequence<sal_Int8>>::get() },
         /*139 STARBASE_8*/                { 
MIMETYPE_OASIS_OPENDOCUMENT_DATABASE, u"StarBase 8"_ustr, 
cppu::UnoType<Sequence<sal_Int8>>::get() },
         /*140 HC_GDIMETAFILE*/            { 
u"application/x-openoffice-highcontrast-gdimetafile;windows_formatname=\"GDIMetaFile\""_ustr,
 u"High Contrast GDIMetaFile"_ustr, cppu::UnoType<Sequence<sal_Int8>>::get() },
-        /*141 PNG*/                       { u"image/png"_ustr, u"PNG 
Bitmap"_ustr, cppu::UnoType<Sequence<sal_Int8>>::get() },
+        /*141 PNG*/                       { u"image/png"_ustr, u"PNG"_ustr, 
cppu::UnoType<Sequence<sal_Int8>>::get() },
         /*142 STARWRITERGLOB_8_TEMPLATE*/ { 
MIMETYPE_OASIS_OPENDOCUMENT_TEXT_GLOBAL_TEMPLATE, u"Writer/Global 8 
Template"_ustr, cppu::UnoType<Sequence<sal_Int8>>::get() },
         /*143 MATHML*/                    { u"application/mathml+xml"_ustr, 
u"MathML"_ustr, ::cppu::UnoType<const Sequence< sal_Int8 >>::get() },
         /*144 JPEG*/                      { u"image/jpeg"_ustr, u"JPEG 
Bitmap"_ustr, cppu::UnoType<Sequence<sal_Int8>>::get() },
diff --git a/vcl/Library_vclplug_win.mk b/vcl/Library_vclplug_win.mk
index e050478337b0..2ef6c568115a 100644
--- a/vcl/Library_vclplug_win.mk
+++ b/vcl/Library_vclplug_win.mk
@@ -53,6 +53,7 @@ $(eval $(call gb_Library_use_libraries,vclplug_win,\
     i18nutil \
     sal \
     salhelper \
+    sot \
     tl \
     utl \
 ))
diff --git a/vcl/win/dtrans/ftransl.cxx b/vcl/win/dtrans/ftransl.cxx
index 7cd94f9685ba..cf5d7ef35839 100644
--- a/vcl/win/dtrans/ftransl.cxx
+++ b/vcl/win/dtrans/ftransl.cxx
@@ -24,6 +24,8 @@
 
 #include <o3tl/string_view.hxx>
 #include <osl/diagnose.h>
+#include <sot/exchange.hxx>
+#include <sot/formats.hxx>
 
 #include "ftransl.hxx"
 #include <com/sun/star/container/NoSuchElementException.hpp>
@@ -31,6 +33,7 @@
 #include <com/sun/star/datatransfer/MimeContentTypeFactory.hpp>
 #include <com/sun/star/lang/IllegalArgumentException.hpp>
 #include <com/sun/star/uno/XComponentContext.hpp>
+#include <comphelper/processfactory.hxx>
 #include <cppuhelper/supportsservice.hxx>
 #include <cppuhelper/weak.hxx>
 #include "ImplHelper.hxx"
@@ -41,7 +44,6 @@
 #define CPPUTYPE_DEFAULT          CPPUTYPE_SEQSALINT8
 
 constexpr OUString Windows_FormatName = u"windows_formatname"_ustr;
-const css::uno::Type CppuType_String       = ::cppu::UnoType<OUString>::get();
 
 using namespace osl;
 using namespace cppu;
@@ -52,28 +54,38 @@ using namespace com::sun::star::container;
 
 namespace
 {
+css::datatransfer::DataFlavor getDataFlavor(SotClipboardFormatId sotFormatId)
+{
+    css::datatransfer::DataFlavor aDataFlavor;
+    SotExchange::GetFormatDataFlavor(sotFormatId, aDataFlavor);
+    return aDataFlavor;
+}
 
-struct FormatEntry
+OUString getNativeFormatName(const css::datatransfer::DataFlavor& rFlavor,
+                             const Reference<XMimeContentTypeFactory>& 
xFactory)
 {
-    FormatEntry(
-        const OUString& mime_content_type,
-        const OUString& human_presentable_name,
-        const OUString& native_format_name,
-        CLIPFORMAT std_clipboard_format_id,
-        css::uno::Type const & cppu_type = CPPUTYPE_DEFAULT
-    );
+    auto xMimeContentType(xFactory->createMimeContentType(rFlavor.MimeType));
+    if (xMimeContentType->hasParameter(Windows_FormatName))
+        return xMimeContentType->getParameterValue(Windows_FormatName);
+    return rFlavor.HumanPresentableName;
+}
 
+struct FormatEntry
+{
     FormatEntry(const OUString& mime_content_type, const OUString& 
human_presentable_name,
                 CLIPFORMAT std_clipboard_format_id,
                 css::uno::Type const& cppu_type = CPPUTYPE_DEFAULT)
-        : FormatEntry(mime_content_type, human_presentable_name, 
human_presentable_name,
-                      std_clipboard_format_id, cppu_type)
+    : aDataFlavor(mime_content_type, human_presentable_name, cppu_type)
+    , aNativeFormatName(human_presentable_name)
+    , aStandardFormatId(std_clipboard_format_id)
     {
     }
 
-    FormatEntry(const OUString& mime_content_type, const OUString& 
human_presentable_name,
-                css::uno::Type const& cppu_type = CPPUTYPE_DEFAULT)
-        : FormatEntry(mime_content_type, human_presentable_name, CF_INVALID, 
cppu_type)
+    FormatEntry(const Reference<XMimeContentTypeFactory>& xFactory,
+                SotClipboardFormatId sotFormatId, CLIPFORMAT 
std_clipboard_format_id = CF_INVALID)
+        : aDataFlavor(getDataFlavor(sotFormatId))
+        , aNativeFormatName(getNativeFormatName(aDataFlavor, xFactory))
+        , aStandardFormatId(std_clipboard_format_id)
     {
     }
 
@@ -82,290 +94,160 @@ struct FormatEntry
     sal_Int32                     aStandardFormatId;
 };
 
-}
-
-FormatEntry::FormatEntry(
-    const OUString& mime_content_type,
-    const OUString& human_presentable_name,
-    const OUString& native_format_name,
-    CLIPFORMAT std_clipboard_format_id,
-    css::uno::Type const & cppu_type)
-    : aDataFlavor(mime_content_type, human_presentable_name, cppu_type)
-    , aNativeFormatName(native_format_name)
-    , aStandardFormatId(std_clipboard_format_id)
+auto initTranslTable()
 {
-}
-
-// to optimize searching we add all entries with a
-// standard clipboard format number first, in the
-// table before the entries with CF_INVALID
-// if we are searching for a standard clipboard
-// format number we can stop if we find the first
-// CF_INVALID
-
-const std::array g_TranslTable {
-    //SotClipboardFormatId::DIF
-        FormatEntry("application/x-openoffice-dif;windows_formatname=\"DIF\"", 
"DIF", CF_DIF),
-    // SotClipboardFormatId::BITMAP
+    auto xFactory = 
MimeContentTypeFactory::create(comphelper::getProcessComponentContext());
+
+    // to optimize searching we add all entries with a
+    // standard clipboard format number first, in the
+    // table before the entries with CF_INVALID
+    // if we are searching for a standard clipboard
+    // format number we can stop if we find the first
+    // CF_INVALID
+    return std::array
+    {
+        FormatEntry(xFactory, SotClipboardFormatId::DIF, CF_DIF),
 
     // #i124085# CF_DIBV5 disabled, leads to problems at export. To fully 
support, using
     // an own mime-type may be necessary. I have tried that, but saw no real 
advantages
     // with different apps when exchanging bitmap-based data. So, disabled for 
now. At
     // the same time increased png format exchange for better interoperability
-    //    
FormatEntry("application/x-openoffice-bitmap;windows_formatname=\"Bitmap\"", 
"Bitmap", CF_DIBV5),
+    //    FormatEntry(SotClipboardFormatId::BITMAP, CF_DIBV5),
 
-        
FormatEntry("application/x-openoffice-bitmap;windows_formatname=\"Bitmap\"", 
"Bitmap", CF_DIB),
-        
FormatEntry("application/x-openoffice-bitmap;windows_formatname=\"Bitmap\"", 
"Bitmap", CF_BITMAP),
-    // SotClipboardFormatId::STRING
-        FormatEntry("text/plain;charset=utf-16", "Unicode-Text", "", 
CF_UNICODETEXT, CppuType_String),
+        FormatEntry(xFactory, SotClipboardFormatId::BITMAP, CF_DIB),
+        FormatEntry(xFactory, SotClipboardFormatId::BITMAP, CF_BITMAP),
+        FormatEntry(xFactory, SotClipboardFormatId::STRING, CF_UNICODETEXT),
     // Format Locale - for internal use
         
FormatEntry("application/x-openoffice-locale;windows_formatname=\"Locale\"", 
"Locale", CF_LOCALE),
-    // SOT_FORMAT_WMF
-        FormatEntry("application/x-openoffice-wmf;windows_formatname=\"Image 
WMF\"", "Windows MetaFile", "Image WMF", CF_METAFILEPICT),
-    // SOT_FORMAT_EMF
-        FormatEntry("application/x-openoffice-emf;windows_formatname=\"Image 
EMF\"", "Windows Enhanced MetaFile", "Image EMF", CF_ENHMETAFILE),
-    // SotClipboardFormatId::FILE_LIST
-        
FormatEntry("application/x-openoffice-filelist;windows_formatname=\"FileList\"",
 "FileList", CF_HDROP),
-    //SotClipboardFormatId::SYLK
-        
FormatEntry("application/x-openoffice-sylk;windows_formatname=\"Sylk\"", 
"Sylk", CF_SYLK),
+        FormatEntry(xFactory, SotClipboardFormatId::WMF, CF_METAFILEPICT),
+        FormatEntry(xFactory, SotClipboardFormatId::EMF, CF_ENHMETAFILE),
+        FormatEntry(xFactory, SotClipboardFormatId::FILE_LIST, CF_HDROP),
+        FormatEntry(xFactory, SotClipboardFormatId::SYLK, CF_SYLK),
 
     // End of standard clipboard format numbers
 
-    // SotClipboardFormatId::GDIMETAFILE
-        
FormatEntry("application/x-openoffice-gdimetafile;windows_formatname=\"GDIMetaFile\"",
 "GDIMetaFile"),
-    // SotClipboardFormatId::PRIVATE
-        
FormatEntry("application/x-openoffice-private;windows_formatname=\"Private\"", 
"Private"),
-    // SotClipboardFormatId::SIMPLE_FILE
-        
FormatEntry("application/x-openoffice-file;windows_formatname=\"FileNameW\"", 
"FileNameW", CppuType_String),
-    // SotClipboardFormatId::RTF
-        FormatEntry("text/rtf", "Rich Text Format"),
-    // SotClipboardFormatId::DRAWING
-        
FormatEntry("application/x-openoffice-drawing;windows_formatname=\"Drawing 
Format\"", "Drawing Format"),
-    // SotClipboardFormatId::SVXB
-        FormatEntry("application/x-openoffice-svbx;windows_formatname=\"SVXB 
(StarView Bitmap/Animation)\"", "SVXB (StarView Bitmap/Animation)"),
-    // SotClipboardFormatId::SVIM
-        FormatEntry("application/x-openoffice-svim;windows_formatname=\"SVIM 
(StarView ImageMap)\"", "SVIM (StarView ImageMap)"),
-    // SotClipboardFormatId::XFA
-        FormatEntry("application/x-libreoffice-xfa;windows_formatname=\"XFA 
(XOutDev FillAttr Any)\"", "XFA (XOutDev FillAttr Any)"),
-    // SotClipboardFormatId::EDITENGINE_ODF_TEXT_FLAT
-        FormatEntry("application/vnd.oasis.opendocument.text-flat-xml", 
"EditEngine ODF"),
-    // SotClipboardFormatId::INTERNALLINK_STATE
-        
FormatEntry("application/x-openoffice-internallink-state;windows_formatname=\"StatusInfo
 of SvxInternalLink\"", "StatusInfo of SvxInternalLink"),
-    // SotClipboardFormatId::SOLK
-        FormatEntry("application/x-openoffice-solk;windows_formatname=\"SOLK 
(StarOffice Link)\"", "SOLK (StarOffice Link)"),
-    // SotClipboardFormatId::NETSCAPE_BOOKMARK
-        
FormatEntry("application/x-openoffice-netscape-bookmark;windows_formatname=\"Netscape
 Bookmark\"", "Netscape Bookmark"),
-    // SotClipboardFormatId::TREELISTBOX
-        
FormatEntry("application/x-openoffice-treelistbox;windows_formatname=\"SV_LBOX_DD_FORMAT\"",
 "SV_LBOX_DD_FORMAT"),
-    // SotClipboardFormatId::NATIVE
-        
FormatEntry("application/x-openoffice-native;windows_formatname=\"Native\"", 
"Native"),
-    // SotClipboardFormatId::OWNERLINK
-        
FormatEntry("application/x-openoffice-ownerlink;windows_formatname=\"OwnerLink\"",
 "OwnerLink"),
-    // SotClipboardFormatId::STARSERVER
-        
FormatEntry("application/x-openoffice-starserver;windows_formatname=\"StarServerFormat\"",
 "StarServerFormat"),
-    // SotClipboardFormatId::STAROBJECT
-        
FormatEntry("application/x-openoffice-starobject;windows_formatname=\"StarObjectFormat\"",
 "StarObjectFormat"),
-    // SotClipboardFormatId::APPLETOBJECT
-        
FormatEntry("application/x-openoffice-appletobject;windows_formatname=\"Applet 
Object\"", "Applet Object"),
-    // SotClipboardFormatId::PLUGIN_OBJECT
-        
FormatEntry("application/x-openoffice-plugin-object;windows_formatname=\"PlugIn 
Object\"", "PlugIn Object"),
-    // SotClipboardFormatId::STARWRITER_30
-        
FormatEntry("application/x-openoffice-starwriter-30;windows_formatname=\"StarWriter
 3.0\"", "StarWriter 3.0"),
-    //SotClipboardFormatId::STARWRITER_40
-        
FormatEntry("application/x-openoffice-starwriter-40;windows_formatname=\"StarWriter
 4.0\"", "StarWriter 4.0"),
-    //SotClipboardFormatId::STARWRITER_50
-        
FormatEntry("application/x-openoffice-starwriter-50;windows_formatname=\"StarWriter
 5.0\"", "StarWriter 5.0"),
-    //SotClipboardFormatId::STARWRITERWEB_40
-        
FormatEntry("application/x-openoffice-starwriterweb-40;windows_formatname=\"StarWriter/Web
 4.0\"", "StarWriter/Web 4.0"),
-    //SotClipboardFormatId::STARWRITERWEB_50
-        
FormatEntry("application/x-openoffice-starwriterweb-50;windows_formatname=\"StarWriter/Web
 5.0\"", "StarWriter/Web 5.0"),
-    //SotClipboardFormatId::STARWRITERGLOB_40
-        
FormatEntry("application/x-openoffice-starwriterglob-40;windows_formatname=\"StarWriter/Global
 4.0\"", "StarWriter/Global 4.0"),
-    // SotClipboardFormatId::STARWRITERGLOB_50
-        
FormatEntry("application/x-openoffice-starwriterglob-50;windows_formatname=\"StarWriter/Global
 5.0\"", "StarWriter/Global 5.0"),
-    //SotClipboardFormatId::STARDRAW
-        
FormatEntry("application/x-openoffice-stardraw;windows_formatname=\"StarDrawDocument\"",
 "StarDrawDocument"),
-    //SotClipboardFormatId::STARDRAW_40
-        
FormatEntry("application/x-openoffice-stardraw-40;windows_formatname=\"StarDrawDocument
 4.0\"", "StarDrawDocument 4.0"),
-    //SotClipboardFormatId::STARIMPRESS_50
-        
FormatEntry("application/x-openoffice-starimpress-50;windows_formatname=\"StarImpress
 5.0\"", "StarImpress 5.0"),
-    // SotClipboardFormatId::STARDRAW_50
-        
FormatEntry("application/x-openoffice-stardraw-50;windows_formatname=\"StarDraw 
5.0\"", "StarDraw 5.0"),
-    //SotClipboardFormatId::STARCALC
-        
FormatEntry("application/x-openoffice-starcalc;windows_formatname=\"StarCalcDocument\"",
 "StarCalcDocument"),
-    //SotClipboardFormatId::STARCALC_40
-        
FormatEntry("application/x-openoffice-starcalc-40;windows_formatname=\"StarCalc 
4.0\"", "StarCalc 4.0"),
-    // SotClipboardFormatId::STARCALC_50
-        
FormatEntry("application/x-openoffice-starcalc-50;windows_formatname=\"StarCalc 
5.0\"", "StarCalc 5.0"),
-    // SotClipboardFormatId::STARCHART
-        
FormatEntry("application/x-openoffice-starchart;windows_formatname=\"StarChartDocument\"",
 "StarChartDocument"),
-    // SotClipboardFormatId::STARCHART_40
-        
FormatEntry("application/x-openoffice-starchart-40;windows_formatname=\"StarChartDocument
 4.0\"", "StarChartDocument 4.0"),
-    // SotClipboardFormatId::STARCHART_50
-        
FormatEntry("application/x-openoffice-starchart-50;windows_formatname=\"StarChart
 5.0\"", "StarChart 5.0"),
-    //SotClipboardFormatId::STARIMAGE
-        
FormatEntry("application/x-openoffice-starimage;windows_formatname=\"StarImageDocument\"",
 "StarImageDocument"),
-    //SotClipboardFormatId::STARIMAGE_40
-        
FormatEntry("application/x-openoffice-starimage-40;windows_formatname=\"StarImageDocument
 4.0\"", "StarImageDocument 4.0"),
-    //SotClipboardFormatId::STARIMAGE_50
-        
FormatEntry("application/x-openoffice-starimage-50;windows_formatname=\"StarImage
 5.0\"",  "StarImage 5.0"),
-    //SotClipboardFormatId::STARMATH
-        
FormatEntry("application/x-openoffice-starmath;windows_formatname=\"StarMath\"",
 "StarMath"),
-    //SotClipboardFormatId::STARMATH_40
-        
FormatEntry("application/x-openoffice-starmath-40;windows_formatname=\"StarMathDocument
 4.0\"", "StarMathDocument 4.0"),
-    //SotClipboardFormatId::STARMATH_50
-        
FormatEntry("application/x-openoffice-starmath-50;windows_formatname=\"StarMath 
5.0\"", "StarMath 5.0"),
-    //SotClipboardFormatId::STAROBJECT_PAINTDOC
-        
FormatEntry("application/x-openoffice-starobject-paintdoc;windows_formatname=\"StarObjectPaintDocument\"",
 "StarObjectPaintDocument"),
-    //SotClipboardFormatId::FILLED_AREA
-        
FormatEntry("application/x-openoffice-filled-area;windows_formatname=\"FilledArea\"",
 "FilledArea"),
-    //SotClipboardFormatId::HTML
-        FormatEntry("text/html", "HTML (HyperText Markup Language)"),
-    //SotClipboardFormatId::HTML_SIMPLE
-        
FormatEntry("application/x-openoffice-html-simple;windows_formatname=\"HTML 
Format\"", "HTML Format"),
-    //SotClipboardFormatId::CHAOS
-        
FormatEntry("application/x-openoffice-chaos;windows_formatname=\"FORMAT_CHAOS\"",
 "FORMAT_CHAOS"),
-    //SotClipboardFormatId::CNT_MSGATTACHFILE
-        
FormatEntry("application/x-openoffice-msgattachfile;windows_formatname=\"CNT_MSGATTACHFILE_FORMAT\"",
 "CNT_MSGATTACHFILE_FORMAT"),
-    //SotClipboardFormatId::BIFF_5
-        
FormatEntry("application/x-openoffice-biff5;windows_formatname=\"Biff5\"", 
"Biff5"),
-    //SotClipboardFormatId::BIFF__5
-        FormatEntry("application/x-openoffice-biff-5;windows_formatname=\"Biff 
5\"", "Biff 5"),
-    //SotClipboardFormatId::BIFF_8
-        
FormatEntry("application/x-openoffice-biff-8;windows_formatname=\"Biff8\"", 
"Biff8"),
-    //SotClipboardFormatId::SYLK_BIGCAPS
-        
FormatEntry("application/x-openoffice-sylk-bigcaps;windows_formatname=\"SYLK\"",
 "SYLK"),
-    //SotClipboardFormatId::LINK
-        
FormatEntry("application/x-openoffice-link;windows_formatname=\"Link\"", 
"Link"),
-    //SotClipboardFormatId::STARDRAW_TABBAR
-        
FormatEntry("application/x-openoffice-stardraw-tabbar;windows_formatname=\"StarDraw
 TabBar\"", "StarDraw TabBar"),
-    //SotClipboardFormatId::SONLK
-        FormatEntry("application/x-openoffice-sonlk;windows_formatname=\"SONLK 
(StarOffice Navi Link)\"", "SONLK (StarOffice Navi Link)"),
-    //SotClipboardFormatId::MSWORD_DOC
-        FormatEntry("application/msword", "MSWordDoc"),
-    //SotClipboardFormatId::STAR_FRAMESET_DOC
-        
FormatEntry("application/x-openoffice-star-frameset-doc;windows_formatname=\"StarFrameSetDocument\"",
 "StarFrameSetDocument"),
-    //SotClipboardFormatId::OFFICE_DOC
-        
FormatEntry("application/x-openoffice-office-doc;windows_formatname=\"OfficeDocument\"",
 "OfficeDocument"),
-    //SotClipboardFormatId::NOTES_DOCINFO
-        
FormatEntry("application/x-openoffice-notes-docinfo;windows_formatname=\"NotesDocInfo\"",
 "NotesDocInfo"),
-    //SotClipboardFormatId::NOTES_HNOTE
-        
FormatEntry("application/x-openoffice-notes-hnote;windows_formatname=\"NoteshNote\"",
 "NoteshNote"),
-    //SotClipboardFormatId::NOTES_NATIVE
-        
FormatEntry("application/x-openoffice-notes-native;windows_formatname=\"Native\"",
 "Native"),
-    //SotClipboardFormatId::SFX_DOC
-        
FormatEntry("application/x-openoffice-sfx-doc;windows_formatname=\"SfxDocument\"",
 "SfxDocument"),
-    //SotClipboardFormatId::EVDF
-        FormatEntry("application/x-openoffice-evdf;windows_formatname=\"EVDF 
(Explorer View Dummy Format)\"", "EVDF (Explorer View Dummy Format)"),
-    //SotClipboardFormatId::ESDF
-        FormatEntry("application/x-openoffice-esdf;windows_formatname=\"ESDF 
(Explorer Search Dummy Format)\"", "ESDF (Explorer Search Dummy Format)"),
-    //SotClipboardFormatId::IDF
-        FormatEntry("application/x-openoffice-idf;windows_formatname=\"IDF 
(Iconview Dummy Format)\"", "IDF (Iconview Dummy Format)"),
-    //SotClipboardFormatId::EFTP
-        FormatEntry("application/x-openoffice-eftp;windows_formatname=\"EFTP 
(Explorer Ftp File)\"", "EFTP (Explorer Ftp File)"),
-    //SotClipboardFormatId::EFD
-        FormatEntry("application/x-openoffice-efd;windows_formatname=\"EFD 
(Explorer Ftp Dir)\"", "EFD (Explorer Ftp Dir)"),
-    //SotClipboardFormatId::SVX_FORMFIELDEXCH
-        
FormatEntry("application/x-openoffice-svx-formfieldexch;windows_formatname=\"SvxFormFieldExch\"",
 "SvxFormFieldExch"),
-    //SotClipboardFormatId::EXTENDED_TABBAR
-        
FormatEntry("application/x-openoffice-extended-tabbar;windows_formatname=\"ExtendedTabBar\"",
 "ExtendedTabBar"),
-    //SotClipboardFormatId::SBA_DATAEXCHANGE
-        
FormatEntry("application/x-openoffice-sba-dataexchange;windows_formatname=\"SBA-DATAFORMAT\"",
 "SBA-DATAFORMAT"),
-    //SotClipboardFormatId::SBA_FIELDDATAEXCHANGE
-        
FormatEntry("application/x-openoffice-sba-fielddataexchange;windows_formatname=\"SBA-FIELDFORMAT\"",
 "SBA-FIELDFORMAT"),
-    //SotClipboardFormatId::SBA_PRIVATE_URL
-        
FormatEntry("application/x-openoffice-sba-private-url;windows_formatname=\"SBA-PRIVATEURLFORMAT\"",
 "SBA-PRIVATEURLFORMAT"),
-    //SotClipboardFormatId::SBA_TABED
-        
FormatEntry("application/x-openoffice-sba-tabed;windows_formatname=\"Tabed\"", 
"Tabed"),
-    //SotClipboardFormatId::SBA_TABID
-        
FormatEntry("application/x-openoffice-sba-tabid;windows_formatname=\"Tabid\"", 
"Tabid"),
-    //SotClipboardFormatId::SBA_JOIN
-        
FormatEntry("application/x-openoffice-sba-join;windows_formatname=\"SBA-JOINFORMAT\"",
 "SBA-JOINFORMAT"),
-    //SotClipboardFormatId::OBJECTDESCRIPTOR
-        
FormatEntry("application/x-openoffice-objectdescriptor-xml;windows_formatname=\"Star
 Object Descriptor (XML)\"", "Star Object Descriptor (XML)"),
-    //SotClipboardFormatId::LINKSRCDESCRIPTOR
-        
FormatEntry("application/x-openoffice-linksrcdescriptor-xml;windows_formatname=\"Star
 Link Source Descriptor (XML)\"", "Star Link Source Descriptor (XML)"),
-    //SotClipboardFormatId::EMBED_SOURCE
-        
FormatEntry("application/x-openoffice-embed-source-xml;windows_formatname=\"Star
 Embed Source (XML)\"", "Star Embed Source (XML)"),
-    //SotClipboardFormatId::LINK_SOURCE
-        
FormatEntry("application/x-openoffice-link-source-xml;windows_formatname=\"Star 
Link Source (XML)\"", "Star Link Source (XML)"),
-    //SotClipboardFormatId::EMBEDDED_OBJ
-        
FormatEntry("application/x-openoffice-embedded-obj-xml;windows_formatname=\"Star
 Embedded Object (XML)\"", "Star Embedded Object (XML)"),
-    //SotClipboardFormatId::FILECONTENT
-        
FormatEntry("application/x-openoffice-filecontent;windows_formatname=\"FileContents\"",
 "FileContents"),
-    //SotClipboardFormatId::FILEGRPDESCRIPTOR
-        
FormatEntry("application/x-openoffice-filegrpdescriptor;windows_formatname=\"FileGroupDescriptorW\"",
 "FileGroupDescriptorW"),
-    //SotClipboardFormatId::FILENAME
-        
FormatEntry("application/x-openoffice-filename;windows_formatname=\"FileNameW\"",
 "FileNameW", CppuType_String),
-    //SotClipboardFormatId::SD_OLE
-        
FormatEntry("application/x-openoffice-sd-ole;windows_formatname=\"SD-OLE\"", 
"SD-OLE"),
-    //SotClipboardFormatId::EMBEDDED_OBJ_OLE
-        
FormatEntry("application/x-openoffice-embedded-obj-ole;windows_formatname=\"Embedded
 Object\"", "Embedded Object"),
-    //SotClipboardFormatId::EMBED_SOURCE_OLE
-        
FormatEntry("application/x-openoffice-embed-source-ole;windows_formatname=\"Embed
 Source\"", "Embed Source"),
-    //SotClipboardFormatId::OBJECTDESCRIPTOR_OLE
-        
FormatEntry("application/x-openoffice-objectdescriptor-ole;windows_formatname=\"Object
 Descriptor\"", "Object Descriptor"),
-    //SotClipboardFormatId::LINKSRCDESCRIPTOR_OLE
-        
FormatEntry("application/x-openoffice-linkdescriptor-ole;windows_formatname=\"Link
 Source Descriptor\"", "Link Source Descriptor"),
-    //SotClipboardFormatId::LINK_SOURCE_OLE
-        
FormatEntry("application/x-openoffice-link-source-ole;windows_formatname=\"Link 
Source\"", "Link Source"),
-    //SotClipboardFormatId::SBA_CTRLDATAEXCHANGE
-        
FormatEntry("application/x-openoffice-sba-ctrldataexchange;windows_formatname=\"SBA-CTRLFORMAT\"",
 "SBA-CTRLFORMAT"),
-    //SotClipboardFormatId::OUTPLACE_OBJ
-        
FormatEntry("application/x-openoffice-outplace-obj;windows_formatname=\"OutPlace
 Object\"", "OutPlace Object"),
-    //SotClipboardFormatId::CNT_OWN_CLIP
-        
FormatEntry("application/x-openoffice-cnt-own-clip;windows_formatname=\"CntOwnClipboard\"",
 "CntOwnClipboard"),
-    //SotClipboardFormatId::INET_IMAGE
-        
FormatEntry("application/x-openoffice-inet-image;windows_formatname=\"SO-INet-Image\"",
 "SO-INet-Image"),
-    //SotClipboardFormatId::NETSCAPE_IMAGE
-        
FormatEntry("application/x-openoffice-netscape-image;windows_formatname=\"Netscape
 Image Format\"", "Netscape Image Format"),
-    //SotClipboardFormatId::SBA_FORMEXCHANGE
-        
FormatEntry("application/x-openoffice-sba-formexchange;windows_formatname=\"SBA_FORMEXCHANGE\"",
 "SBA_FORMEXCHANGE"),
-    //SotClipboardFormatId::SBA_REPORTEXCHANGE
-        
FormatEntry("application/x-openoffice-sba-reportexchange;windows_formatname=\"SBA_REPORTEXCHANGE\"",
 "SBA_REPORTEXCHANGE"),
-    //SotClipboardFormatId::UNIFORMRESOURCELOCATOR
-        
FormatEntry("application/x-openoffice-uniformresourcelocator;windows_formatname=\"UniformResourceLocatorW\"",
 "UniformResourceLocatorW", CppuType_String),
-    //SotClipboardFormatId::STARCHARTDOCUMENT_50
-        
FormatEntry("application/x-openoffice-starchartdocument-50;windows_formatname=\"StarChartDocument
 5.0\"", "StarChartDocument 5.0"),
-    //SotClipboardFormatId::GRAPHOBJ
-        
FormatEntry("application/x-openoffice-graphobj;windows_formatname=\"Graphic 
Object\"", "Graphic Object"),
-    //SotClipboardFormatId::STARWRITER_60
-        FormatEntry("application/vnd.sun.xml.writer", "Writer 6.0"),
-    //SotClipboardFormatId::STARWRITERWEB_60
-        FormatEntry("application/vnd.sun.xml.writer.web", "Writer/Web 6.0"),
-    //SotClipboardFormatId::STARWRITERGLOB_60
-        FormatEntry("application/vnd.sun.xml.writer.global", "Writer/Global 
6.0"),
-    //SotClipboardFormatId::STARWDRAW_60
-        FormatEntry("application/vnd.sun.xml.draw", "Draw 6.0"),
-    //SotClipboardFormatId::STARIMPRESS_60
-        FormatEntry("application/vnd.sun.xml.impress", "Impress 6.0"),
-    //SotClipboardFormatId::STARCALC_60
-        FormatEntry("application/vnd.sun.xml.calc", "Calc 6.0"),
-    //SotClipboardFormatId::STARCHART_60
-        FormatEntry("application/vnd.sun.xml.chart", "Chart 6.0"),
-    //SotClipboardFormatId::STARMATH_60
-        FormatEntry("application/vnd.sun.xml.math", "Math 6.0"),
-    //SotClipboardFormatId::DIALOG_60
-        FormatEntry("application/vnd.sun.xml.dialog", "Dialog 6.0"),
-    //SotClipboardFormatId::BMP
-        FormatEntry("image/bmp", "Windows Bitmap"),
-    //SotClipboardFormatId::PNG
-        FormatEntry("image/png", "PNG"),
-    //SotClipboardFormatId::SVG
-        FormatEntry("image/svg+xml", "image/svg+xml"),
-    //SotClipboardFormatId::MATHML
-        FormatEntry("application/mathml+xml", "MathML"),
-    //SotClipboardFormatId::DUMMY3
-        
FormatEntry("application/x-openoffice-dummy3;windows_formatname=\"SO_DUMMYFORMAT_3\"",
 "SO_DUMMYFORMAT_3"),
-    //SotClipboardFormatId::DUMMY4
-        
FormatEntry("application/x-openoffice-dummy4;windows_formatname=\"SO_DUMMYFORMAT_4\"",
 "SO_DUMMYFORMAT_4"),
-    // SotClipboardFormatId::RICHTEXT
-        FormatEntry("text/richtext", "Richtext Format"),
-    // SotClipboardFormatId::MARKDOWN
-        FormatEntry("text/markdown", "Markdown"),
+        FormatEntry(xFactory, SotClipboardFormatId::GDIMETAFILE),
+        FormatEntry(xFactory, SotClipboardFormatId::PRIVATE),
+        FormatEntry(xFactory, SotClipboardFormatId::SIMPLE_FILE),
+        FormatEntry(xFactory, SotClipboardFormatId::RTF),
+        FormatEntry(xFactory, SotClipboardFormatId::DRAWING),
+        FormatEntry(xFactory, SotClipboardFormatId::SVXB),
+        FormatEntry(xFactory, SotClipboardFormatId::SVIM),
+        FormatEntry(xFactory, SotClipboardFormatId::XFA),
+        FormatEntry(xFactory, SotClipboardFormatId::EDITENGINE_ODF_TEXT_FLAT),
+        FormatEntry(xFactory, SotClipboardFormatId::INTERNALLINK_STATE),
+        FormatEntry(xFactory, SotClipboardFormatId::SOLK),
+        FormatEntry(xFactory, SotClipboardFormatId::NETSCAPE_BOOKMARK),
+        FormatEntry(xFactory, SotClipboardFormatId::TREELISTBOX),
+        FormatEntry(xFactory, SotClipboardFormatId::NATIVE),
+        FormatEntry(xFactory, SotClipboardFormatId::OWNERLINK),
+        FormatEntry(xFactory, SotClipboardFormatId::STARSERVER),
+        FormatEntry(xFactory, SotClipboardFormatId::STAROBJECT),
+        FormatEntry(xFactory, SotClipboardFormatId::APPLETOBJECT),
+        FormatEntry(xFactory, SotClipboardFormatId::PLUGIN_OBJECT),
+        FormatEntry(xFactory, SotClipboardFormatId::STARWRITER_30),
+        FormatEntry(xFactory, SotClipboardFormatId::STARWRITER_40),
+        FormatEntry(xFactory, SotClipboardFormatId::STARWRITER_50),
+        FormatEntry(xFactory, SotClipboardFormatId::STARWRITERWEB_40),
+        FormatEntry(xFactory, SotClipboardFormatId::STARWRITERWEB_50),
+        FormatEntry(xFactory, SotClipboardFormatId::STARWRITERGLOB_40),
+        FormatEntry(xFactory, SotClipboardFormatId::STARWRITERGLOB_50),
+        FormatEntry(xFactory, SotClipboardFormatId::STARDRAW),
+        FormatEntry(xFactory, SotClipboardFormatId::STARDRAW_40),
+        FormatEntry(xFactory, SotClipboardFormatId::STARIMPRESS_50),
+        FormatEntry(xFactory, SotClipboardFormatId::STARDRAW_50),
+        FormatEntry(xFactory, SotClipboardFormatId::STARCALC),
+        FormatEntry(xFactory, SotClipboardFormatId::STARCALC_40),
+        FormatEntry(xFactory, SotClipboardFormatId::STARCALC_50),
+        FormatEntry(xFactory, SotClipboardFormatId::STARCHART),
+        FormatEntry(xFactory, SotClipboardFormatId::STARCHART_40),
+        FormatEntry(xFactory, SotClipboardFormatId::STARCHART_50),
+        FormatEntry(xFactory, SotClipboardFormatId::STARIMAGE),
+        FormatEntry(xFactory, SotClipboardFormatId::STARIMAGE_40),
+        FormatEntry(xFactory, SotClipboardFormatId::STARIMAGE_50),
+        FormatEntry(xFactory, SotClipboardFormatId::STARMATH),
+        FormatEntry(xFactory, SotClipboardFormatId::STARMATH_40),
+        FormatEntry(xFactory, SotClipboardFormatId::STARMATH_50),
+        FormatEntry(xFactory, SotClipboardFormatId::STAROBJECT_PAINTDOC),
+        FormatEntry(xFactory, SotClipboardFormatId::FILLED_AREA),
+        FormatEntry(xFactory, SotClipboardFormatId::HTML),
+        FormatEntry(xFactory, SotClipboardFormatId::HTML_SIMPLE),
+        FormatEntry(xFactory, SotClipboardFormatId::CHAOS),
+        FormatEntry(xFactory, SotClipboardFormatId::CNT_MSGATTACHFILE),
+        FormatEntry(xFactory, SotClipboardFormatId::BIFF_5),
+        FormatEntry(xFactory, SotClipboardFormatId::BIFF__5),
+        FormatEntry(xFactory, SotClipboardFormatId::BIFF_8),
+        FormatEntry(xFactory, SotClipboardFormatId::SYLK_BIGCAPS),
+        FormatEntry(xFactory, SotClipboardFormatId::LINK),
+        FormatEntry(xFactory, SotClipboardFormatId::STARDRAW_TABBAR),
+        FormatEntry(xFactory, SotClipboardFormatId::SONLK),
+        FormatEntry(xFactory, SotClipboardFormatId::MSWORD_DOC),
+        FormatEntry(xFactory, SotClipboardFormatId::STAR_FRAMESET_DOC),
+        FormatEntry(xFactory, SotClipboardFormatId::OFFICE_DOC),
+        FormatEntry(xFactory, SotClipboardFormatId::NOTES_DOCINFO),
+        FormatEntry(xFactory, SotClipboardFormatId::NOTES_HNOTE),
+        FormatEntry(xFactory, SotClipboardFormatId::NOTES_NATIVE),
+        FormatEntry(xFactory, SotClipboardFormatId::SFX_DOC),
+        FormatEntry(xFactory, SotClipboardFormatId::EVDF),
+        FormatEntry(xFactory, SotClipboardFormatId::ESDF),
+        FormatEntry(xFactory, SotClipboardFormatId::IDF),
+        FormatEntry(xFactory, SotClipboardFormatId::EFTP),
+        FormatEntry(xFactory, SotClipboardFormatId::EFD),
+        FormatEntry(xFactory, SotClipboardFormatId::SVX_FORMFIELDEXCH),
+        FormatEntry(xFactory, SotClipboardFormatId::EXTENDED_TABBAR),
+        FormatEntry(xFactory, SotClipboardFormatId::SBA_DATAEXCHANGE),
+        FormatEntry(xFactory, SotClipboardFormatId::SBA_FIELDDATAEXCHANGE),
+        FormatEntry(xFactory, SotClipboardFormatId::SBA_PRIVATE_URL),
+        FormatEntry(xFactory, SotClipboardFormatId::SBA_TABED),
+        FormatEntry(xFactory, SotClipboardFormatId::SBA_TABID),
+        FormatEntry(xFactory, SotClipboardFormatId::SBA_JOIN),
+        FormatEntry(xFactory, SotClipboardFormatId::OBJECTDESCRIPTOR),
+        FormatEntry(xFactory, SotClipboardFormatId::LINKSRCDESCRIPTOR),
+        FormatEntry(xFactory, SotClipboardFormatId::EMBED_SOURCE),
+        FormatEntry(xFactory, SotClipboardFormatId::LINK_SOURCE),
+        FormatEntry(xFactory, SotClipboardFormatId::EMBEDDED_OBJ),
+        FormatEntry(xFactory, SotClipboardFormatId::FILECONTENT),
+        FormatEntry(xFactory, SotClipboardFormatId::FILEGRPDESCRIPTOR),
+        FormatEntry(xFactory, SotClipboardFormatId::FILENAME),
+        FormatEntry(xFactory, SotClipboardFormatId::SD_OLE),
+        FormatEntry(xFactory, SotClipboardFormatId::EMBEDDED_OBJ_OLE),
+        FormatEntry(xFactory, SotClipboardFormatId::EMBED_SOURCE_OLE),
+        FormatEntry(xFactory, SotClipboardFormatId::OBJECTDESCRIPTOR_OLE),
+        FormatEntry(xFactory, SotClipboardFormatId::LINKSRCDESCRIPTOR_OLE),
+        FormatEntry(xFactory, SotClipboardFormatId::LINK_SOURCE_OLE),
+        FormatEntry(xFactory, SotClipboardFormatId::SBA_CTRLDATAEXCHANGE),
+        FormatEntry(xFactory, SotClipboardFormatId::OUTPLACE_OBJ),
+        FormatEntry(xFactory, SotClipboardFormatId::CNT_OWN_CLIP),
+        FormatEntry(xFactory, SotClipboardFormatId::INET_IMAGE),
+        FormatEntry(xFactory, SotClipboardFormatId::NETSCAPE_IMAGE),
+        FormatEntry(xFactory, SotClipboardFormatId::SBA_FORMEXCHANGE),
+        FormatEntry(xFactory, SotClipboardFormatId::SBA_REPORTEXCHANGE),
+        FormatEntry(xFactory, SotClipboardFormatId::UNIFORMRESOURCELOCATOR),
+        FormatEntry(xFactory, SotClipboardFormatId::STARCHARTDOCUMENT_50),
+        FormatEntry(xFactory, SotClipboardFormatId::GRAPHOBJ),
+        FormatEntry(xFactory, SotClipboardFormatId::STARWRITER_60),
+        FormatEntry(xFactory, SotClipboardFormatId::STARWRITERWEB_60),
+        FormatEntry(xFactory, SotClipboardFormatId::STARWRITERGLOB_60),
+        FormatEntry(xFactory, SotClipboardFormatId::STARDRAW_60),
+        FormatEntry(xFactory, SotClipboardFormatId::STARIMPRESS_60),
+        FormatEntry(xFactory, SotClipboardFormatId::STARCALC_60),
+        FormatEntry(xFactory, SotClipboardFormatId::STARCHART_60),
+        FormatEntry(xFactory, SotClipboardFormatId::STARMATH_60),
+        FormatEntry(xFactory, SotClipboardFormatId::DIALOG_60),
+        FormatEntry(xFactory, SotClipboardFormatId::BMP),
+        FormatEntry(xFactory, SotClipboardFormatId::PNG),
+        FormatEntry(xFactory, SotClipboardFormatId::SVG),
+        FormatEntry(xFactory, SotClipboardFormatId::MATHML),
+        FormatEntry(xFactory, SotClipboardFormatId::RICHTEXT),
+        FormatEntry(xFactory, SotClipboardFormatId::MARKDOWN),
     };
+}
 
-namespace {
+const auto& g_TranslTable()
+{
+    static const auto table = initTranslTable();
+    return table;
+}
 
 void findDataFlavorForStandardFormatId( sal_Int32 aStandardFormatId, 
DataFlavor& aDataFlavor )
 {
@@ -375,21 +257,21 @@ void findDataFlavorForStandardFormatId( sal_Int32 
aStandardFormatId, DataFlavor&
         standard clipboard format id appear before the other
         entries with CF_INVALID
     */
-    auto citer = std::find_if(g_TranslTable.begin(), g_TranslTable.end(),
+    auto citer = std::find_if(g_TranslTable().begin(), g_TranslTable().end(),
         [&aStandardFormatId](const FormatEntry& rEntry) {
             return rEntry.aStandardFormatId == aStandardFormatId
                 || rEntry.aStandardFormatId == CF_INVALID;
         });
-    if (citer != g_TranslTable.end() && citer->aStandardFormatId == 
aStandardFormatId)
+    if (citer != g_TranslTable().end() && citer->aStandardFormatId == 
aStandardFormatId)
         aDataFlavor = citer->aDataFlavor;
 }
 
 void findDataFlavorForNativeFormatName( const OUString& aNativeFormatName, 
DataFlavor& aDataFlavor )
 {
-    auto citer = std::find_if(g_TranslTable.begin(), g_TranslTable.end(),
+    auto citer = std::find_if(g_TranslTable().begin(), g_TranslTable().end(),
         [&aNativeFormatName](const FormatEntry& rEntry) {
             return 
aNativeFormatName.equalsIgnoreAsciiCase(rEntry.aNativeFormatName); });
-    if (citer != g_TranslTable.end())
+    if (citer != g_TranslTable().end())
         aDataFlavor = citer->aDataFlavor;
 }
 
@@ -407,12 +289,12 @@ void findStandardFormatIdForCharset( const OUString& 
aCharset, Any& aAny )
 
 void setStandardFormatIdForNativeFormatName( const OUString& 
aNativeFormatName, Any& aAny )
 {
-    auto citer = std::find_if(g_TranslTable.begin(), g_TranslTable.end(),
+    auto citer = std::find_if(g_TranslTable().begin(), g_TranslTable().end(),
         [&aNativeFormatName](const FormatEntry& rEntry) {
             return 
aNativeFormatName.equalsIgnoreAsciiCase(rEntry.aNativeFormatName)
                 && (CF_INVALID != rEntry.aStandardFormatId);
         });
-    if (citer != g_TranslTable.end())
+    if (citer != g_TranslTable().end())
         aAny <<= citer->aStandardFormatId;
 }
 
@@ -421,12 +303,12 @@ void findStdFormatIdOrNativeFormatNameForFullMediaType(
     const OUString& aFullMediaType,
     Any& aAny )
 {
-    auto citer = std::find_if(g_TranslTable.begin(), g_TranslTable.end(),
+    auto citer = std::find_if(g_TranslTable().begin(), g_TranslTable().end(),
         [&aRefXMimeFactory, &aFullMediaType](const FormatEntry& rEntry) {
             Reference<XMimeContentType> refXMime( 
aRefXMimeFactory->createMimeContentType(rEntry.aDataFlavor.MimeType) );
             return 
aFullMediaType.equalsIgnoreAsciiCase(refXMime->getFullMediaType());
         });
-    if (citer != g_TranslTable.end())
+    if (citer != g_TranslTable().end())
     {
         sal_Int32 cf = citer->aStandardFormatId;
         if ( CF_INVALID != cf )

Reply via email to