I don't like int32_t because 

1) it is defined in ICU.

2) I will need to rewrite a lot of existing functions to use int32_t instead
of int.

Thanks. Dmitry.

> -----Original Message-----
> From: Andi Gutmans [mailto:[EMAIL PROTECTED] 
> Sent: Tuesday, February 21, 2006 9:26 AM
> To: Andrei Zmievski; Dmitry Stogov
> Cc: php-i18n@lists.php.net
> Subject: Re: [PHP-I18N] Ideas for a portable string api
> 
> 
> Is there a reason why?
> We usually just use int/uint almost anywhere... Then again I don't 
> really care because 32bit should be plenty (famous last 
> words) for strings....
> 
> Andi
> 
> At 10:16 PM 2/20/2006, Andrei Zmievski wrote:
> >I prefer to use fixed integer type, int32_t.
> >
> >-Andrei
> >
> >
> >On Feb 20, 2006, at 11:11 AM, Dmitry Stogov wrote:
> >
> >>Hi Andrei,
> >>
> >>We decide to use the same type for str.len (now int) and 
> ustr.len (now 
> >>int32_t, it comes from ICU).
> >>
> >>I prefer to make both of them - int.
> >>Any reclaims? I plan to do it at Thursday.
> >>
> >>Thanks. Dmitry.
> >>
> >>>-----Original Message-----
> >>>From: Dmitry Stogov [mailto:[EMAIL PROTECTED]
> >>>Sent: Thursday, February 16, 2006 12:12 PM
> >>>To: php-i18n@lists.php.net
> >>>Subject: RE: [PHP-I18N] Ideas for a portable string api
> >>>
> >>>
> >>>Hi,
> >>>
> >>>After reviewing Marcus ideas, some experiments and speaking with 
> >>>Andrei. I propose the following solutions:
> >>>
> >>>1) We will not use any kind of unicode literals in C code 
> (no L"foo" 
> >>>no "f\0o\0o\0\0"), Because L"" is not portable and "f\0.." 
> looks to 
> >>>ugly.
> >>>
> >>>2) We will change "zval" structure to make 
> "zval.value.str.len" and 
> >>>"zval.value.ustr.len" of the same type. This will allow optimize 
> >>>Z_UNISTR() and Z_UNILEN() macros. They will
> >>>
> >>>#define Z_UNISTR(z)  ((void*)(Z_STRVAL(z)))
> >>>#define Z_UNILEN(z)  ((void*)(Z_STRLEN(z)))
> >>>
> >>>Instead of
> >>>
> >>>#define Z_UNISTR(z)
> >>>Z_TYPE(z)==IS_UNICODE?(char*)Z_USTRVAL(z):Z_STRVAL(z)
> >>>#define Z_UNILEN(z)
> >>>Z_TYPE(z)==IS_UNICODE?(int)Z_USTRLEN(z):Z_STRLEN(z)
> >>>
> >>>3)  I don't like to break source compatibility with 
> modification of 
> >>>"zval" layout as Marcus suggested. We will pass 
> string/unicode values 
> >>>near in the same way as do today. As three values - 
> zend_uchar type, 
> >>>void* str, int len. But we will create a set of the 
> following macros 
> >>>to do it with less overhead.
> >>>
> >>>#define S_TYPE(x)               _type_##x
> >>>#define S_UNIVAL(x)             _val_##x
> >>>#define S_UNILEN(x)             _len_##x
> >>>#define S_STRVAL(x)             ((char*)S_UNIVAL(x))
> >>>#define S_USTRVAL(x)            ((UChar*)S_UNIVAL(x))
> >>>#define S_STRLEN(x)             S_UNILEN(x)
> >>>#define S_USTRLEN(x)            S_UNILEN(x)
> >>>
> >>>#define S_ARG(x)                zend_uchar S_TYPE(x), void
> >>>*S_UNIVAL(x), int
> >>>S_UNILEN(x)
> >>>
> >>>#define S_PASS(x)               S_TYPE(x), S_UNIVAL(x), S_UNILEN(x)
> >>>
> >>>#define Z_STR_PASS(x)           Z_TYPE(x), Z_UNIVAL(x), Z_UNILEN(x)
> >>>#define Z_STR_PASS_P(x) Z_TYPE_P(x), Z_UNIVAL_P(x),
> >>>Z_UNILEN_P(x)
> >>>#define Z_STR_PASS_PP(x)        Z_TYPE_PP(x), Z_UNIVAL_PP(x),
> >>>Z_UNILEN_PP(x)
> >>>
> >>>Then most zend_u_... Functions must be rewriten with these macros
> >>>
> >>>Foe example:
> >>>
> >>>ZEND_API int zend_u_lookup_class(S_ARG(name), 
> zend_class_entry ***ce
> >>>TSRMLS_DC)
> >>>{
> >>>         return zend_u_lookup_class_ex(S_PASS(name), 1, ce 
> >>>TSRMLS_CC); }
> >>>
> >>>Instead of
> >>>
> >>>ZEND_API int zend_u_lookup_class(zend_uchar type, void *name, int 
> >>>name_length, zend_class_entry ***ce TSRMLS_DC) {
> >>>         return zend_u_lookup_class_ex(type, name, 
> name_length, 1, ce 
> >>>TSRMLS_CC); }
> >>>
> >>>Any objections, additions?
> >>>
> >>>Thanks. Dmitry.
> >>>
> >>>--
> >>>PHP Unicode & I18N Mailing List (http://www.php.net/)
> >>>To unsubscribe, visit: http://www.php.net/unsub.php
> >>>
> >>>
> >
> >--
> >PHP Unicode & I18N Mailing List (http://www.php.net/)
> >To unsubscribe, visit: http://www.php.net/unsub.php
> 
> 
> 



--
PHP Unicode & I18N Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to