helly           Mon Aug  4 19:00:58 2003 EDT

  Modified files:              
    /spl        spl.php spl_array.c spl_functions.h 
  Log:
  Update documentation in source, reflection and docu itself
  
Index: spl/spl.php
diff -u spl/spl.php:1.6 spl/spl.php:1.7
--- spl/spl.php:1.6     Sun Jul 20 08:30:05 2003
+++ spl/spl.php Mon Aug  4 19:00:57 2003
@@ -11,13 +11,16 @@
  * the input parameter to foreach() calls which would normally be an 
  * array.
  *
- * The only thing a class has to do is 
+ * The class must implement the function new_iterator which must return 
+ * an object which implements the interface spl_forward.
+ *
+ * \see spl_forward, spl_sequence, spl_forward_assoc, spl_sequence_assoc
  */
 interface spl_iterator {
        
        /*! \brief Create a new iterator
         *
-        * used for example in foreach() operator.
+        * \return an object that implements the interface spl_forward.
         */
        function new_iterator();
 }
@@ -217,7 +220,7 @@
 
 /*! \brief array read/write access for objects.
  *
- * The following example shows how to use an array_writer:
+ * The following example shows how to use interface array_access:
  * \code 
        class array_emulation implemets spl_array_access {
                private $ar = array();
@@ -230,6 +233,9 @@
                function set($index, $value) {
                        $this->ar[$index] = $value;
                }
+               function del($index) {
+                       unset($this->ar[$index]);
+               }
        }
    \endcode
  */
@@ -237,7 +243,68 @@
 
        /*! Set the value identified by $index to $value.
         */
-       function set($value, $index);
+       function set($index, $value);
+
+       /*! Delete (unset) the value identified by $index.
+        */
+       function del($index);
+}
+
+/*! \brief An array wrapper
+ *
+ * This array wrapper allows to recursively iterate over Arrays and Objects.
+ *
+ * \see spl_array_it
+ */
+class spl_array implements spl_iterator {
+
+       /*! Construct a new array iterator from anything that has a hash table.
+        * That is any Array or Object.
+        *
+        * \param $array the array to use.
+        */
+       function __construct($array);
+
+       /*! \copydoc spl_iterator::new_iterator
+        */
+       function new_iterator();
+}
+
+/*! \brief An array iterator
+ *
+ * This iterator allows to unset and modify values and keys while iterating
+ * over Arrays and Objects.
+ *
+ * To use this class you must instanciate spl_array.
+ */
+class spl_array_it implements spl_sequence_assoc {
+
+       /*! Construct a new array iterator from anything that has a hash table.
+        * That is any Array or Object.
+        *
+        * \param $array the array to use.
+        */
+       private function __construct($array)
+
+       /*! \copydoc spl_sequence::rewind
+        */
+       function rewind()
+
+       /*! \copydoc spl_forward::current
+        */
+       function current()
+
+       /*! \copydoc spl_assoc::key
+        */
+       function key()
+
+       /*! \copydoc spl_forward::next
+        */
+       function next()
+
+       /*! \copydoc spl_forward::has_more
+        */
+       function has_more()
 }
 
 ?>
Index: spl/spl_array.c
diff -u spl/spl_array.c:1.14 spl/spl_array.c:1.15
--- spl/spl_array.c:1.14        Mon Aug  4 17:56:05 2003
+++ spl/spl_array.c     Mon Aug  4 19:00:57 2003
@@ -308,19 +308,24 @@
 SPL_CLASS_FUNCTION(array, next);
 SPL_CLASS_FUNCTION(array, has_more);
 
+static
+ZEND_BEGIN_ARG_INFO(arginfo_array___construct, 0)
+       ZEND_ARG_INFO(0, array)
+ZEND_END_ARG_INFO();
+
 static zend_function_entry spl_array_class_functions[] = {
-       SPL_CLASS_FE(array, __construct,   NULL)
-       SPL_CLASS_FE(array, new_iterator,  NULL)
+       SPL_CLASS_FE(array, __construct,   arginfo_array___construct, ZEND_ACC_PUBLIC)
+       SPL_CLASS_FE(array, new_iterator,  NULL, ZEND_ACC_PUBLIC)
        {NULL, NULL, NULL}
 };
 
 static zend_function_entry spl_array_it_class_functions[] = {
-       SPL_CLASS_FE(array, __construct,   NULL)
-       SPL_CLASS_FE(array, rewind,        NULL)
-       SPL_CLASS_FE(array, current,       NULL)
-       SPL_CLASS_FE(array, key,           NULL)
-       SPL_CLASS_FE(array, next,          NULL)
-       SPL_CLASS_FE(array, has_more,      NULL)
+       SPL_CLASS_FE(array, __construct,   arginfo_array___construct, ZEND_ACC_PRIVATE)
+       SPL_CLASS_FE(array, rewind,        NULL, ZEND_ACC_PUBLIC)
+       SPL_CLASS_FE(array, current,       NULL, ZEND_ACC_PUBLIC)
+       SPL_CLASS_FE(array, key,           NULL, ZEND_ACC_PUBLIC)
+       SPL_CLASS_FE(array, next,          NULL, ZEND_ACC_PUBLIC)
+       SPL_CLASS_FE(array, has_more,      NULL, ZEND_ACC_PUBLIC)
        {NULL, NULL, NULL}
 };
 
@@ -558,8 +563,8 @@
 }
 /* }}} */
 
-/* {{{ proto void spl_array::__construct(array ar = array())
-       proto void spl_array_it::__construct(array ar = array())
+/* {{{ proto void spl_array::__construct(array|object ar = array())
+       proto void spl_array_it::__construct(array|object ar = array())
  Cronstructs a new array iterator from a path. */
 SPL_CLASS_FUNCTION(array, __construct)
 {
Index: spl/spl_functions.h
diff -u spl/spl_functions.h:1.7 spl/spl_functions.h:1.8
--- spl/spl_functions.h:1.7     Sun Aug  3 18:29:20 2003
+++ spl/spl_functions.h Mon Aug  4 19:00:57 2003
@@ -59,8 +59,8 @@
 void spl_add_interfaces(zval * list, zend_class_entry * pce TSRMLS_DC);
 int spl_add_classes(zend_class_entry ** ppce, zval *list TSRMLS_DC);
 
-#define SPL_CLASS_FE(class_name, function_name, arg_types) \
-       PHP_NAMED_FE( function_name, spl_ ## class_name ## _ ## function_name, 
arg_types)
+#define SPL_CLASS_FE(class_name, function_name, arg_info, flags) \
+       { #function_name, spl_ ## class_name ## _ ## function_name, arg_info, 
sizeof(arg_info)/sizeof(struct _zend_arg_info)-1, flags },
 
 #define SPL_CLASS_FUNCTION(class_name, function_name) \
        PHP_NAMED_FUNCTION(spl_ ## class_name ## _ ## function_name)



-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to