helly Fri Jan 19 10:19:51 2007 UTC Modified files: /php-src unicode-progress.txt /php-src/ext/spl spl_directory.c spl_iterators.c Log: - Update unicode progress on SPL, looks like nearly done, actually all is unicode safe by now but a few things need to be added and a few problems be clarified. # I wonder why my keyboard has space issues...it should be out of Us by now
http://cvs.php.net/viewvc.cgi/php-src/unicode-progress.txt?r1=1.72&r2=1.73&diff_format=u Index: php-src/unicode-progress.txt diff -u php-src/unicode-progress.txt:1.72 php-src/unicode-progress.txt:1.73 --- php-src/unicode-progress.txt:1.72 Fri Dec 22 21:38:12 2006 +++ php-src/unicode-progress.txt Fri Jan 19 10:19:50 2007 @@ -42,6 +42,18 @@ Status: In Progress (Pierre) +ext/spl +------------ + Status: In progress + zend_filehandle needs to operate on zstr. Once we have that we can finalize + the internal c-function spl_autoload(). + + RegExIterator might need to deal with regex provided in unicode. + + SplFileObject needs toeithe deal withunicode files or a derived class must + be created for that. Either way streams cannot deal with unicode line + endings. + ext/zip ------------ Status: done. @@ -620,6 +632,77 @@ ucfirst() ucwords() +ext/spl +----------- + Completed: + php_spl.c + class_implements() + class_parents() + spl_autoload() + spl_autoload_call() + spl_autoload_extensions() + spl_autoload_functions() + spl_autoload_register() + spl_autoload_unregister() + spl_classes() + spl_object_hash() + + spl_array.c + class ArrayObject + class ArrayIterator + class RecursiveArrayIterator + + spl_directory.c + class SplFileInfo + class DirectoryIterator + class RecursiveDirectoryIterator + class SplFileObject + class SplTempFileObject + + spl_exceptions.c + class BadFunctionCallException + class BadMethodCallException + class DomainException + class InvalidArgumentException + class LengthException + class LogicException + class OutOfBoundsException + class OutOfRangeException + class OverflowException + class RangeException + class RuntimeException + class UnderflowException + class UnexpectedValueException + + spl_iterators.c + iterator_to_array() + iterator_count() + iterator_apply() + class RecursiveIteratorIterator + class AppendIterator + class ArrayIterator + class ArrayObject + class CachingIterator + class DirectoryIterator + class EmptyIterator + class FilterIterator + class InfiniteIterator + class IteratorIterator + class LimitIterator + class NoRewindIterator + class ParentIterator + class RecursiveCachingIterator + class RecursiveFilterIterator + class RecursiveIteratorIterator + class RecursiveRegexIterator + class RegexIterator + + spl_observer.c + class SplObjectStorage + + spl_sxe.c + class SimpleXMLIteraotr + ext/sysvmsg ----------- Completed: http://cvs.php.net/viewvc.cgi/php-src/ext/spl/spl_directory.c?r1=1.115&r2=1.116&diff_format=u Index: php-src/ext/spl/spl_directory.c diff -u php-src/ext/spl/spl_directory.c:1.115 php-src/ext/spl/spl_directory.c:1.116 --- php-src/ext/spl/spl_directory.c:1.115 Fri Jan 19 00:36:11 2007 +++ php-src/ext/spl/spl_directory.c Fri Jan 19 10:19:50 2007 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: spl_directory.c,v 1.115 2007/01/19 00:36:11 helly Exp $ */ +/* $Id: spl_directory.c,v 1.116 2007/01/19 10:19:50 helly Exp $ */ #ifdef HAVE_CONFIG_H # include "config.h" @@ -456,7 +456,7 @@ return NULL; } /* }}} */ -/* {{{ proto void DirectoryIterator::__construct(string path) +/* {{{ proto void DirectoryIterator::__construct(string path) U Cronstructs a new dir iterator from a path. */ SPL_METHOD(DirectoryIterator, __construct) { @@ -489,7 +489,7 @@ } /* }}} */ -/* {{{ proto void DirectoryIterator::rewind() +/* {{{ proto void DirectoryIterator::rewind() U Rewind dir back to the start */ SPL_METHOD(DirectoryIterator, rewind) { @@ -505,7 +505,7 @@ } /* }}} */ -/* {{{ proto string DirectoryIterator::key() +/* {{{ proto string DirectoryIterator::key() U Return current dir entry */ SPL_METHOD(DirectoryIterator, key) { @@ -519,7 +519,7 @@ } /* }}} */ -/* {{{ proto DirectoryIterator DirectoryIterator::current() +/* {{{ proto DirectoryIterator DirectoryIterator::current() U Return this (needed for Iterator interface) */ SPL_METHOD(DirectoryIterator, current) { @@ -527,7 +527,7 @@ } /* }}} */ -/* {{{ proto void DirectoryIterator::next() +/* {{{ proto void DirectoryIterator::next() U Move to next entry */ SPL_METHOD(DirectoryIterator, next) { @@ -544,7 +544,7 @@ } /* }}} */ -/* {{{ proto string DirectoryIterator::valid() +/* {{{ proto string DirectoryIterator::valid() U Check whether dir contains more entries */ SPL_METHOD(DirectoryIterator, valid) { @@ -554,7 +554,7 @@ } /* }}} */ -/* {{{ proto string SplFileInfo::getPath() +/* {{{ proto string SplFileInfo::getPath() U Return the path */ SPL_METHOD(SplFileInfo, getPath) { @@ -564,7 +564,7 @@ } /* }}} */ -/* {{{ proto string SplFileInfo::getFilename() +/* {{{ proto string SplFileInfo::getFilename() U Return filename only */ SPL_METHOD(SplFileInfo, getFilename) { @@ -584,7 +584,7 @@ } /* }}} */ -/* {{{ proto string DirectoryIterator::getFilename() +/* {{{ proto string DirectoryIterator::getFilename() U Return filename of current dir entry */ SPL_METHOD(DirectoryIterator, getFilename) { @@ -594,7 +594,7 @@ } /* }}} */ -/* {{{ proto string SplFileInfo::getPathname() +/* {{{ proto string SplFileInfo::getPathname() U Return path and filename */ SPL_METHOD(SplFileInfo, getPathname) { @@ -614,7 +614,7 @@ } /* }}} */ -/* {{{ proto string RecursiveDirectoryIterator::key() +/* {{{ proto string RecursiveDirectoryIterator::key() U Return getPathname() or getFilename() depending on flags */ SPL_METHOD(RecursiveDirectoryIterator, key) { @@ -629,7 +629,7 @@ } /* }}} */ -/* {{{ proto string RecursiveDirectoryIterator::current() +/* {{{ proto string RecursiveDirectoryIterator::current() U Return getFilename(), getFileInfo() or $this depending on flags */ SPL_METHOD(RecursiveDirectoryIterator, current) { @@ -648,7 +648,7 @@ } /* }}} */ -/* {{{ proto bool DirectoryIterator::isDot() +/* {{{ proto bool DirectoryIterator::isDot() U Returns true if current entry is '.' or '..' */ SPL_METHOD(DirectoryIterator, isDot) { @@ -658,7 +658,7 @@ } /* }}} */ -/* {{{ proto void SplFileInfo::__construct(string file_name) +/* {{{ proto void SplFileInfo::__construct(string file_name) U Cronstructs a new SplFileInfo from a path. */ /* php_set_error_handling() is used to throw exceptions in case the constructor fails. Here we use this to ensure the object @@ -702,82 +702,82 @@ } /* }}} */ -/* {{{ proto int SplFileInfo::getPerms() +/* {{{ proto int SplFileInfo::getPerms() U Get file permissions */ FileInfoFunction(getPerms, FS_PERMS) /* }}} */ -/* {{{ proto int SplFileInfo::getInode() +/* {{{ proto int SplFileInfo::getInode() U Get file inode */ FileInfoFunction(getInode, FS_INODE) /* }}} */ -/* {{{ proto int SplFileInfo::getSize() +/* {{{ proto int SplFileInfo::getSize() U Get file size */ FileInfoFunction(getSize, FS_SIZE) /* }}} */ -/* {{{ proto int SplFileInfo::getOwner() +/* {{{ proto int SplFileInfo::getOwner() U Get file owner */ FileInfoFunction(getOwner, FS_OWNER) /* }}} */ -/* {{{ proto int SplFileInfo::getGroup() +/* {{{ proto int SplFileInfo::getGroup() U Get file group */ FileInfoFunction(getGroup, FS_GROUP) /* }}} */ -/* {{{ proto int SplFileInfo::getATime() +/* {{{ proto int SplFileInfo::getATime() U Get last access time of file */ FileInfoFunction(getATime, FS_ATIME) /* }}} */ -/* {{{ proto int SplFileInfo::getMTime() +/* {{{ proto int SplFileInfo::getMTime() U Get last modification time of file */ FileInfoFunction(getMTime, FS_MTIME) /* }}} */ -/* {{{ proto int SplFileInfo::getCTime() +/* {{{ proto int SplFileInfo::getCTime() U Get inode modification time of file */ FileInfoFunction(getCTime, FS_CTIME) /* }}} */ -/* {{{ proto string SplFileInfo::getType() +/* {{{ proto string SplFileInfo::getType() U Get file type */ FileInfoFunction(getType, FS_TYPE) /* }}} */ -/* {{{ proto bool SplFileInfo::isWritable() +/* {{{ proto bool SplFileInfo::isWritable() U Returns true if file can be written */ FileInfoFunction(isWritable, FS_IS_W) /* }}} */ -/* {{{ proto bool SplFileInfo::isReadable() +/* {{{ proto bool SplFileInfo::isReadable() U Returns true if file can be read */ FileInfoFunction(isReadable, FS_IS_R) /* }}} */ -/* {{{ proto bool SplFileInfo::isExecutable() +/* {{{ proto bool SplFileInfo::isExecutable() U Returns true if file is executable */ FileInfoFunction(isExecutable, FS_IS_X) /* }}} */ -/* {{{ proto bool SplFileInfo::isFile() +/* {{{ proto bool SplFileInfo::isFile() U Returns true if file is a regular file */ FileInfoFunction(isFile, FS_IS_FILE) /* }}} */ -/* {{{ proto bool SplFileInfo::isDir() +/* {{{ proto bool SplFileInfo::isDir() U Returns true if file is directory */ FileInfoFunction(isDir, FS_IS_DIR) /* }}} */ -/* {{{ proto bool SplFileInfo::isLink() +/* {{{ proto bool SplFileInfo::isLink() U Returns true if file is symbolic link */ FileInfoFunction(isLink, FS_IS_LINK) /* }}} */ -/* {{{ proto SplFileObject SplFileInfo::openFile([string mode = 'r' [, bool use_include_path [, resource context]]]) +/* {{{ proto SplFileObject SplFileInfo::openFile([string mode = 'r' [, bool use_include_path [, resource context]]]) U Open the current file */ SPL_METHOD(SplFileInfo, openFile) { @@ -787,7 +787,7 @@ } /* }}} */ -/* {{{ proto void SplFileInfo::setFileClass([string class_name]) +/* {{{ proto void SplFileInfo::setFileClass([string class_name]) U Class to use in openFile() */ SPL_METHOD(SplFileInfo, setFileClass) { @@ -804,7 +804,7 @@ } /* }}} */ -/* {{{ proto void SplFileInfo::setInfoClass([string class_name]) +/* {{{ proto void SplFileInfo::setInfoClass([string class_name]) U Class to use in getFileInfo(), getPathInfo() */ SPL_METHOD(SplFileInfo, setInfoClass) { @@ -821,7 +821,7 @@ } /* }}} */ -/* {{{ proto SplFileInfo SplFileInfo::getFileInfo([string $class_name]) +/* {{{ proto SplFileInfo SplFileInfo::getFileInfo([string $class_name]) U Get/copy file info */ SPL_METHOD(SplFileInfo, getFileInfo) { @@ -838,7 +838,7 @@ } /* }}} */ -/* {{{ proto SplFileInfo SplFileInfo::getPathInfo([string $class_name]) +/* {{{ proto SplFileInfo SplFileInfo::getPathInfo([string $class_name]) U Get/copy file info */ SPL_METHOD(SplFileInfo, getPathInfo) { @@ -855,7 +855,7 @@ } /* }}} */ -/* {{{ proto void RecursiveDirectoryIterator::__construct(string path [, int flags]) +/* {{{ proto void RecursiveDirectoryIterator::__construct(string path [, int flags]) U Cronstructs a new dir iterator from a path. */ SPL_METHOD(RecursiveDirectoryIterator, __construct) { @@ -881,7 +881,7 @@ } /* }}} */ -/* {{{ proto void RecursiveDirectoryIterator::rewind() +/* {{{ proto void RecursiveDirectoryIterator::rewind() U Rewind dir back to the start */ SPL_METHOD(RecursiveDirectoryIterator, rewind) { @@ -899,7 +899,7 @@ } /* }}} */ -/* {{{ proto void RecursiveDirectoryIterator::next() +/* {{{ proto void RecursiveDirectoryIterator::next() U Move to next entry */ SPL_METHOD(RecursiveDirectoryIterator, next) { @@ -918,7 +918,7 @@ } /* }}} */ -/* {{{ proto bool RecursiveDirectoryIterator::hasChildren([bool $allow_links = false]) +/* {{{ proto bool RecursiveDirectoryIterator::hasChildren([bool $allow_links = false]) U Returns whether current entry is a directory and not '.' or '..' */ SPL_METHOD(RecursiveDirectoryIterator, hasChildren) { @@ -943,7 +943,7 @@ } /* }}} */ -/* {{{ proto RecursiveDirectoryIterator DirectoryIterator::getChildren() +/* {{{ proto RecursiveDirectoryIterator DirectoryIterator::getChildren() U Returns an iterator for the current entry if it is a directory */ SPL_METHOD(RecursiveDirectoryIterator, getChildren) { @@ -976,7 +976,7 @@ } /* }}} */ -/* {{{ proto void RecursiveDirectoryIterator::getSubPath() +/* {{{ proto void RecursiveDirectoryIterator::getSubPath() U Get sub path */ SPL_METHOD(RecursiveDirectoryIterator, getSubPath) { @@ -990,7 +990,7 @@ } /* }}} */ -/* {{{ proto void RecursiveDirectoryIterator::getSubPathname() +/* {{{ proto void RecursiveDirectoryIterator::getSubPathname() U Get sub path and file name */ SPL_METHOD(RecursiveDirectoryIterator, getSubPathname) { @@ -1601,7 +1601,7 @@ } } /* }}} */ -/* {{{ proto void SplFileObject::__construct(string filename [, string mode = 'r' [, bool use_include_path [, resource context]]]]) +/* {{{ proto void SplFileObject::__construct(string filename [, string mode = 'r' [, bool use_include_path [, resource context]]]]) U Construct a new file object */ SPL_METHOD(SplFileObject, __construct) { @@ -1653,7 +1653,7 @@ php_set_error_handling(EH_NORMAL, NULL TSRMLS_CC); } /* }}} */ -/* {{{ proto void SplTempFileObject::__construct([int max_memory]) +/* {{{ proto void SplTempFileObject::__construct([int max_memory]) U Construct a new temp file object */ SPL_METHOD(SplTempFileObject, __construct) { @@ -1694,7 +1694,7 @@ php_set_error_handling(EH_NORMAL, NULL TSRMLS_CC); } /* }}} */ -/* {{{ proto void SplFileObject::rewind() +/* {{{ proto void SplFileObject::rewind() U Rewind the file and read the first line */ SPL_METHOD(SplFileObject, rewind) { @@ -1703,7 +1703,7 @@ spl_filesystem_file_rewind(getThis(), intern TSRMLS_CC); } /* }}} */ -/* {{{ proto void SplFileObject::eof() +/* {{{ proto void SplFileObject::eof() U Return whether end of file is reached */ SPL_METHOD(SplFileObject, eof) { @@ -1712,7 +1712,7 @@ RETURN_BOOL(php_stream_eof(intern->u.file.stream)); } /* }}} */ -/* {{{ proto void SplFileObject::valid() +/* {{{ proto void SplFileObject::valid() U Return !eof() */ SPL_METHOD(SplFileObject, valid) { @@ -1725,7 +1725,7 @@ } } /* }}} */ -/* {{{ proto string SplFileObject::fgets() +/* {{{ proto string SplFileObject::fgets() U Rturn next line from file */ SPL_METHOD(SplFileObject, fgets) { @@ -1737,7 +1737,7 @@ RETURN_STRINGL(intern->u.file.current_line, intern->u.file.current_line_len, 1); } /* }}} */ -/* {{{ proto string SplFileObject::current() +/* {{{ proto string SplFileObject::current() U Return current line from file */ SPL_METHOD(SplFileObject, current) { @@ -1754,7 +1754,7 @@ RETURN_FALSE; } /* }}} */ -/* {{{ proto int SplFileObject::key() +/* {{{ proto int SplFileObject::key() U Return line number */ SPL_METHOD(SplFileObject, key) { @@ -1767,7 +1767,7 @@ RETURN_LONG(intern->u.file.current_line_num); } /* }}} */ -/* {{{ proto void SplFileObject::next() +/* {{{ proto void SplFileObject::next() U Read next line */ SPL_METHOD(SplFileObject, next) { @@ -1780,7 +1780,7 @@ intern->u.file.current_line_num++; } /* }}} */ -/* {{{ proto void SplFileObject::setFlags(int flags) +/* {{{ proto void SplFileObject::setFlags(int flags) U Set file handling flags */ SPL_METHOD(SplFileObject, setFlags) { @@ -1789,7 +1789,7 @@ zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &intern->flags); } /* }}} */ -/* {{{ proto int SplFileObject::getFlags() +/* {{{ proto int SplFileObject::getFlags() U Get file handling flags */ SPL_METHOD(SplFileObject, getFlags) { @@ -1798,7 +1798,7 @@ RETURN_LONG(intern->flags); } /* }}} */ -/* {{{ proto void SplFileObject::setMaxLineLen(int max_len) +/* {{{ proto void SplFileObject::setMaxLineLen(int max_len) U Set maximum line length */ SPL_METHOD(SplFileObject, setMaxLineLen) { @@ -1818,7 +1818,7 @@ intern->u.file.max_line_len = max_len; } /* }}} */ -/* {{{ proto int SplFileObject::getMaxLineLen() +/* {{{ proto int SplFileObject::getMaxLineLen() U Get maximum line length */ SPL_METHOD(SplFileObject, getMaxLineLen) { @@ -1827,14 +1827,14 @@ RETURN_LONG((long)intern->u.file.max_line_len); } /* }}} */ -/* {{{ proto bool SplFileObject::hasChildren() +/* {{{ proto bool SplFileObject::hasChildren() U Return false */ SPL_METHOD(SplFileObject, hasChildren) { RETURN_FALSE; } /* }}} */ -/* {{{ proto bool SplFileObject::getChildren() +/* {{{ proto bool SplFileObject::getChildren() U Read NULL */ SPL_METHOD(SplFileObject, getChildren) { @@ -1850,7 +1850,7 @@ } /* }}} */ -/* {{{ proto array SplFileObject::fgetcsv([string delimiter [, string enclosure]]) +/* {{{ proto array SplFileObject::fgetcsv([string delimiter [, string enclosure]]) U Return current line as csv */ SPL_METHOD(SplFileObject, fgetcsv) { @@ -1919,7 +1919,7 @@ } /* }}} */ -/* {{{ proto array SplFileObject::getCsvControl() +/* {{{ proto array SplFileObject::getCsvControl() U Get the delimiter and enclosure character used in fgetcsv */ SPL_METHOD(SplFileObject, getCsvControl) { @@ -1943,7 +1943,7 @@ FileFunction(flock) /* }}} */ -/* {{{ proto bool SplFileObject::fflush() +/* {{{ proto bool SplFileObject::fflush() U Flush the file */ SPL_METHOD(SplFileObject, fflush) { @@ -1953,7 +1953,7 @@ } /* }}} */ -/* {{{ proto int SplFileObject::ftell() +/* {{{ proto int SplFileObject::ftell() U Return current file position */ SPL_METHOD(SplFileObject, ftell) { @@ -1967,7 +1967,7 @@ } } /* }}} */ -/* {{{ proto int SplFileObject::fseek(int pos [, int whence = SEEK_SET]) +/* {{{ proto int SplFileObject::fseek(int pos [, int whence = SEEK_SET]) U Return current file position */ SPL_METHOD(SplFileObject, fseek) { @@ -1982,7 +1982,7 @@ RETURN_LONG(php_stream_seek(intern->u.file.stream, pos, whence)); } /* }}} */ -/* {{{ proto int SplFileObject::fgetc() +/* {{{ proto int SplFileObject::fgetc() U Get a character form the file */ SPL_METHOD(SplFileObject, fgetc) { @@ -2007,7 +2007,7 @@ } } /* }}} */ -/* {{{ proto string SplFileObject::fgetss([string allowable_tags]) +/* {{{ proto string SplFileObject::fgetss([string allowable_tags]) U Get a line from file pointer and strip HTML tags */ SPL_METHOD(SplFileObject, fgetss) { @@ -2024,7 +2024,7 @@ zval_ptr_dtor(&arg2); } /* }}} */ -/* {{{ proto int SplFileObject::fpassthru() +/* {{{ proto int SplFileObject::fpassthru() U Output all remaining data from a file pointer */ SPL_METHOD(SplFileObject, fpassthru) { @@ -2033,7 +2033,7 @@ RETURN_LONG(php_stream_passthru(intern->u.file.stream)); } /* }}} */ -/* {{{ proto bool SplFileObject::fscanf(string format [, string ...]) +/* {{{ proto bool SplFileObject::fscanf(string format [, string ...]) U Implements a mostly ANSI compatible fscanf() */ SPL_METHOD(SplFileObject, fscanf) { @@ -2046,7 +2046,7 @@ } /* }}} */ -/* {{{ proto mixed SplFileObject::fwrite(string str [, int length]) +/* {{{ proto mixed SplFileObject::fwrite(string str [, int length]) U Binary-safe file write */ SPL_METHOD(SplFileObject, fwrite) { @@ -2074,7 +2074,7 @@ FileFunction(fstat) /* }}} */ -/* {{{ proto bool SplFileObject::ftruncate(int size) +/* {{{ proto bool SplFileObject::ftruncate(int size) U Truncate file to 'size' length */ SPL_METHOD(SplFileObject, ftruncate) { http://cvs.php.net/viewvc.cgi/php-src/ext/spl/spl_iterators.c?r1=1.156&r2=1.157&diff_format=u Index: php-src/ext/spl/spl_iterators.c diff -u php-src/ext/spl/spl_iterators.c:1.156 php-src/ext/spl/spl_iterators.c:1.157 --- php-src/ext/spl/spl_iterators.c:1.156 Mon Jan 1 09:29:29 2007 +++ php-src/ext/spl/spl_iterators.c Fri Jan 19 10:19:50 2007 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: spl_iterators.c,v 1.156 2007/01/01 09:29:29 sebastian Exp $ */ +/* $Id: spl_iterators.c,v 1.157 2007/01/19 10:19:50 helly Exp $ */ #ifdef HAVE_CONFIG_H # include "config.h" @@ -407,7 +407,7 @@ spl_recursive_it_rewind }; -/* {{{ proto void RecursiveIteratorIterator::__construct(RecursiveIterator|IteratorAggregate it [, int mode = RIT_LEAVES_ONLY [, int flags = 0]]) throws InvalidArgumentException +/* {{{ proto void RecursiveIteratorIterator::__construct(RecursiveIterator|IteratorAggregate it [, int mode = RIT_LEAVES_ONLY [, int flags = 0]]) throws InvalidArgumentException U Creates a RecursiveIteratorIterator from a RecursiveIterator. */ SPL_METHOD(RecursiveIteratorIterator, __construct) { @@ -487,7 +487,7 @@ php_set_error_handling(EH_NORMAL, NULL TSRMLS_CC); } /* }}} */ -/* {{{ proto void RecursiveIteratorIterator::rewind() +/* {{{ proto void RecursiveIteratorIterator::rewind() U Rewind the iterator to the first element of the top level inner iterator. */ SPL_METHOD(RecursiveIteratorIterator, rewind) { @@ -496,7 +496,7 @@ spl_recursive_it_rewind_ex(object, getThis() TSRMLS_CC); } /* }}} */ -/* {{{ proto bool RecursiveIteratorIterator::valid() +/* {{{ proto bool RecursiveIteratorIterator::valid() U Check whether the current position is valid */ SPL_METHOD(RecursiveIteratorIterator, valid) { @@ -505,7 +505,7 @@ RETURN_BOOL(spl_recursive_it_valid_ex(object, getThis() TSRMLS_CC) == SUCCESS); } /* }}} */ -/* {{{ proto mixed RecursiveIteratorIterator::key() +/* {{{ proto mixed RecursiveIteratorIterator::key() U Access the current key */ SPL_METHOD(RecursiveIteratorIterator, key) { @@ -535,7 +535,7 @@ } } /* }}} */ -/* {{{ proto mixed RecursiveIteratorIterator::current() +/* {{{ proto mixed RecursiveIteratorIterator::current() U Access the current element value */ SPL_METHOD(RecursiveIteratorIterator, current) { @@ -547,7 +547,7 @@ RETURN_ZVAL(*data, 1, 0); } /* }}} */ -/* {{{ proto void RecursiveIteratorIterator::next() +/* {{{ proto void RecursiveIteratorIterator::next() U Move forward to the next element */ SPL_METHOD(RecursiveIteratorIterator, next) { @@ -556,7 +556,7 @@ spl_recursive_it_move_forward_ex(object, getThis() TSRMLS_CC); } /* }}} */ -/* {{{ proto int RecursiveIteratorIterator::getDepth() +/* {{{ proto int RecursiveIteratorIterator::getDepth() U Get the current depth of the recursive iteration */ SPL_METHOD(RecursiveIteratorIterator, getDepth) { @@ -565,7 +565,7 @@ RETURN_LONG(object->level); } /* }}} */ -/* {{{ proto RecursiveIterator RecursiveIteratorIterator::getSubIterator([int level]) +/* {{{ proto RecursiveIterator RecursiveIteratorIterator::getSubIterator([int level]) U The current active sub iterator or the iterator at specified level */ SPL_METHOD(RecursiveIteratorIterator, getSubIterator) { @@ -581,7 +581,7 @@ RETURN_ZVAL(object->iterators[level].zobject, 1, 0); } /* }}} */ -/* {{{ proto RecursiveIterator RecursiveIteratorIterator::getInnerIterator() +/* {{{ proto RecursiveIterator RecursiveIteratorIterator::getInnerIterator() U The current active sub iterator */ SPL_METHOD(RecursiveIteratorIterator, getInnerIterator) { @@ -591,21 +591,21 @@ RETURN_ZVAL(object->iterators[level].zobject, 1, 0); } /* }}} */ -/* {{{ proto RecursiveIterator RecursiveIteratorIterator::beginIteration() +/* {{{ proto RecursiveIterator RecursiveIteratorIterator::beginIteration() U Called when iteration begins (after first rewind() call) */ SPL_METHOD(RecursiveIteratorIterator, beginIteration) { /* nothing to do */ } /* }}} */ -/* {{{ proto RecursiveIterator RecursiveIteratorIterator::endIteration() +/* {{{ proto RecursiveIterator RecursiveIteratorIterator::endIteration() U Called when iteration ends (when valid() first returns false */ SPL_METHOD(RecursiveIteratorIterator, endIteration) { /* nothing to do */ } /* }}} */ -/* {{{ proto bool RecursiveIteratorIterator::callHasChildren() +/* {{{ proto bool RecursiveIteratorIterator::callHasChildren() U Called for each element to test whether it has children */ SPL_METHOD(RecursiveIteratorIterator, callHasChildren) { @@ -626,7 +626,7 @@ } } /* }}} */ -/* {{{ proto RecursiveIterator RecursiveIteratorIterator::callGetChildren() +/* {{{ proto RecursiveIterator RecursiveIteratorIterator::callGetChildren() U Return children of current element */ SPL_METHOD(RecursiveIteratorIterator, callGetChildren) { @@ -645,28 +645,28 @@ } } /* }}} */ -/* {{{ proto void RecursiveIteratorIterator::beginChildren() +/* {{{ proto void RecursiveIteratorIterator::beginChildren() U Called when recursing one level down */ SPL_METHOD(RecursiveIteratorIterator, beginChildren) { /* nothing to do */ } /* }}} */ -/* {{{ proto void RecursiveIteratorIterator::endChildren() +/* {{{ proto void RecursiveIteratorIterator::endChildren() U Called when end recursing one level */ SPL_METHOD(RecursiveIteratorIterator, endChildren) { /* nothing to do */ } /* }}} */ -/* {{{ proto void RecursiveIteratorIterator::nextElement() +/* {{{ proto void RecursiveIteratorIterator::nextElement() U Called when the next element is available */ SPL_METHOD(RecursiveIteratorIterator, nextElement) { /* nothing to do */ } /* }}} */ -/* {{{ proto void RecursiveIteratorIterator::setMaxDepth([$max_depth = -1]) +/* {{{ proto void RecursiveIteratorIterator::setMaxDepth([$max_depth = -1]) U Set the maximum allowed depth (or any depth if pmax_depth = -1] */ SPL_METHOD(RecursiveIteratorIterator, setMaxDepth) { @@ -683,7 +683,7 @@ object->max_depth = max_depth; } /* }}} */ -/* {{{ proto int|false RecursiveIteratorIterator::getMaxDepth() +/* {{{ proto int|false RecursiveIteratorIterator::getMaxDepth() U Return the maximum accepted depth or false if any depth is allowed */ SPL_METHOD(RecursiveIteratorIterator, getMaxDepth) { @@ -956,6 +956,7 @@ char * class_name; int class_name_len; + /* UTODO: class_name must be zstr */ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "O|s", &zobject, ce_inner, &class_name, &class_name_len) == FAILURE) { php_set_error_handling(EH_NORMAL, NULL TSRMLS_CC); return NULL; @@ -1010,6 +1011,7 @@ intern->u.regex.use_flags = ZEND_NUM_ARGS() >= 5; intern->u.regex.flags = 0; intern->u.regex.preg_flags = 0; + /* UTODO: do we need tocare if regex unicode? */ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "Os|lll", &zobject, ce_inner, ®ex, ®ex_len, &mode, &intern->u.regex.flags, &intern->u.regex.preg_flags) == FAILURE) { php_set_error_handling(EH_NORMAL, NULL TSRMLS_CC); return NULL; @@ -1053,17 +1055,17 @@ return intern; } -/* {{{ proto void FilterIterator::__construct(Iterator it) +/* {{{ proto void FilterIterator::__construct(Iterator it) U Create an Iterator from another iterator */ SPL_METHOD(FilterIterator, __construct) { spl_dual_it_construct(INTERNAL_FUNCTION_PARAM_PASSTHRU, spl_ce_FilterIterator, zend_ce_iterator, DIT_FilterIterator); } /* }}} */ -/* {{{ proto Iterator FilterIterator::getInnerIterator() - proto Iterator CachingIterator::getInnerIterator() - proto Iterator LimitIterator::getInnerIterator() - proto Iterator ParentIterator::getInnerIterator() +/* {{{ proto Iterator FilterIterator::getInnerIterator() U + proto Iterator CachingIterator::getInnerIterator() U + proto Iterator LimitIterator::getInnerIterator() U + proto Iterator ParentIterator::getInnerIterator() U Get the inner iterator */ SPL_METHOD(dual_it, getInnerIterator) { @@ -1169,10 +1171,10 @@ spl_dual_it_fetch(intern, 1 TSRMLS_CC); } /* }}} */ -/* {{{ proto bool FilterIterator::valid() - proto bool ParentIterator::valid() - proto bool IteratorIterator::valid() - proto bool NoRewindIterator::valid() +/* {{{ proto bool FilterIterator::valid() U + proto bool ParentIterator::valid() U + proto bool IteratorIterator::valid() U + proto bool NoRewindIterator::valid() U Check whether the current element is valid */ SPL_METHOD(dual_it, valid) { @@ -1183,13 +1185,13 @@ RETURN_BOOL(intern->current.data); } /* }}} */ -/* {{{ proto mixed FilterIterator::key() - proto mixed CachingIterator::key() - proto mixed LimitIterator::key() - proto mixed ParentIterator::key() - proto mixed IteratorIterator::key() - proto mixed NoRewindIterator::key() - proto mixed AppendIterator::key() +/* {{{ proto mixed FilterIterator::key() U + proto mixed CachingIterator::key() U + proto mixed LimitIterator::key() U + proto mixed ParentIterator::key() U + proto mixed IteratorIterator::key() U + proto mixed NoRewindIterator::key() U + proto mixed AppendIterator::key() U Get the current key */ SPL_METHOD(dual_it, key) { @@ -1209,13 +1211,13 @@ RETURN_NULL(); } /* }}} */ -/* {{{ proto mixed FilterIterator::current() - proto mixed CachingIterator::current() - proto mixed LimitIterator::current() - proto mixed ParentIterator::current() - proto mixed IteratorIterator::current() - proto mixed NoRewindIterator::current() - proto mixed AppendIterator::current() +/* {{{ proto mixed FilterIterator::current() U + proto mixed CachingIterator::current() U + proto mixed LimitIterator::current() U + proto mixed ParentIterator::current() U + proto mixed IteratorIterator::current() U + proto mixed NoRewindIterator::current() U + proto mixed AppendIterator::current() U Get the current element value */ SPL_METHOD(dual_it, current) { @@ -1230,9 +1232,9 @@ } } /* }}} */ -/* {{{ proto void ParentIterator::next() - proto void IteratorIterator::next() - proto void NoRewindIterator::next() +/* {{{ proto void ParentIterator::next() U + proto void IteratorIterator::next() U + proto void NoRewindIterator::next() U Move the iterator forward */ SPL_METHOD(dual_it, next) { @@ -1277,7 +1279,7 @@ spl_filter_it_fetch(zthis, intern TSRMLS_CC); } -/* {{{ proto void FilterIterator::rewind() +/* {{{ proto void FilterIterator::rewind() U Rewind the iterator */ SPL_METHOD(FilterIterator, rewind) { @@ -1287,7 +1289,7 @@ spl_filter_it_rewind(getThis(), intern TSRMLS_CC); } /* }}} */ -/* {{{ proto void FilterIterator::next() +/* {{{ proto void FilterIterator::next() U Move the iterator forward */ SPL_METHOD(FilterIterator, next) { @@ -1297,14 +1299,14 @@ spl_filter_it_next(getThis(), intern TSRMLS_CC); } /* }}} */ -/* {{{ proto void RecursiveFilterIterator::__construct(RecursiveIterator it) +/* {{{ proto void RecursiveFilterIterator::__construct(RecursiveIterator it) U Create a RecursiveFilterIterator from a RecursiveIterator */ SPL_METHOD(RecursiveFilterIterator, __construct) { spl_dual_it_construct(INTERNAL_FUNCTION_PARAM_PASSTHRU, spl_ce_RecursiveFilterIterator, spl_ce_RecursiveIterator, DIT_RecursiveFilterIterator); } /* }}} */ -/* {{{ proto bool RecursiveFilterIterator::hasChildren() +/* {{{ proto bool RecursiveFilterIterator::hasChildren() U Check whether the inner iterator's current element has children */ SPL_METHOD(RecursiveFilterIterator, hasChildren) { @@ -1321,7 +1323,7 @@ } } /* }}} */ -/* {{{ proto RecursiveFilterIterator RecursiveFilterIterator::getChildren() +/* {{{ proto RecursiveFilterIterator RecursiveFilterIterator::getChildren() U Return the inner iterator's children contained in a RecursiveFilterIterator */ SPL_METHOD(RecursiveFilterIterator, getChildren) { @@ -1339,14 +1341,14 @@ } } /* }}} */ -/* {{{ proto void ParentIterator::__construct(RecursiveIterator it) +/* {{{ proto void ParentIterator::__construct(RecursiveIterator it) U Create a ParentIterator from a RecursiveIterator */ SPL_METHOD(ParentIterator, __construct) { spl_dual_it_construct(INTERNAL_FUNCTION_PARAM_PASSTHRU, spl_ce_ParentIterator, spl_ce_RecursiveIterator, DIT_ParentIterator); } /* }}} */ -/* {{{ proto bool ParentIterator::hasChildren() +/* {{{ proto bool ParentIterator::hasChildren() U Check whether the inner iterator's current element has children */ SPL_METHOD(ParentIterator, hasChildren) { @@ -1363,7 +1365,7 @@ } } /* }}} */ -/* {{{ proto ParentIterator ParentIterator::getChildren() +/* {{{ proto ParentIterator ParentIterator::getChildren() U Return the inner iterator's children contained in a ParentIterator */ SPL_METHOD(ParentIterator, getChildren) { @@ -1382,14 +1384,14 @@ } /* }}} */ #if HAVE_PCRE || HAVE_BUNDLED_PCRE -/* {{{ proto void RegexIterator::__construct(Iterator it, string regex [, int mode [, int flags [, int preg_flags]]]) +/* {{{ proto void RegexIterator::__construct(Iterator it, string regex [, int mode [, int flags [, int preg_flags]]]) U Create an RegexIterator from another iterator and a regular expression */ SPL_METHOD(RegexIterator, __construct) { spl_dual_it_construct(INTERNAL_FUNCTION_PARAM_PASSTHRU, spl_ce_RegexIterator, zend_ce_iterator, DIT_RegexIterator); } /* }}} */ -/* {{{ proto bool RegexIterator::accept() +/* {{{ proto bool RegexIterator::accept() U Match (string)current() against regular expression */ SPL_METHOD(RegexIterator, accept) { @@ -1490,7 +1492,7 @@ } } /* }}} */ -/* {{{ proto bool RegexIterator::getMode() +/* {{{ proto bool RegexIterator::getMode() U Returns current operation mode */ SPL_METHOD(RegexIterator, getMode) { @@ -1499,7 +1501,7 @@ RETURN_LONG(intern->u.regex.mode); } /* }}} */ -/* {{{ proto bool RegexIterator::setMode(int new_mode) +/* {{{ proto bool RegexIterator::setMode(int new_mode) U Set new operation mode */ SPL_METHOD(RegexIterator, setMode) { @@ -1518,7 +1520,7 @@ intern->u.regex.mode = mode; } /* }}} */ -/* {{{ proto bool RegexIterator::getFlags() +/* {{{ proto bool RegexIterator::getFlags() U Returns current operation flags */ SPL_METHOD(RegexIterator, getFlags) { @@ -1527,7 +1529,7 @@ RETURN_LONG(intern->u.regex.flags); } /* }}} */ -/* {{{ proto bool RegexIterator::setFlags(int new_flags) +/* {{{ proto bool RegexIterator::setFlags(int new_flags) U Set operation flags */ SPL_METHOD(RegexIterator, setFlags) { @@ -1541,7 +1543,7 @@ intern->u.regex.flags = flags; } /* }}} */ -/* {{{ proto bool RegexIterator::getFlags() +/* {{{ proto bool RegexIterator::getFlags() U Returns current PREG flags (if in use or NULL) */ SPL_METHOD(RegexIterator, getPregFlags) { @@ -1554,7 +1556,7 @@ } } /* }}} */ -/* {{{ proto bool RegexIterator::setPregFlags(int new_flags) +/* {{{ proto bool RegexIterator::setPregFlags(int new_flags) U Set PREG flags */ SPL_METHOD(RegexIterator, setPregFlags) { @@ -1569,14 +1571,14 @@ intern->u.regex.use_flags = 1; } /* }}} */ -/* {{{ proto void RecursiveRegexIterator::__construct(RecursiveIterator it, string regex [, int mode [, int flags [, int preg_flags]]]) +/* {{{ proto void RecursiveRegexIterator::__construct(RecursiveIterator it, string regex [, int mode [, int flags [, int preg_flags]]]) U Create an RecursiveRegexIterator from another recursive iterator and a regular expression */ SPL_METHOD(RecursiveRegexIterator, __construct) { spl_dual_it_construct(INTERNAL_FUNCTION_PARAM_PASSTHRU, spl_ce_RecursiveRegexIterator, spl_ce_RecursiveIterator, DIT_RecursiveRegexIterator); } /* }}} */ -/* {{{ proto RecursiveRegexIterator RecursiveRegexIterator::getChildren() +/* {{{ proto RecursiveRegexIterator RecursiveRegexIterator::getChildren() U Return the inner iterator's children contained in a RecursiveRegexIterator */ SPL_METHOD(RecursiveRegexIterator, getChildren) { @@ -1808,14 +1810,14 @@ } } -/* {{{ proto LimitIterator::__construct(Iterator it [, int offset, int count]) +/* {{{ proto LimitIterator::__construct(Iterator it [, int offset, int count]) U Construct a LimitIterator from an Iterator with a given starting offset and optionally a maximum count */ SPL_METHOD(LimitIterator, __construct) { spl_dual_it_construct(INTERNAL_FUNCTION_PARAM_PASSTHRU, spl_ce_LimitIterator, zend_ce_iterator, DIT_LimitIterator); } /* }}} */ -/* {{{ proto void LimitIterator::rewind() +/* {{{ proto void LimitIterator::rewind() U Rewind the iterator to the specified starting offset */ SPL_METHOD(LimitIterator, rewind) { @@ -1826,7 +1828,7 @@ spl_limit_it_seek(intern, intern->u.limit.offset TSRMLS_CC); } /* }}} */ -/* {{{ proto bool LimitIterator::valid() +/* {{{ proto bool LimitIterator::valid() U Check whether the current element is valid */ SPL_METHOD(LimitIterator, valid) { @@ -1838,7 +1840,7 @@ RETURN_BOOL((intern->u.limit.count == -1 || intern->current.pos < intern->u.limit.offset + intern->u.limit.count) && intern->current.data); } /* }}} */ -/* {{{ proto void LimitIterator::next() +/* {{{ proto void LimitIterator::next() U Move the iterator forward */ SPL_METHOD(LimitIterator, next) { @@ -1852,7 +1854,7 @@ } } /* }}} */ -/* {{{ proto void LimitIterator::seek(int position) +/* {{{ proto void LimitIterator::seek(int position) U Seek to the given position */ SPL_METHOD(LimitIterator, seek) { @@ -1868,7 +1870,7 @@ RETURN_LONG(intern->current.pos); } /* }}} */ -/* {{{ proto int LimitIterator::getPosition() +/* {{{ proto int LimitIterator::getPosition() U Return the current position */ SPL_METHOD(LimitIterator, getPosition) { @@ -2018,14 +2020,14 @@ spl_caching_it_next(intern TSRMLS_CC); } -/* {{{ proto void CachingIterator::__construct(Iterator it [, flags = CIT_CALL_TOSTRING]) +/* {{{ proto void CachingIterator::__construct(Iterator it [, flags = CIT_CALL_TOSTRING]) U Construct a CachingIterator from an Iterator */ SPL_METHOD(CachingIterator, __construct) { spl_dual_it_construct(INTERNAL_FUNCTION_PARAM_PASSTHRU, spl_ce_CachingIterator, zend_ce_iterator, DIT_CachingIterator); } /* }}} */ -/* {{{ proto void CachingIterator::rewind() +/* {{{ proto void CachingIterator::rewind() U Rewind the iterator */ SPL_METHOD(CachingIterator, rewind) { @@ -2036,7 +2038,7 @@ spl_caching_it_rewind(intern TSRMLS_CC); } /* }}} */ -/* {{{ proto bool CachingIterator::valid() +/* {{{ proto bool CachingIterator::valid() U Check whether the current element is valid */ SPL_METHOD(CachingIterator, valid) { @@ -2047,7 +2049,7 @@ RETURN_BOOL(spl_caching_it_valid(intern TSRMLS_CC) == SUCCESS); } /* }}} */ -/* {{{ proto void CachingIterator::next() +/* {{{ proto void CachingIterator::next() U Move the iterator forward */ SPL_METHOD(CachingIterator, next) { @@ -2058,7 +2060,7 @@ spl_caching_it_next(intern TSRMLS_CC); } /* }}} */ -/* {{{ proto bool CachingIterator::hasNext() +/* {{{ proto bool CachingIterator::hasNext() U Check whether the inner iterator has a valid next element */ SPL_METHOD(CachingIterator, hasNext) { @@ -2069,7 +2071,7 @@ RETURN_BOOL(spl_caching_it_has_next(intern TSRMLS_CC) == SUCCESS); } /* }}} */ -/* {{{ proto string CachingIterator::__toString() +/* {{{ proto string CachingIterator::__toString() U Return the string representation of the current element */ SPL_METHOD(CachingIterator, __toString) { @@ -2104,7 +2106,7 @@ } } /* }}} */ -/* {{{ proto void CachingIterator::offsetSet(mixed index, mixed newval) +/* {{{ proto void CachingIterator::offsetSet(mixed index, mixed newval) U Set given index in cache */ SPL_METHOD(CachingIterator, offsetSet) { @@ -2130,7 +2132,7 @@ } /* }}} */ -/* {{{ proto string CachingIterator::offsetGet(mixed index) +/* {{{ proto string CachingIterator::offsetGet(mixed index) U Return the internal cache if used */ SPL_METHOD(CachingIterator, offsetGet) { @@ -2160,7 +2162,7 @@ } /* }}} */ -/* {{{ proto void CachingIterator::offsetUnset(mixed index) +/* {{{ proto void CachingIterator::offsetUnset(mixed index) U Unset given index in cache */ SPL_METHOD(CachingIterator, offsetUnset) { @@ -2184,7 +2186,7 @@ } /* }}} */ -/* {{{ proto bool CachingIterator::offsetExists(mixed index) +/* {{{ proto bool CachingIterator::offsetExists(mixed index) U Return whether the requested index exists */ SPL_METHOD(CachingIterator, offsetExists) { @@ -2208,7 +2210,7 @@ } /* }}} */ -/* {{{ proto bool CachingIterator::getCache() +/* {{{ proto bool CachingIterator::getCache() U Return the cache */ SPL_METHOD(CachingIterator, getCache) { @@ -2225,7 +2227,7 @@ } /* }}} */ -/* {{{ proto int CachingIterator::getFlags() +/* {{{ proto int CachingIterator::getFlags() U Return the internal flags */ SPL_METHOD(CachingIterator, getFlags) { @@ -2237,7 +2239,7 @@ } /* }}} */ -/* {{{ proto void CachingIterator::setFlags(int flags) +/* {{{ proto void CachingIterator::setFlags(int flags) U Set the internal flags */ SPL_METHOD(CachingIterator, setFlags) { @@ -2312,14 +2314,14 @@ {NULL, NULL, NULL} }; -/* {{{ proto void RecursiveCachingIterator::__construct(RecursiveIterator it [, flags = CIT_CALL_TOSTRING]) +/* {{{ proto void RecursiveCachingIterator::__construct(RecursiveIterator it [, flags = CIT_CALL_TOSTRING]) U Create an iterator from a RecursiveIterator */ SPL_METHOD(RecursiveCachingIterator, __construct) { spl_dual_it_construct(INTERNAL_FUNCTION_PARAM_PASSTHRU, spl_ce_RecursiveCachingIterator, spl_ce_RecursiveIterator, DIT_RecursiveCachingIterator); } /* }}} */ -/* {{{ proto bool RecursiveCachingIterator::hasChildren() +/* {{{ proto bool RecursiveCachingIterator::hasChildren() U Check whether the current element of the inner iterator has children */ SPL_METHOD(RecursiveCachingIterator, hasChildren) { @@ -2330,7 +2332,7 @@ RETURN_BOOL(intern->u.caching.zchildren); } /* }}} */ -/* {{{ proto RecursiveCachingIterator RecursiveCachingIterator::getChildren() +/* {{{ proto RecursiveCachingIterator RecursiveCachingIterator::getChildren() U Return the inner iterator's children as a RecursiveCachingIterator */ SPL_METHOD(RecursiveCachingIterator, getChildren) { @@ -2358,7 +2360,7 @@ {NULL, NULL, NULL} }; -/* {{{ proto void IteratorIterator::__construct(Traversable it) +/* {{{ proto void IteratorIterator::__construct(Traversable it) U Create an iterator from anything that is traversable */ SPL_METHOD(IteratorIterator, __construct) { @@ -2381,21 +2383,21 @@ {NULL, NULL, NULL} }; -/* {{{ proto void NoRewindIterator::__construct(Iterator it) +/* {{{ proto void NoRewindIterator::__construct(Iterator it) U Create an iterator from another iterator */ SPL_METHOD(NoRewindIterator, __construct) { spl_dual_it_construct(INTERNAL_FUNCTION_PARAM_PASSTHRU, spl_ce_NoRewindIterator, zend_ce_iterator, DIT_NoRewindIterator); } /* }}} */ -/* {{{ proto void NoRewindIterator::rewind() +/* {{{ proto void NoRewindIterator::rewind() U Prevent a call to inner iterators rewind() */ SPL_METHOD(NoRewindIterator, rewind) { /* nothing to do */ } /* }}} */ -/* {{{ proto bool NoRewindIterator::valid() +/* {{{ proto bool NoRewindIterator::valid() U Return inner iterators valid() */ SPL_METHOD(NoRewindIterator, valid) { @@ -2405,7 +2407,7 @@ RETURN_BOOL(intern->inner.iterator->funcs->valid(intern->inner.iterator TSRMLS_CC) == SUCCESS); } /* }}} */ -/* {{{ proto mixed NoRewindIterator::key() +/* {{{ proto mixed NoRewindIterator::key() U Return inner iterators key() */ SPL_METHOD(NoRewindIterator, key) { @@ -2435,7 +2437,7 @@ } } /* }}} */ -/* {{{ proto mixed NoRewindIterator::current() +/* {{{ proto mixed NoRewindIterator::current() U Return inner iterators current() */ SPL_METHOD(NoRewindIterator, current) { @@ -2447,7 +2449,7 @@ RETURN_ZVAL(*data, 1, 0); } /* }}} */ -/* {{{ proto void NoRewindIterator::next() +/* {{{ proto void NoRewindIterator::next() U Return inner iterators next() */ SPL_METHOD(NoRewindIterator, next) { @@ -2473,14 +2475,14 @@ {NULL, NULL, NULL} }; -/* {{{ proto void InfiniteIterator::__construct(Iterator it) +/* {{{ proto void InfiniteIterator::__construct(Iterator it) U Create an iterator from another iterator */ SPL_METHOD(InfiniteIterator, __construct) { spl_dual_it_construct(INTERNAL_FUNCTION_PARAM_PASSTHRU, spl_ce_InfiniteIterator, zend_ce_iterator, DIT_InfiniteIterator); } /* }}} */ -/* {{{ proto void InfiniteIterator::next() +/* {{{ proto void InfiniteIterator::next() U Prevent a call to inner iterators rewind() (internally the current data will be fetched if valid()) */ SPL_METHOD(InfiniteIterator, next) { @@ -2505,34 +2507,34 @@ {NULL, NULL, NULL} }; -/* {{{ proto void EmptyIterator::rewind() +/* {{{ proto void EmptyIterator::rewind() U Does nothing */ SPL_METHOD(EmptyIterator, rewind) { } /* }}} */ -/* {{{ proto false EmptyIterator::valid() +/* {{{ proto false EmptyIterator::valid() U Return false */ SPL_METHOD(EmptyIterator, valid) { RETURN_FALSE; } /* }}} */ -/* {{{ proto void EmptyIterator::key() +/* {{{ proto void EmptyIterator::key() U Throws exception BadMethodCallException */ SPL_METHOD(EmptyIterator, key) { zend_throw_exception(spl_ce_BadMethodCallException, "Accessing the key of an EmptyIterator", 0 TSRMLS_CC); } /* }}} */ -/* {{{ proto void EmptyIterator::current() +/* {{{ proto void EmptyIterator::current() U Throws exception BadMethodCallException */ SPL_METHOD(EmptyIterator, current) { zend_throw_exception(spl_ce_BadMethodCallException, "Accessing the value of an EmptyIterator", 0 TSRMLS_CC); } /* }}} */ -/* {{{ proto void EmptyIterator::next() +/* {{{ proto void EmptyIterator::next() U Does nothing */ SPL_METHOD(EmptyIterator, next) { @@ -2596,14 +2598,14 @@ spl_append_it_fetch(intern TSRMLS_CC); } /* }}} */ -/* {{{ proto void AppendIterator::__construct() +/* {{{ proto void AppendIterator::__construct() U Create an AppendIterator */ SPL_METHOD(AppendIterator, __construct) { spl_dual_it_construct(INTERNAL_FUNCTION_PARAM_PASSTHRU, spl_ce_AppendIterator, zend_ce_iterator, DIT_AppendIterator); } /* }}} */ -/* {{{ proto void AppendIterator::append(Iterator it) +/* {{{ proto void AppendIterator::append(Iterator it) U Append an iterator */ SPL_METHOD(AppendIterator, append) { @@ -2630,7 +2632,7 @@ } } /* }}} */ -/* {{{ proto void AppendIterator::rewind() +/* {{{ proto void AppendIterator::rewind() U Rewind to the first iterator and rewind the first iterator, too */ SPL_METHOD(AppendIterator, rewind) { @@ -2644,7 +2646,7 @@ } } /* }}} */ -/* {{{ proto bool AppendIterator::valid() +/* {{{ proto bool AppendIterator::valid() U Check if the current state is valid */ SPL_METHOD(AppendIterator, valid) { @@ -2655,7 +2657,7 @@ RETURN_BOOL(intern->current.data); } /* }}} */ -/* {{{ proto void AppendIterator::next() +/* {{{ proto void AppendIterator::next() U Forward to next element */ SPL_METHOD(AppendIterator, next) { @@ -2666,7 +2668,7 @@ spl_append_it_next(intern TSRMLS_CC); } /* }}} */ -/* {{{ proto int AppendIterator::getIteratorIndex() +/* {{{ proto int AppendIterator::getIteratorIndex() U Get index of iterator */ SPL_METHOD(AppendIterator, getIteratorIndex) { @@ -2678,7 +2680,7 @@ spl_array_iterator_key(intern->u.append.zarrayit, return_value TSRMLS_CC); } /* }}} */ -/* {{{ proto ArrayIterator AppendIterator::getArrayIterator() +/* {{{ proto ArrayIterator AppendIterator::getArrayIterator() U Get access to inner ArrayIterator */ SPL_METHOD(AppendIterator, getArrayIterator) { @@ -2799,7 +2801,7 @@ } /* }}} */ -/* {{{ proto array iterator_to_array(Traversable it [, bool use_keys = true]) +/* {{{ proto array iterator_to_array(Traversable it [, bool use_keys = true]) U Copy the iterator into an array */ PHP_FUNCTION(iterator_to_array) { @@ -2825,7 +2827,7 @@ } /* }}} */ -/* {{{ proto int iterator_count(Traversable it) +/* {{{ proto int iterator_count(Traversable it) U Count the elements in an iterator */ PHP_FUNCTION(iterator_count) { @@ -2868,7 +2870,7 @@ } /* }}} */ -/* {{{ proto int iterator_apply(Traversable it, mixed function [, mixed params]) +/* {{{ proto int iterator_apply(Traversable it, mixed function [, mixed params]) U Calls a function for every element in an iterator */ PHP_FUNCTION(iterator_apply) {
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php