| | 336 | { |
| | 337 | HashTable *tbl = Z_ARRVAL_P(data); |
| | 338 | |
| | 339 | if (zend_hash_index_exists(tbl, 0)) { |
| | 340 | /* indexed array */ |
| | 341 | syck_emit_seq(e, "table", seq_none); |
| | 342 | |
| | 343 | for (zend_hash_internal_pointer_reset(tbl); zend_hash_has_more_elements(tbl) == SUCCESS; zend_hash_move_forward(tbl)) { |
| | 344 | zval **ppzval; |
| | 345 | |
| | 346 | zend_hash_get_current_data(tbl, (void **)&ppzval); |
| | 347 | if (psex_push_obj(bonus, *ppzval)) { |
| | 348 | syck_emit_item(e, bonus->level); |
| | 349 | psex_pop_obj(bonus); |
| | 350 | } |
| | 351 | } |
| | 352 | |
| | 353 | syck_emit_end(e); |
| | 354 | } else { |
| | 355 | /* associative array */ |
| | 356 | syck_emit_map(e, "table", map_none); |
| | 357 | |
| | 358 | for (zend_hash_internal_pointer_reset(tbl); zend_hash_has_more_elements(tbl) == SUCCESS; zend_hash_move_forward(tbl)) { |
| | 359 | zval **ppzval, *kzval; |
| | 360 | char *key; |
| | 361 | size_t key_len, idx; |
| | 362 | |
| | 363 | zend_hash_get_current_key_ex(tbl, (char **)&key, (uint *)&key_len, &idx, 0, NULL); |
| | 364 | zend_hash_get_current_data(tbl, (void **)&ppzval); |
| | 365 | |
| | 366 | ZVAL_STRINGL(kzval, key, key_len - 1, 0); |
| | 367 | if (psex_push_obj(bonus, kzval)) { |
| | 368 | syck_emit_item(e, bonus->level); |
| | 369 | psex_pop_obj(bonus); |
| | 370 | |
| | 371 | if (psex_push_obj(bonus, *ppzval)) { |
| | 372 | syck_emit_item(e, bonus->level); |
| | 373 | psex_pop_obj(bonus); |
| | 374 | } |
| | 375 | } |
| | 376 | |
| | 377 | } |
| | 378 | |
| | 379 | syck_emit_end(e); |
| | 380 | } |
| | 381 | } |