]> granicus.if.org Git - php/commitdiff
Add stubs for SplFileInfo et al.
authorMáté Kocsis <kocsismate@woohoolabs.com>
Sat, 21 Mar 2020 22:34:29 +0000 (23:34 +0100)
committerMáté Kocsis <kocsismate@woohoolabs.com>
Mon, 23 Mar 2020 12:36:17 +0000 (13:36 +0100)
Closes GH-5287

ext/spl/spl_directory.c
ext/spl/spl_directory.stub.php [new file with mode: 0755]
ext/spl/spl_directory_arginfo.h [new file with mode: 0644]

index db6de405aa06a22fac02d8f197c8fd77c2c009ef..f2fc1bfc8bc0a75fdb12ed2692911b225f880b58 100644 (file)
@@ -32,6 +32,7 @@
 #include "spl_engine.h"
 #include "spl_iterators.h"
 #include "spl_directory.h"
+#include "spl_directory_arginfo.h"
 #include "spl_exceptions.h"
 
 #include "php.h"
@@ -1873,133 +1874,86 @@ static int spl_filesystem_object_cast(zend_object *readobj, zval *writeobj, int
 }
 /* }}} */
 
-/* {{{ declare method parameters */
-/* supply a name and default to call by parameter */
-ZEND_BEGIN_ARG_INFO(arginfo_info___construct, 0)
-       ZEND_ARG_INFO(0, file_name)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_info_openFile, 0, 0, 0)
-       ZEND_ARG_INFO(0, open_mode)
-       ZEND_ARG_INFO(0, use_include_path)
-       ZEND_ARG_INFO(0, context)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_info_optinalFileClass, 0, 0, 0)
-       ZEND_ARG_INFO(0, class_name)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_optinalSuffix, 0, 0, 0)
-       ZEND_ARG_INFO(0, suffix)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO(arginfo_splfileinfo_void, 0)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_splfileinfo___toString, 0, 0, IS_STRING, 0)
-ZEND_END_ARG_INFO()
-
 /* the method table */
 /* each method can have its own parameters and visibility */
 static const zend_function_entry spl_SplFileInfo_functions[] = {
-       SPL_ME(SplFileInfo,       __construct,   arginfo_info___construct, ZEND_ACC_PUBLIC)
-       SPL_ME(SplFileInfo,       getPath,       arginfo_splfileinfo_void, ZEND_ACC_PUBLIC)
-       SPL_ME(SplFileInfo,       getFilename,   arginfo_splfileinfo_void, ZEND_ACC_PUBLIC)
-       SPL_ME(SplFileInfo,       getExtension,  arginfo_splfileinfo_void, ZEND_ACC_PUBLIC)
-       SPL_ME(SplFileInfo,       getBasename,   arginfo_optinalSuffix, ZEND_ACC_PUBLIC)
-       SPL_ME(SplFileInfo,       getPathname,   arginfo_splfileinfo_void, ZEND_ACC_PUBLIC)
-       SPL_ME(SplFileInfo,       getPerms,      arginfo_splfileinfo_void, ZEND_ACC_PUBLIC)
-       SPL_ME(SplFileInfo,       getInode,      arginfo_splfileinfo_void, ZEND_ACC_PUBLIC)
-       SPL_ME(SplFileInfo,       getSize,       arginfo_splfileinfo_void, ZEND_ACC_PUBLIC)
-       SPL_ME(SplFileInfo,       getOwner,      arginfo_splfileinfo_void, ZEND_ACC_PUBLIC)
-       SPL_ME(SplFileInfo,       getGroup,      arginfo_splfileinfo_void, ZEND_ACC_PUBLIC)
-       SPL_ME(SplFileInfo,       getATime,      arginfo_splfileinfo_void, ZEND_ACC_PUBLIC)
-       SPL_ME(SplFileInfo,       getMTime,      arginfo_splfileinfo_void, ZEND_ACC_PUBLIC)
-       SPL_ME(SplFileInfo,       getCTime,      arginfo_splfileinfo_void, ZEND_ACC_PUBLIC)
-       SPL_ME(SplFileInfo,       getType,       arginfo_splfileinfo_void, ZEND_ACC_PUBLIC)
-       SPL_ME(SplFileInfo,       isWritable,    arginfo_splfileinfo_void, ZEND_ACC_PUBLIC)
-       SPL_ME(SplFileInfo,       isReadable,    arginfo_splfileinfo_void, ZEND_ACC_PUBLIC)
-       SPL_ME(SplFileInfo,       isExecutable,  arginfo_splfileinfo_void, ZEND_ACC_PUBLIC)
-       SPL_ME(SplFileInfo,       isFile,        arginfo_splfileinfo_void, ZEND_ACC_PUBLIC)
-       SPL_ME(SplFileInfo,       isDir,         arginfo_splfileinfo_void, ZEND_ACC_PUBLIC)
-       SPL_ME(SplFileInfo,       isLink,        arginfo_splfileinfo_void, ZEND_ACC_PUBLIC)
-       SPL_ME(SplFileInfo,       getLinkTarget, arginfo_splfileinfo_void, ZEND_ACC_PUBLIC)
+       SPL_ME(SplFileInfo,       __construct,   arginfo_class_SplFileInfo___construct, ZEND_ACC_PUBLIC)
+       SPL_ME(SplFileInfo,       getPath,       arginfo_class_SplFileInfo_getPath, ZEND_ACC_PUBLIC)
+       SPL_ME(SplFileInfo,       getFilename,   arginfo_class_SplFileInfo_getFilename, ZEND_ACC_PUBLIC)
+       SPL_ME(SplFileInfo,       getExtension,  arginfo_class_SplFileInfo_getExtension, ZEND_ACC_PUBLIC)
+       SPL_ME(SplFileInfo,       getBasename,   arginfo_class_SplFileInfo_getBasename, ZEND_ACC_PUBLIC)
+       SPL_ME(SplFileInfo,       getPathname,   arginfo_class_SplFileInfo_getPathname, ZEND_ACC_PUBLIC)
+       SPL_ME(SplFileInfo,       getPerms,      arginfo_class_SplFileInfo_getPerms, ZEND_ACC_PUBLIC)
+       SPL_ME(SplFileInfo,       getInode,      arginfo_class_SplFileInfo_getInode, ZEND_ACC_PUBLIC)
+       SPL_ME(SplFileInfo,       getSize,       arginfo_class_SplFileInfo_getSize, ZEND_ACC_PUBLIC)
+       SPL_ME(SplFileInfo,       getOwner,      arginfo_class_SplFileInfo_getOwner, ZEND_ACC_PUBLIC)
+       SPL_ME(SplFileInfo,       getGroup,      arginfo_class_SplFileInfo_getGroup, ZEND_ACC_PUBLIC)
+       SPL_ME(SplFileInfo,       getATime,      arginfo_class_SplFileInfo_getATime, ZEND_ACC_PUBLIC)
+       SPL_ME(SplFileInfo,       getMTime,      arginfo_class_SplFileInfo_getMTime, ZEND_ACC_PUBLIC)
+       SPL_ME(SplFileInfo,       getCTime,      arginfo_class_SplFileInfo_getCTime, ZEND_ACC_PUBLIC)
+       SPL_ME(SplFileInfo,       getType,       arginfo_class_SplFileInfo_getType, ZEND_ACC_PUBLIC)
+       SPL_ME(SplFileInfo,       isWritable,    arginfo_class_SplFileInfo_isWritable, ZEND_ACC_PUBLIC)
+       SPL_ME(SplFileInfo,       isReadable,    arginfo_class_SplFileInfo_isReadable, ZEND_ACC_PUBLIC)
+       SPL_ME(SplFileInfo,       isExecutable,  arginfo_class_SplFileInfo_isExecutable, ZEND_ACC_PUBLIC)
+       SPL_ME(SplFileInfo,       isFile,        arginfo_class_SplFileInfo_isFile, ZEND_ACC_PUBLIC)
+       SPL_ME(SplFileInfo,       isDir,         arginfo_class_SplFileInfo_isDir, ZEND_ACC_PUBLIC)
+       SPL_ME(SplFileInfo,       isLink,        arginfo_class_SplFileInfo_isLink, ZEND_ACC_PUBLIC)
+       SPL_ME(SplFileInfo,       getLinkTarget, arginfo_class_SplFileInfo_getLinkTarget, ZEND_ACC_PUBLIC)
 #if HAVE_REALPATH || defined(ZTS)
-       SPL_ME(SplFileInfo,       getRealPath,   arginfo_splfileinfo_void, ZEND_ACC_PUBLIC)
+       SPL_ME(SplFileInfo,       getRealPath,   arginfo_class_SplFileInfo_getRealPath, ZEND_ACC_PUBLIC)
 #endif
-       SPL_ME(SplFileInfo,       getFileInfo,   arginfo_info_optinalFileClass, ZEND_ACC_PUBLIC)
-       SPL_ME(SplFileInfo,       getPathInfo,   arginfo_info_optinalFileClass, ZEND_ACC_PUBLIC)
-       SPL_ME(SplFileInfo,       openFile,      arginfo_info_openFile,         ZEND_ACC_PUBLIC)
-       SPL_ME(SplFileInfo,       setFileClass,  arginfo_info_optinalFileClass, ZEND_ACC_PUBLIC)
-       SPL_ME(SplFileInfo,       setInfoClass,  arginfo_info_optinalFileClass, ZEND_ACC_PUBLIC)
-       SPL_ME(SplFileInfo,       _bad_state_ex, arginfo_splfileinfo_void,              ZEND_ACC_PUBLIC|ZEND_ACC_FINAL)
-       SPL_MA(SplFileInfo,       __toString, SplFileInfo, getPathname, arginfo_splfileinfo___toString, ZEND_ACC_PUBLIC)
+       SPL_ME(SplFileInfo,       getFileInfo,   arginfo_class_SplFileInfo_getFileInfo, ZEND_ACC_PUBLIC)
+       SPL_ME(SplFileInfo,       getPathInfo,   arginfo_class_SplFileInfo_getPathInfo, ZEND_ACC_PUBLIC)
+       SPL_ME(SplFileInfo,       openFile,      arginfo_class_SplFileInfo_openFile,         ZEND_ACC_PUBLIC)
+       SPL_ME(SplFileInfo,       setFileClass,  arginfo_class_SplFileInfo_setFileClass, ZEND_ACC_PUBLIC)
+       SPL_ME(SplFileInfo,       setInfoClass,  arginfo_class_SplFileInfo_setInfoClass, ZEND_ACC_PUBLIC)
+       SPL_ME(SplFileInfo,       _bad_state_ex, arginfo_class_SplFileInfo__bad_state_ex,               ZEND_ACC_PUBLIC|ZEND_ACC_FINAL)
+       SPL_MA(SplFileInfo,       __toString, SplFileInfo, getPathname, arginfo_class_SplFileInfo___toString, ZEND_ACC_PUBLIC)
        PHP_FE_END
 };
 
-ZEND_BEGIN_ARG_INFO(arginfo_dir___construct, 0)
-       ZEND_ARG_INFO(0, path)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO(arginfo_dir_it_seek, 0)
-       ZEND_ARG_INFO(0, position)
-ZEND_END_ARG_INFO();
-
 /* the method table */
 /* each method can have its own parameters and visibility */
 static const zend_function_entry spl_DirectoryIterator_functions[] = {
-       SPL_ME(DirectoryIterator, __construct,   arginfo_dir___construct, ZEND_ACC_PUBLIC)
-       SPL_ME(DirectoryIterator, getFilename,   arginfo_splfileinfo_void, ZEND_ACC_PUBLIC)
-       SPL_ME(DirectoryIterator, getExtension,  arginfo_splfileinfo_void, ZEND_ACC_PUBLIC)
-       SPL_ME(DirectoryIterator, getBasename,   arginfo_optinalSuffix, ZEND_ACC_PUBLIC)
-       SPL_ME(DirectoryIterator, isDot,         arginfo_splfileinfo_void, ZEND_ACC_PUBLIC)
-       SPL_ME(DirectoryIterator, rewind,        arginfo_splfileinfo_void, ZEND_ACC_PUBLIC)
-       SPL_ME(DirectoryIterator, valid,         arginfo_splfileinfo_void, ZEND_ACC_PUBLIC)
-       SPL_ME(DirectoryIterator, key,           arginfo_splfileinfo_void, ZEND_ACC_PUBLIC)
-       SPL_ME(DirectoryIterator, current,       arginfo_splfileinfo_void, ZEND_ACC_PUBLIC)
-       SPL_ME(DirectoryIterator, next,          arginfo_splfileinfo_void, ZEND_ACC_PUBLIC)
-       SPL_ME(DirectoryIterator, seek,          arginfo_dir_it_seek, ZEND_ACC_PUBLIC)
-       SPL_MA(DirectoryIterator, __toString, DirectoryIterator, getFilename, arginfo_splfileinfo___toString, ZEND_ACC_PUBLIC)
+       SPL_ME(DirectoryIterator, __construct,   arginfo_class_DirectoryIterator___construct, ZEND_ACC_PUBLIC)
+       SPL_ME(DirectoryIterator, getFilename,   arginfo_class_DirectoryIterator_getFilename, ZEND_ACC_PUBLIC)
+       SPL_ME(DirectoryIterator, getExtension,  arginfo_class_DirectoryIterator_getExtension, ZEND_ACC_PUBLIC)
+       SPL_ME(DirectoryIterator, getBasename,   arginfo_class_DirectoryIterator_getBasename, ZEND_ACC_PUBLIC)
+       SPL_ME(DirectoryIterator, isDot,         arginfo_class_DirectoryIterator_isDot, ZEND_ACC_PUBLIC)
+       SPL_ME(DirectoryIterator, rewind,        arginfo_class_DirectoryIterator_rewind, ZEND_ACC_PUBLIC)
+       SPL_ME(DirectoryIterator, valid,         arginfo_class_DirectoryIterator_valid, ZEND_ACC_PUBLIC)
+       SPL_ME(DirectoryIterator, key,           arginfo_class_DirectoryIterator_key, ZEND_ACC_PUBLIC)
+       SPL_ME(DirectoryIterator, current,       arginfo_class_DirectoryIterator_current, ZEND_ACC_PUBLIC)
+       SPL_ME(DirectoryIterator, next,          arginfo_class_DirectoryIterator_next, ZEND_ACC_PUBLIC)
+       SPL_ME(DirectoryIterator, seek,          arginfo_class_DirectoryIterator_seek, ZEND_ACC_PUBLIC)
+       SPL_MA(DirectoryIterator, __toString, DirectoryIterator, getFilename, arginfo_class_DirectoryIterator___toString, ZEND_ACC_PUBLIC)
        PHP_FE_END
 };
 
-ZEND_BEGIN_ARG_INFO_EX(arginfo_r_dir___construct, 0, 0, 1)
-       ZEND_ARG_INFO(0, path)
-       ZEND_ARG_INFO(0, flags)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_r_dir_hasChildren, 0, 0, 0)
-       ZEND_ARG_INFO(0, allow_links)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_r_dir_setFlags, 0, 0, 0)
-       ZEND_ARG_INFO(0, flags)
-ZEND_END_ARG_INFO()
-
 static const zend_function_entry spl_FilesystemIterator_functions[] = {
-       SPL_ME(FilesystemIterator, __construct,   arginfo_r_dir___construct, ZEND_ACC_PUBLIC)
-       SPL_ME(FilesystemIterator, rewind,        arginfo_splfileinfo_void, ZEND_ACC_PUBLIC)
-       SPL_ME(DirectoryIterator,  next,          arginfo_splfileinfo_void, ZEND_ACC_PUBLIC)
-       SPL_ME(FilesystemIterator, key,           arginfo_splfileinfo_void, ZEND_ACC_PUBLIC)
-       SPL_ME(FilesystemIterator, current,       arginfo_splfileinfo_void, ZEND_ACC_PUBLIC)
-       SPL_ME(FilesystemIterator, getFlags,      arginfo_splfileinfo_void, ZEND_ACC_PUBLIC)
-       SPL_ME(FilesystemIterator, setFlags,      arginfo_r_dir_setFlags, ZEND_ACC_PUBLIC)
+       SPL_ME(FilesystemIterator, __construct,   arginfo_class_FilesystemIterator___construct, ZEND_ACC_PUBLIC)
+       SPL_ME(FilesystemIterator, rewind,        arginfo_class_FilesystemIterator_rewind, ZEND_ACC_PUBLIC)
+       SPL_ME(DirectoryIterator,  next,          arginfo_class_FilesystemIterator_next, ZEND_ACC_PUBLIC)
+       SPL_ME(FilesystemIterator, key,           arginfo_class_FilesystemIterator_key, ZEND_ACC_PUBLIC)
+       SPL_ME(FilesystemIterator, current,       arginfo_class_FilesystemIterator_current, ZEND_ACC_PUBLIC)
+       SPL_ME(FilesystemIterator, getFlags,      arginfo_class_FilesystemIterator_getFlags, ZEND_ACC_PUBLIC)
+       SPL_ME(FilesystemIterator, setFlags,      arginfo_class_FilesystemIterator_setFlags, ZEND_ACC_PUBLIC)
        PHP_FE_END
 };
 
 static const zend_function_entry spl_RecursiveDirectoryIterator_functions[] = {
-       SPL_ME(RecursiveDirectoryIterator, __construct,   arginfo_r_dir___construct, ZEND_ACC_PUBLIC)
-       SPL_ME(RecursiveDirectoryIterator, hasChildren,   arginfo_r_dir_hasChildren, ZEND_ACC_PUBLIC)
-       SPL_ME(RecursiveDirectoryIterator, getChildren,   arginfo_splfileinfo_void, ZEND_ACC_PUBLIC)
-       SPL_ME(RecursiveDirectoryIterator, getSubPath,    arginfo_splfileinfo_void, ZEND_ACC_PUBLIC)
-       SPL_ME(RecursiveDirectoryIterator, getSubPathname,arginfo_splfileinfo_void, ZEND_ACC_PUBLIC)
+       SPL_ME(RecursiveDirectoryIterator, __construct,   arginfo_class_RecursiveDirectoryIterator___construct, ZEND_ACC_PUBLIC)
+       SPL_ME(RecursiveDirectoryIterator, hasChildren,   arginfo_class_RecursiveDirectoryIterator_hasChildren, ZEND_ACC_PUBLIC)
+       SPL_ME(RecursiveDirectoryIterator, getChildren,   arginfo_class_RecursiveDirectoryIterator_getChildren, ZEND_ACC_PUBLIC)
+       SPL_ME(RecursiveDirectoryIterator, getSubPath,    arginfo_class_RecursiveDirectoryIterator_getSubPath, ZEND_ACC_PUBLIC)
+       SPL_ME(RecursiveDirectoryIterator, getSubPathname,arginfo_class_RecursiveDirectoryIterator_getSubPathname, ZEND_ACC_PUBLIC)
        PHP_FE_END
 };
 
 #ifdef HAVE_GLOB
 static const zend_function_entry spl_GlobIterator_functions[] = {
-       SPL_ME(GlobIterator, __construct,   arginfo_r_dir___construct, ZEND_ACC_PUBLIC)
-       SPL_ME(GlobIterator, count,         arginfo_splfileinfo_void,  ZEND_ACC_PUBLIC)
+       SPL_ME(GlobIterator, __construct,   arginfo_class_GlobIterator___construct, ZEND_ACC_PUBLIC)
+       SPL_ME(GlobIterator, count,         arginfo_class_GlobIterator_count,  ZEND_ACC_PUBLIC)
        PHP_FE_END
 };
 #endif
@@ -2978,110 +2932,45 @@ SPL_METHOD(SplFileObject, seek)
        }
 } /* }}} */
 
-/* {{{ Function/Class/Method definitions */
-ZEND_BEGIN_ARG_INFO_EX(arginfo_file_object___construct, 0, 0, 1)
-       ZEND_ARG_INFO(0, file_name)
-       ZEND_ARG_INFO(0, open_mode)
-       ZEND_ARG_INFO(0, use_include_path)
-       ZEND_ARG_INFO(0, context)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO(arginfo_file_object_setFlags, 0)
-       ZEND_ARG_INFO(0, flags)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO(arginfo_file_object_setMaxLineLen, 0)
-       ZEND_ARG_INFO(0, max_len)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_file_object_fgetcsv, 0, 0, 0)
-       ZEND_ARG_INFO(0, delimiter)
-       ZEND_ARG_INFO(0, enclosure)
-       ZEND_ARG_INFO(0, escape)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_file_object_fputcsv, 0, 0, 1)
-       ZEND_ARG_INFO(0, fields)
-       ZEND_ARG_INFO(0, delimiter)
-       ZEND_ARG_INFO(0, enclosure)
-       ZEND_ARG_INFO(0, escape)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_file_object_flock, 0, 0, 1)
-       ZEND_ARG_INFO(0, operation)
-       ZEND_ARG_INFO(1, wouldblock)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_file_object_fseek, 0, 0, 1)
-       ZEND_ARG_INFO(0, pos)
-       ZEND_ARG_INFO(0, whence)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_file_object_fscanf, 0, 0, 1)
-       ZEND_ARG_INFO(0, format)
-       ZEND_ARG_VARIADIC_INFO(1, vars)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_file_object_fwrite, 0, 0, 1)
-       ZEND_ARG_INFO(0, str)
-       ZEND_ARG_INFO(0, length)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_file_object_fread, 0, 0, 1)
-       ZEND_ARG_INFO(0, length)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_file_object_ftruncate, 0, 0, 1)
-       ZEND_ARG_INFO(0, size)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_file_object_seek, 0, 0, 1)
-       ZEND_ARG_INFO(0, line_pos)
-ZEND_END_ARG_INFO()
-
 static const zend_function_entry spl_SplFileObject_functions[] = {
-       SPL_ME(SplFileObject, __construct,    arginfo_file_object___construct,   ZEND_ACC_PUBLIC)
-       SPL_ME(SplFileObject, rewind,         arginfo_splfileinfo_void,          ZEND_ACC_PUBLIC)
-       SPL_ME(SplFileObject, eof,            arginfo_splfileinfo_void,          ZEND_ACC_PUBLIC)
-       SPL_ME(SplFileObject, valid,          arginfo_splfileinfo_void,          ZEND_ACC_PUBLIC)
-       SPL_ME(SplFileObject, fgets,          arginfo_splfileinfo_void,          ZEND_ACC_PUBLIC)
-       SPL_ME(SplFileObject, fgetcsv,        arginfo_file_object_fgetcsv,       ZEND_ACC_PUBLIC)
-       SPL_ME(SplFileObject, fputcsv,        arginfo_file_object_fputcsv,       ZEND_ACC_PUBLIC)
-       SPL_ME(SplFileObject, setCsvControl,  arginfo_file_object_fgetcsv,       ZEND_ACC_PUBLIC)
-       SPL_ME(SplFileObject, getCsvControl,  arginfo_splfileinfo_void,          ZEND_ACC_PUBLIC)
-       SPL_ME(SplFileObject, flock,          arginfo_file_object_flock,         ZEND_ACC_PUBLIC)
-       SPL_ME(SplFileObject, fflush,         arginfo_splfileinfo_void,          ZEND_ACC_PUBLIC)
-       SPL_ME(SplFileObject, ftell,          arginfo_splfileinfo_void,          ZEND_ACC_PUBLIC)
-       SPL_ME(SplFileObject, fseek,          arginfo_file_object_fseek,         ZEND_ACC_PUBLIC)
-       SPL_ME(SplFileObject, fgetc,          arginfo_splfileinfo_void,          ZEND_ACC_PUBLIC)
-       SPL_ME(SplFileObject, fpassthru,      arginfo_splfileinfo_void,          ZEND_ACC_PUBLIC)
-       SPL_ME(SplFileObject, fscanf,         arginfo_file_object_fscanf,        ZEND_ACC_PUBLIC)
-       SPL_ME(SplFileObject, fwrite,         arginfo_file_object_fwrite,        ZEND_ACC_PUBLIC)
-       SPL_ME(SplFileObject, fread,          arginfo_file_object_fread,         ZEND_ACC_PUBLIC)
-       SPL_ME(SplFileObject, fstat,          arginfo_splfileinfo_void,          ZEND_ACC_PUBLIC)
-       SPL_ME(SplFileObject, ftruncate,      arginfo_file_object_ftruncate,     ZEND_ACC_PUBLIC)
-       SPL_ME(SplFileObject, current,        arginfo_splfileinfo_void,          ZEND_ACC_PUBLIC)
-       SPL_ME(SplFileObject, key,            arginfo_splfileinfo_void,          ZEND_ACC_PUBLIC)
-       SPL_ME(SplFileObject, next,           arginfo_splfileinfo_void,          ZEND_ACC_PUBLIC)
-       SPL_ME(SplFileObject, setFlags,       arginfo_file_object_setFlags,      ZEND_ACC_PUBLIC)
-       SPL_ME(SplFileObject, getFlags,       arginfo_splfileinfo_void,          ZEND_ACC_PUBLIC)
-       SPL_ME(SplFileObject, setMaxLineLen,  arginfo_file_object_setMaxLineLen, ZEND_ACC_PUBLIC)
-       SPL_ME(SplFileObject, getMaxLineLen,  arginfo_splfileinfo_void,          ZEND_ACC_PUBLIC)
-       SPL_ME(SplFileObject, hasChildren,    arginfo_splfileinfo_void,          ZEND_ACC_PUBLIC)
-       SPL_ME(SplFileObject, getChildren,    arginfo_splfileinfo_void,          ZEND_ACC_PUBLIC)
-       SPL_ME(SplFileObject, seek,           arginfo_file_object_seek,          ZEND_ACC_PUBLIC)
+       SPL_ME(SplFileObject, __construct,    arginfo_class_SplFileObject___construct,   ZEND_ACC_PUBLIC)
+       SPL_ME(SplFileObject, rewind,         arginfo_class_SplFileObject_rewind,          ZEND_ACC_PUBLIC)
+       SPL_ME(SplFileObject, eof,            arginfo_class_SplFileObject_eof,          ZEND_ACC_PUBLIC)
+       SPL_ME(SplFileObject, valid,          arginfo_class_SplFileObject_valid,          ZEND_ACC_PUBLIC)
+       SPL_ME(SplFileObject, fgets,          arginfo_class_SplFileObject_fgets,          ZEND_ACC_PUBLIC)
+       SPL_ME(SplFileObject, fgetcsv,        arginfo_class_SplFileObject_fgetcsv,       ZEND_ACC_PUBLIC)
+       SPL_ME(SplFileObject, fputcsv,        arginfo_class_SplFileObject_fputcsv,       ZEND_ACC_PUBLIC)
+       SPL_ME(SplFileObject, setCsvControl,  arginfo_class_SplFileObject_setCsvControl,       ZEND_ACC_PUBLIC)
+       SPL_ME(SplFileObject, getCsvControl,  arginfo_class_SplFileObject_getCsvControl,          ZEND_ACC_PUBLIC)
+       SPL_ME(SplFileObject, flock,          arginfo_class_SplFileObject_flock,         ZEND_ACC_PUBLIC)
+       SPL_ME(SplFileObject, fflush,         arginfo_class_SplFileObject_fflush,          ZEND_ACC_PUBLIC)
+       SPL_ME(SplFileObject, ftell,          arginfo_class_SplFileObject_ftell,          ZEND_ACC_PUBLIC)
+       SPL_ME(SplFileObject, fseek,          arginfo_class_SplFileObject_fseek,         ZEND_ACC_PUBLIC)
+       SPL_ME(SplFileObject, fgetc,          arginfo_class_SplFileObject_fgetc,          ZEND_ACC_PUBLIC)
+       SPL_ME(SplFileObject, fpassthru,      arginfo_class_SplFileObject_fpassthru,          ZEND_ACC_PUBLIC)
+       SPL_ME(SplFileObject, fscanf,         arginfo_class_SplFileObject_fscanf,        ZEND_ACC_PUBLIC)
+       SPL_ME(SplFileObject, fwrite,         arginfo_class_SplFileObject_fwrite,        ZEND_ACC_PUBLIC)
+       SPL_ME(SplFileObject, fread,          arginfo_class_SplFileObject_fread,         ZEND_ACC_PUBLIC)
+       SPL_ME(SplFileObject, fstat,          arginfo_class_SplFileObject_fstat,          ZEND_ACC_PUBLIC)
+       SPL_ME(SplFileObject, ftruncate,      arginfo_class_SplFileObject_ftruncate,     ZEND_ACC_PUBLIC)
+       SPL_ME(SplFileObject, current,        arginfo_class_SplFileObject_current,          ZEND_ACC_PUBLIC)
+       SPL_ME(SplFileObject, key,            arginfo_class_SplFileObject_key,          ZEND_ACC_PUBLIC)
+       SPL_ME(SplFileObject, next,           arginfo_class_SplFileObject_next,          ZEND_ACC_PUBLIC)
+       SPL_ME(SplFileObject, setFlags,       arginfo_class_SplFileObject_setFlags,      ZEND_ACC_PUBLIC)
+       SPL_ME(SplFileObject, getFlags,       arginfo_class_SplFileObject_getFlags,          ZEND_ACC_PUBLIC)
+       SPL_ME(SplFileObject, setMaxLineLen,  arginfo_class_SplFileObject_setMaxLineLen, ZEND_ACC_PUBLIC)
+       SPL_ME(SplFileObject, getMaxLineLen,  arginfo_class_SplFileObject_getMaxLineLen,          ZEND_ACC_PUBLIC)
+       SPL_ME(SplFileObject, hasChildren,    arginfo_class_SplFileObject_hasChildren,          ZEND_ACC_PUBLIC)
+       SPL_ME(SplFileObject, getChildren,    arginfo_class_SplFileObject_getChildren,          ZEND_ACC_PUBLIC)
+       SPL_ME(SplFileObject, seek,           arginfo_class_SplFileObject_seek,          ZEND_ACC_PUBLIC)
        /* mappings */
-       SPL_MA(SplFileObject, getCurrentLine, SplFileObject, fgets,      arginfo_splfileinfo_void, ZEND_ACC_PUBLIC)
-       SPL_MA(SplFileObject, __toString,     SplFileObject, fgets,      arginfo_splfileinfo___toString, ZEND_ACC_PUBLIC)
+       SPL_MA(SplFileObject, getCurrentLine, SplFileObject, fgets,      arginfo_class_SplFileObject_getCurrentLine, ZEND_ACC_PUBLIC)
+       SPL_MA(SplFileObject, __toString,     SplFileObject, fgets,      arginfo_class_SplFileObject___toString, ZEND_ACC_PUBLIC)
        PHP_FE_END
 };
 
-ZEND_BEGIN_ARG_INFO_EX(arginfo_temp_file_object___construct, 0, 0, 0)
-       ZEND_ARG_INFO(0, max_memory)
-ZEND_END_ARG_INFO()
-
 static const zend_function_entry spl_SplTempFileObject_functions[] = {
-       SPL_ME(SplTempFileObject, __construct, arginfo_temp_file_object___construct,  ZEND_ACC_PUBLIC)
+       SPL_ME(SplTempFileObject, __construct, arginfo_class_SplTempFileObject___construct,  ZEND_ACC_PUBLIC)
        PHP_FE_END
 };
 /* }}} */
diff --git a/ext/spl/spl_directory.stub.php b/ext/spl/spl_directory.stub.php
new file mode 100755 (executable)
index 0000000..de6cda3
--- /dev/null
@@ -0,0 +1,285 @@
+<?php
+
+class SplFileInfo
+{
+    public function __construct(string $file_name) {}
+
+    /** @return string */
+    public function getPath() {}
+
+    /** @return string */
+    public function getFilename() {}
+
+    /** @return string */
+    public function getExtension() {}
+
+    /** @return string */
+    public function getBasename(string $suffix = "") {}
+
+    /** @return string|false */
+    public function getPathname() {}
+
+    /** @return int|false */
+    public function getPerms() {}
+
+    /** @return int|false */
+    public function getInode() {}
+
+    /** @return int|false */
+    public function getSize() {}
+
+    /** @return int|false */
+    public function getOwner() {}
+
+    /** @return int|false */
+    public function getGroup() {}
+
+    /** @return int|false */
+    public function getATime() {}
+
+    /** @return int|false */
+    public function getMTime() {}
+
+    /** @return int|false */
+    public function getCTime() {}
+
+    /** @return string|false */
+    public function getType() {}
+
+    /** @return bool */
+    public function isWritable() {}
+
+    /** @return bool */
+    public function isReadable() {}
+
+    /** @return bool */
+    public function isExecutable() {}
+
+    /** @return bool */
+    public function isFile() {}
+
+    /** @return bool */
+    public function isDir() {}
+
+    /** @return bool */
+    public function isLink() {}
+
+    /** @return string|false */
+    public function getLinkTarget() {}
+
+    /** @return string|false */
+    public function getRealPath() {}
+
+    /** @return SplFileInfo */
+    public function getFileInfo(string $class_name = UNKNOWN) {}
+
+    /** @return SplFileInfo|null */
+    public function getPathInfo(string $class_name = UNKNOWN) {}
+
+    /**
+     * @param resource $context
+     * @return SplFileObject
+     */
+    public function openFile(string $open_mode = 'r', bool $use_include_path = false, $context = UNKNOWN) {}
+
+    /** @return void */
+    public function setFileClass(string $class_name = SplFileObject::class) {}
+
+    /** @return void */
+    public function setInfoClass(string $class_name = SplFileInfo::class) {}
+
+    public function __toString(): string {}
+
+    final public function _bad_state_ex() {}
+}
+
+class DirectoryIterator extends SplFileInfo implements SeekableIterator
+{
+    public function __construct(string $path) {}
+
+    /** @return string */
+    public function getFilename() {}
+
+    /** @return string */
+    public function getExtension() {}
+
+    /** @return string */
+    public function getBasename(string $suffix = "") {}
+
+    /** @return bool */
+    public function isDot() {}
+
+    /** @return void */
+    public function rewind() {}
+
+    /** @return bool */
+    public function valid() {}
+
+    /** @return int|false */
+    public function key() {}
+
+    /** @return DirectoryIterator */
+    public function current() {}
+
+    /** @return void */
+    public function next() {}
+
+    /** @return void */
+    public function seek(int $position) {}
+
+    public function __toString(): string {}
+}
+
+class FilesystemIterator extends DirectoryIterator
+{
+    public function __construct(string $path, int $flags = FilesystemIterator::KEY_AS_PATHNAME | FilesystemIterator::CURRENT_AS_FILEINFO | FilesystemIterator::SKIP_DOTS) {}
+
+    /** @return void */
+    public function rewind() {}
+
+    /** @return void */
+    public function next() {}
+
+    /** @return string */
+    public function key() {}
+
+    /** @return string|SplFileInfo|self */
+    public function current() {}
+
+    /** @return int */
+    public function getFlags() {}
+
+    /** @return void */
+    public function setFlags(int $flags) {}
+}
+
+class RecursiveDirectoryIterator extends FilesystemIterator implements RecursiveIterator
+{
+    public function __construct(string $path, int $flags = FilesystemIterator::KEY_AS_PATHNAME | FilesystemIterator::CURRENT_AS_FILEINFO) {}
+
+    /** @return bool */
+    public function hasChildren(bool $allow_links = false) {}
+
+    /** @return RecursiveDirectoryIterator */
+    public function getChildren() {}
+
+    /** @return string */
+    public function getSubPath() {}
+
+    /** @return string */
+    public function getSubPathname() {}
+}
+
+class GlobIterator extends FilesystemIterator implements Countable
+{
+    public function __construct(string $path, int $flags = FilesystemIterator::KEY_AS_PATHNAME | FilesystemIterator::CURRENT_AS_FILEINFO) {}
+
+    /** @return int */
+    public function count() {}
+}
+
+class SplFileObject extends SplFileInfo implements RecursiveIterator, SeekableIterator
+{
+    /** @param resource|null $context */
+    public function __construct(string $file_name, string $open_mode = 'r', bool $use_include_path = false, $context = null) {}
+
+    /** @return void */
+    public function rewind() {}
+
+    /** @return bool */
+    public function eof() {}
+
+    /** @return bool */
+    public function valid() {}
+
+    /** @return string|false */
+    public function fgets() {}
+
+    /** @return string|false */
+    public function fread(int $length) {}
+
+    /** @return array|false */
+    public function fgetcsv(string $delimiter = ",", string $enclosure = '"', $escape = "\\") {}
+
+    /** @return int|false */
+    public function fputcsv(array $fields, string $delimiter = ',', string $enclosure = '"', string $escape = "\\") {}
+
+    /** @return null|false */
+    public function setCsvControl(string $delimiter = ",", string $enclosure = "\"", string $escape = "\\") {}
+
+    /** @return array */
+    public function getCsvControl() {}
+
+    /** @return bool */
+    public function flock(int $operation, &$wouldblock = null) {}
+
+    /** @return bool */
+    public function fflush() {}
+
+    /** @return int|false */
+    public function ftell() {}
+
+    /** @return int */
+    public function fseek(int $offset, int $whence = SEEK_SET) {}
+
+    /** @return string|false */
+    public function fgetc() {}
+
+    /** @return int */
+    public function fpassthru() {}
+
+    /**
+     * @param string $format
+     * @return array|int
+     */
+    public function fscanf(string $format, &...$params) {}
+
+    /** @return int|false */
+    public function fwrite(string $str, int $length = 0) {}
+
+    /** @return array */
+    public function fstat() {}
+
+    /** @return bool */
+    public function ftruncate(int $size) {}
+
+    /** @return string|array|false */
+    public function current() {}
+
+    /** @return int */
+    public function key() {}
+
+    /** @return void */
+    public function next() {}
+
+    /** @return void */
+    public function setFlags(int $flags) {}
+
+    /** @return int */
+    public function getFlags() {}
+
+    /** @return void */
+    public function setMaxLineLen(int $max_len) {}
+
+    /** @return int */
+    public function getMaxLineLen() {}
+
+    /** @return bool */
+    public function hasChildren() {}
+
+    /** @return null */
+    public function getChildren() {}
+
+    /** @return void */
+    public function seek(int $line_pos) {}
+
+    /** @return string|false */
+    public function getCurrentLine() {}
+
+    public function __toString(): string {}
+}
+
+class SplTempFileObject extends SplFileObject
+{
+    public function __construct(int $max_memory = 2 * 1024 * 1024) {}
+}
diff --git a/ext/spl/spl_directory_arginfo.h b/ext/spl/spl_directory_arginfo.h
new file mode 100644 (file)
index 0000000..daf1653
--- /dev/null
@@ -0,0 +1,242 @@
+/* This is a generated file, edit the .stub.php file instead. */
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SplFileInfo___construct, 0, 0, 1)
+       ZEND_ARG_TYPE_INFO(0, file_name, IS_STRING, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SplFileInfo_getPath, 0, 0, 0)
+ZEND_END_ARG_INFO()
+
+#define arginfo_class_SplFileInfo_getFilename arginfo_class_SplFileInfo_getPath
+
+#define arginfo_class_SplFileInfo_getExtension arginfo_class_SplFileInfo_getPath
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SplFileInfo_getBasename, 0, 0, 0)
+       ZEND_ARG_TYPE_INFO(0, suffix, IS_STRING, 0)
+ZEND_END_ARG_INFO()
+
+#define arginfo_class_SplFileInfo_getPathname arginfo_class_SplFileInfo_getPath
+
+#define arginfo_class_SplFileInfo_getPerms arginfo_class_SplFileInfo_getPath
+
+#define arginfo_class_SplFileInfo_getInode arginfo_class_SplFileInfo_getPath
+
+#define arginfo_class_SplFileInfo_getSize arginfo_class_SplFileInfo_getPath
+
+#define arginfo_class_SplFileInfo_getOwner arginfo_class_SplFileInfo_getPath
+
+#define arginfo_class_SplFileInfo_getGroup arginfo_class_SplFileInfo_getPath
+
+#define arginfo_class_SplFileInfo_getATime arginfo_class_SplFileInfo_getPath
+
+#define arginfo_class_SplFileInfo_getMTime arginfo_class_SplFileInfo_getPath
+
+#define arginfo_class_SplFileInfo_getCTime arginfo_class_SplFileInfo_getPath
+
+#define arginfo_class_SplFileInfo_getType arginfo_class_SplFileInfo_getPath
+
+#define arginfo_class_SplFileInfo_isWritable arginfo_class_SplFileInfo_getPath
+
+#define arginfo_class_SplFileInfo_isReadable arginfo_class_SplFileInfo_getPath
+
+#define arginfo_class_SplFileInfo_isExecutable arginfo_class_SplFileInfo_getPath
+
+#define arginfo_class_SplFileInfo_isFile arginfo_class_SplFileInfo_getPath
+
+#define arginfo_class_SplFileInfo_isDir arginfo_class_SplFileInfo_getPath
+
+#define arginfo_class_SplFileInfo_isLink arginfo_class_SplFileInfo_getPath
+
+#define arginfo_class_SplFileInfo_getLinkTarget arginfo_class_SplFileInfo_getPath
+
+#define arginfo_class_SplFileInfo_getRealPath arginfo_class_SplFileInfo_getPath
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SplFileInfo_getFileInfo, 0, 0, 0)
+       ZEND_ARG_TYPE_INFO(0, class_name, IS_STRING, 0)
+ZEND_END_ARG_INFO()
+
+#define arginfo_class_SplFileInfo_getPathInfo arginfo_class_SplFileInfo_getFileInfo
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SplFileInfo_openFile, 0, 0, 0)
+       ZEND_ARG_TYPE_INFO(0, open_mode, IS_STRING, 0)
+       ZEND_ARG_TYPE_INFO(0, use_include_path, _IS_BOOL, 0)
+       ZEND_ARG_INFO(0, context)
+ZEND_END_ARG_INFO()
+
+#define arginfo_class_SplFileInfo_setFileClass arginfo_class_SplFileInfo_getFileInfo
+
+#define arginfo_class_SplFileInfo_setInfoClass arginfo_class_SplFileInfo_getFileInfo
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_class_SplFileInfo___toString, 0, 0, IS_STRING, 0)
+ZEND_END_ARG_INFO()
+
+#define arginfo_class_SplFileInfo__bad_state_ex arginfo_class_SplFileInfo_getPath
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_class_DirectoryIterator___construct, 0, 0, 1)
+       ZEND_ARG_TYPE_INFO(0, path, IS_STRING, 0)
+ZEND_END_ARG_INFO()
+
+#define arginfo_class_DirectoryIterator_getFilename arginfo_class_SplFileInfo_getPath
+
+#define arginfo_class_DirectoryIterator_getExtension arginfo_class_SplFileInfo_getPath
+
+#define arginfo_class_DirectoryIterator_getBasename arginfo_class_SplFileInfo_getBasename
+
+#define arginfo_class_DirectoryIterator_isDot arginfo_class_SplFileInfo_getPath
+
+#define arginfo_class_DirectoryIterator_rewind arginfo_class_SplFileInfo_getPath
+
+#define arginfo_class_DirectoryIterator_valid arginfo_class_SplFileInfo_getPath
+
+#define arginfo_class_DirectoryIterator_key arginfo_class_SplFileInfo_getPath
+
+#define arginfo_class_DirectoryIterator_current arginfo_class_SplFileInfo_getPath
+
+#define arginfo_class_DirectoryIterator_next arginfo_class_SplFileInfo_getPath
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_class_DirectoryIterator_seek, 0, 0, 1)
+       ZEND_ARG_TYPE_INFO(0, position, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+
+#define arginfo_class_DirectoryIterator___toString arginfo_class_SplFileInfo___toString
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_class_FilesystemIterator___construct, 0, 0, 1)
+       ZEND_ARG_TYPE_INFO(0, path, IS_STRING, 0)
+       ZEND_ARG_TYPE_INFO(0, flags, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+
+#define arginfo_class_FilesystemIterator_rewind arginfo_class_SplFileInfo_getPath
+
+#define arginfo_class_FilesystemIterator_next arginfo_class_SplFileInfo_getPath
+
+#define arginfo_class_FilesystemIterator_key arginfo_class_SplFileInfo_getPath
+
+#define arginfo_class_FilesystemIterator_current arginfo_class_SplFileInfo_getPath
+
+#define arginfo_class_FilesystemIterator_getFlags arginfo_class_SplFileInfo_getPath
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_class_FilesystemIterator_setFlags, 0, 0, 1)
+       ZEND_ARG_TYPE_INFO(0, flags, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+
+#define arginfo_class_RecursiveDirectoryIterator___construct arginfo_class_FilesystemIterator___construct
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_class_RecursiveDirectoryIterator_hasChildren, 0, 0, 0)
+       ZEND_ARG_TYPE_INFO(0, allow_links, _IS_BOOL, 0)
+ZEND_END_ARG_INFO()
+
+#define arginfo_class_RecursiveDirectoryIterator_getChildren arginfo_class_SplFileInfo_getPath
+
+#define arginfo_class_RecursiveDirectoryIterator_getSubPath arginfo_class_SplFileInfo_getPath
+
+#define arginfo_class_RecursiveDirectoryIterator_getSubPathname arginfo_class_SplFileInfo_getPath
+
+#define arginfo_class_GlobIterator___construct arginfo_class_FilesystemIterator___construct
+
+#define arginfo_class_GlobIterator_count arginfo_class_SplFileInfo_getPath
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SplFileObject___construct, 0, 0, 1)
+       ZEND_ARG_TYPE_INFO(0, file_name, IS_STRING, 0)
+       ZEND_ARG_TYPE_INFO(0, open_mode, IS_STRING, 0)
+       ZEND_ARG_TYPE_INFO(0, use_include_path, _IS_BOOL, 0)
+       ZEND_ARG_INFO(0, context)
+ZEND_END_ARG_INFO()
+
+#define arginfo_class_SplFileObject_rewind arginfo_class_SplFileInfo_getPath
+
+#define arginfo_class_SplFileObject_eof arginfo_class_SplFileInfo_getPath
+
+#define arginfo_class_SplFileObject_valid arginfo_class_SplFileInfo_getPath
+
+#define arginfo_class_SplFileObject_fgets arginfo_class_SplFileInfo_getPath
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SplFileObject_fread, 0, 0, 1)
+       ZEND_ARG_TYPE_INFO(0, length, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SplFileObject_fgetcsv, 0, 0, 0)
+       ZEND_ARG_TYPE_INFO(0, delimiter, IS_STRING, 0)
+       ZEND_ARG_TYPE_INFO(0, enclosure, IS_STRING, 0)
+       ZEND_ARG_INFO(0, escape)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SplFileObject_fputcsv, 0, 0, 1)
+       ZEND_ARG_TYPE_INFO(0, fields, IS_ARRAY, 0)
+       ZEND_ARG_TYPE_INFO(0, delimiter, IS_STRING, 0)
+       ZEND_ARG_TYPE_INFO(0, enclosure, IS_STRING, 0)
+       ZEND_ARG_TYPE_INFO(0, escape, IS_STRING, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SplFileObject_setCsvControl, 0, 0, 0)
+       ZEND_ARG_TYPE_INFO(0, delimiter, IS_STRING, 0)
+       ZEND_ARG_TYPE_INFO(0, enclosure, IS_STRING, 0)
+       ZEND_ARG_TYPE_INFO(0, escape, IS_STRING, 0)
+ZEND_END_ARG_INFO()
+
+#define arginfo_class_SplFileObject_getCsvControl arginfo_class_SplFileInfo_getPath
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SplFileObject_flock, 0, 0, 1)
+       ZEND_ARG_TYPE_INFO(0, operation, IS_LONG, 0)
+       ZEND_ARG_INFO(1, wouldblock)
+ZEND_END_ARG_INFO()
+
+#define arginfo_class_SplFileObject_fflush arginfo_class_SplFileInfo_getPath
+
+#define arginfo_class_SplFileObject_ftell arginfo_class_SplFileInfo_getPath
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SplFileObject_fseek, 0, 0, 1)
+       ZEND_ARG_TYPE_INFO(0, offset, IS_LONG, 0)
+       ZEND_ARG_TYPE_INFO(0, whence, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+
+#define arginfo_class_SplFileObject_fgetc arginfo_class_SplFileInfo_getPath
+
+#define arginfo_class_SplFileObject_fpassthru arginfo_class_SplFileInfo_getPath
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SplFileObject_fscanf, 0, 0, 1)
+       ZEND_ARG_TYPE_INFO(0, format, IS_STRING, 0)
+       ZEND_ARG_VARIADIC_INFO(1, params)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SplFileObject_fwrite, 0, 0, 1)
+       ZEND_ARG_TYPE_INFO(0, str, IS_STRING, 0)
+       ZEND_ARG_TYPE_INFO(0, length, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+
+#define arginfo_class_SplFileObject_fstat arginfo_class_SplFileInfo_getPath
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SplFileObject_ftruncate, 0, 0, 1)
+       ZEND_ARG_TYPE_INFO(0, size, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+
+#define arginfo_class_SplFileObject_current arginfo_class_SplFileInfo_getPath
+
+#define arginfo_class_SplFileObject_key arginfo_class_SplFileInfo_getPath
+
+#define arginfo_class_SplFileObject_next arginfo_class_SplFileInfo_getPath
+
+#define arginfo_class_SplFileObject_setFlags arginfo_class_FilesystemIterator_setFlags
+
+#define arginfo_class_SplFileObject_getFlags arginfo_class_SplFileInfo_getPath
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SplFileObject_setMaxLineLen, 0, 0, 1)
+       ZEND_ARG_TYPE_INFO(0, max_len, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+
+#define arginfo_class_SplFileObject_getMaxLineLen arginfo_class_SplFileInfo_getPath
+
+#define arginfo_class_SplFileObject_hasChildren arginfo_class_SplFileInfo_getPath
+
+#define arginfo_class_SplFileObject_getChildren arginfo_class_SplFileInfo_getPath
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SplFileObject_seek, 0, 0, 1)
+       ZEND_ARG_TYPE_INFO(0, line_pos, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+
+#define arginfo_class_SplFileObject_getCurrentLine arginfo_class_SplFileInfo_getPath
+
+#define arginfo_class_SplFileObject___toString arginfo_class_SplFileInfo___toString
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SplTempFileObject___construct, 0, 0, 0)
+       ZEND_ARG_TYPE_INFO(0, max_memory, IS_LONG, 0)
+ZEND_END_ARG_INFO()