Mercurial > projects > dwt2
diff java/src/java/lang/Character.d @ 21:9b96950f2c3c
the 'java' tree compiles on both D1-Tango and D2-Phobos
author | Frank Benoit <benoit@tionex.de> |
---|---|
date | Thu, 19 Mar 2009 20:38:55 +0100 |
parents | 950d84783eac |
children |
line wrap: on
line diff
--- a/java/src/java/lang/Character.d Wed Mar 18 12:10:17 2009 +0100 +++ b/java/src/java/lang/Character.d Thu Mar 19 20:38:55 2009 +0100 @@ -2,7 +2,15 @@ import java.lang.exceptions; import java.lang.util; -import tango.text.Unicode; + +version(Tango){ + static import tango.text.Unicode; +} else { // Phobos + static import std.utf; + static import std.uni; + static import std.ctype; + static import std.string; +} class Character { public static bool isUpperCase( dchar c ){ @@ -10,45 +18,87 @@ return false; } public static dchar toUpperCase( wchar c ){ - wchar[1] src; - src[0] = c; - dchar[1] buf; - uint ate; - dchar[] res = tango.text.convert.Utf.toString32( src, buf, &ate ); - dchar[] r = tango.text.Unicode.toUpper( res ); - return r[0]; + version(Tango){ + wchar[1] src; + src[0] = c; + dchar[1] buf; + uint ate; + dchar[] darr = tango.text.convert.Utf.toString32( src, buf, &ate ); + } else { // Phobos + wchar[1] src; + src[0] = c; + auto darr = std.utf.toUTF32(src); + } + return toUpperCase( darr[0] ); } public static dchar toUpperCase( dchar c ){ - dchar[] r = tango.text.Unicode.toUpper( [c] ); - return r[0]; + version(Tango){ + dchar[1] src; + src[0] = c; + dchar[] r = tango.text.Unicode.toUpper( src ); + return r[0]; + } else { // Phobos + return std.uni.toUniUpper( c ); + } } public static dchar toLowerCase( wchar c ){ - wchar[1] src; - src[0] = c; - dchar[1] buf; - uint ate; - dchar[] res = tango.text.convert.Utf.toString32( src, buf, &ate ); - dchar[] r = tango.text.Unicode.toLower( res ); - return r[0]; + version(Tango){ + wchar[1] src; + src[0] = c; + dchar[1] buf; + uint ate; + dchar[] darr = tango.text.convert.Utf.toString32( src, buf, &ate ); + } else { // Phobos + wchar[1] src; + src[0] = c; + auto darr = std.utf.toUTF32(src); + } + return toLowerCase( darr[0] ); } public static dchar toLowerCase( dchar c ){ - dchar[] r = tango.text.Unicode.toLower( [c] ); - return r[0]; + version(Tango){ + dchar[1] src; + src[0] = c; + dchar[] r = tango.text.Unicode.toLower( src ); + return r[0]; + } else { // Phobos + return std.uni.toUniLower( c ); + } } public static bool isWhitespace( dchar c ){ - return tango.text.Unicode.isWhitespace( c ); + version(Tango){ + return tango.text.Unicode.isWhitespace( c ); + } else { // Phobos + return std.string.iswhite(c); + } } public static bool isDigit( dchar c ){ - return tango.text.Unicode.isDigit( c ); + version(Tango){ + return tango.text.Unicode.isDigit( c ); + } else { // Phobos + return cast(bool)std.ctype.isdigit(c); + } } public static bool isLetter( dchar c ){ - return tango.text.Unicode.isLetter(c); + version(Tango){ + return tango.text.Unicode.isLetter(c); + } else { // Phobos + return cast(bool)std.ctype.isalpha(c); + } } public static bool isSpace( dchar c ){ - return tango.text.Unicode.isSpace(c); + version(Tango){ + return tango.text.Unicode.isSpace(c); + } else { // Phobos + return cast(bool)std.ctype.isspace(c); + } } public static bool isWhiteSpace( dchar c ){ - return tango.text.Unicode.isWhitespace(c); + version(Tango){ + return tango.text.Unicode.isWhitespace(c); + } else { // Phobos + return std.string.iswhite(c); + } } public static bool isLetterOrDigit( dchar c ){ return isDigit(c) || isLetter(c); @@ -75,3 +125,73 @@ implMissing( __FILE__, __LINE__); } } + +bool CharacterIsDefined( dchar ch ){ + version(Tango){ + return (ch in tango.text.UnicodeData.unicodeData) !is null; + } else { // Phobos + implMissing( __FILE__, __LINE__); + return false; + } +} + +dchar CharacterFirstToLower( String str ){ + int consumed; + return CharacterFirstToLower( str, consumed ); +} + +dchar CharacterFirstToLower( String str, out int consumed ){ + version(Tango){ + dchar[1] buf; + buf[0] = firstCodePoint( str, consumed ); + dchar[] r = tango.text.Unicode.toLower( buf ); + return r[0]; + } else { // Phobos + implMissing( __FILE__, __LINE__); + return 0; + } +} + +dchar CharacterToLower( dchar c ){ + version(Tango){ + dchar[] r = tango.text.Unicode.toLower( [c] ); + return r[0]; + } else { // Phobos + implMissing( __FILE__, __LINE__); + return 0; + } +} +dchar CharacterToUpper( dchar c ){ + version(Tango){ + dchar[] r = tango.text.Unicode.toUpper( [c] ); + return r[0]; + } else { // Phobos + implMissing( __FILE__, __LINE__); + return 0; + } +} +bool CharacterIsWhitespace( dchar c ){ + version(Tango){ + return tango.text.Unicode.isWhitespace( c ); + } else { // Phobos + implMissing( __FILE__, __LINE__); + return false; + } +} +bool CharacterIsDigit( dchar c ){ + version(Tango){ + return tango.text.Unicode.isDigit( c ); + } else { // Phobos + implMissing( __FILE__, __LINE__); + return false; + } +} +bool CharacterIsLetter( dchar c ){ + version(Tango){ + return tango.text.Unicode.isLetter( c ); + } else { // Phobos + implMissing( __FILE__, __LINE__); + return false; + } +} +