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@php.net> | 14 +----------------------------------------------------------------------+ 15 */ 16 17 #ifndef BREAKITERATOR_CLASS_H 18 #define BREAKITERATOR_CLASS_H 19 20 //redefinition of inline in PHP headers causes problems, so include this before 21 #include <math.h> 22 23 #include <php.h> 24 #include "../intl_error.h" 25 #include "../intl_data.h" 26 27 #ifndef USE_BREAKITERATOR_POINTER 28 typedef void BreakIterator; 29 #endif 30 31 typedef struct { 32 zend_object zo; 33 34 // error handling 35 intl_error err; 36 37 // ICU break iterator 38 BreakIterator* biter; 39 40 // current text 41 zval *text; 42 } BreakIterator_object; 43 44 #define BREAKITER_ERROR(bio) (bio)->err 45 #define BREAKITER_ERROR_P(bio) &(BREAKITER_ERROR(bio)) 46 47 #define BREAKITER_ERROR_CODE(bio) INTL_ERROR_CODE(BREAKITER_ERROR(bio)) 48 #define BREAKITER_ERROR_CODE_P(bio) &(INTL_ERROR_CODE(BREAKITER_ERROR(bio))) 49 50 #define BREAKITER_METHOD_INIT_VARS INTL_METHOD_INIT_VARS(BreakIterator, bio) 51 #define BREAKITER_METHOD_FETCH_OBJECT_NO_CHECK INTL_METHOD_FETCH_OBJECT(BreakIterator, bio) 52 #define BREAKITER_METHOD_FETCH_OBJECT \ 53 BREAKITER_METHOD_FETCH_OBJECT_NO_CHECK; \ 54 if (bio->biter == NULL) \ 55 { \ 56 intl_errors_set(&bio->err, U_ILLEGAL_ARGUMENT_ERROR, "Found unconstructed BreakIterator", 0 TSRMLS_CC); \ 57 RETURN_FALSE; \ 58 } 59 60 void breakiterator_object_create(zval *object, BreakIterator *break_iter TSRMLS_DC); 61 62 void breakiterator_object_construct(zval *object, BreakIterator *break_iter TSRMLS_DC); 63 64 void breakiterator_register_BreakIterator_class(TSRMLS_D); 65 66 extern zend_class_entry *BreakIterator_ce_ptr, 67 *RuleBasedBreakIterator_ce_ptr; 68 69 extern zend_object_handlers BreakIterator_handlers; 70 71 #endif /* #ifndef BREAKITERATOR_CLASS_H */ 72