X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=php5-swig%2Fxml-template.swig;h=8a915ff4b8a7922459c813aaf2ff59fffb92982c;hb=351f3f4798d8b51c461489c2e716f7ba7ed855d1;hp=5a560cee6883bf4bce903964fe653ee2755a71c5;hpb=0ccbc5e506ee3ed6bcc77bc4d6cdbde9791e8ad5;p=xml-template diff --git a/php5-swig/xml-template.swig b/php5-swig/xml-template.swig index 5a560ce..8a915ff 100644 --- a/php5-swig/xml-template.swig +++ b/php5-swig/xml-template.swig @@ -10,9 +10,7 @@ bool is_associative_array(HashTable *ht) return true; } for (unsigned i = 0; i < ht->nNumOfElements; ++i) { - char buf[32]; - sprintf(buf, "%u", i); - if (!zend_hash_exists(ht, buf, strlen(buf))) { + if (!zend_hash_index_exists(ht, i)) { return true; } } @@ -46,7 +44,13 @@ Directive* convert_php_objects_to_directive(zval *obj) } return new Substitute(my_map); } else { - printf("ARRAY\n"); + std::vector subdirectives; + for (unsigned i = 0; i < ht->nNumOfElements; ++i) { + zval **data; + zend_hash_index_find(ht, i, (void **)&data); + subdirectives.push_back(convert_php_objects_to_directive(*data)); + } + return new Clone(subdirectives); } break; } @@ -54,6 +58,8 @@ Directive* convert_php_objects_to_directive(zval *obj) char *str = Z_STRVAL_P(obj); return new Replace(str); } + case IS_NULL: + return NULL; default: printf("WARNING: Unknown type %d!\n", Z_TYPE_P(obj)); break;