rrichards               Mon Dec 19 15:05:42 2005 EDT

  Modified files:              
    /php-src/ext/xmlwriter      php_xmlwriter.c php_xmlwriter.h 
  Log:
  cleanup code making it easier to add new functionality and maintain
  implement xmlwriter_full_end_element and xmlwriter_write_raw
  
http://cvs.php.net/viewcvs.cgi/php-src/ext/xmlwriter/php_xmlwriter.c?r1=1.27&r2=1.28&diff_format=u
Index: php-src/ext/xmlwriter/php_xmlwriter.c
diff -u php-src/ext/xmlwriter/php_xmlwriter.c:1.27 
php-src/ext/xmlwriter/php_xmlwriter.c:1.28
--- php-src/ext/xmlwriter/php_xmlwriter.c:1.27  Sat Dec 17 20:05:21 2005
+++ php-src/ext/xmlwriter/php_xmlwriter.c       Mon Dec 19 15:05:41 2005
@@ -17,7 +17,7 @@
   +----------------------------------------------------------------------+
 */
 
-/* $Id: php_xmlwriter.c,v 1.27 2005/12/17 20:05:21 iliaa Exp $ */
+/* $Id: php_xmlwriter.c,v 1.28 2005/12/19 15:05:41 rrichards Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include "config.h"
@@ -34,6 +34,9 @@
 static void xmlwriter_free_resource_ptr(xmlwriter_object *intern TSRMLS_DC);
 static void xmlwriter_dtor(zend_rsrc_list_entry *rsrc TSRMLS_DC);
 
+typedef int (*xmlwriter_read_one_char_t)(xmlTextWriterPtr writer, const 
xmlChar *content);
+typedef int (*xmlwriter_read_int_t)(xmlTextWriterPtr writer);
+
 /* {{{ xmlwriter_object_free_storage */
 static void xmlwriter_free_resource_ptr(xmlwriter_object *intern TSRMLS_DC) 
 {
@@ -143,6 +146,7 @@
 #endif
        PHP_FE(xmlwriter_start_element,         NULL)
        PHP_FE(xmlwriter_end_element,           NULL)
+       PHP_FE(xmlwriter_full_end_element,      NULL)
        PHP_FE(xmlwriter_start_element_ns,      NULL)
        PHP_FE(xmlwriter_write_element,         NULL)
        PHP_FE(xmlwriter_write_element_ns,      NULL)
@@ -153,6 +157,7 @@
        PHP_FE(xmlwriter_end_cdata,                     NULL)
        PHP_FE(xmlwriter_write_cdata,           NULL)
        PHP_FE(xmlwriter_text,                          NULL)
+       PHP_FE(xmlwriter_write_raw,                     NULL)
        PHP_FE(xmlwriter_start_document,        NULL)
        PHP_FE(xmlwriter_end_document,          NULL)
        PHP_FE(xmlwriter_write_comment,         NULL)
@@ -195,6 +200,7 @@
 #endif
        PHP_ME_MAPPING(startElement,    xmlwriter_start_element,        NULL)
        PHP_ME_MAPPING(endElement,              xmlwriter_end_element,          
NULL)
+       PHP_ME_MAPPING(fullEndElement,  xmlwriter_full_end_element,     NULL)
        PHP_ME_MAPPING(startElementNs,  xmlwriter_start_element_ns,     NULL)
        PHP_ME_MAPPING(writeElement,    xmlwriter_write_element,        NULL)
        PHP_ME_MAPPING(writeElementNs,  xmlwriter_write_element_ns,     NULL)
@@ -205,6 +211,7 @@
        PHP_ME_MAPPING(endCdata,                xmlwriter_end_cdata,            
NULL)
        PHP_ME_MAPPING(writeCdata,              xmlwriter_write_cdata,          
NULL)
        PHP_ME_MAPPING(text,                    xmlwriter_text,                 
        NULL)
+       PHP_ME_MAPPING(writeRaw,                xmlwriter_write_raw,            
NULL)
        PHP_ME_MAPPING(startDocument,   xmlwriter_start_document,       NULL)
        PHP_ME_MAPPING(endDocument,             xmlwriter_end_document,         
NULL)
        PHP_ME_MAPPING(writeComment,    xmlwriter_write_comment,        NULL)
@@ -351,205 +358,144 @@
 }
 /* }}} */
 
-#if LIBXML_VERSION >= 20605
-/* {{{ proto bool xmlwriter_set_indent(resource xmlwriter, bool indent)
-Toggle indentation on/off - returns FALSE on error */
-PHP_FUNCTION(xmlwriter_set_indent)
+static void php_xmlwriter_string_arg(INTERNAL_FUNCTION_PARAMETERS, 
xmlwriter_read_one_char_t internal_function, char *err_string)
 {
        zval *pind;
        xmlwriter_object *intern;
        xmlTextWriterPtr ptr;
-       int retval;
-       zend_bool indent;
+       char *name;
+       int name_len, retval;
 
 #ifdef ZEND_ENGINE_2
        zval *this = getThis();
        
        if (this) {
-               if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "b", 
&indent) == FAILURE) {
+               if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", 
&name, &name_len) == FAILURE) {
                        return;
                }
                XMLWRITER_FROM_OBJECT(intern, this);
        } else
 #endif
        {
-               if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rb", 
&pind, &indent) == FAILURE) {
+               if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs", 
&pind, &name, &name_len) == FAILURE) {
                        return;
                }
+       
                ZEND_FETCH_RESOURCE(intern,xmlwriter_object *, &pind, -1, 
"XMLWriter", le_xmlwriter);
        }
 
+       if (err_string != NULL) {
+               XMLW_NAME_CHK(err_string);
+       }
 
        ptr = intern->ptr;
+
        if (ptr) {
-               retval = xmlTextWriterSetIndent(ptr, indent);
-               if (retval == 0) {
+               retval = internal_function(ptr, name);
+               if (retval != -1) {
                        RETURN_TRUE;
                }
        }
        
        RETURN_FALSE;
 }
-/* }}} */
 
-/* {{{ proto bool xmlwriter_set_indent_string(resource xmlwriter, string 
indentString)
-Set string used for indenting - returns FALSE on error */
-PHP_FUNCTION(xmlwriter_set_indent_string)
+static void php_xmlwriter_end(INTERNAL_FUNCTION_PARAMETERS, 
xmlwriter_read_int_t internal_function)
 {
        zval *pind;
        xmlwriter_object *intern;
        xmlTextWriterPtr ptr;
-       char *indent;
-       int indent_len, retval;
-
+       int retval;
 #ifdef ZEND_ENGINE_2
        zval *this = getThis();
        
        if (this) {
-               if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", 
&indent, &indent_len) == FAILURE) {
-                       return;
-               }
                XMLWRITER_FROM_OBJECT(intern, this);
-       } else
+       } else 
 #endif
        {
-               if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs", 
&pind, &indent, &indent_len) == FAILURE) {
+               if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", 
&pind) == FAILURE) {
                        return;
                }
-       
                ZEND_FETCH_RESOURCE(intern,xmlwriter_object *, &pind, -1, 
"XMLWriter", le_xmlwriter);
        }
 
-
        ptr = intern->ptr;
 
        if (ptr) {
-               retval = xmlTextWriterSetIndentString(ptr, indent);
-               if (retval == 0) {
+               retval = internal_function(ptr);
+               if (retval != -1) {
                        RETURN_TRUE;
                }
        }
        
        RETURN_FALSE;
 }
-/* }}} */
-
-#endif
 
-/* {{{ proto bool xmlwriter_start_attribute(resource xmlwriter, string name)
-Create start attribute - returns FALSE on error */
-PHP_FUNCTION(xmlwriter_start_attribute)
+#if LIBXML_VERSION >= 20605
+/* {{{ proto bool xmlwriter_set_indent(resource xmlwriter, bool indent)
+Toggle indentation on/off - returns FALSE on error */
+PHP_FUNCTION(xmlwriter_set_indent)
 {
        zval *pind;
        xmlwriter_object *intern;
        xmlTextWriterPtr ptr;
-       char *name;
-       int name_len, retval;
+       int retval;
+       zend_bool indent;
+
 #ifdef ZEND_ENGINE_2
        zval *this = getThis();
        
        if (this) {
-               if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", 
&name, &name_len) == FAILURE) {
+               if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "b", 
&indent) == FAILURE) {
                        return;
                }
                XMLWRITER_FROM_OBJECT(intern, this);
        } else
 #endif
        {
-               if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs", 
&pind, &name, &name_len) == FAILURE) {
+               if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rb", 
&pind, &indent) == FAILURE) {
                        return;
                }
                ZEND_FETCH_RESOURCE(intern,xmlwriter_object *, &pind, -1, 
"XMLWriter", le_xmlwriter);
        }
 
 
-       XMLW_NAME_CHK("Invalid Element Name");
-
        ptr = intern->ptr;
-
        if (ptr) {
-               retval = xmlTextWriterStartAttribute(ptr, name);
-               if (retval != -1) {
+               retval = xmlTextWriterSetIndent(ptr, indent);
+               if (retval == 0) {
                        RETURN_TRUE;
                }
        }
-
+       
        RETURN_FALSE;
 }
 /* }}} */
 
-static void php_xmlwriter_end(INTERNAL_FUNCTION_PARAMETERS, int type)
+/* {{{ proto bool xmlwriter_set_indent_string(resource xmlwriter, string 
indentString)
+Set string used for indenting - returns FALSE on error */
+PHP_FUNCTION(xmlwriter_set_indent_string)
 {
-       zval *pind;
-       xmlwriter_object *intern;
-       xmlTextWriterPtr ptr;
-       int retval;
-#ifdef ZEND_ENGINE_2
-       zval *this = getThis();
-       
-       if (this) {
-               XMLWRITER_FROM_OBJECT(intern, this);
-       } else 
-#endif
-       {
-               if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", 
&pind) == FAILURE) {
-                       return;
-               }
-               ZEND_FETCH_RESOURCE(intern,xmlwriter_object *, &pind, -1, 
"XMLWriter", le_xmlwriter);
-       }
+       php_xmlwriter_string_arg(INTERNAL_FUNCTION_PARAM_PASSTHRU, 
xmlTextWriterSetIndentString, NULL);
+}
+/* }}} */
 
-       ptr = intern->ptr;
+#endif
 
-       if (ptr) {
-               switch (type) {
-                       case 0:
-                               retval = xmlTextWriterEndAttribute(ptr);
-                               break;
-                       case 1:
-                               retval = xmlTextWriterEndElement(ptr);
-                               break;
-                       case 2:
-                               retval = xmlTextWriterEndPI(ptr);
-                               break;
-                       case 3:
-                               retval = xmlTextWriterEndCDATA(ptr);
-                               break;
-                       case 4:
-                               retval = xmlTextWriterEndComment(ptr);
-                               break;
-                       case 5:
-                               retval = xmlTextWriterEndDocument(ptr);
-                               break;
-                       case 6:
-                               retval = xmlTextWriterEndDTD(ptr);
-                               break;
-                       case 7:
-                               retval = xmlTextWriterEndDTDElement(ptr);
-                               break;
-                       case 8:
-                               retval = xmlTextWriterEndDTDAttlist(ptr);
-                               break;
-                       case 9:
-                               retval = xmlTextWriterEndDTDEntity(ptr);
-                               break;
-                       default:
-                               retval = -1;
-                               break;
-               }
-               if (retval != -1) {
-                       RETURN_TRUE;
-               }
-       }
-       
-       RETURN_FALSE;
+/* {{{ proto bool xmlwriter_start_attribute(resource xmlwriter, string name)
+Create start attribute - returns FALSE on error */
+PHP_FUNCTION(xmlwriter_start_attribute)
+{
+       php_xmlwriter_string_arg(INTERNAL_FUNCTION_PARAM_PASSTHRU, 
xmlTextWriterStartAttribute, "Invalid Attribute Name");
 }
-
+/* }}} */
 
 /* {{{ proto bool xmlwriter_end_attribute(resource xmlwriter)
 End attribute - returns FALSE on error */
 PHP_FUNCTION(xmlwriter_end_attribute)
 {
-       php_xmlwriter_end(INTERNAL_FUNCTION_PARAM_PASSTHRU, 0);
+       php_xmlwriter_end(INTERNAL_FUNCTION_PARAM_PASSTHRU, 
xmlTextWriterEndAttribute);
 }
 /* }}} */
 
@@ -692,40 +638,7 @@
 Create start element tag - returns FALSE on error */
 PHP_FUNCTION(xmlwriter_start_element)
 {
-       zval *pind;
-       xmlwriter_object *intern;
-       xmlTextWriterPtr ptr;
-       char *name;
-       int name_len, retval;
-#ifdef ZEND_ENGINE_2
-       zval *this = getThis();
-       
-       if (this) {
-               if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", 
&name, &name_len) == FAILURE) {
-                       return;
-               }
-               XMLWRITER_FROM_OBJECT(intern, this);
-       } else
-#endif
-       {
-               if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs", 
&pind, &name, &name_len) == FAILURE) {
-                       return;
-               }
-               ZEND_FETCH_RESOURCE(intern,xmlwriter_object *, &pind, -1, 
"XMLWriter", le_xmlwriter);
-       }
-
-       XMLW_NAME_CHK("Invalid Element Name");
-
-       ptr = intern->ptr;
-
-       if (ptr) {
-               retval = xmlTextWriterStartElement(ptr, name);
-               if (retval != -1) {
-                       RETURN_TRUE;
-               }
-       }
-       
-       RETURN_FALSE;
+       php_xmlwriter_string_arg(INTERNAL_FUNCTION_PARAM_PASSTHRU, 
xmlTextWriterStartElement, "Invalid Element Name");
 }
 /* }}} */
 
@@ -778,7 +691,15 @@
 End current element - returns FALSE on error */
 PHP_FUNCTION(xmlwriter_end_element)
 {
-       php_xmlwriter_end(INTERNAL_FUNCTION_PARAM_PASSTHRU, 1);
+       php_xmlwriter_end(INTERNAL_FUNCTION_PARAM_PASSTHRU, 
xmlTextWriterEndElement);
+}
+/* }}} */
+
+/* {{{ proto bool xmlwriter_full_end_element(resource xmlwriter)
+End current element - returns FALSE on error */
+PHP_FUNCTION(xmlwriter_full_end_element)
+{
+       php_xmlwriter_end(INTERNAL_FUNCTION_PARAM_PASSTHRU, 
xmlTextWriterFullEndElement);
 }
 /* }}} */
 
@@ -873,41 +794,7 @@
 Create start PI tag - returns FALSE on error */
 PHP_FUNCTION(xmlwriter_start_pi)
 {
-       zval *pind;
-       xmlwriter_object *intern;
-       xmlTextWriterPtr ptr;
-       char *name;
-       int name_len, retval;
-
-#ifdef ZEND_ENGINE_2
-       zval *this = getThis();
-       
-       if (this) {
-               if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", 
&name, &name_len) == FAILURE) {
-                       return;
-               }
-               XMLWRITER_FROM_OBJECT(intern, this);
-       } else
-#endif
-       {
-               if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs", 
&pind, &name, &name_len) == FAILURE) {
-                       return;
-               }
-               ZEND_FETCH_RESOURCE(intern,xmlwriter_object *, &pind, -1, 
"XMLWriter", le_xmlwriter);
-       }
-
-       XMLW_NAME_CHK("Invalid PI Target");
-
-       ptr = intern->ptr;
-
-       if (ptr) {
-               retval = xmlTextWriterStartPI(ptr, name);
-               if (retval != -1) {
-                       RETURN_TRUE;
-               }
-       }
-       
-       RETURN_FALSE;
+       php_xmlwriter_string_arg(INTERNAL_FUNCTION_PARAM_PASSTHRU, 
xmlTextWriterStartPI, "Invalid PI Target");
 }
 /* }}} */
 
@@ -915,7 +802,7 @@
 End current PI - returns FALSE on error */
 PHP_FUNCTION(xmlwriter_end_pi)
 {
-       php_xmlwriter_end(INTERNAL_FUNCTION_PARAM_PASSTHRU, 2);
+       php_xmlwriter_end(INTERNAL_FUNCTION_PARAM_PASSTHRU, xmlTextWriterEndPI);
 }
 /* }}} */
 
@@ -1002,7 +889,7 @@
 End current CDATA - returns FALSE on error */
 PHP_FUNCTION(xmlwriter_end_cdata)
 {
-       php_xmlwriter_end(INTERNAL_FUNCTION_PARAM_PASSTHRU, 3);
+       php_xmlwriter_end(INTERNAL_FUNCTION_PARAM_PASSTHRU, 
xmlTextWriterEndCDATA);
 }
 /* }}} */
 
@@ -1010,40 +897,15 @@
 Write full CDATA tag - returns FALSE on error */
 PHP_FUNCTION(xmlwriter_write_cdata)
 {
-       zval *pind;
-       xmlwriter_object *intern;
-       xmlTextWriterPtr ptr;
-       char *content;
-       int content_len, retval;
-
-#ifdef ZEND_ENGINE_2
-       zval *this = getThis();
-       
-       if (this) {
-               if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", 
&content, &content_len) == FAILURE) {
-                       return;
-               }
-               XMLWRITER_FROM_OBJECT(intern, this);
-       } else
-#endif
-       {
-               if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs", 
&pind, 
-                       &content, &content_len) == FAILURE) {
-                       return;
-               }
-               ZEND_FETCH_RESOURCE(intern,xmlwriter_object *, &pind, -1, 
"XMLWriter", le_xmlwriter);
-       }
-
-       ptr = intern->ptr;
+       php_xmlwriter_string_arg(INTERNAL_FUNCTION_PARAM_PASSTHRU, 
xmlTextWriterWriteCDATA, NULL);
+}
+/* }}} */
 
-       if (ptr) {
-               retval = xmlTextWriterWriteCDATA(ptr, content);
-               if (retval != -1) {
-                       RETURN_TRUE;
-               }
-       }
-       
-       RETURN_FALSE;
+/* {{{ proto bool xmlwriter_write_raw(resource xmlwriter, string content)
+Write text - returns FALSE on error */
+PHP_FUNCTION(xmlwriter_write_raw)
+{
+       php_xmlwriter_string_arg(INTERNAL_FUNCTION_PARAM_PASSTHRU, 
xmlTextWriterWriteRaw, NULL);
 }
 /* }}} */
 
@@ -1051,40 +913,7 @@
 Write text - returns FALSE on error */
 PHP_FUNCTION(xmlwriter_text)
 {
-       zval *pind;
-       xmlwriter_object *intern;
-       xmlTextWriterPtr ptr;
-       char *content;
-       int content_len, retval;
-
-#ifdef ZEND_ENGINE_2
-       zval *this = getThis();
-       
-       if (this) {
-               if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", 
&content, &content_len) == FAILURE) {
-                       return;
-               }
-               XMLWRITER_FROM_OBJECT(intern, this);
-       } else
-#endif
-       {
-               if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs", 
&pind, &content, &content_len) == FAILURE) {
-                       return;
-               }
-       
-               ZEND_FETCH_RESOURCE(intern,xmlwriter_object *, &pind, -1, 
"XMLWriter", le_xmlwriter);
-       }
-
-       ptr = intern->ptr;
-
-       if (ptr) {
-               retval = xmlTextWriterWriteString(ptr, content);
-               if (retval) {
-                       RETURN_TRUE;
-               }
-       }
-       
-       RETURN_FALSE;
+       php_xmlwriter_string_arg(INTERNAL_FUNCTION_PARAM_PASSTHRU, 
xmlTextWriterWriteString, NULL);
 }
 /* }}} */
 
@@ -1128,7 +957,7 @@
 Create end comment - returns FALSE on error */
 PHP_FUNCTION(xmlwriter_end_comment)
 {
-       php_xmlwriter_end(INTERNAL_FUNCTION_PARAM_PASSTHRU, 4);
+       php_xmlwriter_end(INTERNAL_FUNCTION_PARAM_PASSTHRU, 
xmlTextWriterEndComment);
 }
 /* }}} */
 #endif  /* LIBXML_VERSION >= 20607 */
@@ -1138,42 +967,7 @@
 Write full comment tag - returns FALSE on error */
 PHP_FUNCTION(xmlwriter_write_comment)
 {
-       zval *pind;
-       xmlwriter_object *intern;
-       xmlTextWriterPtr ptr;
-       char *content;
-       int content_len, retval;
-
-       
-#ifdef ZEND_ENGINE_2
-       zval *this = getThis();
-
-       if (this) {
-               if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s",
-                       &content, &content_len) == FAILURE) {
-                       return;
-               }
-               XMLWRITER_FROM_OBJECT(intern, this);
-       } else
-#endif
-       {
-               if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs", 
&pind, 
-                       &content, &content_len) == FAILURE) {
-                       return;
-               }
-               ZEND_FETCH_RESOURCE(intern,xmlwriter_object *, &pind, -1, 
"XMLWriter", le_xmlwriter);
-       }
-
-       ptr = intern->ptr;
-
-       if (ptr) {
-               retval = xmlTextWriterWriteComment(ptr, content);
-               if (retval != -1) {
-                       RETURN_TRUE;
-               }
-       }
-       
-       RETURN_FALSE;
+       php_xmlwriter_string_arg(INTERNAL_FUNCTION_PARAM_PASSTHRU, 
xmlTextWriterWriteComment, NULL);
 }
 /* }}} */
 
@@ -1221,7 +1015,7 @@
 End current document - returns FALSE on error */
 PHP_FUNCTION(xmlwriter_end_document)
 {
-       php_xmlwriter_end(INTERNAL_FUNCTION_PARAM_PASSTHRU, 5);
+       php_xmlwriter_end(INTERNAL_FUNCTION_PARAM_PASSTHRU, 
xmlTextWriterEndDocument);
 }
 /* }}} */
 
@@ -1270,7 +1064,7 @@
 End current DTD - returns FALSE on error */
 PHP_FUNCTION(xmlwriter_end_dtd)
 {
-       php_xmlwriter_end(INTERNAL_FUNCTION_PARAM_PASSTHRU, 6);
+       php_xmlwriter_end(INTERNAL_FUNCTION_PARAM_PASSTHRU, 
xmlTextWriterEndDTD);
 }
 /* }}} */
 
@@ -1320,41 +1114,7 @@
 Create start DTD element - returns FALSE on error */
 PHP_FUNCTION(xmlwriter_start_dtd_element)
 {
-       zval *pind;
-       xmlwriter_object *intern;
-       xmlTextWriterPtr ptr;
-       char *name;
-       int name_len, retval;
-
-#ifdef ZEND_ENGINE_2
-       zval *this = getThis();
-
-       if (this) {
-               if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", 
&name, &name_len) == FAILURE) {
-                       return;
-               }
-               XMLWRITER_FROM_OBJECT(intern, this);
-       } else
-#endif
-       {
-               if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs", 
&pind, &name, &name_len) == FAILURE) {
-                       return;
-               }
-               ZEND_FETCH_RESOURCE(intern,xmlwriter_object *, &pind, -1, 
"XMLWriter", le_xmlwriter);
-       }
-
-       XMLW_NAME_CHK("Invalid Attribute Name");
-
-       ptr = intern->ptr;
-
-       if (ptr) {
-               retval = xmlTextWriterStartDTDElement(ptr, name);
-               if (retval != -1) {
-                       RETURN_TRUE;
-               }
-       }
-       
-       RETURN_FALSE;
+       php_xmlwriter_string_arg(INTERNAL_FUNCTION_PARAM_PASSTHRU, 
xmlTextWriterStartDTDElement, "Invalid Element Name");
 }
 /* }}} */
 
@@ -1362,7 +1122,7 @@
 End current DTD element - returns FALSE on error */
 PHP_FUNCTION(xmlwriter_end_dtd_element)
 {
-       php_xmlwriter_end(INTERNAL_FUNCTION_PARAM_PASSTHRU, 7);
+       php_xmlwriter_end(INTERNAL_FUNCTION_PARAM_PASSTHRU, 
xmlTextWriterEndDTDElement);
 }
 /* }}} */
 
@@ -1414,41 +1174,7 @@
 Create start DTD AttList - returns FALSE on error */
 PHP_FUNCTION(xmlwriter_start_dtd_attlist)
 {
-       zval *pind;
-       xmlwriter_object *intern;
-       xmlTextWriterPtr ptr;
-       char *name;
-       int name_len, retval;
-
-#ifdef ZEND_ENGINE_2
-       zval *this = getThis();
-
-       if (this) {
-               if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", 
&name, &name_len) == FAILURE) {
-                       return;
-               }
-               XMLWRITER_FROM_OBJECT(intern, this);
-       } else
-#endif
-       {
-               if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs", 
&pind, &name, &name_len) == FAILURE) {
-                       return;
-               }
-               ZEND_FETCH_RESOURCE(intern,xmlwriter_object *, &pind, -1, 
"XMLWriter", le_xmlwriter);
-       }
-
-       XMLW_NAME_CHK("Invalid Attribute Name");
-
-       ptr = intern->ptr;
-
-       if (ptr) {
-               retval = xmlTextWriterStartDTDAttlist(ptr, name);
-               if (retval != -1) {
-                       RETURN_TRUE;
-               }
-       }
-       
-       RETURN_FALSE;
+       php_xmlwriter_string_arg(INTERNAL_FUNCTION_PARAM_PASSTHRU, 
xmlTextWriterStartDTDAttlist, "Invalid Element Name");
 }
 /* }}} */
 
@@ -1456,7 +1182,7 @@
 End current DTD AttList - returns FALSE on error */
 PHP_FUNCTION(xmlwriter_end_dtd_attlist)
 {
-       php_xmlwriter_end(INTERNAL_FUNCTION_PARAM_PASSTHRU, 8);
+       php_xmlwriter_end(INTERNAL_FUNCTION_PARAM_PASSTHRU, 
xmlTextWriterEndDTDAttlist);
 }
 /* }}} */
 
@@ -1553,7 +1279,7 @@
 End current DTD Entity - returns FALSE on error */
 PHP_FUNCTION(xmlwriter_end_dtd_entity)
 {
-       php_xmlwriter_end(INTERNAL_FUNCTION_PARAM_PASSTHRU, 9);
+       php_xmlwriter_end(INTERNAL_FUNCTION_PARAM_PASSTHRU, 
xmlTextWriterEndDTDEntity);
 }
 /* }}} */
 
http://cvs.php.net/viewcvs.cgi/php-src/ext/xmlwriter/php_xmlwriter.h?r1=1.12&r2=1.13&diff_format=u
Index: php-src/ext/xmlwriter/php_xmlwriter.h
diff -u php-src/ext/xmlwriter/php_xmlwriter.h:1.12 
php-src/ext/xmlwriter/php_xmlwriter.h:1.13
--- php-src/ext/xmlwriter/php_xmlwriter.h:1.12  Fri Dec  9 04:56:20 2005
+++ php-src/ext/xmlwriter/php_xmlwriter.h       Mon Dec 19 15:05:41 2005
@@ -17,7 +17,7 @@
   +----------------------------------------------------------------------+
 */
 
-/* $Id: php_xmlwriter.h,v 1.12 2005/12/09 04:56:20 rrichards Exp $ */
+/* $Id: php_xmlwriter.h,v 1.13 2005/12/19 15:05:41 rrichards Exp $ */
 
 #ifndef PHP_XMLWRITER_H
 #define PHP_XMLWRITER_H
@@ -70,6 +70,7 @@
 #endif
 PHP_FUNCTION(xmlwriter_start_element);
 PHP_FUNCTION(xmlwriter_end_element);
+PHP_FUNCTION(xmlwriter_full_end_element);
 PHP_FUNCTION(xmlwriter_start_element_ns);
 PHP_FUNCTION(xmlwriter_write_element);
 PHP_FUNCTION(xmlwriter_write_element_ns);
@@ -80,6 +81,7 @@
 PHP_FUNCTION(xmlwriter_end_cdata);
 PHP_FUNCTION(xmlwriter_write_cdata);
 PHP_FUNCTION(xmlwriter_text);
+PHP_FUNCTION(xmlwriter_write_raw);
 PHP_FUNCTION(xmlwriter_start_document);
 PHP_FUNCTION(xmlwriter_end_document);
 #if LIBXML_VERSION >= 20607

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to