Skip to content

Commit 2f0a758

Browse files
committed
Start working on dom extension
Nowhere near compiling yet...
1 parent f9b26bc commit 2f0a758

File tree

7 files changed

+271
-397
lines changed

7 files changed

+271
-397
lines changed

ext/dom/attr.c

Lines changed: 18 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,6 @@ const zend_function_entry php_dom_attr_class_functions[] = {
5555
/* {{{ proto void DOMAttr::__construct(string name, [string value]); */
5656
PHP_METHOD(domattr, __construct)
5757
{
58-
5958
zval *id;
6059
xmlAttrPtr nodep = NULL;
6160
xmlNodePtr oldnode = NULL;
@@ -71,7 +70,7 @@ PHP_METHOD(domattr, __construct)
7170
}
7271

7372
zend_restore_error_handling(&error_handling TSRMLS_CC);
74-
intern = (dom_object *)zend_object_store_get_object(id TSRMLS_CC);
73+
intern = Z_DOMOBJ_P(id);
7574

7675
name_valid = xmlValidateName((xmlChar *) name, 0);
7776
if (name_valid != 0) {
@@ -102,7 +101,7 @@ readonly=yes
102101
URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-1112119403
103102
Since:
104103
*/
105-
int dom_attr_name_read(dom_object *obj, zval **retval TSRMLS_DC)
104+
int dom_attr_name_read(dom_object *obj, zval *retval TSRMLS_DC)
106105
{
107106
xmlAttrPtr attrp;
108107

@@ -113,8 +112,7 @@ int dom_attr_name_read(dom_object *obj, zval **retval TSRMLS_DC)
113112
return FAILURE;
114113
}
115114

116-
ALLOC_ZVAL(*retval);
117-
ZVAL_STRING(*retval, (char *) (attrp->name), 1);
115+
ZVAL_STRING(retval, (char *) attrp->name);
118116

119117
return SUCCESS;
120118
}
@@ -126,11 +124,10 @@ readonly=yes
126124
URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-862529273
127125
Since:
128126
*/
129-
int dom_attr_specified_read(dom_object *obj, zval **retval TSRMLS_DC)
127+
int dom_attr_specified_read(dom_object *obj, zval *retval TSRMLS_DC)
130128
{
131129
/* TODO */
132-
ALLOC_ZVAL(*retval);
133-
ZVAL_TRUE(*retval);
130+
ZVAL_TRUE(retval);
134131
return SUCCESS;
135132
}
136133

@@ -141,26 +138,21 @@ readonly=no
141138
URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-221662474
142139
Since:
143140
*/
144-
int dom_attr_value_read(dom_object *obj, zval **retval TSRMLS_DC)
141+
int dom_attr_value_read(dom_object *obj, zval *retval TSRMLS_DC)
145142
{
146-
xmlAttrPtr attrp;
143+
xmlAttrPtr attrp = (xmlAttrPtr) dom_object_get_node(obj);
147144
xmlChar *content;
148145

149-
attrp = (xmlAttrPtr) dom_object_get_node(obj);
150-
151146
if (attrp == NULL) {
152147
php_dom_throw_error(INVALID_STATE_ERR, 0 TSRMLS_CC);
153148
return FAILURE;
154149
}
155150

156-
ALLOC_ZVAL(*retval);
157-
158-
159151
if ((content = xmlNodeGetContent((xmlNodePtr) attrp)) != NULL) {
160-
ZVAL_STRING(*retval, content, 1);
152+
ZVAL_STRING(retval, content);
161153
xmlFree(content);
162154
} else {
163-
ZVAL_EMPTY_STRING(*retval);
155+
ZVAL_EMPTY_STRING(retval);
164156
}
165157

166158
return SUCCESS;
@@ -170,9 +162,7 @@ int dom_attr_value_read(dom_object *obj, zval **retval TSRMLS_DC)
170162
int dom_attr_value_write(dom_object *obj, zval *newval TSRMLS_DC)
171163
{
172164
zval value_copy;
173-
xmlAttrPtr attrp;
174-
175-
attrp = (xmlAttrPtr) dom_object_get_node(obj);
165+
xmlAttrPtr attrp = (xmlAttrPtr) dom_object_get_node(obj);
176166

177167
if (attrp == NULL) {
178168
php_dom_throw_error(INVALID_STATE_ERR, 0 TSRMLS_CC);
@@ -183,12 +173,9 @@ int dom_attr_value_write(dom_object *obj, zval *newval TSRMLS_DC)
183173
node_list_unlink(attrp->children TSRMLS_CC);
184174
}
185175

186-
if (newval->type != IS_STRING) {
187-
if(Z_REFCOUNT_P(newval) > 1) {
188-
value_copy = *newval;
189-
zval_copy_ctor(&value_copy);
190-
newval = &value_copy;
191-
}
176+
if (Z_TYPE_P(newval) != IS_STRING) {
177+
ZVAL_DUP(&value_copy, newval);
178+
newval = &value_copy;
192179
convert_to_string(newval);
193180
}
194181

@@ -208,10 +195,9 @@ readonly=yes
208195
URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Attr-ownerElement
209196
Since: DOM Level 2
210197
*/
211-
int dom_attr_owner_element_read(dom_object *obj, zval **retval TSRMLS_DC)
198+
int dom_attr_owner_element_read(dom_object *obj, zval *retval TSRMLS_DC)
212199
{
213200
xmlNodePtr nodep, nodeparent;
214-
int ret;
215201

216202
nodep = dom_object_get_node(obj);
217203

@@ -220,18 +206,13 @@ int dom_attr_owner_element_read(dom_object *obj, zval **retval TSRMLS_DC)
220206
return FAILURE;
221207
}
222208

223-
ALLOC_ZVAL(*retval);
224-
225209
nodeparent = nodep->parent;
226210
if (!nodeparent) {
227-
ZVAL_NULL(*retval);
211+
ZVAL_NULL(retval);
228212
return SUCCESS;
229213
}
230214

231-
if (NULL == (*retval = php_dom_create_object(nodeparent, &ret, *retval, obj TSRMLS_CC))) {
232-
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Cannot create required DOM object");
233-
return FAILURE;
234-
}
215+
php_dom_create_object(nodeparent, retval, obj TSRMLS_CC);
235216
return SUCCESS;
236217

237218
}
@@ -243,11 +224,10 @@ readonly=yes
243224
URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Attr-schemaTypeInfo
244225
Since: DOM Level 3
245226
*/
246-
int dom_attr_schema_type_info_read(dom_object *obj, zval **retval TSRMLS_DC)
227+
int dom_attr_schema_type_info_read(dom_object *obj, zval *retval TSRMLS_DC)
247228
{
248229
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Not yet implemented");
249-
ALLOC_ZVAL(*retval);
250-
ZVAL_NULL(*retval);
230+
ZVAL_NULL(retval);
251231
return SUCCESS;
252232
}
253233

ext/dom/document.c

Lines changed: 13 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -240,33 +240,24 @@ readonly=yes
240240
URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-B63ED1A31
241241
Since:
242242
*/
243-
int dom_document_doctype_read(dom_object *obj, zval **retval TSRMLS_DC)
243+
int dom_document_doctype_read(dom_object *obj, zval *retval TSRMLS_DC)
244244
{
245-
xmlDoc *docp;
245+
xmlDoc *docp = (xmlDocPtr) dom_object_get_node(obj);
246246
xmlDtdPtr dtdptr;
247-
int ret;
248-
249-
docp = (xmlDocPtr) dom_object_get_node(obj);
250247

251248
if (docp == NULL) {
252249
php_dom_throw_error(INVALID_STATE_ERR, 0 TSRMLS_CC);
253250
return FAILURE;
254251
}
255252

256-
ALLOC_ZVAL(*retval);
257-
258253
dtdptr = xmlGetIntSubset(docp);
259254
if (!dtdptr) {
260-
ZVAL_NULL(*retval);
255+
ZVAL_NULL(retval);
261256
return SUCCESS;
262257
}
263258

264-
if (NULL == (*retval = php_dom_create_object((xmlNodePtr) dtdptr, &ret, *retval, obj TSRMLS_CC))) {
265-
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Cannot create required DOM object");
266-
return FAILURE;
267-
}
259+
php_dom_create_object((xmlNodePtr) dtdptr, retval, obj TSRMLS_CC);
268260
return SUCCESS;
269-
270261
}
271262

272263
/* }}} */
@@ -276,9 +267,8 @@ readonly=yes
276267
URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1B793EBA
277268
Since:
278269
*/
279-
int dom_document_implementation_read(dom_object *obj, zval **retval TSRMLS_DC)
270+
int dom_document_implementation_read(dom_object *obj, zval *retval TSRMLS_DC)
280271
{
281-
ALLOC_ZVAL(*retval);
282272
php_dom_create_implementation(retval TSRMLS_CC);
283273
return SUCCESS;
284274
}
@@ -292,29 +282,21 @@ URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-
292282
*/
293283
int dom_document_document_element_read(dom_object *obj, zval **retval TSRMLS_DC)
294284
{
295-
xmlDoc *docp;
285+
xmlDoc *docp = (xmlDocPtr) dom_object_get_node(obj);
296286
xmlNode *root;
297-
int ret;
298-
299-
docp = (xmlDocPtr) dom_object_get_node(obj);
300287

301288
if (docp == NULL) {
302289
php_dom_throw_error(INVALID_STATE_ERR, 0 TSRMLS_CC);
303290
return FAILURE;
304291
}
305292

306-
ALLOC_ZVAL(*retval);
307-
308293
root = xmlDocGetRootElement(docp);
309294
if (!root) {
310-
ZVAL_NULL(*retval);
295+
ZVAL_NULL(retval);
311296
return SUCCESS;
312297
}
313298

314-
if (NULL == (*retval = php_dom_create_object(root, &ret, *retval, obj TSRMLS_CC))) {
315-
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Cannot create required DOM object");
316-
return FAILURE;
317-
}
299+
php_dom_create_object(root, retval, obj TSRMLS_CC);
318300
return SUCCESS;
319301
}
320302

@@ -326,41 +308,37 @@ Since: DOM Level 3
326308
*/
327309
int dom_document_encoding_read(dom_object *obj, zval **retval TSRMLS_DC)
328310
{
329-
xmlDoc *docp;
311+
xmlDoc *docp = (xmlDocPtr) dom_object_get_node(obj);
330312
char *encoding;
331313

332-
docp = (xmlDocPtr) dom_object_get_node(obj);
333-
334314
if (docp == NULL) {
335315
php_dom_throw_error(INVALID_STATE_ERR, 0 TSRMLS_CC);
336316
return FAILURE;
337317
}
338318

339319
encoding = (char *) docp->encoding;
340-
ALLOC_ZVAL(*retval);
341320

342321
if (encoding != NULL) {
343-
ZVAL_STRING(*retval, encoding, 1);
322+
ZVAL_STRING(retval, encoding);
344323
} else {
345-
ZVAL_NULL(*retval);
324+
ZVAL_NULL(retval);
346325
}
347326

348327
return SUCCESS;
349328
}
350329

351330
int dom_document_encoding_write(dom_object *obj, zval *newval TSRMLS_DC)
352331
{
332+
xmlDoc *docp = (xmlDocPtr) dom_object_get_node(obj);
353333
zval value_copy;
354-
xmlDoc *docp;
355334
xmlCharEncodingHandlerPtr handler;
356335

357-
docp = (xmlDocPtr) dom_object_get_node(obj);
358-
359336
if (docp == NULL) {
360337
php_dom_throw_error(INVALID_STATE_ERR, 0 TSRMLS_CC);
361338
return FAILURE;
362339
}
363340

341+
// TODO: Stopped here
364342
if (newval->type != IS_STRING) {
365343
if(Z_REFCOUNT_P(newval) > 1) {
366344
value_copy = *newval;

0 commit comments

Comments
 (0)