Annotation of embedaddon/php/ext/spl/spl_directory.h, revision 1.1

1.1     ! misho       1: /*
        !             2:    +----------------------------------------------------------------------+
        !             3:    | PHP Version 5                                                        |
        !             4:    +----------------------------------------------------------------------+
        !             5:    | Copyright (c) 1997-2012 The PHP Group                                |
        !             6:    +----------------------------------------------------------------------+
        !             7:    | This source file is subject to version 3.01 of the PHP license,      |
        !             8:    | that is bundled with this package in the file LICENSE, and is        |
        !             9:    | available through the world-wide-web at the following url:           |
        !            10:    | http://www.php.net/license/3_01.txt                                  |
        !            11:    | If you did not receive a copy of the PHP license and are unable to   |
        !            12:    | obtain it through the world-wide-web, please send a note to          |
        !            13:    | license@php.net so we can mail you a copy immediately.               |
        !            14:    +----------------------------------------------------------------------+
        !            15:    | Authors: Marcus Boerger <helly@php.net>                              |
        !            16:    +----------------------------------------------------------------------+
        !            17:  */
        !            18: 
        !            19: /* $Id: spl_directory.h 321634 2012-01-01 13:15:04Z felipe $ */
        !            20: 
        !            21: #ifndef SPL_DIRECTORY_H
        !            22: #define SPL_DIRECTORY_H
        !            23: 
        !            24: #include "php.h"
        !            25: #include "php_spl.h"
        !            26: 
        !            27: extern PHPAPI zend_class_entry *spl_ce_SplFileInfo;
        !            28: extern PHPAPI zend_class_entry *spl_ce_DirectoryIterator;
        !            29: extern PHPAPI zend_class_entry *spl_ce_FilesystemIterator;
        !            30: extern PHPAPI zend_class_entry *spl_ce_RecursiveDirectoryIterator;
        !            31: extern PHPAPI zend_class_entry *spl_ce_GlobIterator;
        !            32: extern PHPAPI zend_class_entry *spl_ce_SplFileObject;
        !            33: extern PHPAPI zend_class_entry *spl_ce_SplTempFileObject;
        !            34: 
        !            35: PHP_MINIT_FUNCTION(spl_directory);
        !            36: 
        !            37: typedef enum {
        !            38:        SPL_FS_INFO, /* must be 0 */
        !            39:        SPL_FS_DIR,
        !            40:        SPL_FS_FILE
        !            41: } SPL_FS_OBJ_TYPE;
        !            42: 
        !            43: typedef struct _spl_filesystem_object  spl_filesystem_object;
        !            44: 
        !            45: typedef void (*spl_foreign_dtor_t)(spl_filesystem_object *object TSRMLS_DC);
        !            46: typedef void (*spl_foreign_clone_t)(spl_filesystem_object *src, spl_filesystem_object *dst TSRMLS_DC);
        !            47: 
        !            48: PHPAPI char* spl_filesystem_object_get_path(spl_filesystem_object *intern, int *len TSRMLS_DC);
        !            49: 
        !            50: typedef struct _spl_other_handler {
        !            51:        spl_foreign_dtor_t     dtor;
        !            52:        spl_foreign_clone_t    clone;
        !            53: } spl_other_handler;
        !            54: 
        !            55: /* define an overloaded iterator structure */
        !            56: typedef struct {
        !            57:        zend_object_iterator  intern;
        !            58:        zval                  *current;
        !            59:        spl_filesystem_object *object;
        !            60: } spl_filesystem_iterator;
        !            61: 
        !            62: struct _spl_filesystem_object {
        !            63:        zend_object        std;
        !            64:        void               *oth;
        !            65:        spl_other_handler  *oth_handler;
        !            66:        char               *_path;
        !            67:        int                _path_len;
        !            68:        char               *orig_path;
        !            69:        char               *file_name;
        !            70:        int                file_name_len;
        !            71:        SPL_FS_OBJ_TYPE    type;
        !            72:        long               flags;
        !            73:        zend_class_entry   *file_class;
        !            74:        zend_class_entry   *info_class;
        !            75:        union {
        !            76:                struct {
        !            77:                        php_stream         *dirp;
        !            78:                        php_stream_dirent  entry;
        !            79:                        char               *sub_path;
        !            80:                        int                sub_path_len;
        !            81:                        int                index;
        !            82:                        int                is_recursive;
        !            83:                        zend_function      *func_rewind;
        !            84:                        zend_function      *func_next;
        !            85:                        zend_function      *func_valid;
        !            86:                } dir;
        !            87:                struct {
        !            88:                        php_stream         *stream;
        !            89:                        php_stream_context *context;
        !            90:                        zval               *zcontext;
        !            91:                        char               *open_mode;
        !            92:                        int                open_mode_len;
        !            93:                        zval               *current_zval;
        !            94:                        char               *current_line;
        !            95:                        size_t             current_line_len;
        !            96:                        size_t             max_line_len;
        !            97:                        long               current_line_num;
        !            98:                        zval               zresource;
        !            99:                        zend_function      *func_getCurr;
        !           100:                        char               delimiter;
        !           101:                        char               enclosure;
        !           102:                        char               escape;
        !           103:                } file;
        !           104:        } u;
        !           105:        spl_filesystem_iterator    it;
        !           106: };
        !           107: 
        !           108: static inline spl_filesystem_iterator* spl_filesystem_object_to_iterator(spl_filesystem_object *obj)
        !           109: {
        !           110:        return &obj->it;
        !           111: }
        !           112: 
        !           113: static inline spl_filesystem_object* spl_filesystem_iterator_to_object(spl_filesystem_iterator *it)
        !           114: {
        !           115:        return (spl_filesystem_object*)((char*)it - XtOffsetOf(spl_filesystem_object, it));
        !           116: }
        !           117: 
        !           118: #define SPL_FILE_OBJECT_DROP_NEW_LINE      0x00000001 /* drop new lines */
        !           119: #define SPL_FILE_OBJECT_READ_AHEAD         0x00000002 /* read on rewind/next */
        !           120: #define SPL_FILE_OBJECT_SKIP_EMPTY         0x00000004 /* skip empty lines */
        !           121: #define SPL_FILE_OBJECT_READ_CSV           0x00000008 /* read via fgetcsv */
        !           122: #define SPL_FILE_OBJECT_MASK               0x0000000F /* read via fgetcsv */
        !           123: 
        !           124: #define SPL_FILE_DIR_CURRENT_AS_FILEINFO   0x00000000 /* make RecursiveDirectoryTree::current() return SplFileInfo */
        !           125: #define SPL_FILE_DIR_CURRENT_AS_SELF       0x00000010 /* make RecursiveDirectoryTree::current() return getSelf() */
        !           126: #define SPL_FILE_DIR_CURRENT_AS_PATHNAME   0x00000020 /* make RecursiveDirectoryTree::current() return getPathname() */
        !           127: #define SPL_FILE_DIR_CURRENT_MODE_MASK     0x000000F0 /* mask RecursiveDirectoryTree::current() */
        !           128: #define SPL_FILE_DIR_CURRENT(intern,mode)  ((intern->flags&SPL_FILE_DIR_CURRENT_MODE_MASK)==mode)
        !           129: 
        !           130: #define SPL_FILE_DIR_KEY_AS_PATHNAME       0x00000000 /* make RecursiveDirectoryTree::key() return getPathname() */
        !           131: #define SPL_FILE_DIR_KEY_AS_FILENAME       0x00000100 /* make RecursiveDirectoryTree::key() return getFilename() */
        !           132: #define SPL_FILE_DIR_FOLLOW_SYMLINKS       0x00000200 /* make RecursiveDirectoryTree::hasChildren() follow symlinks */
        !           133: #define SPL_FILE_DIR_KEY_MODE_MASK         0x00000F00 /* mask RecursiveDirectoryTree::key() */
        !           134: #define SPL_FILE_DIR_KEY(intern,mode)      ((intern->flags&SPL_FILE_DIR_KEY_MODE_MASK)==mode)
        !           135: 
        !           136: #define SPL_FILE_DIR_SKIPDOTS              0x00001000 /* Tells whether it should skip dots or not */
        !           137: #define SPL_FILE_DIR_UNIXPATHS             0x00002000 /* Whether to unixify path separators */
        !           138: #define SPL_FILE_DIR_OTHERS_MASK           0x00003000 /* mask used for get/setFlags */
        !           139: 
        !           140: #endif /* SPL_DIRECTORY_H */
        !           141: 
        !           142: /*
        !           143:  * Local Variables:
        !           144:  * c-basic-offset: 4
        !           145:  * tab-width: 4
        !           146:  * End:
        !           147:  * vim600: fdm=marker
        !           148:  * vim: noet sw=4 ts=4
        !           149:  */

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>