[PATCH 2/2] xmllite/writer: Simplify single character writes.

Nikolay Sivov nsivov at codeweavers.com
Fri Nov 2 02:56:58 CDT 2018


Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
---
 dlls/xmllite/writer.c | 53 +++++++++++++++++++------------------------
 1 file changed, 23 insertions(+), 30 deletions(-)

diff --git a/dlls/xmllite/writer.c b/dlls/xmllite/writer.c
index e1fc232d4f..c1e2c97de3 100644
--- a/dlls/xmllite/writer.c
+++ b/dlls/xmllite/writer.c
@@ -42,11 +42,6 @@ DEFINE_GUID(IID_IXmlWriterOutput, 0xc1131708, 0x0f59, 0x477f, 0x93, 0x59, 0x7d,
 static const WCHAR closeelementW[] = {'<','/'};
 static const WCHAR closetagW[] = {' ','/','>'};
 static const WCHAR closepiW[] = {'?','>'};
-static const WCHAR ltW[] = {'<'};
-static const WCHAR gtW[] = {'>'};
-static const WCHAR spaceW[] = {' '};
-static const WCHAR quoteW[] = {'"'};
-static const WCHAR eqW[] = {'='};
 static const WCHAR xmlnsW[] = {' ','x','m','l','n','s'};
 static const WCHAR xmlnsuriW[] = {'h','t','t','p',':','/','/','w','w','w','.','w','3','.','o','r','g','/','2','0','0','0','/','x','m','l','n','s','/',0};
 
@@ -492,33 +487,31 @@ static HRESULT write_output_buffer(xmlwriteroutput *output, const WCHAR *data, i
     return S_OK;
 }
 
+static HRESULT write_output_buffer_char(xmlwriteroutput *output, WCHAR ch)
+{
+    return write_output_buffer(output, &ch, 1);
+}
+
 static HRESULT write_output_buffer_quoted(xmlwriteroutput *output, const WCHAR *data, int len)
 {
-    write_output_buffer(output, quoteW, ARRAY_SIZE(quoteW));
+    write_output_buffer_char(output, '"');
     if (!is_empty_string(data))
         write_output_buffer(output, data, len);
-    write_output_buffer(output, quoteW, ARRAY_SIZE(quoteW));
+    write_output_buffer_char(output, '"');
     return S_OK;
 }
 
-static HRESULT write_output_buffer_char(xmlwriteroutput *output, WCHAR ch)
-{
-    return write_output_buffer(output, &ch, 1);
-}
-
 /* TODO: test if we need to validate char range */
 static HRESULT write_output_qname(xmlwriteroutput *output, const WCHAR *prefix, int prefix_len,
         const WCHAR *local_name, int local_len)
 {
-    static const WCHAR colW[] = {':'};
-
     assert(prefix_len >= 0 && local_len >= 0);
 
     if (prefix_len)
         write_output_buffer(output, prefix, prefix_len);
 
     if (prefix_len && local_len)
-        write_output_buffer(output, colW, ARRAY_SIZE(colW));
+        write_output_buffer_char(output, ':');
 
     write_output_buffer(output, local_name, local_len);
 
@@ -645,7 +638,7 @@ static void writer_output_ns(xmlwriter *writer, struct element *element)
             continue;
 
         write_output_qname(writer->output, xmlnsW, ARRAY_SIZE(xmlnsW), ns->prefix, ns->prefix_len);
-        write_output_buffer(writer->output, eqW, ARRAY_SIZE(eqW));
+        write_output_buffer_char(writer->output, '=');
         write_output_buffer_quoted(writer->output, ns->uri, -1);
     }
 }
@@ -657,7 +650,7 @@ static HRESULT writer_close_starttag(xmlwriter *writer)
     if (!writer->starttagopen) return S_OK;
 
     writer_output_ns(writer, LIST_ENTRY(list_head(&writer->elements), struct element, entry));
-    hr = write_output_buffer(writer->output, gtW, ARRAY_SIZE(gtW));
+    hr = write_output_buffer_char(writer->output, '>');
     writer->starttagopen = 0;
     return hr;
 }
@@ -868,9 +861,9 @@ static HRESULT WINAPI xmlwriter_WriteAttributes(IXmlWriter *iface, IXmlReader *p
 static void write_output_attribute(xmlwriter *writer, const WCHAR *prefix, int prefix_len,
         const WCHAR *local, int local_len, const WCHAR *value)
 {
-    write_output_buffer(writer->output, spaceW, ARRAY_SIZE(spaceW));
+    write_output_buffer_char(writer->output, ' ');
     write_output_qname(writer->output, prefix, prefix_len, local, local_len);
-    write_output_buffer(writer->output, eqW, ARRAY_SIZE(eqW));
+    write_output_buffer_char(writer->output, '=');
     write_output_buffer_quoted(writer->output, value, -1);
 }
 
@@ -1138,14 +1131,14 @@ static HRESULT WINAPI xmlwriter_WriteComment(IXmlWriter *iface, LPCWSTR comment)
             for (i = 0; i < len; i++) {
                 write_output_buffer(This->output, comment + i, 1);
                 if (comment[i] == '-' && (i + 1 < len) && comment[i+1] == '-')
-                    write_output_buffer(This->output, spaceW, ARRAY_SIZE(spaceW));
+                    write_output_buffer_char(This->output, ' ');
             }
         }
         else
             write_output_buffer(This->output, comment, len);
 
         if (len && comment[len-1] == '-')
-            write_output_buffer(This->output, spaceW, ARRAY_SIZE(spaceW));
+            write_output_buffer_char(This->output, ' ');
     }
     write_output_buffer(This->output, ccloseW, ARRAY_SIZE(ccloseW));
 
@@ -1194,7 +1187,7 @@ static HRESULT WINAPI xmlwriter_WriteDocType(IXmlWriter *iface, LPCWSTR name, LP
     {
         write_output_buffer(This->output, publicW, ARRAY_SIZE(publicW));
         write_output_buffer_quoted(This->output, pubid, pubid_len);
-        write_output_buffer(This->output, spaceW, ARRAY_SIZE(spaceW));
+        write_output_buffer_char(This->output, ' ');
         write_output_buffer_quoted(This->output, sysid, -1);
     }
     else if (sysid)
@@ -1269,7 +1262,7 @@ static HRESULT WINAPI xmlwriter_WriteElementString(IXmlWriter *iface, LPCWSTR pr
     write_encoding_bom(This);
     write_node_indent(This);
 
-    write_output_buffer(This->output, ltW, ARRAY_SIZE(ltW));
+    write_output_buffer_char(This->output, '<');
     if (ns)
         write_output_qname(This->output, ns->prefix, ns->prefix_len, local_name, local_len);
     else
@@ -1278,17 +1271,17 @@ static HRESULT WINAPI xmlwriter_WriteElementString(IXmlWriter *iface, LPCWSTR pr
     if (!ns && (prefix_len || !is_empty_string(uri)))
     {
         write_output_qname(This->output, xmlnsW, ARRAY_SIZE(xmlnsW), prefix, prefix_len);
-        write_output_buffer(This->output, eqW, ARRAY_SIZE(eqW));
+        write_output_buffer_char(This->output, '=');
         write_output_buffer_quoted(This->output, uri, -1);
     }
 
     if (value)
     {
-        write_output_buffer(This->output, gtW, ARRAY_SIZE(gtW));
+        write_output_buffer_char(This->output, '>');
         write_output_buffer(This->output, value, -1);
         write_output_buffer(This->output, closeelementW, ARRAY_SIZE(closeelementW));
         write_output_qname(This->output, prefix, prefix_len, local_name, local_len);
-        write_output_buffer(This->output, gtW, ARRAY_SIZE(gtW));
+        write_output_buffer_char(This->output, '>');
     }
     else
         write_output_buffer(This->output, closetagW, ARRAY_SIZE(closetagW));
@@ -1365,7 +1358,7 @@ static HRESULT WINAPI xmlwriter_WriteEndElement(IXmlWriter *iface)
         write_node_indent(This);
         write_output_buffer(This->output, closeelementW, ARRAY_SIZE(closeelementW));
         write_output_buffer(This->output, element->qname, element->len);
-        write_output_buffer(This->output, gtW, ARRAY_SIZE(gtW));
+        write_output_buffer_char(This->output, '>');
     }
     writer_free_element(This, element);
 
@@ -1435,7 +1428,7 @@ static HRESULT WINAPI xmlwriter_WriteFullEndElement(IXmlWriter *iface)
     /* write full end tag */
     write_output_buffer(This->output, closeelementW, ARRAY_SIZE(closeelementW));
     write_output_buffer(This->output, element->qname, element->len);
-    write_output_buffer(This->output, gtW, ARRAY_SIZE(gtW));
+    write_output_buffer_char(This->output, '>');
 
     writer_free_element(This, element);
 
@@ -1538,7 +1531,7 @@ static HRESULT WINAPI xmlwriter_WriteProcessingInstruction(IXmlWriter *iface, LP
     write_node_indent(This);
     write_output_buffer(This->output, openpiW, ARRAY_SIZE(openpiW));
     write_output_buffer(This->output, name, -1);
-    write_output_buffer(This->output, spaceW, ARRAY_SIZE(spaceW));
+    write_output_buffer_char(This->output, ' ');
     write_output_buffer(This->output, text, -1);
     write_output_buffer(This->output, closepiW, ARRAY_SIZE(closepiW));
 
@@ -1707,7 +1700,7 @@ static HRESULT WINAPI xmlwriter_WriteStartElement(IXmlWriter *iface, LPCWSTR pre
     if (!ns && uri)
         writer_push_ns(This, prefix, prefix_len, uri);
 
-    write_output_buffer(This->output, ltW, ARRAY_SIZE(ltW));
+    write_output_buffer_char(This->output, '<');
     if (ns)
         write_output_qname(This->output, ns->prefix, ns->prefix_len, local_name, local_len);
     else
-- 
2.19.1




More information about the wine-devel mailing list