Annotation of embedaddon/php/ext/date/php_date.h, revision 1.1.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: Derick Rethans <derick@derickrethans.nl>                    |
                     16:    +----------------------------------------------------------------------+
                     17: */
                     18: 
                     19: /* $Id: php_date.h 321634 2012-01-01 13:15:04Z felipe $ */
                     20: 
                     21: #ifndef PHP_DATE_H
                     22: #define PHP_DATE_H
                     23: 
                     24: #include "lib/timelib.h"
                     25: #include "Zend/zend_hash.h"
                     26: 
                     27: extern zend_module_entry date_module_entry;
                     28: #define phpext_date_ptr &date_module_entry
                     29: 
                     30: PHP_FUNCTION(date);
                     31: PHP_FUNCTION(idate);
                     32: PHP_FUNCTION(gmdate);
                     33: PHP_FUNCTION(strtotime);
                     34: 
                     35: PHP_FUNCTION(mktime);
                     36: PHP_FUNCTION(gmmktime);
                     37: 
                     38: PHP_FUNCTION(checkdate);
                     39: 
                     40: #ifdef HAVE_STRFTIME
                     41: PHP_FUNCTION(strftime);
                     42: PHP_FUNCTION(gmstrftime);
                     43: #endif
                     44: 
                     45: PHP_FUNCTION(time);
                     46: PHP_FUNCTION(localtime);
                     47: PHP_FUNCTION(getdate);
                     48: 
                     49: /* Advanced Interface */
                     50: PHP_METHOD(DateTime, __construct);
                     51: PHP_METHOD(DateTime, __wakeup);
                     52: PHP_METHOD(DateTime, __set_state);
                     53: PHP_FUNCTION(date_create);
                     54: PHP_FUNCTION(date_create_from_format);
                     55: PHP_FUNCTION(date_parse);
                     56: PHP_FUNCTION(date_parse_from_format);
                     57: PHP_FUNCTION(date_get_last_errors);
                     58: PHP_FUNCTION(date_format);
                     59: PHP_FUNCTION(date_modify);
                     60: PHP_FUNCTION(date_add);
                     61: PHP_FUNCTION(date_sub);
                     62: PHP_FUNCTION(date_timezone_get);
                     63: PHP_FUNCTION(date_timezone_set);
                     64: PHP_FUNCTION(date_offset_get);
                     65: PHP_FUNCTION(date_diff);
                     66: 
                     67: PHP_FUNCTION(date_time_set);
                     68: PHP_FUNCTION(date_date_set);
                     69: PHP_FUNCTION(date_isodate_set);
                     70: PHP_FUNCTION(date_timestamp_set);
                     71: PHP_FUNCTION(date_timestamp_get);
                     72: 
                     73: PHP_METHOD(DateTimeZone, __construct);
                     74: PHP_FUNCTION(timezone_open);
                     75: PHP_FUNCTION(timezone_name_get);
                     76: PHP_FUNCTION(timezone_name_from_abbr);
                     77: PHP_FUNCTION(timezone_offset_get);
                     78: PHP_FUNCTION(timezone_transitions_get);
                     79: PHP_FUNCTION(timezone_location_get);
                     80: PHP_FUNCTION(timezone_identifiers_list);
                     81: PHP_FUNCTION(timezone_abbreviations_list);
                     82: PHP_FUNCTION(timezone_version_get);
                     83: 
                     84: PHP_METHOD(DateInterval, __construct);
                     85: PHP_METHOD(DateInterval, __wakeup);
                     86: PHP_METHOD(DateInterval, __set_state);
                     87: PHP_FUNCTION(date_interval_format);
                     88: PHP_FUNCTION(date_interval_create_from_date_string);
                     89: 
                     90: PHP_METHOD(DatePeriod, __construct);
                     91: 
                     92: /* Options and Configuration */
                     93: PHP_FUNCTION(date_default_timezone_set);
                     94: PHP_FUNCTION(date_default_timezone_get);
                     95: 
                     96: /* Astro functions */
                     97: PHP_FUNCTION(date_sunrise);
                     98: PHP_FUNCTION(date_sunset);
                     99: PHP_FUNCTION(date_sun_info);
                    100: 
                    101: PHP_RINIT_FUNCTION(date);
                    102: PHP_RSHUTDOWN_FUNCTION(date);
                    103: PHP_MINIT_FUNCTION(date);
                    104: PHP_MSHUTDOWN_FUNCTION(date);
                    105: PHP_MINFO_FUNCTION(date);
                    106: 
                    107: typedef struct _php_date_obj php_date_obj;
                    108: typedef struct _php_timezone_obj php_timezone_obj;
                    109: typedef struct _php_interval_obj php_interval_obj;
                    110: typedef struct _php_period_obj php_period_obj;
                    111: 
                    112: struct _php_date_obj {
                    113:        zend_object   std;
                    114:        timelib_time *time;
                    115:        HashTable    *props;
                    116: };
                    117: 
                    118: struct _php_timezone_obj {
                    119:        zend_object     std;
                    120:        int             initialized;
                    121:        int             type;
                    122:        union {
                    123:                timelib_tzinfo *tz; /* TIMELIB_ZONETYPE_ID; */
                    124:                timelib_sll     utc_offset; /* TIMELIB_ZONETYPE_OFFSET */
                    125:                struct                      /* TIMELIB_ZONETYPE_ABBR */
                    126:                {
                    127:                        timelib_sll  utc_offset;
                    128:                        char        *abbr;
                    129:                        int          dst;
                    130:                } z;
                    131:        } tzi;
                    132: };
                    133: 
                    134: struct _php_interval_obj {
                    135:        zend_object       std;
                    136:        timelib_rel_time *diff;
                    137:        HashTable        *props;
                    138:        int               initialized;
                    139: };
                    140: 
                    141: struct _php_period_obj {
                    142:        zend_object       std;
                    143:        timelib_time     *start;
                    144:        timelib_time     *current;
                    145:        timelib_time     *end;
                    146:        timelib_rel_time *interval;
                    147:        int               recurrences;
                    148:        int               initialized;
                    149:        int               include_start_date;
                    150: };
                    151: 
                    152: ZEND_BEGIN_MODULE_GLOBALS(date)
                    153:        char      *default_timezone;
                    154:        char      *timezone;
                    155:        HashTable *tzcache;
                    156:        timelib_error_container *last_errors;
                    157: ZEND_END_MODULE_GLOBALS(date)
                    158: 
                    159: #ifdef ZTS
                    160: #define DATEG(v) TSRMG(date_globals_id, zend_date_globals *, v)
                    161: #else
                    162: #define DATEG(v) (date_globals.v)
                    163: #endif
                    164: 
                    165: /* Backwards compability wrapper */
                    166: PHPAPI signed long php_parse_date(char *string, signed long *now);
                    167: PHPAPI void php_mktime(INTERNAL_FUNCTION_PARAMETERS, int gmt);
                    168: PHPAPI int php_idate(char format, time_t ts, int localtime);
                    169: #if HAVE_STRFTIME
                    170: #define _php_strftime php_strftime
                    171: PHPAPI void php_strftime(INTERNAL_FUNCTION_PARAMETERS, int gm);
                    172: #endif
                    173: PHPAPI char *php_format_date(char *format, int format_len, time_t ts, int localtime TSRMLS_DC);
                    174: 
                    175: /* Mechanism to set new TZ database */
                    176: PHPAPI void php_date_set_tzdb(timelib_tzdb *tzdb);
                    177: PHPAPI timelib_tzinfo *get_timezone_info(TSRMLS_D);
                    178: 
                    179: /* Grabbing CE's so that other exts can use the date objects too */
                    180: PHPAPI zend_class_entry *php_date_get_date_ce(void);
                    181: PHPAPI zend_class_entry *php_date_get_timezone_ce(void);
                    182: 
                    183: /* Functions for creating DateTime objects, and initializing them from a string */
                    184: PHPAPI zval *php_date_instantiate(zend_class_entry *pce, zval *object TSRMLS_DC);
                    185: PHPAPI int php_date_initialize(php_date_obj *dateobj, /*const*/ char *time_str, int time_str_len, char *format, zval *timezone_object, int ctor TSRMLS_DC);
                    186: 
                    187: 
                    188: #endif /* PHP_DATE_H */

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