1 /* 2 +----------------------------------------------------------------------+ 3 | PHP Version 5 | 4 +----------------------------------------------------------------------+ 5 | This source file is subject to version 3.01 of the PHP license, | 6 | that is bundled with this package in the file LICENSE, and is | 7 | available through the world-wide-web at the following url: | 8 | http://www.php.net/license/3_01.txt | 9 | If you did not receive a copy of the PHP license and are unable to | 10 | obtain it through the world-wide-web, please send a note to | 11 | license@php.net so we can mail you a copy immediately. | 12 +----------------------------------------------------------------------+ 13 | Authors: Gustavo Lopes <cataphract@netcabo.pt> | 14 +----------------------------------------------------------------------+ 15 */ 16 17 #ifndef TIMEZONE_CLASS_H 18 #define TIMEZONE_CLASS_H 19 20 //redefinition of inline in PHP headers causes problems, so include this before 21 #include <math.h> 22 23 //fixes the build on windows for old versions of ICU 24 #include <stdio.h> 25 26 #include <php.h> 27 #include "intl_error.h" 28 #include "intl_data.h" 29 30 #ifndef USE_TIMEZONE_POINTER 31 typedef void TimeZone; 32 #endif 33 34 typedef struct { 35 zend_object zo; 36 37 // error handling 38 intl_error err; 39 40 // ICU TimeZone 41 const TimeZone *utimezone; 42 43 //whether to delete the timezone on object free 44 zend_bool should_delete; 45 } TimeZone_object; 46 47 #define TIMEZONE_ERROR(to) (to)->err 48 #define TIMEZONE_ERROR_P(to) &(TIMEZONE_ERROR(to)) 49 50 #define TIMEZONE_ERROR_CODE(co) INTL_ERROR_CODE(TIMEZONE_ERROR(to)) 51 #define TIMEZONE_ERROR_CODE_P(co) &(INTL_ERROR_CODE(TIMEZONE_ERROR(to))) 52 53 #define TIMEZONE_METHOD_INIT_VARS INTL_METHOD_INIT_VARS(TimeZone, to) 54 #define TIMEZONE_METHOD_FETCH_OBJECT_NO_CHECK INTL_METHOD_FETCH_OBJECT(TimeZone, to) 55 #define TIMEZONE_METHOD_FETCH_OBJECT\ 56 TIMEZONE_METHOD_FETCH_OBJECT_NO_CHECK; \ 57 if (to->utimezone == NULL) { \ 58 intl_errors_set(&to->err, U_ILLEGAL_ARGUMENT_ERROR, "Found unconstructed IntlTimeZone", 0 TSRMLS_CC); \ 59 RETURN_FALSE; \ 60 } 61 62 zval *timezone_convert_to_datetimezone(const TimeZone *timeZone, intl_error *outside_error, const char *func TSRMLS_DC); 63 TimeZone *timezone_process_timezone_argument(zval **zv_timezone, intl_error *error, const char *func TSRMLS_DC); 64 65 void timezone_object_construct(const TimeZone *zone, zval *object, int owned TSRMLS_DC); 66 67 void timezone_register_IntlTimeZone_class(TSRMLS_D); 68 69 extern zend_class_entry *TimeZone_ce_ptr; 70 extern zend_object_handlers TimeZone_handlers; 71 72 #endif /* #ifndef TIMEZONE_CLASS_H */ 73