Annotation of embedaddon/php/ext/dom/documenttype.c, revision 1.1.1.3

1.1       misho       1: /*
                      2:    +----------------------------------------------------------------------+
                      3:    | PHP Version 5                                                        |
                      4:    +----------------------------------------------------------------------+
1.1.1.3 ! misho       5:    | Copyright (c) 1997-2013 The PHP Group                                |
1.1       misho       6:    +----------------------------------------------------------------------+
                      7:    | This source file is subject to version 3.01 of the PHP license,      |
                      8:    | that is bundled with this package in the file LICENSE, and is        |
                      9:    | available through the world-wide-web at the following url:           |
                     10:    | http://www.php.net/license/3_01.txt                                  |
                     11:    | If you did not receive a copy of the PHP license and are unable to   |
                     12:    | obtain it through the world-wide-web, please send a note to          |
                     13:    | license@php.net so we can mail you a copy immediately.               |
                     14:    +----------------------------------------------------------------------+
                     15:    | Authors: Christian Stocker <chregu@php.net>                          |
                     16:    |          Rob Richards <rrichards@php.net>                            |
                     17:    +----------------------------------------------------------------------+
                     18: */
                     19: 
1.1.1.2   misho      20: /* $Id$ */
1.1       misho      21: 
                     22: #ifdef HAVE_CONFIG_H
                     23: #include "config.h"
                     24: #endif
                     25: 
                     26: #include "php.h"
                     27: #if HAVE_LIBXML && HAVE_DOM
                     28: #include "php_dom.h"
                     29: 
                     30: /*
                     31: * class DOMDocumentType extends DOMNode 
                     32: *
                     33: * URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-412266927
                     34: * Since: 
                     35: */
                     36: 
                     37: const zend_function_entry php_dom_documenttype_class_functions[] = {
                     38:        PHP_FE_END
                     39: };
                     40: 
                     41: /* {{{ name    string  
                     42: readonly=yes 
                     43: URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1844763134
                     44: Since: 
                     45: */
                     46: int dom_documenttype_name_read(dom_object *obj, zval **retval TSRMLS_DC)
                     47: {
                     48:        xmlDtdPtr dtdptr;
                     49: 
                     50:        dtdptr = (xmlDtdPtr) dom_object_get_node(obj);
                     51: 
                     52:        if (dtdptr == NULL) {
                     53:                php_dom_throw_error(INVALID_STATE_ERR, 0 TSRMLS_CC);
                     54:                return FAILURE;
                     55:        }
                     56: 
                     57:        ALLOC_ZVAL(*retval);
                     58:        ZVAL_STRING(*retval, (char *) (dtdptr->name), 1);
                     59: 
                     60:        return SUCCESS;
                     61: }
                     62: 
                     63: /* }}} */
                     64: 
                     65: /* {{{ entities        DOMNamedNodeMap 
                     66: readonly=yes 
                     67: URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1788794630
                     68: Since: 
                     69: */
                     70: int dom_documenttype_entities_read(dom_object *obj, zval **retval TSRMLS_DC)
                     71: {
                     72:        xmlDtdPtr doctypep;
                     73:        xmlHashTable *entityht;
                     74:        dom_object *intern;
                     75: 
                     76:        doctypep = (xmlDtdPtr) dom_object_get_node(obj);
                     77: 
                     78:        if (doctypep == NULL) {
                     79:                php_dom_throw_error(INVALID_STATE_ERR, 0 TSRMLS_CC);
                     80:                return FAILURE;
                     81:        }
                     82: 
                     83:        MAKE_STD_ZVAL(*retval);
                     84:        php_dom_create_interator(*retval, DOM_NAMEDNODEMAP TSRMLS_CC);
                     85: 
                     86:        entityht = (xmlHashTable *) doctypep->entities;
                     87: 
                     88:        intern = (dom_object *)zend_objects_get_address(*retval TSRMLS_CC);
                     89:        dom_namednode_iter(obj, XML_ENTITY_NODE, intern, entityht, NULL, NULL TSRMLS_CC);
                     90: 
                     91:        return SUCCESS;
                     92: }
                     93: 
                     94: /* }}} */
                     95: 
                     96: /* {{{ notations       DOMNamedNodeMap 
                     97: readonly=yes 
                     98: URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-D46829EF
                     99: Since: 
                    100: */
                    101: int dom_documenttype_notations_read(dom_object *obj, zval **retval TSRMLS_DC)
                    102: {
                    103:        xmlDtdPtr doctypep;
                    104:        xmlHashTable *notationht;
                    105:        dom_object *intern;
                    106: 
                    107:        doctypep = (xmlDtdPtr) dom_object_get_node(obj);
                    108: 
                    109:        if (doctypep == NULL) {
                    110:                php_dom_throw_error(INVALID_STATE_ERR, 0 TSRMLS_CC);
                    111:                return FAILURE;
                    112:        }
                    113: 
                    114:        MAKE_STD_ZVAL(*retval);
                    115:        php_dom_create_interator(*retval, DOM_NAMEDNODEMAP TSRMLS_CC);
                    116: 
                    117:        notationht = (xmlHashTable *) doctypep->notations;
                    118: 
                    119:        intern = (dom_object *)zend_objects_get_address(*retval TSRMLS_CC);
                    120:        dom_namednode_iter(obj, XML_NOTATION_NODE, intern, notationht, NULL, NULL TSRMLS_CC);
                    121: 
                    122:        return SUCCESS;
                    123: }
                    124: 
                    125: /* }}} */
                    126: 
                    127: /* {{{ publicId        string  
                    128: readonly=yes 
                    129: URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-Core-DocType-publicId
                    130: Since: DOM Level 2
                    131: */
                    132: int dom_documenttype_public_id_read(dom_object *obj, zval **retval TSRMLS_DC)
                    133: {
                    134:        xmlDtdPtr dtdptr;
                    135: 
                    136:        dtdptr = (xmlDtdPtr) dom_object_get_node(obj);
                    137: 
                    138:        if (dtdptr == NULL) {
                    139:                php_dom_throw_error(INVALID_STATE_ERR, 0 TSRMLS_CC);
                    140:                return FAILURE;
                    141:        }
                    142: 
                    143:        ALLOC_ZVAL(*retval);
                    144:        if (dtdptr->ExternalID) {
                    145:                ZVAL_STRING(*retval, (char *) (dtdptr->ExternalID), 1);
                    146:        } else {
                    147:                ZVAL_EMPTY_STRING(*retval);
                    148:        }
                    149:        return SUCCESS;
                    150: 
                    151: }
                    152: 
                    153: /* }}} */
                    154: 
                    155: /* {{{ systemId        string  
                    156: readonly=yes 
                    157: URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-Core-DocType-systemId
                    158: Since: DOM Level 2
                    159: */
                    160: int dom_documenttype_system_id_read(dom_object *obj, zval **retval TSRMLS_DC)
                    161: {
                    162:        xmlDtdPtr dtdptr;
                    163: 
                    164:        dtdptr = (xmlDtdPtr) dom_object_get_node(obj);
                    165: 
                    166:        if (dtdptr == NULL) {
                    167:                php_dom_throw_error(INVALID_STATE_ERR, 0 TSRMLS_CC);
                    168:                return FAILURE;
                    169:        }
                    170: 
                    171:        ALLOC_ZVAL(*retval);
                    172:        if (dtdptr->SystemID) {
                    173:                ZVAL_STRING(*retval, (char *) (dtdptr->SystemID), 1);
                    174:        } else {
                    175:                ZVAL_EMPTY_STRING(*retval);
                    176:        }
                    177:        return SUCCESS;
                    178: }
                    179: 
                    180: /* }}} */
                    181: 
                    182: /* {{{ internalSubset  string  
                    183: readonly=yes 
                    184: URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-Core-DocType-internalSubset
                    185: Since: DOM Level 2
                    186: */
                    187: int dom_documenttype_internal_subset_read(dom_object *obj, zval **retval TSRMLS_DC)
                    188: {
                    189: 
                    190:        xmlDtdPtr dtdptr;
                    191:        xmlDtd *intsubset;
                    192:        xmlOutputBuffer *buff = NULL;
                    193: 
                    194:        dtdptr = (xmlDtdPtr) dom_object_get_node(obj);
                    195: 
                    196:        if (dtdptr == NULL) {
                    197:                php_dom_throw_error(INVALID_STATE_ERR, 0 TSRMLS_CC);
                    198:                return FAILURE;
                    199:        }
                    200: 
                    201:        ALLOC_ZVAL(*retval);
                    202: 
                    203:        if (dtdptr->doc != NULL && ((intsubset = dtdptr->doc->intSubset) != NULL)) {
                    204:                buff = xmlAllocOutputBuffer(NULL);
                    205:                if (buff != NULL) {
                    206:                        xmlNodeDumpOutput (buff, NULL, (xmlNodePtr) intsubset, 0, 0, NULL);
                    207:                        xmlOutputBufferFlush(buff);
1.1.1.3 ! misho     208: #ifdef LIBXML2_NEW_BUFFER
        !           209:                        ZVAL_STRINGL(*retval, xmlOutputBufferGetContent(buff), xmlOutputBufferGetSize(buff), 1);
        !           210: #else
1.1       misho     211:                        ZVAL_STRINGL(*retval, buff->buffer->content, buff->buffer->use, 1);
1.1.1.3 ! misho     212: #endif
1.1       misho     213:                        (void)xmlOutputBufferClose(buff);
                    214:                        return SUCCESS;
                    215:                }
                    216:        }
                    217: 
                    218:        ZVAL_EMPTY_STRING(*retval);
                    219: 
                    220:        return SUCCESS;
                    221: 
                    222: }
                    223: 
                    224: /* }}} */
                    225: 
                    226: #endif
                    227: 
                    228: /*
                    229:  * Local variables:
                    230:  * tab-width: 4
                    231:  * c-basic-offset: 4
                    232:  * End:
                    233:  * vim600: noet sw=4 ts=4 fdm=marker
                    234:  * vim<600: noet sw=4 ts=4
                    235:  */

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>