]> granicus.if.org Git - php/commitdiff
Implement SplPriorityQueue::getExtractFlags()
authorEtienne Kneuss <colder@php.net>
Thu, 15 May 2008 17:05:20 +0000 (17:05 +0000)
committerEtienne Kneuss <colder@php.net>
Thu, 15 May 2008 17:05:20 +0000 (17:05 +0000)
ext/spl/spl_heap.c
ext/spl/tests/pqueue_001.phpt

index 862bc11422d9f6acf056bc0561c0aad48511a259..b6551a33cb9d430143624cd2bd4349af91060ae3 100644 (file)
@@ -737,7 +737,7 @@ SPL_METHOD(SplPriorityQueue, top)
 }
 /* }}} */
 
-/* {{{ proto int SplPriorityQueue::setIteratorMode($flags) U
+/* {{{ proto int SplPriorityQueue::setExtractFlags($flags) U
  Set the flags of extraction*/
 SPL_METHOD(SplPriorityQueue, setExtractFlags)
 {
@@ -755,6 +755,22 @@ 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*/
@@ -1119,6 +1135,7 @@ static const zend_function_entry spl_funcs_SplPriorityQueue[] = {
        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)
index 8dae2ef51009b572f4334c54e8a9b43a05844cd5..13841324123258fa2eb6cc3ad219e6b32535442a 100644 (file)
@@ -5,6 +5,7 @@ SPL: SplPriorityQueue: std operations and extract flags
 --FILE--
 <?php
 $pq = new SplPriorityQueue();
+echo $pq->getExtractFlags()."\n";
 
 // errors
 try {
@@ -25,6 +26,7 @@ echo "EXTR_BOTH\n";
 
 $pq1 = new SplPriorityQueue();
 $pq1->setExtractFlags(SplPriorityQueue::EXTR_BOTH);
+echo $pq1->getExtractFlags()."\n";
 
 $pq1->insert("a", 1);
 $pq1->insert("b", 2);
@@ -38,6 +40,7 @@ echo "EXTR_DATA\n";
 
 $pq2 = new SplPriorityQueue();
 $pq2->setExtractFlags(SplPriorityQueue::EXTR_DATA);
+echo $pq2->getExtractFlags()."\n";
 
 $pq2->insert("a", 1);
 $pq2->insert("b", 2);
@@ -51,6 +54,7 @@ echo "EXTR_PRIORITY\n";
 
 $pq3 = new SplPriorityQueue();
 $pq3->setExtractFlags(SplPriorityQueue::EXTR_PRIORITY);
+echo $pq3->getExtractFlags()."\n";
 
 $pq3->insert("a", 1);
 $pq3->insert("b", 2);
@@ -64,11 +68,13 @@ foreach ($pq3 as $k=>$v) {
 ===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
@@ -88,10 +94,12 @@ EXTR_BOTH
 )
 
 EXTR_DATA
+1
 3=>b
 2=>a
 1=>c
 EXTR_PRIORITY
+2
 3=>2
 2=>1
 1=>0