}
/* }}} */
-/* {{{ proto int SplPriorityQueue::setIteratorMode($flags) U
+/* {{{ proto int SplPriorityQueue::setExtractFlags($flags) U
Set the flags of extraction*/
SPL_METHOD(SplPriorityQueue, setExtractFlags)
{
RETURN_LONG(intern->flags);
}
/* }}} */
+/* {{{ proto int SplPriorityQueue::getExtractFlags($flags) U
+ Set the flags of extraction*/
+SPL_METHOD(SplPriorityQueue, getExtractFlags)
+{
+ long value;
+ spl_heap_object *intern;
+
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "") == FAILURE) {
+ return;
+ }
+
+ intern = (spl_heap_object*)zend_object_store_get_object(getThis() TSRMLS_CC);
+
+ RETURN_LONG(intern->flags & SPL_PQUEUE_EXTR_MASK;);
+}
+/* }}} */
/* {{{ proto int SplHeap::recoverFromCorruption() U
Recover from a corrupted state*/
SPL_ME(SplPriorityQueue, compare, arginfo_heap_compare, ZEND_ACC_PUBLIC)
SPL_ME(SplPriorityQueue, insert, arginfo_pqueue_insert, ZEND_ACC_PUBLIC)
SPL_ME(SplPriorityQueue, setExtractFlags, arginfo_pqueue_setflags, ZEND_ACC_PUBLIC)
+ SPL_ME(SplPriorityQueue, getExtractFlags, NULL, ZEND_ACC_PUBLIC)
SPL_ME(SplPriorityQueue, top, NULL, ZEND_ACC_PUBLIC)
SPL_ME(SplPriorityQueue, extract, NULL, ZEND_ACC_PUBLIC)
SPL_ME(SplHeap, count, NULL, ZEND_ACC_PUBLIC)
--FILE--
<?php
$pq = new SplPriorityQueue();
+echo $pq->getExtractFlags()."\n";
// errors
try {
$pq1 = new SplPriorityQueue();
$pq1->setExtractFlags(SplPriorityQueue::EXTR_BOTH);
+echo $pq1->getExtractFlags()."\n";
$pq1->insert("a", 1);
$pq1->insert("b", 2);
$pq2 = new SplPriorityQueue();
$pq2->setExtractFlags(SplPriorityQueue::EXTR_DATA);
+echo $pq2->getExtractFlags()."\n";
$pq2->insert("a", 1);
$pq2->insert("b", 2);
$pq3 = new SplPriorityQueue();
$pq3->setExtractFlags(SplPriorityQueue::EXTR_PRIORITY);
+echo $pq3->getExtractFlags()."\n";
$pq3->insert("a", 1);
$pq3->insert("b", 2);
===DONE===
<?php exit(0); ?>
--EXPECTF--
+1
Exception: Can't extract from an empty heap
3=>b
2=>a
1=>c
EXTR_BOTH
+3
3=>Array
(
[data] => b
)
EXTR_DATA
+1
3=>b
2=>a
1=>c
EXTR_PRIORITY
+2
3=>2
2=>1
1=>0