Return to php_date.h CVS log | Up to [ELWIX - Embedded LightWeight unIX -] / embedaddon / php / ext / date |
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 */