Date: prev next · Thread: first prev next last
2012 Archives by date, by thread · List index



 I'd like to revisit the choice of considering string literals to be either 
ASCII or UTF-8, as discussed in the thread about removing 
RTL_CONSTASCII_USTRINGPARAM. While I was ambivalent about it, I now think we 
should go with ASCII only, unless explicitly marked otherwise.

 The reason for this is that I have patches adding more functions taking 
string literals and there it makes much more sense to require only ASCII. For 
example OUString::operator== can be simply a call to OUString::equalsAsciiL() 
for ASCII, but for UTF-8 it requires a conversion and unicode comparison.

 Given that we are talking about this as a followup to removal of 
RTL_CONSTASCII_USTRINGPARAM, which requires those string literals to be ASCII 
anyway, and non-ASCII string literals should be fairly rare given LO's UI 
strings are not written directly in the C++ source files, this should be 
fairly safe and worth it. Additionally all *ascii*() functions can have 
checks for the contents being in the allowed range, and it's also fairly easy 
to check all .cxx files for non-ASCII characters. UTF-8 literals, if needed, 
can be still converted using a simple function (I don't know if there's 
already something, but e.g. OUString::fromUtf8() could be easily added if 
needed).

 For these reasons I'd like to push the attached patches (changing OUString 
docs to require ASCII in plain string literals, adding ASCII range checks, 
adding OUString operator overloads for string literals and cleaning up usage 
of the macro in sw's ww8 filter as a test).

PS: Any idea why ' OUString foo() { return "foo";} ' does not work, even 
though the ctor is not explicit? I can't recall a reason why a return value 
would need to be different from the other cases.

-- 
 Lubos Lunak
 l.lunak@suse.cz
From 36110adac542c5ac193fc28d1b16d3eb9092ef44 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Lubo=C5=A1=20Lu=C5=88=C3=A1k?= <l.lunak@suse.cz>
Date: Mon, 27 Feb 2012 18:30:07 +0100
Subject: [PATCH 1/5] assume string literals to be ASCII-only, rather than UTF-8

ASCII-only handling is much more efficient, and some functionality
like comparison has optimized variants for ASCII
---
 sal/inc/rtl/ustring.hxx |   16 +++++++++-------
 1 files changed, 9 insertions(+), 7 deletions(-)

diff --git a/sal/inc/rtl/ustring.hxx b/sal/inc/rtl/ustring.hxx
index 27eb865..8a3184b 100644
--- a/sal/inc/rtl/ustring.hxx
+++ b/sal/inc/rtl/ustring.hxx
@@ -168,12 +168,14 @@ public:
     }
 
     /**
-      New string from an 8-Bit string literal that is expected to be in UTF-8
-      (or its subset, ASCII). All string literals in the codebase are
-      assumed to be only UTF-8/ASCII, so this constructor allows an efficient
-      and convenient way to create OUString instances from literals.
+      New string from an 8-Bit string literal that is expected to contain only
+      characters in the ASCII set (i.e. first 128 characters). This constructor
+      allows an efficient and convenient way to create OUString
+      instances from ASCII literals. When creating strings from data that
+      is not pure ASCII, it needs to be converted to OUString by explicitly
+      providing the encoding to use for the conversion.
 
-      @param    literal         the 8-bit string literal
+      @param    literal         the 8-bit ASCII string literal
 
       @exception std::bad_alloc is thrown if an out-of-memory condition occurs
     */
@@ -181,7 +183,7 @@ public:
     OUString( const char (&literal)[ N ] )
     {
         pData = 0;
-        rtl_string2UString( &pData, literal, N - 1, RTL_TEXTENCODING_UTF8, 
OSTRING_TO_OUSTRING_CVTFLAGS );
+        rtl_string2UString( &pData, literal, N - 1, RTL_TEXTENCODING_ASCII_US, 0 );
         if (pData == 0) {
 #if defined EXCEPTIONS_OFF
             SAL_WARN("sal", "std::bad_alloc but EXCEPTIONS_OFF");
@@ -195,7 +197,7 @@ public:
      * This overload exists only to avoid creating instances directly from (non-const) char[],
      * which would otherwise be picked up by the optimized const char[] constructor.
      * Since the non-const array cannot be guaranteed to contain characters in the expected
-     * UTF-8/ASCII encoding, this needs to be prevented.
+     * ASCII encoding, this needs to be prevented.
      *
      * It is an error to try to call this overload.
      *
-- 
1.7.3.4

From e95e415928484c4eeb47b310af83ca5424c21f4e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Lubo=C5=A1=20Lu=C5=88=C3=A1k?= <l.lunak@suse.cz>
Date: Mon, 27 Feb 2012 19:08:01 +0100
Subject: [PATCH 2/5] add @since to new OUString ctors

---
 sal/inc/rtl/ustring.hxx |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)

diff --git a/sal/inc/rtl/ustring.hxx b/sal/inc/rtl/ustring.hxx
index 8a3184b..30c9576 100644
--- a/sal/inc/rtl/ustring.hxx
+++ b/sal/inc/rtl/ustring.hxx
@@ -178,6 +178,7 @@ public:
       @param    literal         the 8-bit ASCII string literal
 
       @exception std::bad_alloc is thrown if an out-of-memory condition occurs
+      @since 3.6
     */
     template< int N >
     OUString( const char (&literal)[ N ] )
@@ -202,6 +203,7 @@ public:
      * It is an error to try to call this overload.
      *
      * @internal
+     * @since 3.6
      */
     template< int N >
     OUString( char (&value)[ N ] )
-- 
1.7.3.4

From a761f2c8565ad86d89d783ac378cfcbd1b7c7557 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Lubo=C5=A1=20Lu=C5=88=C3=A1k?= <l.lunak@suse.cz>
Date: Tue, 28 Feb 2012 11:38:59 +0100
Subject: [PATCH 3/5] check that *ascii* string functions are really passed only ASCII

---
 sal/rtl/source/ustring.cxx |   35 +++++++++++++++++++++++++++++------
 1 files changed, 29 insertions(+), 6 deletions(-)

diff --git a/sal/rtl/source/ustring.cxx b/sal/rtl/source/ustring.cxx
index d7f8a96..7c99758 100644
--- a/sal/rtl/source/ustring.cxx
+++ b/sal/rtl/source/ustring.cxx
@@ -175,6 +175,9 @@ sal_Int32 SAL_CALL rtl_ustr_ascii_compare( const sal_Unicode* pStr1,
                      ((sal_Int32)((unsigned char)(*pStr2)))) == 0) &&
             *pStr2 )
     {
+        /* Check ASCII range */
+        SAL_WARN_IF( ((unsigned char)*pStr2) > 127, "rtl.string",
+                    "rtl_ustr_ascii_compare - Found char > 127" );
         pStr1++;
         pStr2++;
     }
@@ -194,6 +197,9 @@ sal_Int32 SAL_CALL rtl_ustr_ascii_compare_WithLength( const sal_Unicode* pStr1,
                     ((sal_Int32)((unsigned char)(*pStr2)))) == 0) &&
            nStr1Len && *pStr2 )
     {
+        /* Check ASCII range */
+        SAL_WARN_IF( ((unsigned char)*pStr2) > 127, "rtl.string",
+                    "rtl_ustr_ascii_compare_WithLength - Found char > 127" );
         pStr1++;
         pStr2++;
         nStr1Len--;
@@ -216,7 +222,8 @@ sal_Int32 SAL_CALL rtl_ustr_ascii_shortenedCompare_WithLength( const sal_Unicode
             (pStr1 < pStr1End) && *pStr2 )
     {
         /* Check ASCII range */
-        OSL_ENSURE( (*pStr2 & 0x80) == 0, "Found ASCII char > 127");
+        SAL_WARN_IF( ((unsigned char)*pStr2) > 127, "rtl.string",
+                    "rtl_ustr_ascii_shortenedCompare_WithLength - Found char > 127" );
 
         nRet = ((sal_Int32)*pStr1)-
                ((sal_Int32)(unsigned char)*pStr2);
@@ -259,6 +266,9 @@ sal_Int32 SAL_CALL rtl_ustr_asciil_reverseCompare_WithLength( const sal_Unicode*
     sal_Int32           nRet;
     while ( (pStr1 < pStr1Run) && (pStr2 < pStr2Run) )
     {
+        /* Check ASCII range */
+        SAL_WARN_IF( ((unsigned char)*pStr2) > 127, "rtl.string",
+                    "rtl_ustr_asciil_reverseCompare_WithLength - Found char > 127" );
         pStr1Run--;
         pStr2Run--;
         nRet = ((sal_Int32)*pStr1Run)-((sal_Int32)*pStr2Run);
@@ -280,6 +290,9 @@ sal_Bool SAL_CALL rtl_ustr_asciil_reverseEquals_WithLength( const sal_Unicode* p
     const sal_Char*     pStr2Run = pStr2+nStrLen;
     while ( pStr1 < pStr1Run )
     {
+        /* Check ASCII range */
+        SAL_WARN_IF( ((unsigned char)*pStr2) > 127, "rtl.string",
+                    "rtl_ustr_asciil_reverseEquals_WithLength - Found char > 127" );
         pStr1Run--;
         pStr2Run--;
         if( *pStr1Run != (sal_Unicode)*pStr2Run )
@@ -300,6 +313,9 @@ sal_Int32 SAL_CALL rtl_ustr_ascii_compareIgnoreAsciiCase( const sal_Unicode* pSt
     sal_Int32   c2;
     do
     {
+        /* Check ASCII range */
+        SAL_WARN_IF( ((unsigned char)*pStr2) > 127, "rtl.string",
+                    "rtl_ustr_ascii_compareIgnoreAsciiCase - Found char > 127" );
         /* If character between 'A' and 'Z', than convert it to lowercase */
         c1 = (sal_Int32)*pStr1;
         c2 = (sal_Int32)((unsigned char)*pStr2);
@@ -331,6 +347,9 @@ sal_Int32 SAL_CALL rtl_ustr_ascii_compareIgnoreAsciiCase_WithLength( const sal_U
     sal_Int32   c2;
     do
     {
+        /* Check ASCII range */
+        SAL_WARN_IF( ((unsigned char)*pStr2) > 127, "rtl.string",
+                    "rtl_ustr_ascii_compareIgnoreAsciiCase_WithLength - Found char > 127" );
         if ( !nStr1Len )
             return *pStr2 == '\0' ? 0 : -1;
 
@@ -361,6 +380,9 @@ sal_Int32 rtl_ustr_ascii_compareIgnoreAsciiCase_WithLengths(
     sal_Int32 i;
     sal_Int32 len = firstLen < secondLen ? firstLen : secondLen;
     for (i = 0; i < len; ++i) {
+        /* Check ASCII range */
+        SAL_WARN_IF( ((unsigned char)*second) > 127, "rtl.string",
+                    "rtl_ustr_ascii_compareIgnoreAsciiCase_WithLengths - Found char > 127" );
         sal_Int32 c1 = *first++;
         sal_Int32 c2 = (unsigned char) *second++;
         sal_Int32 d;
@@ -394,7 +416,8 @@ sal_Int32 SAL_CALL rtl_ustr_ascii_shortenedCompareIgnoreAsciiCase_WithLength( co
             (pStr1 < pStr1End) && *pStr2 )
     {
         /* Check ASCII range */
-        OSL_ENSURE( (*pStr2 & 0x80) == 0, "Found ASCII char > 127");
+        SAL_WARN_IF( ((unsigned char)*pStr2) > 127, "rtl.string",
+                    "rtl_ustr_ascii_shortenedCompareIgnoreAsciiCase_WithLength - Found char > 127" 
);
 
         /* If character between 'A' and 'Z', than convert it to lowercase */
         c1 = (sal_Int32)*pStr1;
@@ -465,8 +488,8 @@ void SAL_CALL rtl_uString_newFromAscii( rtl_uString** ppThis,
         do
         {
             /* Check ASCII range */
-            OSL_ENSURE( ((unsigned char)*pCharStr) <= 127,
-                        "rtl_uString_newFromAscii() - Found ASCII char > 127" );
+            SAL_WARN_IF( ((unsigned char)*pCharStr) > 127, "rtl.string",
+                        "rtl_uString_newFromAscii - Found char > 127" );
 
             *pBuffer = *pCharStr;
             pBuffer++;
@@ -648,7 +671,7 @@ static void rtl_string2UString_status( rtl_uString** ppThis,
                     do
                     {
                         /* Check ASCII range */
-                        OSL_ENSURE( ((unsigned char)*pStr) <= 127,
+                        SAL_WARN_IF( ((unsigned char)*pStr) > 127, "rtl.string",
                                     "rtl_string2UString_status() - UTF8 test encoding is wrong" );
 
                         *pBuffer = *pStr;
@@ -872,7 +895,7 @@ void SAL_CALL rtl_uString_internConvert( rtl_uString   ** newStr,
             for (i = 0; i < len; i++)
             {
                 /* Check ASCII range */
-                OSL_ENSURE( ((unsigned char)str[i]) <= 127,
+                SAL_WARN_IF( ((unsigned char)str[i]) > 127, "rtl.string",
                             "rtl_ustring_internConvert() - Found char > 127 and 
RTL_TEXTENCODING_ASCII_US is specified" );
                 pScratch->buffer[i] = str[i];
             }
-- 
1.7.3.4

From cc96390ae3b34ab6b592a742764a05a749557e4f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Lubo=C5=A1=20Lu=C5=88=C3=A1k?= <l.lunak@suse.cz>
Date: Tue, 28 Feb 2012 11:40:41 +0100
Subject: [PATCH 5/5] remove RTL_CONSTASCII_USTRINGPARAM usage

---
 sw/source/filter/ww8/docxattributeoutput.cxx |   12 ++--
 sw/source/filter/ww8/docxexport.cxx          |   78 +++++++++++++-------------
 sw/source/filter/ww8/docxexportfilter.cxx    |    6 +-
 sw/source/filter/ww8/hash_wrap.hxx           |    4 +-
 sw/source/filter/ww8/rtfattributeoutput.cxx  |   38 ++++++------
 sw/source/filter/ww8/rtfexportfilter.cxx     |    4 +-
 sw/source/filter/ww8/rtfimportfilter.cxx     |    6 +-
 sw/source/filter/ww8/rtfsdrexport.cxx        |    2 +-
 sw/source/filter/ww8/sortedarray.hxx         |    4 +-
 sw/source/filter/ww8/writerwordglue.cxx      |    2 +-
 sw/source/filter/ww8/wrtw8nds.cxx            |   54 ++++++++----------
 sw/source/filter/ww8/wrtww8.cxx              |   60 ++++++++++----------
 sw/source/filter/ww8/wrtww8gr.cxx            |    5 +-
 sw/source/filter/ww8/ww8par.cxx              |   23 +++----
 sw/source/filter/ww8/ww8par3.cxx             |   22 +++----
 sw/source/filter/ww8/ww8par5.cxx             |   28 ++++-----
 sw/source/filter/ww8/ww8toolbar.cxx          |   38 ++++++------
 17 files changed, 185 insertions(+), 201 deletions(-)

diff --git a/sw/source/filter/ww8/docxattributeoutput.cxx 
b/sw/source/filter/ww8/docxattributeoutput.cxx
index 18ade46..1b1de4f 100644
--- a/sw/source/filter/ww8/docxattributeoutput.cxx
+++ b/sw/source/filter/ww8/docxattributeoutput.cxx
@@ -649,11 +649,11 @@ void DocxAttributeOutput::WriteFFData(  const FieldInfos& rInfos )
         rtl::OUString sName, sHelp, sToolTip, sSelected;
 
         FieldMarkParamsHelper params( rFieldmark );
-        params.extractParam( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(ODF_FORMDROPDOWN_LISTENTRY) 
), vListEntries );
+        params.extractParam( ODF_FORMDROPDOWN_LISTENTRY, vListEntries );
         sName = params.getName();
         sal_Int32 nSelectedIndex = 0;
 
-        if ( params.extractParam( 
rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(ODF_FORMDROPDOWN_RESULT) ), nSelectedIndex ) )
+        if ( params.extractParam( ODF_FORMDROPDOWN_RESULT, nSelectedIndex ) )
         {
             if (nSelectedIndex < vListEntries.getLength() )
                 sSelected = vListEntries[ nSelectedIndex ];
@@ -667,7 +667,7 @@ void DocxAttributeOutput::WriteFFData(  const FieldInfos& rInfos )
         bool bChecked = false;
 
         FieldMarkParamsHelper params( rFieldmark );
-        params.extractParam( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( ODF_FORMCHECKBOX_NAME ) ), 
sName );
+        params.extractParam( ODF_FORMCHECKBOX_NAME, sName );
 
         const sw::mark::ICheckboxFieldmark* pCheckboxFm = dynamic_cast<const 
sw::mark::ICheckboxFieldmark*>(&rFieldmark);
         if ( pCheckboxFm && pCheckboxFm->IsChecked() )
@@ -1102,7 +1102,7 @@ void DocxAttributeOutput::StartRuby( const SwTxtNode& rNode, xub_StrLen nPos, 
co
                 rNode.GetLang( nPos ) ) );
     OUString sLang( aLocale.Language );
     if ( !aLocale.Country.isEmpty() )
-        sLang += OUString(RTL_CONSTASCII_USTRINGPARAM( "-" )) + OUString( aLocale.Country );
+        sLang += OUString( "-" ) + OUString( aLocale.Country );
     m_pSerializer->singleElementNS( XML_w, XML_lid,
             FSNS( XML_w, XML_val ),
             OUStringToOString( sLang, RTL_TEXTENCODING_UTF8 ).getStr( ), FSEND );
@@ -2229,7 +2229,7 @@ bool DocxAttributeOutput::WriteOLEChart( const SdrObject* pSdrObj, const 
Size& r
     {
         uno::Reference< beans::XPropertySet > xPropSet( xShape, uno::UNO_QUERY );
         if( xPropSet.is() )
-            xChartDoc.set( xPropSet->getPropertyValue( 
rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Model")) ), uno::UNO_QUERY );
+            xChartDoc.set( xPropSet->getPropertyValue( "Model" ), uno::UNO_QUERY );
     }
 
     if( xChartDoc.is() )
@@ -2254,7 +2254,7 @@ bool DocxAttributeOutput::WriteOLEChart( const SdrObject* pSdrObj, const 
Size& r
 
         // should get the unique id
         sal_Int32 nID = 1;
-        OUString sName(RTL_CONSTASCII_USTRINGPARAM("Object 1"));
+        OUString sName("Object 1");
         uno::Reference< container::XNamed > xNamed( xShape, uno::UNO_QUERY );
         if( xNamed.is() )
             sName = xNamed->getName();
diff --git a/sw/source/filter/ww8/docxexport.cxx b/sw/source/filter/ww8/docxexport.cxx
index 6d8930c..5f7c6da 100644
--- a/sw/source/filter/ww8/docxexport.cxx
+++ b/sw/source/filter/ww8/docxexport.cxx
@@ -80,8 +80,6 @@ using rtl::OUStringBuffer;
 
 using sw::mark::IMark;
 
-#define S( x ) OUString( RTL_CONSTASCII_USTRINGPARAM( x ) )
-
 AttributeOutputBase& DocxExport::AttrOutput() const
 {
     return *m_pAttrOutput;
@@ -313,7 +311,7 @@ rtl::OString DocxExport::OutputChart( uno::Reference< frame::XModel >& xModel, s
                                 .makeStringAndClear();
 
     OUString sId = m_pFilter->addRelation( m_pDocumentFS->getOutputStream(),
-                    S( "http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart"; 
),
+                    "http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart";,
                     aFileName );
 
     aFileName = rtl::OUStringBuffer()
@@ -324,7 +322,7 @@ rtl::OString DocxExport::OutputChart( uno::Reference< frame::XModel >& xModel, s
 
     ::sax_fastparser::FSHelperPtr pChartFS =
         m_pFilter->openFragmentStreamWithSerializer( aFileName,
-            S( "application/vnd.openxmlformats-officedocument.drawingml.chart" ) );
+            "application/vnd.openxmlformats-officedocument.drawingml.chart" );
 
     oox::drawingml::ChartExport aChartExport( XML_w, pChartFS, xModel, m_pFilter, 
oox::drawingml::DrawingML::DOCUMENT_DOCX );
     aChartExport.ExportContent();
@@ -459,12 +457,12 @@ void DocxExport::InitStyles()
 
     // setup word/styles.xml and the relations + content type
     m_pFilter->addRelation( m_pDocumentFS->getOutputStream(),
-            S( "http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles"; ),
-            S( "styles.xml" ) );
+            "http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles";,
+            "styles.xml" );
 
     ::sax_fastparser::FSHelperPtr pStylesFS =
-        m_pFilter->openFragmentStreamWithSerializer( S( "word/styles.xml" ),
-            S( "application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml" ) );
+        m_pFilter->openFragmentStreamWithSerializer( "word/styles.xml",
+            "application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml" );
 
     // switch the serializer to redirect the output to word/styles.xml
     m_pAttrOutput->SetSerializer( pStylesFS );
@@ -482,12 +480,12 @@ void DocxExport::WriteFootnotesEndnotes()
     {
         // setup word/styles.xml and the relations + content type
         m_pFilter->addRelation( m_pDocumentFS->getOutputStream(),
-                S( "http://schemas.openxmlformats.org/officeDocument/2006/relationships/footnotes"; 
),
-                S( "footnotes.xml" ) );
+                "http://schemas.openxmlformats.org/officeDocument/2006/relationships/footnotes";,
+                "footnotes.xml" );
 
         ::sax_fastparser::FSHelperPtr pFootnotesFS =
-            m_pFilter->openFragmentStreamWithSerializer( S( "word/footnotes.xml" ),
-                    S( 
"application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml" ) );
+            m_pFilter->openFragmentStreamWithSerializer( "word/footnotes.xml",
+                    "application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml" 
);
 
         // switch the serializer to redirect the output to word/footnotes.xml
         m_pAttrOutput->SetSerializer( pFootnotesFS );
@@ -503,12 +501,12 @@ void DocxExport::WriteFootnotesEndnotes()
     {
         // setup word/styles.xml and the relations + content type
         m_pFilter->addRelation( m_pDocumentFS->getOutputStream(),
-                S( "http://schemas.openxmlformats.org/officeDocument/2006/relationships/endnotes"; 
),
-                S( "endnotes.xml" ) );
+                "http://schemas.openxmlformats.org/officeDocument/2006/relationships/endnotes";,
+                "endnotes.xml" );
 
         ::sax_fastparser::FSHelperPtr pEndnotesFS =
-            m_pFilter->openFragmentStreamWithSerializer( S( "word/endnotes.xml" ),
-                    S( 
"application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml" ) );
+            m_pFilter->openFragmentStreamWithSerializer( "word/endnotes.xml",
+                    "application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml" 
);
 
         // switch the serializer to redirect the output to word/endnotes.xml
         m_pAttrOutput->SetSerializer( pEndnotesFS );
@@ -526,12 +524,12 @@ void DocxExport::WritePostitFields()
     if ( m_pAttrOutput->HasPostitFields() )
     {
         m_pFilter->addRelation( m_pDocumentFS->getOutputStream(),
-                S( "http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments"; 
),
-                S( "comments.xml" ) );
+                "http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments";,
+                "comments.xml" );
 
         ::sax_fastparser::FSHelperPtr pPostitFS =
-            m_pFilter->openFragmentStreamWithSerializer( S( "word/comments.xml" ),
-                    S( 
"application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml" ) );
+            m_pFilter->openFragmentStreamWithSerializer( "word/comments.xml",
+                    "application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml" 
);
 
         pPostitFS->startElementNS( XML_w, XML_comments, MainXmlNamespaces( pPostitFS ));
         m_pAttrOutput->SetSerializer( pPostitFS );
@@ -547,11 +545,11 @@ void DocxExport::WriteNumbering()
         return; // no numbering is used
 
     m_pFilter->addRelation( m_pDocumentFS->getOutputStream(),
-        S( "http://schemas.openxmlformats.org/officeDocument/2006/relationships/numbering"; ),
-        S( "numbering.xml" ) );
+        "http://schemas.openxmlformats.org/officeDocument/2006/relationships/numbering";,
+        "numbering.xml" );
 
-    ::sax_fastparser::FSHelperPtr pNumberingFS = m_pFilter->openFragmentStreamWithSerializer( S( 
"word/numbering.xml" ),
-        S( "application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml" ) );
+    ::sax_fastparser::FSHelperPtr pNumberingFS = m_pFilter->openFragmentStreamWithSerializer( 
"word/numbering.xml",
+        "application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml" );
 
     // switch the serializer to redirect the output to word/nubering.xml
     m_pAttrOutput->SetSerializer( pNumberingFS );
@@ -582,11 +580,11 @@ void DocxExport::WriteHeaderFooter( const SwFmt& rFmt, bool bHeader, const 
char*
             .makeStringAndClear() );
 
         aRelId = m_pFilter->addRelation( m_pDocumentFS->getOutputStream(),
-                S( "http://schemas.openxmlformats.org/officeDocument/2006/relationships/header"; ),
+                "http://schemas.openxmlformats.org/officeDocument/2006/relationships/header";,
                 aName );
 
         pFS = m_pFilter->openFragmentStreamWithSerializer( 
OUStringBuffer().appendAscii(RTL_CONSTASCII_STRINGPARAM("word/")).append( aName 
).makeStringAndClear(),
-                    S( "application/vnd.openxmlformats-officedocument.wordprocessingml.header+xml" 
) );
+                    "application/vnd.openxmlformats-officedocument.wordprocessingml.header+xml" );
 
         pFS->startElementNS( XML_w, XML_hdr, MainXmlNamespaces( pFS ));
     }
@@ -595,11 +593,11 @@ void DocxExport::WriteHeaderFooter( const SwFmt& rFmt, bool bHeader, const 
char*
         OUString aName( OUStringBuffer().appendAscii(RTL_CONSTASCII_STRINGPARAM("footer")).append( 
++m_nFooters ).appendAscii(RTL_CONSTASCII_STRINGPARAM(".xml")).makeStringAndClear() );
 
         aRelId = m_pFilter->addRelation( m_pDocumentFS->getOutputStream(),
-                S( "http://schemas.openxmlformats.org/officeDocument/2006/relationships/footer"; ),
+                "http://schemas.openxmlformats.org/officeDocument/2006/relationships/footer";,
                 aName );
 
         pFS = m_pFilter->openFragmentStreamWithSerializer( 
OUStringBuffer().appendAscii(RTL_CONSTASCII_STRINGPARAM("word/")).append( aName 
).makeStringAndClear(),
-                    S( "application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml" 
) );
+                    "application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml" );
 
         pFS->startElementNS( XML_w, XML_ftr, MainXmlNamespaces( pFS ));
     }
@@ -636,12 +634,12 @@ void DocxExport::WriteHeaderFooter( const SwFmt& rFmt, bool bHeader, const 
char*
 void DocxExport::WriteFonts()
 {
     m_pFilter->addRelation( m_pDocumentFS->getOutputStream(),
-            S( "http://schemas.openxmlformats.org/officeDocument/2006/relationships/fontTable"; ),
-            S( "fontTable.xml" ) );
+            "http://schemas.openxmlformats.org/officeDocument/2006/relationships/fontTable";,
+            "fontTable.xml" );
 
     ::sax_fastparser::FSHelperPtr pFS = m_pFilter->openFragmentStreamWithSerializer(
-            S( "word/fontTable.xml" ),
-            S( "application/vnd.openxmlformats-officedocument.wordprocessingml.fontTable+xml" ) );
+            "word/fontTable.xml",
+            "application/vnd.openxmlformats-officedocument.wordprocessingml.fontTable+xml" );
 
     pFS->startElementNS( XML_w, XML_fonts,
             FSNS( XML_xmlns, XML_w ), 
"http://schemas.openxmlformats.org/wordprocessingml/2006/main";,
@@ -681,12 +679,12 @@ void DocxExport::WriteSettings()
         return;
 
     m_pFilter->addRelation( m_pDocumentFS->getOutputStream(),
-            S( "http://schemas.openxmlformats.org/officeDocument/2006/relationships/settings"; ),
-            S( "settings.xml" ) );
+            "http://schemas.openxmlformats.org/officeDocument/2006/relationships/settings";,
+            "settings.xml" );
 
     ::sax_fastparser::FSHelperPtr pFS = m_pFilter->openFragmentStreamWithSerializer(
-            S( "word/settings.xml" ),
-            S( "application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml" ) );
+            "word/settings.xml",
+            "application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml" );
 
     pFS->startElementNS( XML_w, XML_settings,
             FSNS( XML_xmlns, XML_w ), 
"http://schemas.openxmlformats.org/wordprocessingml/2006/main";,
@@ -812,12 +810,12 @@ DocxExport::DocxExport( DocxExportFilter *pFilter, SwDoc *pDocument, SwPaM 
*pCur
     WriteProperties( );
 
     // relations for the document
-    m_pFilter->addRelation( S( 
"http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument"; ),
-            S( "word/document.xml" ) );
+    m_pFilter->addRelation( 
"http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument";,
+            "word/document.xml" );
 
     // the actual document
-    m_pDocumentFS = m_pFilter->openFragmentStreamWithSerializer( S( "word/document.xml" ),
-            S( "application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml" 
) );
+    m_pDocumentFS = m_pFilter->openFragmentStreamWithSerializer( "word/document.xml",
+            "application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml" );
 
     // the DrawingML access
     m_pDrawingML = new oox::drawingml::DrawingML( m_pDocumentFS, m_pFilter, 
oox::drawingml::DrawingML::DOCUMENT_DOCX );
diff --git a/sw/source/filter/ww8/docxexportfilter.cxx b/sw/source/filter/ww8/docxexportfilter.cxx
index a780c5c..83bc819 100644
--- a/sw/source/filter/ww8/docxexportfilter.cxx
+++ b/sw/source/filter/ww8/docxexportfilter.cxx
@@ -42,8 +42,6 @@ using namespace ::comphelper;
 using namespace ::com::sun::star;
 using ::rtl::OUString;
 
-#define S( x ) OUString( RTL_CONSTASCII_USTRINGPARAM( x ) )
-
 DocxExportFilter::DocxExportFilter( const uno::Reference< uno::XComponentContext >& xContext )
     : oox::core::XmlFilterBase( xContext )
 {
@@ -107,7 +105,7 @@ bool DocxExportFilter::exportDocument()
 
 OUString DocxExport_getImplementationName()
 {
-    return OUString( RTL_CONSTASCII_USTRINGPARAM( IMPL_NAME ) );
+    return OUString( IMPL_NAME );
 }
 
 OUString DocxExportFilter::implGetImplementationName() const
@@ -117,7 +115,7 @@ OUString DocxExportFilter::implGetImplementationName() const
 
 uno::Sequence< OUString > SAL_CALL DocxExport_getSupportedServiceNames() throw()
 {
-    const OUString aServiceName( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.document.ExportFilter" 
) );
+    const OUString aServiceName( "com.sun.star.document.ExportFilter" );
     const uno::Sequence< OUString > aSeq( &aServiceName, 1 );
     return aSeq;
 }
diff --git a/sw/source/filter/ww8/hash_wrap.hxx b/sw/source/filter/ww8/hash_wrap.hxx
index a27d1b0..8031cf0 100644
--- a/sw/source/filter/ww8/hash_wrap.hxx
+++ b/sw/source/filter/ww8/hash_wrap.hxx
@@ -83,12 +83,12 @@ namespace ww
                 {
                     if (!bBroken)
                     {
-                        sError = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
+                        sError =
                             "WW8: Duplicate in list, almost certainly don't "
                             "want that!\n"
                             "(You will not see this message again unless you "
                             "restart)\n"
-                            "Extra entries are...\n"));
+                            "Extra entries are...\n";
                         bBroken=true;
                     }
 
diff --git a/sw/source/filter/ww8/rtfattributeoutput.cxx 
b/sw/source/filter/ww8/rtfattributeoutput.cxx
index 875edfb..f740a06 100644
--- a/sw/source/filter/ww8/rtfattributeoutput.cxx
+++ b/sw/source/filter/ww8/rtfattributeoutput.cxx
@@ -1588,7 +1588,7 @@ void RtfAttributeOutput::OutputFlyFrame_Impl( const sw::Frame& rFrame, const 
Poi
                         uno::Reference<beans::XPropertySet> xPropSet(xControlModel, 
uno::UNO_QUERY);
                         uno::Reference<beans::XPropertySetInfo> xPropSetInfo = 
xPropSet->getPropertySetInfo();
                         OUString sName;
-                        if 
(xInfo->supportsService(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.form.component.CheckBox"))))
+                        if (xInfo->supportsService("com.sun.star.form.component.CheckBox"))
                         {
 
                             
m_aRun.append(OUStringToOString(OUString(FieldString(ww::eFORMCHECKBOX)), 
m_rExport.eCurrentEncoding));
@@ -1598,7 +1598,7 @@ void RtfAttributeOutput::OutputFlyFrame_Impl( const sw::Frame& rFrame, const 
Poi
                             m_aRun.append(OOO_STRING_SVTOOLS_RTF_FFHPS "20");
 
                             OUString aStr;
-                            sName = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Name"));
+                            sName = "Name";
                             if (xPropSetInfo->hasPropertyByName(sName))
                             {
                                 xPropSet->getPropertyValue(sName) >>= aStr;
@@ -1607,7 +1607,7 @@ void RtfAttributeOutput::OutputFlyFrame_Impl( const sw::Frame& rFrame, const 
Poi
                                 m_aRun.append('}');
                             }
 
-                            sName = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("HelpText"));
+                            sName = "HelpText";
                             if (xPropSetInfo->hasPropertyByName(sName))
                             {
                                 xPropSet->getPropertyValue(sName) >>= aStr;
@@ -1617,7 +1617,7 @@ void RtfAttributeOutput::OutputFlyFrame_Impl( const sw::Frame& rFrame, const 
Poi
                                 m_aRun.append('}');
                             }
 
-                            sName = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("HelpF1Text"));
+                            sName = "HelpF1Text";
                             if (xPropSetInfo->hasPropertyByName(sName))
                             {
                                 xPropSet->getPropertyValue(sName) >>= aStr;
@@ -1628,10 +1628,10 @@ void RtfAttributeOutput::OutputFlyFrame_Impl( const sw::Frame& rFrame, 
const Poi
                             }
 
                             sal_Int16 nTemp = 0;
-                            
xPropSet->getPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("DefaultState"))) >>= nTemp;
+                            xPropSet->getPropertyValue("DefaultState") >>= nTemp;
                             m_aRun.append(OOO_STRING_SVTOOLS_RTF_FFDEFRES);
                             m_aRun.append((sal_Int32)nTemp);
-                            
xPropSet->getPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("State"))) >>= nTemp;
+                            xPropSet->getPropertyValue("State") >>= nTemp;
                             m_aRun.append(OOO_STRING_SVTOOLS_RTF_FFRES);
                             m_aRun.append((sal_Int32)nTemp);
 
@@ -1640,7 +1640,7 @@ void RtfAttributeOutput::OutputFlyFrame_Impl( const sw::Frame& rFrame, const 
Poi
                             // field result is empty, ffres already contains the form result
                             m_aRun.append("}{" OOO_STRING_SVTOOLS_RTF_FLDRSLT " ");
                         }
-                        else if 
(xInfo->supportsService(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.form.component.TextField"))))
+                        else if (xInfo->supportsService("com.sun.star.form.component.TextField"))
                         {
                             OStringBuffer aBuf;
                             OString aStr;
@@ -1650,12 +1650,12 @@ void RtfAttributeOutput::OutputFlyFrame_Impl( const sw::Frame& rFrame, 
const Poi
                             m_aRun.append(OUStringToOString(OUString(FieldString(ww::eFORMTEXT)), 
m_rExport.eCurrentEncoding));
                             m_aRun.append("{" OOO_STRING_SVTOOLS_RTF_IGNORE 
OOO_STRING_SVTOOLS_RTF_DATAFIELD " ");
                             for (int i = 0; i < 8; i++) aBuf.append((sal_Char)0x00);
-                            
xPropSet->getPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Name"))) >>= aTmp;
+                            xPropSet->getPropertyValue("Name") >>= aTmp;
                             aStr = OUStringToOString(aTmp, m_rExport.eCurrentEncoding);
                             aBuf.append((sal_Char)aStr.getLength());
                             aBuf.append(aStr);
                             aBuf.append((sal_Char)0x00);
-                            
xPropSet->getPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("DefaultText"))) >>= aTmp;
+                            xPropSet->getPropertyValue("DefaultText") >>= aTmp;
                             aStr = OUStringToOString(aTmp, m_rExport.eCurrentEncoding);
                             aBuf.append((sal_Char)aStr.getLength());
                             aBuf.append(aStr);
@@ -1666,11 +1666,11 @@ void RtfAttributeOutput::OutputFlyFrame_Impl( const sw::Frame& rFrame, 
const Poi
                                 m_aRun.append(m_rExport.OutHex(*pStr, 2));
                             m_aRun.append('}');
                             m_aRun.append("}{" OOO_STRING_SVTOOLS_RTF_FLDRSLT " ");
-                            
xPropSet->getPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Text"))) >>= aTmp;
+                            xPropSet->getPropertyValue("Text") >>= aTmp;
                             m_aRun.append(OUStringToOString(aTmp, m_rExport.eCurrentEncoding));
                             m_aRun.append('}');
                             m_aRun.append("{" OOO_STRING_SVTOOLS_RTF_IGNORE 
OOO_STRING_SVTOOLS_RTF_FORMFIELD "{");
-                            sName = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("HelpText"));
+                            sName = "HelpText";
                             if (xPropSetInfo->hasPropertyByName(sName))
                             {
                                 xPropSet->getPropertyValue(sName) >>= aTmp;
@@ -1680,7 +1680,7 @@ void RtfAttributeOutput::OutputFlyFrame_Impl( const sw::Frame& rFrame, const 
Poi
                                 m_aRun.append('}');
                             }
 
-                            sName = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("HelpF1Text"));
+                            sName = "HelpF1Text";
                             if (xPropSetInfo->hasPropertyByName(sName))
                             {
                                 xPropSet->getPropertyValue(sName) >>= aTmp;
@@ -1691,7 +1691,7 @@ void RtfAttributeOutput::OutputFlyFrame_Impl( const sw::Frame& rFrame, const 
Poi
                             }
                             m_aRun.append("}");
                         }
-                        else if 
(xInfo->supportsService(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.form.component.ListBox"))))
+                        else if (xInfo->supportsService("com.sun.star.form.component.ListBox"))
                         {
                             OUString aStr;
                             uno::Sequence<sal_Int16> aIntSeq;
@@ -1702,7 +1702,7 @@ void RtfAttributeOutput::OutputFlyFrame_Impl( const sw::Frame& rFrame, const 
Poi
                             m_aRun.append(OOO_STRING_SVTOOLS_RTF_FFTYPE "2"); // 2 = list
                             m_aRun.append(OOO_STRING_SVTOOLS_RTF_FFHASLISTBOX);
 
-                            
xPropSet->getPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("DefaultSelection"))) >>= 
aIntSeq;
+                            xPropSet->getPropertyValue("DefaultSelection") >>= aIntSeq;
                             if( aIntSeq.getLength() )
                             {
                                 m_aRun.append(OOO_STRING_SVTOOLS_RTF_FFDEFRES);
@@ -1710,7 +1710,7 @@ void RtfAttributeOutput::OutputFlyFrame_Impl( const sw::Frame& rFrame, const 
Poi
                                 m_aRun.append((sal_Int32)aIntSeq[0]);
                             }
 
-                            
xPropSet->getPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("SelectedItems"))) >>= aIntSeq;
+                            xPropSet->getPropertyValue("SelectedItems") >>= aIntSeq;
                             if( aIntSeq.getLength() )
                             {
                                 m_aRun.append(OOO_STRING_SVTOOLS_RTF_FFRES);
@@ -1718,7 +1718,7 @@ void RtfAttributeOutput::OutputFlyFrame_Impl( const sw::Frame& rFrame, const 
Poi
                                 m_aRun.append((sal_Int32)aIntSeq[0]);
                             }
 
-                            sName = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Name"));
+                            sName = "Name";
                             if (xPropSetInfo->hasPropertyByName(sName))
                             {
                                 xPropSet->getPropertyValue(sName) >>= aStr;
@@ -1727,7 +1727,7 @@ void RtfAttributeOutput::OutputFlyFrame_Impl( const sw::Frame& rFrame, const 
Poi
                                 m_aRun.append('}');
                             }
 
-                            sName = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("HelpText"));
+                            sName = "HelpText";
                             if (xPropSetInfo->hasPropertyByName(sName))
                             {
                                 xPropSet->getPropertyValue(sName) >>= aStr;
@@ -1737,7 +1737,7 @@ void RtfAttributeOutput::OutputFlyFrame_Impl( const sw::Frame& rFrame, const 
Poi
                                 m_aRun.append('}');
                             }
 
-                            sName = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("HelpF1Text"));
+                            sName = "HelpF1Text";
                             if (xPropSetInfo->hasPropertyByName(sName))
                             {
                                 xPropSet->getPropertyValue(sName) >>= aStr;
@@ -1748,7 +1748,7 @@ void RtfAttributeOutput::OutputFlyFrame_Impl( const sw::Frame& rFrame, const 
Poi
                             }
 
 
-                            
xPropSet->getPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("StringItemList"))) >>= 
aStrSeq;
+                            xPropSet->getPropertyValue("StringItemList") >>= aStrSeq;
                             sal_uInt32 nListItems = aStrSeq.getLength();
                             for (sal_uInt32 i = 0; i < nListItems; i++)
                                 m_aRun.append("{" OOO_STRING_SVTOOLS_RTF_IGNORE 
OOO_STRING_SVTOOLS_RTF_FFL " ")
diff --git a/sw/source/filter/ww8/rtfexportfilter.cxx b/sw/source/filter/ww8/rtfexportfilter.cxx
index b417f30..72bec50 100644
--- a/sw/source/filter/ww8/rtfexportfilter.cxx
+++ b/sw/source/filter/ww8/rtfexportfilter.cxx
@@ -123,12 +123,12 @@ void RtfExportFilter::setSourceDocument( const uno::Reference< 
lang::XComponent
 
 OUString RtfExport_getImplementationName()
 {
-    return OUString( RTL_CONSTASCII_USTRINGPARAM( IMPL_NAME_RTFEXPORT ) );
+    return OUString( IMPL_NAME_RTFEXPORT );
 }
 
 uno::Sequence< OUString > SAL_CALL RtfExport_getSupportedServiceNames() throw()
 {
-    const OUString aServiceName( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.document.ExportFilter" 
) );
+    const OUString aServiceName( "com.sun.star.document.ExportFilter" );
     const uno::Sequence< OUString > aSeq( &aServiceName, 1 );
     return aSeq;
 }
diff --git a/sw/source/filter/ww8/rtfimportfilter.cxx b/sw/source/filter/ww8/rtfimportfilter.cxx
index 25f0a78..284e645 100644
--- a/sw/source/filter/ww8/rtfimportfilter.cxx
+++ b/sw/source/filter/ww8/rtfimportfilter.cxx
@@ -84,7 +84,7 @@ sal_Bool RtfImportFilter::filter( const uno::Sequence< beans::PropertyValue >& a
     OUString sTemp;
     for ( sal_Int32 i = 0; i < aDescriptor.getLength(); i++ )
     {
-        if( aDescriptor[i].Name == OUString(RTL_CONSTASCII_USTRINGPARAM("URL")) )
+        if( aDescriptor[i].Name == "URL" )
         {
             aDescriptor[i].Value >>= sTemp;
             aURL = sTemp;
@@ -114,12 +114,12 @@ void RtfImportFilter::setTargetDocument( const uno::Reference< 
lang::XComponent
 
 OUString RtfImport_getImplementationName()
 {
-    return OUString( RTL_CONSTASCII_USTRINGPARAM( IMPL_NAME_RTFIMPORT ) );
+    return OUString( IMPL_NAME_RTFIMPORT );
 }
 
 uno::Sequence< OUString > SAL_CALL RtfImport_getSupportedServiceNames() throw()
 {
-    const OUString aServiceName( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.document.ImportFilter" 
) );
+    const OUString aServiceName( "com.sun.star.document.ImportFilter" );
     const uno::Sequence< OUString > aSeq( &aServiceName, 1 );
     return aSeq;
 }
diff --git a/sw/source/filter/ww8/rtfsdrexport.cxx b/sw/source/filter/ww8/rtfsdrexport.cxx
index 8d9644c..a895d2a 100644
--- a/sw/source/filter/ww8/rtfsdrexport.cxx
+++ b/sw/source/filter/ww8/rtfsdrexport.cxx
@@ -432,7 +432,7 @@ void RtfSdrExport::impl_writeGraphic()
     uno::Reference<drawing::XShape> xShape = 
GetXShapeForSdrObject(const_cast<SdrObject*>(m_pSdrObject));
     uno::Reference<beans::XPropertySet> xPropertySet(xShape, uno::UNO_QUERY);
     OUString sGraphicURL;
-    xPropertySet->getPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("GraphicURL"))) >>= 
sGraphicURL;
+    xPropertySet->getPropertyValue("GraphicURL") >>= sGraphicURL;
     OString aURLBS(OUStringToOString(sGraphicURL, RTL_TEXTENCODING_UTF8));
     const char aURLBegin[] = "vnd.sun.star.GraphicObject:";
     Graphic aGraphic = 
GraphicObject(aURLBS.copy(RTL_CONSTASCII_LENGTH(aURLBegin))).GetTransformedGraphic();
diff --git a/sw/source/filter/ww8/sortedarray.hxx b/sw/source/filter/ww8/sortedarray.hxx
index 3beca59..7a559b5 100644
--- a/sw/source/filter/ww8/sortedarray.hxx
+++ b/sw/source/filter/ww8/sortedarray.hxx
@@ -80,12 +80,12 @@ namespace ww
                 {
                     if (!bBroken)
                     {
-                        sError = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
+                        sError =
                             "WW8: Duplicate in list, almost certainly don't "
                             "want that!\n"
                             "(You will not see this message again unless you "
                             "restart)\n"
-                            "Extra entries are...\n"));
+                            "Extra entries are...\n";
                         bBroken=true;
                     }
 
diff --git a/sw/source/filter/ww8/writerwordglue.cxx b/sw/source/filter/ww8/writerwordglue.cxx
index 3b289d9..de82476 100644
--- a/sw/source/filter/ww8/writerwordglue.cxx
+++ b/sw/source/filter/ww8/writerwordglue.cxx
@@ -774,7 +774,7 @@ namespace sw
             SwapQuotesInField(rParams);
 
             // Force to Japanese when finding one of 'geaE'
-            rtl::OUString sJChars(RTL_CONSTASCII_USTRINGPARAM("geE"));
+            rtl::OUString sJChars( "geE" );
             bool bForceJapanese = ( STRING_NOTFOUND != rParams.SearchChar( sJChars.getStr() ) );
             if ( bForceJapanese )
             {
diff --git a/sw/source/filter/ww8/wrtw8nds.cxx b/sw/source/filter/ww8/wrtw8nds.cxx
index 998197d..53f95ad 100644
--- a/sw/source/filter/ww8/wrtw8nds.cxx
+++ b/sw/source/filter/ww8/wrtw8nds.cxx
@@ -122,17 +122,17 @@ static String lcl_getFieldCode( const IFieldmark* pFieldmark ) {
 
     if ( !pFieldmark) {
         return String();
-    } else if ( pFieldmark->GetFieldname( ).equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( ODF_FORMTEXT 
) ) ) {
+    } else if ( pFieldmark->GetFieldname( ) == ODF_FORMTEXT ) {
         return String::CreateFromAscii(" FORMTEXT ");
-    } else if ( pFieldmark->GetFieldname( ).equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( 
ODF_FORMDROPDOWN ) ) ) {
+    } else if ( pFieldmark->GetFieldname( ) == ODF_FORMDROPDOWN ) {
         return String::CreateFromAscii(" FORMDROPDOWN ");
-    } else if ( pFieldmark->GetFieldname( ).equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( 
ODF_FORMCHECKBOX ) ) ) {
+    } else if ( pFieldmark->GetFieldname( ) == ODF_FORMCHECKBOX ) {
         return String::CreateFromAscii(" FORMCHECKBOX ");
-    } else if ( pFieldmark->GetFieldname( ).equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( ODF_TOC ) ) 
) {
+    } else if ( pFieldmark->GetFieldname( ) == ODF_TOC ) {
         return String::CreateFromAscii(" TOC ");
-    } else if ( pFieldmark->GetFieldname( ).equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( 
ODF_HYPERLINK ) ) ) {
+    } else if ( pFieldmark->GetFieldname( ) == ODF_HYPERLINK ) {
         return String::CreateFromAscii(" HYPERLINK ");
-    } else if ( pFieldmark->GetFieldname( ).equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( ODF_PAGEREF 
) ) ) {
+    } else if ( pFieldmark->GetFieldname( ) == ODF_PAGEREF ) {
         return String::CreateFromAscii(" PAGEREF ");
     } else {
         return pFieldmark->GetFieldname();
@@ -143,17 +143,17 @@ ww::eField lcl_getFieldId( const IFieldmark* pFieldmark ) {
     OSL_ENSURE(pFieldmark!=NULL, "where is my fieldmark???");
     if ( !pFieldmark ) {
         return ww::eUNKNOWN;
-    } else if ( pFieldmark->GetFieldname( ).equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( ODF_FORMTEXT 
) ) ) {
+    } else if ( pFieldmark->GetFieldname( ) == ODF_FORMTEXT ) {
         return ww::eFORMTEXT;
-    } else if ( pFieldmark->GetFieldname( ).equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( 
ODF_FORMDROPDOWN ) ) ) {
+    } else if ( pFieldmark->GetFieldname( ) == ODF_FORMDROPDOWN ) {
         return ww::eFORMDROPDOWN;
-    } else if ( pFieldmark->GetFieldname( ).equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( 
ODF_FORMCHECKBOX ) ) ) {
+    } else if ( pFieldmark->GetFieldname( ) == ODF_FORMCHECKBOX ) {
         return ww::eFORMCHECKBOX;
-    } else if ( pFieldmark->GetFieldname( ).equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( ODF_TOC ) ) 
) {
+    } else if ( pFieldmark->GetFieldname( ) == ODF_TOC ) {
         return ww::eTOC;
-    } else if ( pFieldmark->GetFieldname( ).equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( 
ODF_HYPERLINK ) ) ) {
+    } else if ( pFieldmark->GetFieldname( ) == ODF_HYPERLINK ) {
         return ww::eHYPERLINK;
-    } else if ( pFieldmark->GetFieldname( ).equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( ODF_PAGEREF 
) ) ) {
+    } else if ( pFieldmark->GetFieldname( ) == ODF_PAGEREF ) {
         return ww::ePAGEREF;
     } else {
         return ww::eUNKNOWN;
@@ -1839,14 +1839,13 @@ void MSWordExportBase::OutputTextNode( const SwTxtNode& rNode )
                 ::sw::mark::IFieldmark const * const pFieldmark = pMarkAccess->getFieldmarkFor( 
aPosition );
                 OSL_ENSURE( pFieldmark, "Looks like this doc is broken...; where is the Fieldmark 
for the FIELDSTART??" );
 
-                if ( pFieldmark && pFieldmark->GetFieldname().equalsAsciiL( 
RTL_CONSTASCII_STRINGPARAM( ODF_FORMTEXT ) ) )
+                if ( pFieldmark && pFieldmark->GetFieldname() == ODF_FORMTEXT )
                     AppendBookmark( pFieldmark->GetName(), false );
                 ww::eField eFieldId = lcl_getFieldId( pFieldmark );
                 String sCode = lcl_getFieldCode( pFieldmark );
-                if ( pFieldmark && pFieldmark->GetFieldname().equalsAsciiL( 
RTL_CONSTASCII_STRINGPARAM( ODF_UNHANDLED ) ) )
+                if ( pFieldmark && pFieldmark->GetFieldname() == ODF_UNHANDLED )
                 {
-                    IFieldmark::parameter_map_t::const_iterator it = 
pFieldmark->GetParameters()->find(
-                            rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( ODF_ID_PARAM )) );
+                    IFieldmark::parameter_map_t::const_iterator it = 
pFieldmark->GetParameters()->find( ODF_ID_PARAM );
                     if ( it != pFieldmark->GetParameters()->end() )
                     {
                         rtl::OUString sFieldId;
@@ -1854,8 +1853,7 @@ void MSWordExportBase::OutputTextNode( const SwTxtNode& rNode )
                         eFieldId = (ww::eField)sFieldId.toInt32();
                     }
 
-                    it = pFieldmark->GetParameters()->find(
-                            rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( ODF_CODE_PARAM )) );
+                    it = pFieldmark->GetParameters()->find( ODF_CODE_PARAM );
                     if ( it != pFieldmark->GetParameters()->end() )
                     {
                         rtl::OUString sOUCode;
@@ -1864,17 +1862,16 @@ void MSWordExportBase::OutputTextNode( const SwTxtNode& rNode )
                     }
                 }
                 OutputField( NULL, eFieldId, sCode, WRITEFIELD_START | WRITEFIELD_CMD_START );
-                if ( pFieldmark && pFieldmark->GetFieldname( ).equalsAsciiL( 
RTL_CONSTASCII_STRINGPARAM( ODF_FORMTEXT ) ) )
+                if ( pFieldmark && pFieldmark->GetFieldname( ) == ODF_FORMTEXT )
                     WriteFormData( *pFieldmark );
-                else if ( pFieldmark && pFieldmark->GetFieldname( ).equalsAsciiL( 
RTL_CONSTASCII_STRINGPARAM( ODF_HYPERLINK ) ) )
+                else if ( pFieldmark && pFieldmark->GetFieldname( ) == ODF_HYPERLINK )
                     WriteHyperlinkData( *pFieldmark );
                 OutputField( NULL, lcl_getFieldId( pFieldmark ), String(), WRITEFIELD_CMD_END );
 
-                if ( pFieldmark && pFieldmark->GetFieldname().equalsAsciiL( 
RTL_CONSTASCII_STRINGPARAM( ODF_UNHANDLED ) ) )
+                if ( pFieldmark && pFieldmark->GetFieldname() == ODF_UNHANDLED )
                 {
                     // Check for the presence of a linked OLE object
-                    IFieldmark::parameter_map_t::const_iterator it = 
pFieldmark->GetParameters()->find(
-                            rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( ODF_OLE_PARAM )) );
+                    IFieldmark::parameter_map_t::const_iterator it = 
pFieldmark->GetParameters()->find( ODF_OLE_PARAM );
                     if ( it != pFieldmark->GetParameters()->end() )
                     {
                         rtl::OUString sOleId;
@@ -1892,10 +1889,9 @@ void MSWordExportBase::OutputTextNode( const SwTxtNode& rNode )
                 OSL_ENSURE( pFieldmark, "Looks like this doc is broken...; where is the Fieldmark 
for the FIELDEND??" );
 
                 ww::eField eFieldId = lcl_getFieldId( pFieldmark );
-                if ( pFieldmark && pFieldmark->GetFieldname().equalsAsciiL( 
RTL_CONSTASCII_STRINGPARAM( ODF_UNHANDLED ) ) )
+                if ( pFieldmark && pFieldmark->GetFieldname() == ODF_UNHANDLED )
                 {
-                    IFieldmark::parameter_map_t::const_iterator it = 
pFieldmark->GetParameters()->find(
-                            rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( ODF_ID_PARAM )) );
+                    IFieldmark::parameter_map_t::const_iterator it = 
pFieldmark->GetParameters()->find( ODF_ID_PARAM );
                     if ( it != pFieldmark->GetParameters()->end() )
                     {
                         rtl::OUString sFieldId;
@@ -1905,7 +1901,7 @@ void MSWordExportBase::OutputTextNode( const SwTxtNode& rNode )
                 }
 
                 OutputField( NULL, eFieldId, String(), WRITEFIELD_CLOSE );
-                if ( pFieldmark && pFieldmark->GetFieldname().equalsAsciiL( 
RTL_CONSTASCII_STRINGPARAM( ODF_FORMTEXT ) ) )
+                if ( pFieldmark && pFieldmark->GetFieldname() == ODF_FORMTEXT )
                     AppendBookmark( pFieldmark->GetName(), false );
             }
             else if ( ch == CH_TXT_ATR_FORMELEMENT )
@@ -1914,8 +1910,8 @@ void MSWordExportBase::OutputTextNode( const SwTxtNode& rNode )
                 ::sw::mark::IFieldmark const * const pFieldmark = pMarkAccess->getFieldmarkFor( 
aPosition );
                 OSL_ENSURE( pFieldmark, "Looks like this doc is broken...; where is the Fieldmark 
for the FIELDSTART??" );
 
-                bool isDropdownOrCheckbox = pFieldmark && (pFieldmark->GetFieldname( 
).equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( ODF_FORMDROPDOWN ) ) ||
-                    pFieldmark->GetFieldname( ).equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( 
ODF_FORMCHECKBOX ) ));
+                bool isDropdownOrCheckbox = pFieldmark && (pFieldmark->GetFieldname( ) == 
ODF_FORMDROPDOWN ||
+                    pFieldmark->GetFieldname( ) == ODF_FORMCHECKBOX );
 
                 if ( isDropdownOrCheckbox )
                     AppendBookmark( pFieldmark->GetName(), 0 );
diff --git a/sw/source/filter/ww8/wrtww8.cxx b/sw/source/filter/ww8/wrtww8.cxx
index edee204..7af7142 100644
--- a/sw/source/filter/ww8/wrtww8.cxx
+++ b/sw/source/filter/ww8/wrtww8.cxx
@@ -3464,21 +3464,21 @@ void WW8Export::WriteFormData( const ::sw::mark::IFieldmark& rFieldmark )
     const ::sw::mark::ICheckboxFieldmark* pAsCheckbox = dynamic_cast< const 
::sw::mark::ICheckboxFieldmark* >( pFieldmark );
 
 
-    OSL_ENSURE(rFieldmark.GetFieldname().equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( ODF_FORMTEXT ) 
) ||
-                rFieldmark.GetFieldname().equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( 
ODF_FORMDROPDOWN ) ) ||
-                rFieldmark.GetFieldname().equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( 
ODF_FORMCHECKBOX ) ), "Unknown field type!!!");
-    if ( ! ( rFieldmark.GetFieldname().equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( ODF_FORMTEXT ) ) 
||
-                rFieldmark.GetFieldname().equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( 
ODF_FORMDROPDOWN ) ) ||
-                rFieldmark.GetFieldname().equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( 
ODF_FORMCHECKBOX ) ) ) )
+    OSL_ENSURE(rFieldmark.GetFieldname() == ODF_FORMTEXT ||
+                rFieldmark.GetFieldname() == ODF_FORMDROPDOWN ||
+                rFieldmark.GetFieldname() == ODF_FORMCHECKBOX, "Unknown field type!!!");
+    if ( ! ( rFieldmark.GetFieldname() == ODF_FORMTEXT ||
+                rFieldmark.GetFieldname() == ODF_FORMDROPDOWN ||
+                rFieldmark.GetFieldname() == ODF_FORMCHECKBOX ) )
         return;
 
     int type = 0; // TextFieldmark
     if ( pAsCheckbox )
         type = 1;
-    if ( rFieldmark.GetFieldname().equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( ODF_FORMDROPDOWN ) ) )
+    if ( rFieldmark.GetFieldname() == ODF_FORMDROPDOWN )
         type=2;
 
-    ::sw::mark::IFieldmark::parameter_map_t::const_iterator pNameParameter = 
rFieldmark.GetParameters()->find(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("name")));
+    ::sw::mark::IFieldmark::parameter_map_t::const_iterator pNameParameter = 
rFieldmark.GetParameters()->find("name");
     ::rtl::OUString ffname;
     if(pNameParameter != rFieldmark.GetParameters()->end())
         pNameParameter->second >>= ffname;
@@ -3518,7 +3518,7 @@ void WW8Export::WriteFormData( const ::sw::mark::IFieldmark& rFieldmark )
         ffres = 1;
     else if ( type == 2 )
     {
-        ::sw::mark::IFieldmark::parameter_map_t::const_iterator pResParameter = 
rFieldmark.GetParameters()->find(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(ODF_FORMDROPDOWN_RESULT)));
+        ::sw::mark::IFieldmark::parameter_map_t::const_iterator pResParameter = 
rFieldmark.GetParameters()->find(ODF_FORMDROPDOWN_RESULT);
         if(pResParameter != rFieldmark.GetParameters()->end())
             pResParameter->second >>= ffres;
         else
@@ -3531,7 +3531,7 @@ void WW8Export::WriteFormData( const ::sw::mark::IFieldmark& rFieldmark )
     {
         aFldHeader.bits |= 0x8000; // ffhaslistbox
         const ::sw::mark::IFieldmark::parameter_map_t* const pParameters = 
rFieldmark.GetParameters();
-        ::sw::mark::IFieldmark::parameter_map_t::const_iterator pListEntries = 
pParameters->find(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(ODF_FORMDROPDOWN_LISTENTRY)));
+        ::sw::mark::IFieldmark::parameter_map_t::const_iterator pListEntries = 
pParameters->find(ODF_FORMDROPDOWN_LISTENTRY);
         if(pListEntries != pParameters->end())
         {
             uno::Sequence< ::rtl::OUString > vListEntries;
@@ -3769,26 +3769,26 @@ const NfKeywordTable & MSWordExportBase::GetNfKeywordTable()
     {
         pKeyMap.reset(new NfKeywordTable);
         NfKeywordTable & rKeywordTable = *pKeyMap;
-        rKeywordTable[NF_KEY_D] = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("d"));
-        rKeywordTable[NF_KEY_DD] = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("dd"));
-        rKeywordTable[NF_KEY_DDD] = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ddd"));
-        rKeywordTable[NF_KEY_DDDD] = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("dddd"));
-        rKeywordTable[NF_KEY_M] = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("M"));
-        rKeywordTable[NF_KEY_MM] = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("MM"));
-        rKeywordTable[NF_KEY_MMM] = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("MMM"));
-        rKeywordTable[NF_KEY_MMMM] = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("MMMM"));
-        rKeywordTable[NF_KEY_NN] = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ddd"));
-        rKeywordTable[NF_KEY_NNN] = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("dddd"));
-        rKeywordTable[NF_KEY_NNNN] = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("dddd"));
-        rKeywordTable[NF_KEY_YY] = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("yy"));
-        rKeywordTable[NF_KEY_YYYY] = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("yyyy"));
-        rKeywordTable[NF_KEY_H] = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("H"));
-        rKeywordTable[NF_KEY_HH] = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("HH"));
-        rKeywordTable[NF_KEY_MI] = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("m"));
-        rKeywordTable[NF_KEY_MMI] = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("mm"));
-        rKeywordTable[NF_KEY_S] = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("s"));
-        rKeywordTable[NF_KEY_SS] = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ss"));
-        rKeywordTable[NF_KEY_AMPM] = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("AM/PM"));
+        rKeywordTable[NF_KEY_D] = "d";
+        rKeywordTable[NF_KEY_DD] = "dd";
+        rKeywordTable[NF_KEY_DDD] = "ddd";
+        rKeywordTable[NF_KEY_DDDD] = "dddd";
+        rKeywordTable[NF_KEY_M] = "M";
+        rKeywordTable[NF_KEY_MM] = "MM";
+        rKeywordTable[NF_KEY_MMM] = "MMM";
+        rKeywordTable[NF_KEY_MMMM] = "MMMM";
+        rKeywordTable[NF_KEY_NN] = "ddd";
+        rKeywordTable[NF_KEY_NNN] = "dddd";
+        rKeywordTable[NF_KEY_NNNN] = "dddd";
+        rKeywordTable[NF_KEY_YY] = "yy";
+        rKeywordTable[NF_KEY_YYYY] = "yyyy";
+        rKeywordTable[NF_KEY_H] = "H";
+        rKeywordTable[NF_KEY_HH] = "HH";
+        rKeywordTable[NF_KEY_MI] = "m";
+        rKeywordTable[NF_KEY_MMI] = "mm";
+        rKeywordTable[NF_KEY_S] = "s";
+        rKeywordTable[NF_KEY_SS] = "ss";
+        rKeywordTable[NF_KEY_AMPM] = "AM/PM";
     }
 
     return *pKeyMap;
diff --git a/sw/source/filter/ww8/wrtww8gr.cxx b/sw/source/filter/ww8/wrtww8gr.cxx
index b1d7bca..6524abc 100644
--- a/sw/source/filter/ww8/wrtww8gr.cxx
+++ b/sw/source/filter/ww8/wrtww8gr.cxx
@@ -274,7 +274,7 @@ void WW8Export::OutputOLENode( const SwOLENode& rOLENode )
                     GetOLEExp().ExportOLEObject( aObjRef, *xOleStg );
                     if ( nAspect == embed::Aspects::MSOLE_ICON )
                     {
-                        ::rtl::OUString aObjInfo( RTL_CONSTASCII_USTRINGPARAM( "\3ObjInfo" ) );
+                        ::rtl::OUString aObjInfo( "\3ObjInfo" );
                         if ( !xOleStg->IsStream( aObjInfo ) )
                         {
                             const sal_uInt8 pObjInfoData[] = { 0x40, 0x00, 0x03, 0x00 };
@@ -353,8 +353,7 @@ void WW8Export::OutputOLENode( const SwOLENode& rOLENode )
 void WW8Export::OutputLinkedOLE( const rtl::OUString& rOleId )
 {
     uno::Reference< embed::XStorage > xDocStg = pDoc->GetDocStorage();
-    uno::Reference< embed::XStorage > xOleStg = xDocStg->openStorageElement(
-            rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("OLELinks")), embed::ElementModes::READ );
+    uno::Reference< embed::XStorage > xOleStg = xDocStg->openStorageElement( "OLELinks", 
embed::ElementModes::READ );
     SotStorageRef xObjSrc = SotStorage::OpenOLEStorage( xOleStg, rOleId, STREAM_READ );
 
     SotStorageRef xObjStg = GetWriter().GetStorage().OpenSotStorage(
diff --git a/sw/source/filter/ww8/ww8par.cxx b/sw/source/filter/ww8/ww8par.cxx
index 89dd406..8f8c161 100644
--- a/sw/source/filter/ww8/ww8par.cxx
+++ b/sw/source/filter/ww8/ww8par.cxx
@@ -215,13 +215,13 @@ bool BasicProjImportHelper::import( const uno::Reference< io::XInputStream >& 
rx
 
 rtl::OUString BasicProjImportHelper::getProjectName()
 {
-    rtl::OUString sProjName( RTL_CONSTASCII_USTRINGPARAM("Standard") );
+    rtl::OUString sProjName( "Standard" );
     uno::Reference< beans::XPropertySet > xProps( mrDocShell.GetModel(), uno::UNO_QUERY );
     if ( xProps.is() )
     {
         try
         {
-            uno::Reference< script::vba::XVBACompatibility > xVBA( xProps->getPropertyValue( 
rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "BasicLibraries" ) ) ), uno::UNO_QUERY_THROW  );
+            uno::Reference< script::vba::XVBACompatibility > xVBA( xProps->getPropertyValue( 
"BasicLibraries" ), uno::UNO_QUERY_THROW  );
             sProjName = xVBA->getProjectName();
 
         }
@@ -770,7 +770,7 @@ SdrObject* SwMSDffManager::ProcessObj(SvStream& rSt,
                     {
                         fExtraTextRotation /= 100.0;
                         SdrCustomShapeGeometryItem aGeometryItem( 
(SdrCustomShapeGeometryItem&)pCustomShape->GetMergedItem( SDRATTR_CUSTOMSHAPE_GEOMETRY ) );
-                        const rtl::OUString sTextRotateAngle( RTL_CONSTASCII_USTRINGPARAM ( 
"TextRotateAngle" ) );
+                        const rtl::OUString sTextRotateAngle( "TextRotateAngle" );
                         com::sun::star::beans::PropertyValue aPropVal;
                         aPropVal.Name = sTextRotateAngle;
                         aPropVal.Value <<= fExtraTextRotation;
@@ -1589,10 +1589,9 @@ void SwWW8ImplReader::ImportDop()
             sal_Bool bValue = false;
             if (xInfo.is())
             {
-                if 
(xInfo->hasPropertyByName(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ApplyFormDesignMode"))))
+                if (xInfo->hasPropertyByName("ApplyFormDesignMode"))
                 {
-                    
xDocProps->setPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ApplyFormDesignMode")),
-                                                cppu::bool2any(bValue));
+                    xDocProps->setPropertyValue("ApplyFormDesignMode", cppu::bool2any(bValue));
                 }
             }
         }
@@ -4306,7 +4305,7 @@ bool SwWW8ImplReader::ReadGlobalTemplateSettings( const rtl::OUString& 
sCreatedF
     uno::Sequence< rtl::OUString > sGlobalTemplates;
 
     // first get the autoload addins in the directory STARTUP
-    uno::Reference< ucb::XSimpleFileAccess > xSFA( 
::comphelper::getProcessServiceFactory()->createInstance( 
rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.ucb.SimpleFileAccess")) ), 
uno::UNO_QUERY_THROW );
+    uno::Reference< ucb::XSimpleFileAccess > xSFA( 
::comphelper::getProcessServiceFactory()->createInstance( "com.sun.star.ucb.SimpleFileAccess" ), 
uno::UNO_QUERY_THROW );
 
     if( xSFA->isFolder( aAddinPath ) )
         sGlobalTemplates = xSFA->getFolderContents( aAddinPath, sal_False );
@@ -4333,7 +4332,7 @@ bool SwWW8ImplReader::ReadGlobalTemplateSettings( const rtl::OUString& 
sCreatedF
         aBasicImporter.import( mpDocShell->GetMedium()->GetInputStream() );
         lcl_createTemplateToProjectEntry( xPrjNameCache, aURL, aBasicImporter.getProjectName() );
         // Read toolbars & menus
-        SvStorageStreamRef refMainStream = rRoot->OpenSotStream( rtl::OUString( 
RTL_CONSTASCII_USTRINGPARAM("WordDocument") ) );
+        SvStorageStreamRef refMainStream = rRoot->OpenSotStream( String::CreateFromAscii( 
"WordDocument" ));
         refMainStream->SetNumberFormatInt(NUMBERFORMAT_INT_LITTLEENDIAN);
         WW8Fib aWwFib( *refMainStream, 8 );
         SvStorageStreamRef xTableStream = rRoot->OpenSotStream(String::CreateFromAscii( 
aWwFib.fWhichTblStm ? SL::a1Table : SL::a0Table), STREAM_STD_READ);
@@ -4597,7 +4596,7 @@ sal_uLong SwWW8ImplReader::CoreLoad(WW8Glossary *pGloss, const SwPosition 
&rPos)
             uno::Reference< container::XNameContainer > xPrjNameCache;
             uno::Reference< lang::XMultiServiceFactory> xSF(mpDocShell->GetModel(), 
uno::UNO_QUERY);
             if ( xSF.is() )
-                xPrjNameCache.set( xSF->createInstance( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( 
"ooo.vba.VBAProjectNameProvider" ) ) ), uno::UNO_QUERY );
+                xPrjNameCache.set( xSF->createInstance( "ooo.vba.VBAProjectNameProvider" ), 
uno::UNO_QUERY );
 
             // Read Global templates
             ReadGlobalTemplateSettings( sCreatedFrom, xPrjNameCache );
@@ -4606,7 +4605,7 @@ sal_uLong SwWW8ImplReader::CoreLoad(WW8Glossary *pGloss, const SwPosition 
&rPos)
             uno::Any aGlobs;
             uno::Sequence< uno::Any > aArgs(1);
             aArgs[ 0 ] <<= mpDocShell->GetModel();
-            aGlobs <<= ::comphelper::getProcessServiceFactory()->createInstanceWithArguments( 
::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ooo.vba.word.Globals")), aArgs );
+            aGlobs <<= ::comphelper::getProcessServiceFactory()->createInstanceWithArguments( 
"ooo.vba.word.Globals", aArgs );
             BasicManager *pBasicMan = mpDocShell->GetBasicManager();
             if (pBasicMan)
                 pBasicMan->SetGlobalUNOConstant( "VBAGlobals", aGlobs );
@@ -5464,9 +5463,7 @@ sal_uLong WW8Reader::OpenMainStream( SvStorageStreamRef& rRef, sal_uInt16& 
rBuff
 {
     sal_uLong nRet = ERR_SWG_READ_ERROR;
     OSL_ENSURE( pStg, "wo ist mein Storage?" );
-    rRef = pStg->OpenSotStream(
-        rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("WordDocument")),
-        STREAM_READ | STREAM_SHARE_DENYALL);
+    rRef = pStg->OpenSotStream( String::CreateFromAscii( "WordDocument" ), STREAM_READ | 
STREAM_SHARE_DENYALL);
 
     if( rRef.Is() )
     {
diff --git a/sw/source/filter/ww8/ww8par3.cxx b/sw/source/filter/ww8/ww8par3.cxx
index c3df152..04acb65 100644
--- a/sw/source/filter/ww8/ww8par3.cxx
+++ b/sw/source/filter/ww8/ww8par3.cxx
@@ -168,9 +168,9 @@ eF_ResT SwWW8ImplReader::Read_F_FormTextBox( WW8FieldDesc* pF, String& rStr )
 
     if (aBookmarkName.Len()>0) {
         maFieldStack.back().SetBookmarkName(aBookmarkName);
-        
maFieldStack.back().SetBookmarkType(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(ODF_FORMTEXT)));
-        
maFieldStack.back().getParameters()[::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Description"))] = 
uno::makeAny(::rtl::OUString(aFormula.sToolTip));
-        maFieldStack.back().getParameters()[::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Name"))] 
= uno::makeAny(::rtl::OUString(aFormula.sTitle));
+        maFieldStack.back().SetBookmarkType(ODF_FORMTEXT);
+        maFieldStack.back().getParameters()["Description"] = 
uno::makeAny(::rtl::OUString(aFormula.sToolTip));
+        maFieldStack.back().getParameters()["Name"] = 
uno::makeAny(::rtl::OUString(aFormula.sTitle));
     }
     return FLD_TEXT;
     }
@@ -217,14 +217,13 @@ eF_ResT SwWW8ImplReader::Read_F_FormCheckBox( WW8FieldDesc* pF, String& rStr )
     {
         IDocumentMarkAccess* pMarksAccess = rDoc.getIDocumentMarkAccess( );
         IFieldmark* pFieldmark = dynamic_cast<IFieldmark*>( pMarksAccess->makeNoTextFieldBookmark(
-                *pPaM, aBookmarkName,
-                rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( ODF_FORMCHECKBOX )) ) );
+                *pPaM, aBookmarkName, ODF_FORMCHECKBOX ) );
         OSL_ENSURE(pFieldmark!=NULL, "hmmm; why was the bookmark not created?");
         if (pFieldmark!=NULL) {
             IFieldmark::parameter_map_t* const pParameters = pFieldmark->GetParameters();
             ICheckboxFieldmark* pCheckboxFm = dynamic_cast<ICheckboxFieldmark*>(pFieldmark);
-            (*pParameters)[::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(ODF_FORMCHECKBOX_NAME))] = 
uno::makeAny(::rtl::OUString(aFormula.sTitle));
-            
(*pParameters)[::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(ODF_FORMCHECKBOX_HELPTEXT))] = 
uno::makeAny(::rtl::OUString(aFormula.sToolTip));
+            (*pParameters)[ODF_FORMCHECKBOX_NAME] = uno::makeAny(::rtl::OUString(aFormula.sTitle));
+            (*pParameters)[ODF_FORMCHECKBOX_HELPTEXT] = 
uno::makeAny(::rtl::OUString(aFormula.sToolTip));
 
             if(pCheckboxFm)
                 pCheckboxFm->SetChecked(aFormula.nChecked);
@@ -291,16 +290,15 @@ eF_ResT SwWW8ImplReader::Read_F_FormListBox( WW8FieldDesc* pF, String& rStr)
         {
             IDocumentMarkAccess* pMarksAccess = rDoc.getIDocumentMarkAccess( );
             IFieldmark *pFieldmark = dynamic_cast<IFieldmark*>(
-                    pMarksAccess->makeNoTextFieldBookmark( *pPaM, aBookmarkName,
-                           ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( ODF_FORMDROPDOWN )) ) );
+                    pMarksAccess->makeNoTextFieldBookmark( *pPaM, aBookmarkName, ODF_FORMDROPDOWN 
) );
             OSL_ENSURE(pFieldmark!=NULL, "hmmm; why was the bookmark not created?");
             if ( pFieldmark != NULL )
             {
                 uno::Sequence< ::rtl::OUString > vListEntries(aFormula.maListEntries.size());
                 ::std::copy(aFormula.maListEntries.begin(), aFormula.maListEntries.end(), 
::comphelper::stl_begin(vListEntries));
-                
(*pFieldmark->GetParameters())[::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(ODF_FORMDROPDOWN_LISTENTRY))]
 = uno::makeAny(vListEntries);
+                (*pFieldmark->GetParameters())[ODF_FORMDROPDOWN_LISTENTRY] = 
uno::makeAny(vListEntries);
                 sal_Int32 nIndex = aFormula.fDropdownIndex  < aFormula.maListEntries.size() ? 
aFormula.fDropdownIndex : 0;
-                
(*pFieldmark->GetParameters())[::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(ODF_FORMDROPDOWN_RESULT))]
 = uno::makeAny(nIndex);
+                (*pFieldmark->GetParameters())[ODF_FORMDROPDOWN_RESULT] = uno::makeAny(nIndex);
                 // set field data here...
             }
         }
@@ -2185,7 +2183,7 @@ void WW8FormulaControl::FormulaRead(SwWw8ControlType nWhich,
         {
             if ( iRes != 25 )
                 nChecked = iRes;
-            sDefault = ( wDef == 0 ) ? rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("0") ) :  
rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("1") );
+            sDefault = ( wDef == 0 ) ? "0" : "1";
         }
     }
     // xstzTextFormat
diff --git a/sw/source/filter/ww8/ww8par5.cxx b/sw/source/filter/ww8/ww8par5.cxx
index b5fcd56..0a24803 100644
--- a/sw/source/filter/ww8/ww8par5.cxx
+++ b/sw/source/filter/ww8/ww8par5.cxx
@@ -694,7 +694,7 @@ sal_uInt16 SwWW8ImplReader::End_Field()
             SwPaM aFldPam( maFieldStack.back().GetPtNode(), maFieldStack.back().GetPtCntnt(), 
aEndPos.nNode, aEndPos.nContent.GetIndex());
             IDocumentMarkAccess* pMarksAccess = rDoc.getIDocumentMarkAccess( );
             IFieldmark *pFieldmark = dynamic_cast<IFieldmark*>( pMarksAccess->makeFieldBookmark(
-                        aFldPam, maFieldStack.back().GetBookmarkName(), 
::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(ODF_FORMTEXT )) ) );
+                        aFldPam, maFieldStack.back().GetBookmarkName(), ODF_FORMTEXT ) );
             OSL_ENSURE(pFieldmark!=NULL, "hmmm; why was the bookmark not created?");
             if (pFieldmark!=NULL) {
                 const IFieldmark::parameter_map_t& pParametersToAdd = 
maFieldStack.back().getParameters();
@@ -744,7 +744,7 @@ sal_uInt16 SwWW8ImplReader::End_Field()
                     IFieldmark* pFieldmark = pMarksAccess->makeFieldBookmark(
                                 aFldPam,
                                 maFieldStack.back().GetBookmarkName(),
-                                rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( ODF_UNHANDLED )) );
+                                ODF_UNHANDLED );
                     if ( pFieldmark )
                     {
                         const IFieldmark::parameter_map_t& pParametersToAdd = 
maFieldStack.back().getParameters();
@@ -752,11 +752,11 @@ sal_uInt16 SwWW8ImplReader::End_Field()
                         rtl::OUString sFieldId = rtl::OUString::valueOf( sal_Int32( 
maFieldStack.back().mnFieldId ) );
                         pFieldmark->GetParameters()->insert(
                                 std::pair< rtl::OUString, uno::Any > (
-                                    rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( ODF_ID_PARAM )),
+                                    ODF_ID_PARAM,
                                     uno::makeAny( sFieldId ) ) );
                         pFieldmark->GetParameters()->insert(
                                 std::pair< rtl::OUString, uno::Any > (
-                                    rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( ODF_CODE_PARAM )),
+                                    ODF_CODE_PARAM,
                                     uno::makeAny( aCode ) ) );
 
                         if ( maFieldStack.back().mnObjLocFc > 0 )
@@ -773,7 +773,7 @@ sal_uInt16 SwWW8ImplReader::End_Field()
                             if (xDocStg.is())
                             {
                                 uno::Reference< embed::XStorage > xOleStg = 
xDocStg->openStorageElement(
-                                        rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("OLELinks")), 
embed::ElementModes::WRITE );
+                                        "OLELinks", embed::ElementModes::WRITE );
                                 SotStorageRef xObjDst = SotStorage::OpenOLEStorage( xOleStg, 
sOleId );
 
                                 if ( xObjDst.Is() )
@@ -792,8 +792,7 @@ sal_uInt16 SwWW8ImplReader::End_Field()
                             // Store the OLE Id as a parameter
                             pFieldmark->GetParameters()->insert(
                                     std::pair< rtl::OUString, uno::Any >(
-                                        rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( ODF_OLE_PARAM 
)),
-                                        uno::makeAny( rtl::OUString( sOleId ) ) ) );
+                                        ODF_OLE_PARAM, uno::makeAny( rtl::OUString( sOleId ) ) ) );
                         }
 
                     }
@@ -2221,9 +2220,9 @@ eF_ResT SwWW8ImplReader::Read_F_PgRef( WW8FieldDesc*, String& rStr )
 
 #if defined(WW_NATIVE_TOC)
     if (1) {
-    ::rtl::OUString aBookmarkName=(RTL_CONSTASCII_USTRINGPARAM("_REF"));
+    ::rtl::OUString aBookmarkName("_REF");
     maFieldStack.back().SetBookmarkName(aBookmarkName);
-    maFieldStack.back().SetBookmarkType(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(ODF_PAGEREF)));
+    maFieldStack.back().SetBookmarkType(ODF_PAGEREF);
     maFieldStack.back().AddParam(rtl::OUString(), sName);
     return FLD_TEXT;
     }
@@ -2319,8 +2318,7 @@ bool CanUseRemoteLink(const String &rGrfName)
             ucb::XCommandEnvironment >() );
         rtl::OUString   aTitle;
 
-        aCnt.getPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Title")))
-            >>= aTitle;
+        aCnt.getPropertyValue("Title") >>= aTitle;
         bUseRemote = !aTitle.isEmpty();
     }
     catch ( ... )
@@ -2930,9 +2928,9 @@ eF_ResT SwWW8ImplReader::Read_F_Tox( WW8FieldDesc* pF, String& rStr )
 {
 #if defined(WW_NATIVE_TOC)
     if (1) {
-    ::rtl::OUString aBookmarkName=(RTL_CONSTASCII_USTRINGPARAM("_TOC"));
+    ::rtl::OUString aBookmarkName("_TOC");
     maFieldStack.back().SetBookmarkName(aBookmarkName);
-    maFieldStack.back().SetBookmarkType(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(ODF_TOC)));
+    maFieldStack.back().SetBookmarkType(ODF_TOC);
     return FLD_TEXT;
     }
 #endif
@@ -3453,9 +3451,9 @@ eF_ResT SwWW8ImplReader::Read_F_Hyperlink( WW8FieldDesc* /*pF*/, String& rStr 
)
 {
 #if defined(WW_NATIVE_TOC)
     if (1) {
-    ::rtl::OUString aBookmarkName=(RTL_CONSTASCII_USTRINGPARAM("_HYPERLINK"));
+    ::rtl::OUString aBookmarkName("_HYPERLINK");
     maFieldStack.back().SetBookmarkName(aBookmarkName);
-    
maFieldStack.back().SetBookmarkType(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(ODF_HYPERLINK)));
+    maFieldStack.back().SetBookmarkType(ODF_HYPERLINK);
     return FLD_TEXT;
     }
 #endif
diff --git a/sw/source/filter/ww8/ww8toolbar.cxx b/sw/source/filter/ww8/ww8toolbar.cxx
index 3247217..0b668fa 100644
--- a/sw/source/filter/ww8/ww8toolbar.cxx
+++ b/sw/source/filter/ww8/ww8toolbar.cxx
@@ -64,12 +64,12 @@ MSOWordCommandConvertor::MSOWordCommandConvertor()
 {
     // mso command id to ooo command string
     // #FIXME and *HUNDREDS* of id's to added here
-    msoToOOcmd[ 0x20b ] = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM(".uno:CloseDoc") );
-    msoToOOcmd[ 0x50 ] = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM(".uno:Open") );
+    msoToOOcmd[ 0x20b ] = ".uno:CloseDoc";
+    msoToOOcmd[ 0x50 ] = ".uno:Open";
 
    // mso tcid to ooo command string
     // #FIXME and *HUNDREDS* of id's to added here
-   tcidToOOcmd[ 0x9d9 ] = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM(".uno:Print") );
+   tcidToOOcmd[ 0x9d9 ] = ".uno:Print";
 }
 
 rtl::OUString MSOWordCommandConvertor::MSOCommandToOOCommand( sal_Int16 key )
@@ -241,8 +241,8 @@ bool CTBWrapper::ImportCustomToolBar( SfxObjectShell& rDocSh )
         try
         {
             uno::Reference< lang::XMultiServiceFactory > xMSF( 
::comphelper::getProcessServiceFactory(), uno::UNO_QUERY_THROW );
-            uno::Reference< ui::XModuleUIConfigurationManagerSupplier > xAppCfgSupp( 
xMSF->createInstance( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( 
"com.sun.star.ui.ModuleUIConfigurationManagerSupplier" ) ) ), uno::UNO_QUERY_THROW );
-            CustomToolBarImportHelper helper( rDocSh, xAppCfgSupp->getUIConfigurationManager( 
rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.text.TextDocument" ) ) ) );
+            uno::Reference< ui::XModuleUIConfigurationManagerSupplier > xAppCfgSupp( 
xMSF->createInstance( "com.sun.star.ui.ModuleUIConfigurationManagerSupplier" ), 
uno::UNO_QUERY_THROW );
+            CustomToolBarImportHelper helper( rDocSh, xAppCfgSupp->getUIConfigurationManager( 
"com.sun.star.text.TextDocument" ) );
             helper.setMSOCommandMap( new MSOWordCommandConvertor() );
 
             if ( !(*it).ImportCustomToolBar( *this, helper ) )
@@ -342,9 +342,9 @@ bool Customization::ImportMenu( CTBWrapper& rWrapper, CustomToolBarImportHelper&
                 if ( pCust )
                 {
                     // currently only support built-in menu
-                    rtl::OUString sMenuBar( 
RTL_CONSTASCII_USTRINGPARAM("private:resource/menubar/") );
+                    rtl::OUString sMenuBar( "private:resource/menubar/" );
 
-                    sMenuBar = sMenuBar.concat( rtl::OUString( 
RTL_CONSTASCII_USTRINGPARAM("menubar") ) );
+                    sMenuBar = sMenuBar.concat( "menubar" );
                     // Get menu name
                     TBC* pTBC = pWrapper->GetTBCAtOffset( it->TBCStreamOffset() );
                     if ( !pTBC )
@@ -371,16 +371,16 @@ bool Customization::ImportMenu( CTBWrapper& rWrapper, 
CustomToolBarImportHelper&
 
                     uno::Reference< lang::XSingleComponentFactory > xSCF( xIndexContainer, 
uno::UNO_QUERY_THROW );
                     uno::Reference< beans::XPropertySet > xProps( 
::comphelper::getProcessServiceFactory(), uno::UNO_QUERY_THROW );
-                    uno::Reference< uno::XComponentContext > xContext(  xProps->getPropertyValue( 
rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "DefaultContext" ))), uno::UNO_QUERY_THROW );
+                    uno::Reference< uno::XComponentContext > xContext(  xProps->getPropertyValue( 
"DefaultContext" ), uno::UNO_QUERY_THROW );
                     // create the popup menu
                     uno::Sequence< beans::PropertyValue > aPopupMenu( 4 );
-                    aPopupMenu[0].Name = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("CommandURL") 
);
-                    aPopupMenu[0].Value = uno::makeAny( rtl::OUString( 
RTL_CONSTASCII_USTRINGPARAM("vnd.openoffice.org:") ) + sMenuName );
-                    aPopupMenu[1].Name = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Label") );
+                    aPopupMenu[0].Name = "CommandURL";
+                    aPopupMenu[0].Value = uno::makeAny( rtl::OUString( "vnd.openoffice.org:" ) + 
sMenuName );
+                    aPopupMenu[1].Name = "Label";
                     aPopupMenu[1].Value <<= sMenuName;
-                    aPopupMenu[2].Name = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Type" ) );
+                    aPopupMenu[2].Name = "Type";
                     aPopupMenu[2].Value <<= sal_Int32( 0 );
-                    aPopupMenu[3].Name = rtl::OUString( 
RTL_CONSTASCII_USTRINGPARAM("ItemDescriptorContainer") );
+                    aPopupMenu[3].Name = "ItemDescriptorContainer";
                     uno::Reference< container::XIndexContainer > xMenuContainer( 
xSCF->createInstanceWithContext( xContext ), uno::UNO_QUERY_THROW );
                     aPopupMenu[3].Value <<= xMenuContainer;
                     if ( pCust->customizationDataCTB.get() && 
!pCust->customizationDataCTB->ImportMenuTB( rWrapper, xMenuContainer, helper ) )
@@ -565,7 +565,7 @@ CTB::Print( FILE* fp )
 
 bool CTB::ImportCustomToolBar( CTBWrapper& rWrapper, CustomToolBarImportHelper& helper )
 {
-    static rtl::OUString sToolbarPrefix( RTL_CONSTASCII_USTRINGPARAM( 
"private:resource/toolbar/custom_" ) );
+    static rtl::OUString sToolbarPrefix( "private:resource/toolbar/custom_" );
     bool bRes = false;
     try
     {
@@ -577,7 +577,7 @@ bool CTB::ImportCustomToolBar( CTBWrapper& rWrapper, CustomToolBarImportHelper&
         uno::Reference< beans::XPropertySet > xProps( xIndexContainer, uno::UNO_QUERY_THROW );
 
         // set UI name for toolbar
-        xProps->setPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("UIName") ), 
uno::makeAny( name.getString() ) );
+        xProps->setPropertyValue( "UIName", uno::makeAny( name.getString() ) );
 
         rtl::OUString sToolBarName = sToolbarPrefix.concat( name.getString() );
         for ( std::vector< TBC >::iterator it =  rTBC.begin(); it != rTBC.end(); ++it )
@@ -711,7 +711,7 @@ TBC::ImportToolBarControl( CTBWrapper& rWrapper, const css::uno::Reference< css:
             {
                 beans::PropertyValue aProp;
 
-                aProp.Name = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("CommandURL") );
+                aProp.Name = "CommandURL";
                 aProp.Value <<= sCommand;
                 props.push_back( aProp );
             }
@@ -733,7 +733,7 @@ TBC::ImportToolBarControl( CTBWrapper& rWrapper, const css::uno::Reference< css:
             {
                  uno::Reference< container::XIndexContainer > xMenuDesc;
                  uno::Reference< lang::XMultiServiceFactory > xMSF( 
::comphelper::getProcessServiceFactory(), uno::UNO_QUERY_THROW );
-                 xMenuDesc.set( xMSF->createInstance( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( 
"com.sun.star.document.IndexedPropertyValues" ) ) ), uno::UNO_QUERY_THROW );
+                 xMenuDesc.set( xMSF->createInstance( 
"com.sun.star.document.IndexedPropertyValues" ), uno::UNO_QUERY_THROW );
                 if ( !pCustTB->ImportMenuTB( rWrapper,xMenuDesc, helper ) )
                     return false;
                 if ( !bIsMenuBar )
@@ -744,7 +744,7 @@ TBC::ImportToolBarControl( CTBWrapper& rWrapper, const css::uno::Reference< css:
                 else
                 {
                     beans::PropertyValue aProp;
-                    aProp.Name =  rtl::OUString( 
RTL_CONSTASCII_USTRINGPARAM("ItemDescriptorContainer") );
+                    aProp.Name = "ItemDescriptorContainer";
                     aProp.Value <<= xMenuDesc;
                     props.push_back( aProp );
                 }
@@ -755,7 +755,7 @@ TBC::ImportToolBarControl( CTBWrapper& rWrapper, const css::uno::Reference< css:
         {
             // insert spacer
             uno::Sequence< beans::PropertyValue > sProps( 1 );
-            sProps[ 0 ].Name =  rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Type") );
+            sProps[ 0 ].Name = "Type";
             sProps[ 0 ].Value = uno::makeAny( ui::ItemType::SEPARATOR_LINE );
             toolbarcontainer->insertByIndex( toolbarcontainer->getCount(), uno::makeAny( sProps ) 
);
         }
-- 
1.7.3.4

From 10a09afd615c0985324e02d17c22cce56438f46f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Lubo=C5=A1=20Lu=C5=88=C3=A1k?= <l.lunak@suse.cz>
Date: Tue, 28 Feb 2012 11:39:48 +0100
Subject: [PATCH 4/5] optimized OUString operators =,==,!= for string literals

---
 sal/inc/rtl/ustring.hxx |  107 +++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 107 insertions(+), 0 deletions(-)

diff --git a/sal/inc/rtl/ustring.hxx b/sal/inc/rtl/ustring.hxx
index 30c9576..b74cd37 100644
--- a/sal/inc/rtl/ustring.hxx
+++ b/sal/inc/rtl/ustring.hxx
@@ -323,6 +323,40 @@ public:
     }
 
     /**
+      Assign a new string from an 8-Bit string literal that is expected to contain only
+      characters in the ASCII set (i.e. first 128 characters). This operator
+      allows an efficient and convenient way to assign OUString
+      instances from ASCII literals. When assigning strings from data that
+      is not pure ASCII, it needs to be converted to OUString by explicitly
+      providing the encoding to use for the conversion.
+
+      @param    literal         the 8-bit ASCII string literal
+
+      @exception std::bad_alloc is thrown if an out-of-memory condition occurs
+      @since 3.6
+    */
+    template< int N >
+    OUString& operator=( const char (&literal)[ N ] )
+    {
+        rtl_string2UString( &pData, literal, N - 1, RTL_TEXTENCODING_ASCII_US, 0 );
+        if (pData == 0) {
+#if defined EXCEPTIONS_OFF
+            SAL_WARN("sal", "std::bad_alloc but EXCEPTIONS_OFF");
+#else
+            throw std::bad_alloc();
+#endif
+        }
+        return *this;
+    }
+
+    /**
+     * It is an error to call this overload. Strings cannot be directly assigned non-const char[].
+     * @internal
+     */
+    template< int N >
+    OUString& operator=( char (&value)[ N ] ); // intentionally not implemented
+
+    /**
       Append a string to this string.
 
       @param    str         a OUString.
@@ -870,6 +904,79 @@ public:
                         { return rStr1.compareTo( rStr2 ) >= 0; }
 
     /**
+     * Compare string to an ASCII string literal.
+     *
+     * This operator is equal to calling equalsAsciiL().
+     *
+     * @since 3.6
+     */
+    template< int N >
+    friend inline bool operator==( const OUString& string, const char (&literal)[ N ] )
+    {
+        return string.equalsAsciiL( literal, N - 1 );
+    }
+    /**
+     * Compare string to an ASCII string literal.
+     *
+     * This operator is equal to calling equalsAsciiL().
+     *
+     * @since 3.6
+     */
+    template< int N >
+    friend inline bool operator==( const char (&literal)[ N ], const OUString& string )
+    {
+        return string.equalsAsciiL( literal, N - 1 );
+    }
+    /**
+     * Compare string to an ASCII string literal.
+     *
+     * This operator is equal to calling equalsAsciiL().
+     *
+     * @since 3.6
+     */
+    template< int N >
+    friend inline bool operator!=( const OUString& string, const char (&literal)[ N ] )
+    {
+        return !string.equalsAsciiL( literal, N - 1 );
+    }
+    /**
+     * Compare string to an ASCII string literal.
+     *
+     * This operator is equal to calling equalsAsciiL().
+     *
+     * @since 3.6
+     */
+    template< int N >
+    friend inline bool operator!=( const char (&literal)[ N ], const OUString& string )
+    {
+        return !string.equalsAsciiL( literal, N - 1 );
+    }
+    /**
+     * It is an error to call this overload. Strings cannot be directly assigned non-const char[].
+     * @internal
+     */
+    template< int N >
+    friend inline bool operator==( const OUString& string, char (&literal)[ N ] ); // not 
implemented
+    /**
+     * It is an error to call this overload. Strings cannot be directly assigned non-const char[].
+     * @internal
+     */
+    template< int N >
+    friend inline bool operator==( char (&literal)[ N ], const OUString& string ); // not 
implemented
+    /**
+     * It is an error to call this overload. Strings cannot be directly assigned non-const char[].
+     * @internal
+     */
+    template< int N >
+    friend inline bool operator!=( const OUString& string, char (&literal)[ N ] ); // not 
implemented
+    /**
+     * It is an error to call this overload. Strings cannot be directly assigned non-const char[].
+     * @internal
+     */
+    template< int N >
+    friend inline bool operator!=( char (&literal)[ N ], const OUString& string ); // not 
implemented
+
+    /**
       Returns a hashcode for this string.
 
       @return   a hash code value for this object.
-- 
1.7.3.4


Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.