[Libreoffice-commits] core.git: configmgr/source

Stephan Bergmann sbergman at redhat.com
Tue Sep 10 04:03:29 PDT 2013


 configmgr/source/writemodfile.cxx |  296 +++++++++++++++++++-------------------
 configmgr/source/writemodfile.hxx |    1 
 2 files changed, 152 insertions(+), 145 deletions(-)

New commits:
commit b1e464999e387e44f0e021d52f2673c2fe7822a0
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Tue Sep 10 13:02:15 2013 +0200

    Some clean up
    
    ...post 5a02076358a547bae8a9b596d9722a7cd2d46c34 "Windows registry configuration
    backend."
    
    Change-Id: I4d27c17d4f26254bce175910a76f0076639581e8

diff --git a/configmgr/source/writemodfile.cxx b/configmgr/source/writemodfile.cxx
index 82d6240..d42bf22 100644
--- a/configmgr/source/writemodfile.cxx
+++ b/configmgr/source/writemodfile.cxx
@@ -21,6 +21,7 @@
 
 #include <cassert>
 
+#include "boost/noncopyable.hpp"
 #include "com/sun/star/uno/Any.hxx"
 #include "com/sun/star/uno/Reference.hxx"
 #include "com/sun/star/uno/RuntimeException.hpp"
@@ -101,9 +102,7 @@ TempFile::~TempFile() {
     }
 }
 
-}
-
-void writeData(oslFileHandle handle, char const * begin, sal_Int32 length) {
+void writeData_(oslFileHandle handle, char const * begin, sal_Int32 length) {
     assert(length >= 0);
     sal_uInt64 n;
     if ((osl_writeFile(handle, begin, static_cast< sal_uInt32 >(length), &n) !=
@@ -115,166 +114,83 @@ void writeData(oslFileHandle handle, char const * begin, sal_Int32 length) {
     }
 }
 
-void writeData(oslFileHandle handle, OString const & text) {
-    writeData(handle, text.getStr(), text.getLength());
-}
-
-void writeAttributeValue(oslFileHandle handle, OUString const & value) {
-    sal_Int32 i = 0;
-    sal_Int32 j = i;
-    for (; j < value.getLength(); ++j) {
-        assert(
-            value[j] == 0x0009 || value[j] == 0x000A || value[j] == 0x000D ||
-            (value[j] >= 0x0020 && value[j] != 0xFFFE && value[j] != 0xFFFF));
-        switch(value[j]) {
-        case '\x09':
-            writeData(handle, convertToUtf8(value, i, j - i));
-            writeData(handle, RTL_CONSTASCII_STRINGPARAM("	"));
-            i = j + 1;
-            break;
-        case '\x0A':
-            writeData(handle, convertToUtf8(value, i, j - i));
-            writeData(handle, RTL_CONSTASCII_STRINGPARAM("&#xA;"));
-            i = j + 1;
-            break;
-        case '\x0D':
-            writeData(handle, convertToUtf8(value, i, j - i));
-            writeData(handle, RTL_CONSTASCII_STRINGPARAM("&#xD;"));
-            i = j + 1;
-            break;
-        case '"':
-            writeData(handle, convertToUtf8(value, i, j - i));
-            writeData(handle, RTL_CONSTASCII_STRINGPARAM("""));
-            i = j + 1;
-            break;
-        case '&':
-            writeData(handle, convertToUtf8(value, i, j - i));
-            writeData(handle, RTL_CONSTASCII_STRINGPARAM("&"));
-            i = j + 1;
-            break;
-        case '<':
-            writeData(handle, convertToUtf8(value, i, j - i));
-            writeData(handle, RTL_CONSTASCII_STRINGPARAM("<"));
-            i = j + 1;
-            break;
-        default:
-            break;
-        }
-    }
-    writeData(handle, convertToUtf8(value, i, j - i));
-}
-
-void writeValueContent(oslFileHandle handle, sal_Bool value) {
+void writeValueContent_(oslFileHandle handle, sal_Bool value) {
     if (value) {
-        writeData(handle, RTL_CONSTASCII_STRINGPARAM("true"));
+        writeData_(handle, RTL_CONSTASCII_STRINGPARAM("true"));
     } else {
-        writeData(handle, RTL_CONSTASCII_STRINGPARAM("false"));
+        writeData_(handle, RTL_CONSTASCII_STRINGPARAM("false"));
     }
 }
 
-void writeValueContent(oslFileHandle handle, sal_Int16 value) {
+void writeValueContent_(oslFileHandle handle, sal_Int16 value) {
     writeData(handle, OString::number(value));
 }
 
-void writeValueContent(oslFileHandle handle, sal_Int32 value) {
+void writeValueContent_(oslFileHandle handle, sal_Int32 value) {
     writeData(handle, OString::number(value));
 }
 
-void writeValueContent(oslFileHandle handle, sal_Int64 value) {
+void writeValueContent_(oslFileHandle handle, sal_Int64 value) {
     writeData(handle, OString::number(value));
 }
 
-void writeValueContent(oslFileHandle handle, double value) {
+void writeValueContent_(oslFileHandle handle, double value) {
     writeData(handle, OString::number(value));
 }
 
-void writeValueContent(oslFileHandle handle, OUString const & value) {
-    sal_Int32 i = 0;
-    sal_Int32 j = i;
-    for (; j < value.getLength(); ++j) {
-        sal_Unicode c = value[j];
-        if ((c < 0x0020 && c != 0x0009 && c != 0x000A && c != 0x000D) ||
-            c == 0xFFFE || c == 0xFFFF)
-        {
-            writeData(handle, convertToUtf8(value, i, j - i));
-            writeData(
-                handle, RTL_CONSTASCII_STRINGPARAM("<unicode oor:scalar=\""));
-            writeData(
-                handle, OString::number(c));
-            writeData(handle, RTL_CONSTASCII_STRINGPARAM("\"/>"));
-            i = j + 1;
-        } else if (c == '\x0D') {
-            writeData(handle, convertToUtf8(value, i, j - i));
-            writeData(handle, RTL_CONSTASCII_STRINGPARAM("&#xD;"));
-            i = j + 1;
-        } else if (c == '&') {
-            writeData(handle, convertToUtf8(value, i, j - i));
-            writeData(handle, RTL_CONSTASCII_STRINGPARAM("&"));
-            i = j + 1;
-        } else if (c == '<') {
-            writeData(handle, convertToUtf8(value, i, j - i));
-            writeData(handle, RTL_CONSTASCII_STRINGPARAM("<"));
-            i = j + 1;
-        } else if (c == '>') {
-            // "MUST, for compatibility, be escaped [...] when it appears in the
-            // string ']]>'":
-            writeData(handle, convertToUtf8(value, i, j - i));
-            writeData(handle, RTL_CONSTASCII_STRINGPARAM(">"));
-            i = j + 1;
-        }
-    }
-    writeData(handle, convertToUtf8(value, i, j - i));
+void writeValueContent_(oslFileHandle handle, OUString value) {
+    writeValueContent(handle, value);
 }
 
-void writeValueContent(
+void writeValueContent_(
     oslFileHandle handle, css::uno::Sequence< sal_Int8 > const & value)
 {
     for (sal_Int32 i = 0; i < value.getLength(); ++i) {
         static char const hexDigit[16] = {
             '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C',
             'D', 'E', 'F' };
-        writeData(handle, hexDigit + ((value[i] >> 4) & 0xF), 1);
-        writeData(handle, hexDigit + (value[i] & 0xF), 1);
+        writeData_(handle, hexDigit + ((value[i] >> 4) & 0xF), 1);
+        writeData_(handle, hexDigit + (value[i] & 0xF), 1);
     }
 }
 
 template< typename T > void writeSingleValue(
     oslFileHandle handle, css::uno::Any const & value)
 {
-    writeData(handle, RTL_CONSTASCII_STRINGPARAM(">"));
+    writeData_(handle, RTL_CONSTASCII_STRINGPARAM(">"));
     T val = T();
     value >>= val;
-    writeValueContent(handle, val);
-    writeData(handle, RTL_CONSTASCII_STRINGPARAM("</value>"));
+    writeValueContent_(handle, val);
+    writeData_(handle, RTL_CONSTASCII_STRINGPARAM("</value>"));
 }
 
 template< typename T > void writeListValue(
     oslFileHandle handle, css::uno::Any const & value)
 {
-    writeData(handle, RTL_CONSTASCII_STRINGPARAM(">"));
+    writeData_(handle, RTL_CONSTASCII_STRINGPARAM(">"));
     css::uno::Sequence< T > val;
     value >>= val;
     for (sal_Int32 i = 0; i < val.getLength(); ++i) {
         if (i != 0) {
-            writeData(handle, RTL_CONSTASCII_STRINGPARAM(" "));
+            writeData_(handle, RTL_CONSTASCII_STRINGPARAM(" "));
         }
-        writeValueContent(handle, val[i]);
+        writeValueContent_(handle, val[i]);
     }
-    writeData(handle, RTL_CONSTASCII_STRINGPARAM("</value>"));
+    writeData_(handle, RTL_CONSTASCII_STRINGPARAM("</value>"));
 }
 
 template< typename T > void writeItemListValue(
     oslFileHandle handle, css::uno::Any const & value)
 {
-    writeData(handle, RTL_CONSTASCII_STRINGPARAM(">"));
+    writeData_(handle, RTL_CONSTASCII_STRINGPARAM(">"));
     css::uno::Sequence< T > val;
     value >>= val;
     for (sal_Int32 i = 0; i < val.getLength(); ++i) {
-        writeData(handle, RTL_CONSTASCII_STRINGPARAM("<it>"));
-        writeValueContent(handle, val[i]);
-        writeData(handle, RTL_CONSTASCII_STRINGPARAM("</it>"));
+        writeData_(handle, RTL_CONSTASCII_STRINGPARAM("<it>"));
+        writeValueContent_(handle, val[i]);
+        writeData_(handle, RTL_CONSTASCII_STRINGPARAM("</it>"));
     }
-    writeData(handle, RTL_CONSTASCII_STRINGPARAM("</value>"));
+    writeData_(handle, RTL_CONSTASCII_STRINGPARAM("</value>"));
 }
 
 void writeValue(oslFileHandle handle, Type type, css::uno::Any const & value) {
@@ -352,50 +268,51 @@ void writeNode(
     case Node::KIND_PROPERTY:
         {
             PropertyNode * prop = dynamic_cast< PropertyNode * >(node.get());
-            writeData(handle, RTL_CONSTASCII_STRINGPARAM("<prop oor:name=\""));
+            writeData_(handle, RTL_CONSTASCII_STRINGPARAM("<prop oor:name=\""));
             writeAttributeValue(handle, name);
-            writeData(handle, RTL_CONSTASCII_STRINGPARAM("\" oor:op=\"fuse\""));
+            writeData_(
+                handle, RTL_CONSTASCII_STRINGPARAM("\" oor:op=\"fuse\""));
             Type type = prop->getStaticType();
             Type dynType = getDynamicType(prop->getValue(components));
             assert(dynType != TYPE_ERROR);
             if (type == TYPE_ANY) {
                 type = dynType;
                 if (type != TYPE_NIL) {
-                    writeData(
+                    writeData_(
                         handle, RTL_CONSTASCII_STRINGPARAM(" oor:type=\""));
-                    writeData(
+                    writeData_(
                         handle, typeNames[type].begin, typeNames[type].length);
-                    writeData(handle, RTL_CONSTASCII_STRINGPARAM("\""));
+                    writeData_(handle, RTL_CONSTASCII_STRINGPARAM("\""));
                 }
             }
-            writeData(handle, "><value");
+            writeData_(handle, RTL_CONSTASCII_STRINGPARAM("><value"));
             if (dynType == TYPE_NIL) {
-                writeData(
+                writeData_(
                     handle, RTL_CONSTASCII_STRINGPARAM(" xsi:nil=\"true\"/>"));
             } else {
                 writeValue(handle, type, prop->getValue(components));
             }
-            writeData(handle, "</prop>");
+            writeData_(handle, RTL_CONSTASCII_STRINGPARAM("</prop>"));
         }
         break;
     case Node::KIND_LOCALIZED_PROPERTY:
-        writeData(handle, RTL_CONSTASCII_STRINGPARAM("<prop oor:name=\""));
+        writeData_(handle, RTL_CONSTASCII_STRINGPARAM("<prop oor:name=\""));
         writeAttributeValue(handle, name);
-        writeData(handle, RTL_CONSTASCII_STRINGPARAM("\" oor:op=\"fuse\">"));
+        writeData_(handle, RTL_CONSTASCII_STRINGPARAM("\" oor:op=\"fuse\">"));
         for (NodeMap::const_iterator i(node->getMembers().begin());
              i != node->getMembers().end(); ++i)
         {
             writeNode(components, handle, node, i->first, i->second);
         }
-        writeData(handle, RTL_CONSTASCII_STRINGPARAM("</prop>"));
+        writeData_(handle, RTL_CONSTASCII_STRINGPARAM("</prop>"));
         break;
     case Node::KIND_LOCALIZED_VALUE:
         {
-            writeData(handle, RTL_CONSTASCII_STRINGPARAM("<value"));
+            writeData_(handle, RTL_CONSTASCII_STRINGPARAM("<value"));
             if (!name.isEmpty()) {
-                writeData(handle, RTL_CONSTASCII_STRINGPARAM(" xml:lang=\""));
+                writeData_(handle, RTL_CONSTASCII_STRINGPARAM(" xml:lang=\""));
                 writeAttributeValue(handle, name);
-                writeData(handle, RTL_CONSTASCII_STRINGPARAM("\""));
+                writeData_(handle, RTL_CONSTASCII_STRINGPARAM("\""));
             }
             Type type = dynamic_cast< LocalizedPropertyNode * >(parent.get())->
                 getStaticType();
@@ -406,15 +323,15 @@ void writeNode(
             if (type == TYPE_ANY) {
                 type = dynType;
                 if (type != TYPE_NIL) {
-                    writeData(
+                    writeData_(
                         handle, RTL_CONSTASCII_STRINGPARAM(" oor:type=\""));
-                    writeData(
+                    writeData_(
                         handle, typeNames[type].begin, typeNames[type].length);
-                    writeData(handle, RTL_CONSTASCII_STRINGPARAM("\""));
+                    writeData_(handle, RTL_CONSTASCII_STRINGPARAM("\""));
                 }
             }
             if (dynType == TYPE_NIL) {
-                writeData(
+                writeData_(
                     handle, RTL_CONSTASCII_STRINGPARAM(" xsi:nil=\"true\"/>"));
             } else {
                 writeValue(handle, type, value);
@@ -423,19 +340,19 @@ void writeNode(
         break;
     case Node::KIND_GROUP:
     case Node::KIND_SET:
-        writeData(handle, RTL_CONSTASCII_STRINGPARAM("<node oor:name=\""));
+        writeData_(handle, RTL_CONSTASCII_STRINGPARAM("<node oor:name=\""));
         writeAttributeValue(handle, name);
         if (!node->getTemplateName().isEmpty()) { // set member
-            writeData(
+            writeData_(
                 handle, RTL_CONSTASCII_STRINGPARAM("\" oor:op=\"replace"));
         }
-        writeData(handle, RTL_CONSTASCII_STRINGPARAM("\">"));
+        writeData_(handle, RTL_CONSTASCII_STRINGPARAM("\">"));
         for (NodeMap::const_iterator i(node->getMembers().begin());
              i != node->getMembers().end(); ++i)
         {
             writeNode(components, handle, node, i->first, i->second);
         }
-        writeData(handle, RTL_CONSTASCII_STRINGPARAM("</node>"));
+        writeData_(handle, RTL_CONSTASCII_STRINGPARAM("</node>"));
         break;
     case Node::KIND_ROOT:
         assert(false); // this cannot happen
@@ -455,39 +372,39 @@ void writeModifications(
     if (modifications.children.empty()) {
         assert(parent.is());
             // components themselves have no parent but must have children
-        writeData(handle, RTL_CONSTASCII_STRINGPARAM("<item oor:path=\""));
+        writeData_(handle, RTL_CONSTASCII_STRINGPARAM("<item oor:path=\""));
         writeAttributeValue(handle, parentPathRepresentation);
-        writeData(handle, RTL_CONSTASCII_STRINGPARAM("\">"));
+        writeData_(handle, RTL_CONSTASCII_STRINGPARAM("\">"));
         if (node.is()) {
             writeNode(components, handle, parent, nodeName, node);
         } else {
             switch (parent->kind()) {
             case Node::KIND_LOCALIZED_PROPERTY:
-                writeData(handle, RTL_CONSTASCII_STRINGPARAM("<value"));
+                writeData_(handle, RTL_CONSTASCII_STRINGPARAM("<value"));
                 if (!nodeName.isEmpty()) {
-                    writeData(
+                    writeData_(
                         handle, RTL_CONSTASCII_STRINGPARAM(" xml:lang=\""));
                     writeAttributeValue(handle, nodeName);
-                    writeData(handle, RTL_CONSTASCII_STRINGPARAM("\""));
+                    writeData_(handle, RTL_CONSTASCII_STRINGPARAM("\""));
                 }
-                writeData(
+                writeData_(
                     handle, RTL_CONSTASCII_STRINGPARAM(" oor:op=\"remove\"/>"));
                 break;
             case Node::KIND_GROUP:
                 assert(
                     dynamic_cast< GroupNode * >(parent.get())->isExtensible());
-                writeData(
+                writeData_(
                     handle, RTL_CONSTASCII_STRINGPARAM("<prop oor:name=\""));
                 writeAttributeValue(handle, nodeName);
-                writeData(
+                writeData_(
                     handle,
                     RTL_CONSTASCII_STRINGPARAM("\" oor:op=\"remove\"/>"));
                 break;
             case Node::KIND_SET:
-                writeData(
+                writeData_(
                     handle, RTL_CONSTASCII_STRINGPARAM("<node oor:name=\""));
                 writeAttributeValue(handle, nodeName);
-                writeData(
+                writeData_(
                     handle,
                     RTL_CONSTASCII_STRINGPARAM("\" oor:op=\"remove\"/>"));
                 break;
@@ -496,7 +413,7 @@ void writeModifications(
                 break;
             }
         }
-        writeData(handle, RTL_CONSTASCII_STRINGPARAM("</item>\n"));
+        writeData_(handle, RTL_CONSTASCII_STRINGPARAM("</item>\n"));
     } else {
         assert(node.is());
         OUString pathRep(
@@ -513,6 +430,95 @@ void writeModifications(
     }
 }
 
+}
+
+void writeData(oslFileHandle handle, OString const & text) {
+    writeData_(handle, text.getStr(), text.getLength());
+}
+
+void writeAttributeValue(oslFileHandle handle, OUString const & value) {
+    sal_Int32 i = 0;
+    sal_Int32 j = i;
+    for (; j < value.getLength(); ++j) {
+        assert(
+            value[j] == 0x0009 || value[j] == 0x000A || value[j] == 0x000D ||
+            (value[j] >= 0x0020 && value[j] != 0xFFFE && value[j] != 0xFFFF));
+        switch(value[j]) {
+        case '\x09':
+            writeData(handle, convertToUtf8(value, i, j - i));
+            writeData_(handle, RTL_CONSTASCII_STRINGPARAM("	"));
+            i = j + 1;
+            break;
+        case '\x0A':
+            writeData(handle, convertToUtf8(value, i, j - i));
+            writeData_(handle, RTL_CONSTASCII_STRINGPARAM("&#xA;"));
+            i = j + 1;
+            break;
+        case '\x0D':
+            writeData(handle, convertToUtf8(value, i, j - i));
+            writeData_(handle, RTL_CONSTASCII_STRINGPARAM("&#xD;"));
+            i = j + 1;
+            break;
+        case '"':
+            writeData(handle, convertToUtf8(value, i, j - i));
+            writeData_(handle, RTL_CONSTASCII_STRINGPARAM("""));
+            i = j + 1;
+            break;
+        case '&':
+            writeData(handle, convertToUtf8(value, i, j - i));
+            writeData_(handle, RTL_CONSTASCII_STRINGPARAM("&"));
+            i = j + 1;
+            break;
+        case '<':
+            writeData(handle, convertToUtf8(value, i, j - i));
+            writeData_(handle, RTL_CONSTASCII_STRINGPARAM("<"));
+            i = j + 1;
+            break;
+        default:
+            break;
+        }
+    }
+    writeData(handle, convertToUtf8(value, i, j - i));
+}
+
+void writeValueContent(oslFileHandle handle, OUString const & value) {
+    sal_Int32 i = 0;
+    sal_Int32 j = i;
+    for (; j < value.getLength(); ++j) {
+        sal_Unicode c = value[j];
+        if ((c < 0x0020 && c != 0x0009 && c != 0x000A && c != 0x000D) ||
+            c == 0xFFFE || c == 0xFFFF)
+        {
+            writeData(handle, convertToUtf8(value, i, j - i));
+            writeData_(
+                handle, RTL_CONSTASCII_STRINGPARAM("<unicode oor:scalar=\""));
+            writeData(
+                handle, OString::number(c));
+            writeData_(handle, RTL_CONSTASCII_STRINGPARAM("\"/>"));
+            i = j + 1;
+        } else if (c == '\x0D') {
+            writeData(handle, convertToUtf8(value, i, j - i));
+            writeData_(handle, RTL_CONSTASCII_STRINGPARAM("&#xD;"));
+            i = j + 1;
+        } else if (c == '&') {
+            writeData(handle, convertToUtf8(value, i, j - i));
+            writeData_(handle, RTL_CONSTASCII_STRINGPARAM("&"));
+            i = j + 1;
+        } else if (c == '<') {
+            writeData(handle, convertToUtf8(value, i, j - i));
+            writeData_(handle, RTL_CONSTASCII_STRINGPARAM("<"));
+            i = j + 1;
+        } else if (c == '>') {
+            // "MUST, for compatibility, be escaped [...] when it appears in the
+            // string ']]>'":
+            writeData(handle, convertToUtf8(value, i, j - i));
+            writeData_(handle, RTL_CONSTASCII_STRINGPARAM(">"));
+            i = j + 1;
+        }
+    }
+    writeData(handle, convertToUtf8(value, i, j - i));
+}
+
 void writeModFile(
     Components & components, OUString const & url, Data const & data)
 {
@@ -549,7 +555,7 @@ void writeModFile(
             "cannot create temporary file in " + dir,
             css::uno::Reference< css::uno::XInterface >());
     }
-    writeData(
+    writeData_(
         tmp.handle,
         RTL_CONSTASCII_STRINGPARAM(
             "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<oor:items"
@@ -568,7 +574,7 @@ void writeModFile(
             Data::findNode(Data::NO_LAYER, data.getComponents(), j->first),
             j->second);
     }
-    writeData(tmp.handle, RTL_CONSTASCII_STRINGPARAM("</oor:items>\n"));
+    writeData_(tmp.handle, RTL_CONSTASCII_STRINGPARAM("</oor:items>\n"));
     oslFileError e = osl_closeFile(tmp.handle);
     tmp.closed = true;
     if (e != osl_File_E_None) {
diff --git a/configmgr/source/writemodfile.hxx b/configmgr/source/writemodfile.hxx
index 727ab9f..08f3256 100644
--- a/configmgr/source/writemodfile.hxx
+++ b/configmgr/source/writemodfile.hxx
@@ -30,6 +30,7 @@ struct Data;
 void writeData(oslFileHandle handle, OString const & text);
 void writeAttributeValue(oslFileHandle handle, OUString const & value);
 void writeValueContent(oslFileHandle handle, OUString const & value);
+
 void writeModFile(
     Components & components, OUString const & url, Data const & data);
 


More information about the Libreoffice-commits mailing list