Mercurial > projects > dwt2
changeset 115:b31c27b8e86d
Added Phobos implementation of java.lang.String.firstCodePoint.
author | Jacob Carlborg <doob@me.com> |
---|---|
date | Sun, 17 Apr 2011 16:53:26 +0200 |
parents | 46539f5c5993 |
children | 3daece18b48e |
files | base/src/java/lang/String.d |
diffstat | 1 files changed, 20 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/base/src/java/lang/String.d Fri Apr 08 20:12:20 2011 +0900 +++ b/base/src/java/lang/String.d Sun Apr 17 16:53:26 2011 +0200 @@ -130,8 +130,16 @@ assert( res.length is 1 ); return res[0]; } else { // Phobos - implMissing( __FILE__, __LINE__ ); - return '\0'; + size_t ate = 0; + auto res = std.utf.decode(str, ate); + + if (ate == 0) + getDwtLogger().trace( __FILE__, __LINE__, "str.length={} str={:X2}", str.length, cast(ubyte[])str ); + + assert(ate > 0); + consumed = ate; + + return res; } } dchar firstCodePoint( CString16 str, out int consumed ){ @@ -147,8 +155,16 @@ assert( res.length is 1 ); return res[0]; } else { // Phobos - implMissing( __FILE__, __LINE__ ); - return '\0'; + size_t ate = 0; + auto res = std.utf.decode(str, ate); + + if (ate == 0) + getDwtLogger().trace( __FILE__, __LINE__, "str.length={} str={:X2}", str.length, cast(ubyte[])str ); + + assert(ate > 0); + consumed = ate; + + return res; } }