Mercurial > projects > dwt2
annotate base/src/java/lang/String.d @ 88:9e0ab372d5d8
Revert from TypeInfo/ClassInfo to java.lang.Class
author | Frank Benoit <benoit@tionex.de> |
---|---|
date | Sun, 19 Apr 2009 11:10:09 +0200 |
parents | 8594250b1d1c |
children | 9f4c18c268b2 |
rev | line source |
---|---|
23
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1 module java.lang.String; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2 |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3 import java.lang.util; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4 import java.lang.interfaces; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5 import java.lang.exceptions; |
88
9e0ab372d5d8
Revert from TypeInfo/ClassInfo to java.lang.Class
Frank Benoit <benoit@tionex.de>
parents:
87
diff
changeset
|
6 import java.lang.Class; |
23
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7 |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8 version(Tango){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
9 static import tango.stdc.stringz; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
10 static import tango.text.Util; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
11 static import tango.text.Unicode; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
12 static import tango.text.convert.Utf; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
13 } else { // Phobos |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
14 static import core.exception; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
15 static import std.uni; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
16 static import std.utf; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
17 static import std.string; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
18 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
19 |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
20 version(Tango){ |
87 | 21 public alias char[] String; |
22 public alias char[] CString; | |
23 public alias wchar[] String16; | |
24 public alias wchar[] CString16; | |
25 public alias char* ICharPtr; | |
26 public alias char* CCharPtr; | |
27 public alias wchar* CWCharPtr; | |
28 public alias wchar* IWCharPtr; | |
23
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
29 } else { // Phobos |
87 | 30 public alias string String; |
31 public alias wstring String16; | |
32 mixin("public alias const(char)[] CString;"); | |
33 mixin("public alias const(wchar)[] CString16;"); | |
34 mixin("public alias invariant(char)* ICharPtr;"); | |
35 mixin("public alias const(char)* CCharPtr;"); | |
36 mixin("public alias const(wchar)* CWCharPtr;"); | |
37 mixin("public alias invariant(wchar)* IWCharPtr;"); | |
23
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
38 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
39 |
51 | 40 int codepointIndexToIndex( CString str, int cpIndex ){ |
23
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
41 int cps = cpIndex; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
42 int res = 0; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
43 while( cps > 0 ){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
44 cps--; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
45 if( str[res] < 0x80 ){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
46 res+=1; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
47 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
48 else if( str[res] < 0xE0 ){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
49 res+=2; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
50 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
51 else if( str[res] & 0xF0 ){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
52 res+=3; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
53 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
54 else{ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
55 res+=4; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
56 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
57 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
58 return res; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
59 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
60 |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
61 /++ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
62 + |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
63 +/ |
51 | 64 int indexToCodepointIndex( CString str, int index ){ |
23
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
65 if( index < 0 ) return index; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
66 int i = 0; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
67 int res = 0; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
68 while( i < index ){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
69 if( i >= str.length ){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
70 break; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
71 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
72 if( str[i] < 0x80 ){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
73 i+=1; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
74 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
75 else if( str[i] < 0xE0 ){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
76 i+=2; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
77 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
78 else if( str[i] & 0xF0 ){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
79 i+=3; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
80 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
81 else{ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
82 i+=4; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
83 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
84 res++; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
85 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
86 return res; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
87 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
88 |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
89 /++ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
90 + Get that String, that contains the next codepoint of a String. |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
91 +/ |
51 | 92 String firstCodePointStr( CString str, out int consumed ){ |
23
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
93 version(Tango){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
94 dchar[1] buf; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
95 uint ate; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
96 dchar[] res = tango.text.convert.Utf.toString32( str, buf, &ate ); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
97 consumed = ate; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
98 return str[ 0 .. ate ]; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
99 } else { // Phobos |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
100 implMissing( __FILE__, __LINE__ ); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
101 return null; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
102 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
103 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
104 |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
105 /++ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
106 + Get first codepoint of a String. If an offset is needed, simply use a slice: |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
107 + --- |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
108 + dchar res = str[ offset .. $ ].firstCodePoint(); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
109 + --- |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
110 +/ |
39
0ecb2b338560
further work on phobosification
Frank Benoit <benoit@tionex.de>
parents:
27
diff
changeset
|
111 dchar firstCodePoint( CString str ){ |
23
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
112 int dummy; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
113 return firstCodePoint( str, dummy ); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
114 } |
39
0ecb2b338560
further work on phobosification
Frank Benoit <benoit@tionex.de>
parents:
27
diff
changeset
|
115 dchar firstCodePoint( CString str, out int consumed ){ |
23
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
116 version(Tango){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
117 dchar[1] buf; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
118 uint ate; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
119 dchar[] res = tango.text.convert.Utf.toString32( str, buf, &ate ); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
120 consumed = ate; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
121 if( ate is 0 || res.length is 0 ){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
122 getDwtLogger().trace( __FILE__, __LINE__, "str.length={} str={:X2}", str.length, cast(ubyte[])str ); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
123 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
124 assert( ate > 0 ); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
125 assert( res.length is 1 ); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
126 return res[0]; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
127 } else { // Phobos |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
128 implMissing( __FILE__, __LINE__ ); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
129 return '\0'; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
130 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
131 } |
39
0ecb2b338560
further work on phobosification
Frank Benoit <benoit@tionex.de>
parents:
27
diff
changeset
|
132 dchar firstCodePoint( CString16 str, out int consumed ){ |
23
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
133 version(Tango){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
134 dchar[1] buf; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
135 uint ate; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
136 dchar[] res = tango.text.convert.Utf.toString32( str, buf, &ate ); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
137 consumed = ate; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
138 if( ate is 0 || res.length is 0 ){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
139 getDwtLogger().trace( __FILE__, __LINE__, "str.length={} str={:X2}", str.length, cast(ubyte[])str ); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
140 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
141 assert( ate > 0 ); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
142 assert( res.length is 1 ); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
143 return res[0]; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
144 } else { // Phobos |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
145 implMissing( __FILE__, __LINE__ ); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
146 return '\0'; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
147 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
148 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
149 |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
150 String dcharToString( dchar key ){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
151 version(Tango){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
152 dchar[1] buf; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
153 buf[0] = key; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
154 return tango.text.convert.Utf.toString( buf ); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
155 } else { // Phobos |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
156 implMissing( __FILE__, __LINE__ ); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
157 return null; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
158 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
159 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
160 |
51 | 161 int codepointCount( CString str ){ |
23
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
162 version(Tango){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
163 scope dchar[] buf = new dchar[]( str.length ); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
164 uint ate; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
165 dchar[] res = tango.text.convert.Utf.toString32( str, buf, &ate ); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
166 assert( ate is str.length ); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
167 return res.length; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
168 } else { // Phobos |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
169 implMissing( __FILE__, __LINE__ ); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
170 return 0; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
171 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
172 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
173 |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
174 //alias tango.text.convert.Utf.toString16 toString16; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
175 //alias tango.text.convert.Utf.toString toString; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
176 |
51 | 177 int toAbsoluteCodePointStartOffset( CString str, int index ){ |
23
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
178 //getDwtLogger().trace( __FILE__, __LINE__, "str={}, str.length={}, index={}", str, str.length, index ); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
179 //getDwtLogger().trace( __FILE__, __LINE__, Trace.memory( str ); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
180 if( str.length is index ){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
181 return index; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
182 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
183 if( ( str[index] & 0x80 ) is 0x00 ) { |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
184 return index; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
185 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
186 else{ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
187 int steps = 0; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
188 while(( str[index] & 0xC0 ) is 0x80 ){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
189 index--; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
190 steps++; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
191 if( steps > 3 || index < 0 ){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
192 break; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
193 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
194 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
195 if((( str[index] & 0xE0 ) is 0xC0) && ( steps <= 1 )){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
196 // ok |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
197 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
198 else if((( str[index] & 0xF0 ) is 0xE0) && ( steps <= 2 )){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
199 // ok |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
200 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
201 else if((( str[index] & 0xF8 ) is 0xF0) && ( steps <= 3 )){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
202 // ok |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
203 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
204 else{ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
205 throw new UnicodeException( "invalid utf8 input to toAbsoluteCodePointStartOffset", index ); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
206 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
207 return index; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
208 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
209 } |
51 | 210 int getRelativeCodePointOffset( CString str, int startIndex, int searchRelCp ){ |
23
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
211 return getAbsoluteCodePointOffset( str, startIndex, searchRelCp ) - startIndex; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
212 } |
51 | 213 int getAbsoluteCodePointOffset( CString str, int startIndex, int searchRelCp ){ |
23
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
214 |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
215 //getDwtLogger().trace( __FILE__, __LINE__, "str={}, str.length={}, startIndex={}, searchRelCp={}", str, str.length, startIndex, searchRelCp ); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
216 //getDwtLogger().trace( __FILE__, __LINE__, Trace.memory( str ); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
217 |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
218 int ignore; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
219 int i = startIndex; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
220 if( searchRelCp > 0 ){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
221 while( searchRelCp !is 0 ){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
222 |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
223 if( ( i < str.length ) |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
224 && (( str[i] & 0x80 ) is 0x00 )) |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
225 { |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
226 i+=1; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
227 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
228 else if( ( i+1 < str.length ) |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
229 && (( str[i+1] & 0xC0 ) is 0x80 ) |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
230 && (( str[i ] & 0xE0 ) is 0xC0 )) |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
231 { |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
232 i+=2; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
233 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
234 else if( ( i+2 < str.length ) |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
235 && (( str[i+2] & 0xC0 ) is 0x80 ) |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
236 && (( str[i+1] & 0xC0 ) is 0x80 ) |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
237 && (( str[i ] & 0xF0 ) is 0xE0 )) |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
238 { |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
239 i+=3; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
240 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
241 else if(( i+3 < str.length ) |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
242 && (( str[i+3] & 0xC0 ) is 0x80 ) |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
243 && (( str[i+2] & 0xC0 ) is 0x80 ) |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
244 && (( str[i+1] & 0xC0 ) is 0x80 ) |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
245 && (( str[i ] & 0xF8 ) is 0xF0 )) |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
246 { |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
247 i+=4; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
248 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
249 else{ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
250 getDwtLogger().trace( __FILE__, __LINE__, "getAbsoluteCodePointOffset invalid utf8 characters: {:X2}", cast(ubyte[]) str ); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
251 throw new UnicodeException( "invalid utf8 input", i ); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
252 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
253 searchRelCp--; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
254 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
255 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
256 else if( searchRelCp < 0 ){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
257 while( searchRelCp !is 0 ){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
258 do{ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
259 i--; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
260 if( i < 0 ){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
261 return startIndex-1; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
262 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
263 } while(( str[i] & 0xC0 ) is 0x80 ); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
264 searchRelCp++; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
265 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
266 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
267 return i; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
268 } |
39
0ecb2b338560
further work on phobosification
Frank Benoit <benoit@tionex.de>
parents:
27
diff
changeset
|
269 int getAbsoluteCodePointOffset( CString16 str, int startIndex, int searchRelCp ){ |
23
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
270 int ignore; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
271 int i = startIndex; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
272 if( searchRelCp > 0 ){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
273 while( searchRelCp !is 0 ){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
274 |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
275 if( ( i < str.length ) |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
276 && ( str[i] & 0xD800 ) !is 0xD800 ) |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
277 { |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
278 i+=1; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
279 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
280 else if( ( i+1 < str.length ) |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
281 && (( str[i+1] & 0xDC00 ) is 0xDC00 ) |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
282 && (( str[i ] & 0xDC00 ) is 0xD800 )) |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
283 { |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
284 i+=2; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
285 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
286 else{ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
287 getDwtLogger().trace( __FILE__, __LINE__, "invalid utf16 characters: {:X2}", cast(ubyte[]) str ); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
288 throw new UnicodeException( "invalid utf16 input", i ); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
289 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
290 searchRelCp--; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
291 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
292 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
293 else if( searchRelCp < 0 ){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
294 while( searchRelCp !is 0 ){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
295 do{ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
296 i--; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
297 if( i < 0 ){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
298 return startIndex-1; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
299 //getDwtLogger().trace( __FILE__, __LINE__, "dwthelper.utils getRelativeCodePointOffset {}: str={}, startIndex={}, searchRelCp={}", __LINE__, str, startIndex, searchRelCp ); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
300 //tango.text.convert.Utf.onUnicodeError( "invalid utf16 input", i ); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
301 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
302 } while(( str[i] & 0xDC00 ) is 0xDC00 ); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
303 searchRelCp++; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
304 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
305 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
306 return i; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
307 } |
54 | 308 dchar getRelativeCodePoint( CString str, int startIndex, int searchRelCp ){ |
23
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
309 int dummy; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
310 return getRelativeCodePoint( str, startIndex, dummy ); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
311 } |
54 | 312 dchar getRelativeCodePoint( CString str, int startIndex, int searchRelCp, out int relIndex ){ |
23
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
313 relIndex = getRelativeCodePointOffset( str, startIndex, searchRelCp ); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
314 int ignore; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
315 return firstCodePoint( str[ startIndex+relIndex .. $ ], ignore ); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
316 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
317 |
54 | 318 int utf8AdjustOffset( CString str, int offset ){ |
23
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
319 if( str.length <= offset || offset <= 0 ){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
320 return offset; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
321 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
322 while(( str[offset] & 0xC0 ) is 0x80 ){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
323 offset--; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
324 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
325 return offset; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
326 } |
54 | 327 int utf8OffsetIncr( CString str, int offset ){ |
23
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
328 int res = offset +1; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
329 if( str.length <= res || res <= 0 ){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
330 return res; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
331 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
332 int tries = 4; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
333 while(( str[res] & 0xC0 ) is 0x80 ){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
334 res++; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
335 assert( tries-- > 0 ); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
336 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
337 return res; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
338 } |
54 | 339 int utf8OffsetDecr( CString str, int offset ){ |
23
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
340 int res = offset-1; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
341 if( str.length <= res || res <= 0 ){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
342 return res; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
343 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
344 int tries = 4; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
345 while(( str[res] & 0xC0 ) is 0x80 ){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
346 res--; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
347 assert( tries-- > 0 ); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
348 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
349 getDwtLogger().trace( __FILE__, __LINE__, "utf8OffsetDecr {}->{}", offset, res ); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
350 getDwtLogger().trace( __FILE__, __LINE__, "{}", str ); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
351 return res; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
352 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
353 |
54 | 354 String new_String( CString cont, int offset, int len ){ |
23
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
355 version(D_Version2){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
356 return cont[ offset .. offset+len ].idup; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
357 } else { |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
358 return cont[ offset .. offset+len ].dup; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
359 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
360 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
361 |
54 | 362 String new_String( CString cont ){ |
23
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
363 version(D_Version2){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
364 return cont.idup; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
365 } else { |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
366 return cont.dup; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
367 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
368 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
369 |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
370 String String_valueOf( bool v ){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
371 return v ? "true" : "false"; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
372 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
373 |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
374 String String_valueOf( byte v ){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
375 version(Tango){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
376 return tango.text.convert.Integer.toString(v); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
377 } else { // Phobos |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
378 implMissing( __FILE__, __LINE__ ); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
379 return null; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
380 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
381 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
382 |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
383 String String_valueOf( ubyte v ){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
384 version(Tango){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
385 return tango.text.convert.Integer.toString(v); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
386 } else { // Phobos |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
387 implMissing( __FILE__, __LINE__ ); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
388 return null; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
389 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
390 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
391 |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
392 String String_valueOf( short v ){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
393 version(Tango){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
394 return tango.text.convert.Integer.toString(v); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
395 } else { // Phobos |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
396 implMissing( __FILE__, __LINE__ ); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
397 return null; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
398 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
399 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
400 |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
401 String String_valueOf( int v ){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
402 version(Tango){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
403 return tango.text.convert.Integer.toString(v); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
404 } else { // Phobos |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
405 implMissing( __FILE__, __LINE__ ); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
406 return null; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
407 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
408 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
409 |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
410 String String_valueOf( uint v ){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
411 version(Tango){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
412 return tango.text.convert.Integer.toString(v); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
413 } else { // Phobos |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
414 implMissing( __FILE__, __LINE__ ); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
415 return null; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
416 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
417 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
418 |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
419 String String_valueOf( long v ){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
420 version(Tango){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
421 return tango.text.convert.Integer.toString(v); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
422 } else { // Phobos |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
423 implMissing( __FILE__, __LINE__ ); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
424 return null; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
425 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
426 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
427 |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
428 String String_valueOf( float v ){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
429 version(Tango){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
430 return tango.text.convert.Float.toString(v); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
431 } else { // Phobos |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
432 implMissing( __FILE__, __LINE__ ); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
433 return null; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
434 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
435 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
436 |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
437 String String_valueOf( double v ){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
438 version(Tango){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
439 return tango.text.convert.Float.toString(v); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
440 } else { // Phobos |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
441 implMissing( __FILE__, __LINE__ ); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
442 return null; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
443 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
444 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
445 |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
446 String String_valueOf( dchar v ){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
447 return dcharToString(v); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
448 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
449 |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
450 String String_valueOf( char[] v ){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
451 version(D_Version2){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
452 return v.idup; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
453 } else { |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
454 return v.dup; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
455 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
456 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
457 |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
458 String String_valueOf( char[] v, int offset, int len ){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
459 version(D_Version2){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
460 return v[ offset .. offset+len ].idup; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
461 } else { |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
462 return v[ offset .. offset+len ].dup; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
463 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
464 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
465 |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
466 String String_valueOf( Object v ){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
467 return v is null ? "null" : v.toString(); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
468 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
469 |
39
0ecb2b338560
further work on phobosification
Frank Benoit <benoit@tionex.de>
parents:
27
diff
changeset
|
470 String String_valueOf( CString16 wstr ){ |
23
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
471 version(Tango){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
472 return tango.text.convert.Utf.toString(wstr); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
473 } else { // Phobos |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
474 implMissing( __FILE__, __LINE__ ); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
475 return null; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
476 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
477 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
478 |
54 | 479 int length( CString str ){ |
23
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
480 return str.length; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
481 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
482 |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
483 /// Extension to String |
39
0ecb2b338560
further work on phobosification
Frank Benoit <benoit@tionex.de>
parents:
27
diff
changeset
|
484 public String toUpperCase( CString str ){ |
23
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
485 version(Tango){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
486 return tango.text.Unicode.toUpper( str ); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
487 } else { // Phobos |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
488 implMissing( __FILE__, __LINE__ ); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
489 return null; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
490 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
491 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
492 |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
493 /// Extension to String |
39
0ecb2b338560
further work on phobosification
Frank Benoit <benoit@tionex.de>
parents:
27
diff
changeset
|
494 public String replaceFirst( CString str, CString regex, CString replacement ){ |
23
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
495 implMissing(__FILE__,__LINE__); |
39
0ecb2b338560
further work on phobosification
Frank Benoit <benoit@tionex.de>
parents:
27
diff
changeset
|
496 return null; |
23
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
497 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
498 |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
499 /// Extension to String |
39
0ecb2b338560
further work on phobosification
Frank Benoit <benoit@tionex.de>
parents:
27
diff
changeset
|
500 public int indexOf( CString str, char searched ){ |
23
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
501 version(Tango){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
502 int res = tango.text.Util.locate( str, searched ); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
503 if( res is str.length ) res = -1; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
504 return res; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
505 } else { // Phobos |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
506 implMissing( __FILE__, __LINE__ ); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
507 return 0; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
508 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
509 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
510 |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
511 /// Extension to String |
39
0ecb2b338560
further work on phobosification
Frank Benoit <benoit@tionex.de>
parents:
27
diff
changeset
|
512 public int indexOf( CString str, char searched, int startpos ){ |
23
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
513 version(Tango){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
514 int res = tango.text.Util.locate( str, searched, startpos ); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
515 if( res is str.length ) res = -1; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
516 return res; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
517 } else { // Phobos |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
518 implMissing( __FILE__, __LINE__ ); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
519 return 0; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
520 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
521 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
522 |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
523 /// Extension to String |
39
0ecb2b338560
further work on phobosification
Frank Benoit <benoit@tionex.de>
parents:
27
diff
changeset
|
524 public int indexOf(CString str, String ch){ |
23
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
525 return indexOf( str, ch, 0 ); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
526 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
527 |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
528 /// Extension to String |
39
0ecb2b338560
further work on phobosification
Frank Benoit <benoit@tionex.de>
parents:
27
diff
changeset
|
529 public int indexOf(CString str, String ch, int start){ |
23
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
530 version(Tango){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
531 int res = tango.text.Util.locatePattern( str, ch, start ); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
532 if( res is str.length ) res = -1; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
533 return res; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
534 } else { // Phobos |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
535 implMissing( __FILE__, __LINE__ ); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
536 return 0; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
537 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
538 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
539 |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
540 /// Extension to String |
39
0ecb2b338560
further work on phobosification
Frank Benoit <benoit@tionex.de>
parents:
27
diff
changeset
|
541 public int lastIndexOf(CString str, char ch){ |
23
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
542 return lastIndexOf( str, ch, str.length ); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
543 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
544 |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
545 /// Extension to String |
39
0ecb2b338560
further work on phobosification
Frank Benoit <benoit@tionex.de>
parents:
27
diff
changeset
|
546 public int lastIndexOf(CString str, char ch, int formIndex){ |
23
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
547 version(Tango){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
548 int res = tango.text.Util.locatePrior( str, ch, formIndex ); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
549 if( res is str.length ) res = -1; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
550 return res; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
551 } else { // Phobos |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
552 implMissing( __FILE__, __LINE__ ); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
553 return 0; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
554 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
555 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
556 |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
557 /// Extension to String |
39
0ecb2b338560
further work on phobosification
Frank Benoit <benoit@tionex.de>
parents:
27
diff
changeset
|
558 public int lastIndexOf(CString str, String ch ){ |
23
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
559 return lastIndexOf( str, ch, str.length ); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
560 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
561 |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
562 /// Extension to String |
39
0ecb2b338560
further work on phobosification
Frank Benoit <benoit@tionex.de>
parents:
27
diff
changeset
|
563 public int lastIndexOf(CString str, String ch, int start ){ |
23
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
564 version(Tango){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
565 int res = tango.text.Util.locatePatternPrior( str, ch, start ); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
566 if( res is str.length ) res = -1; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
567 return res; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
568 } else { // Phobos |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
569 implMissing( __FILE__, __LINE__ ); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
570 return 0; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
571 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
572 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
573 |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
574 /// Extension to String |
39
0ecb2b338560
further work on phobosification
Frank Benoit <benoit@tionex.de>
parents:
27
diff
changeset
|
575 public String replaceAll( CString str, String regex, String replacement ){ |
23
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
576 implMissing(__FILE__,__LINE__); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
577 return null; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
578 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
579 |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
580 /// Extension to String |
39
0ecb2b338560
further work on phobosification
Frank Benoit <benoit@tionex.de>
parents:
27
diff
changeset
|
581 public String replace( CString str, char from, char to ){ |
23
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
582 version(Tango){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
583 return tango.text.Util.replace( str.dup, from, to ); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
584 } else { // Phobos |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
585 implMissing( __FILE__, __LINE__ ); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
586 return null; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
587 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
588 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
589 |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
590 /// Extension to String |
39
0ecb2b338560
further work on phobosification
Frank Benoit <benoit@tionex.de>
parents:
27
diff
changeset
|
591 public String substring( CString str, int start ){ |
23
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
592 return cast(String)str[ start .. $ ].dup; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
593 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
594 |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
595 /// Extension to String |
39
0ecb2b338560
further work on phobosification
Frank Benoit <benoit@tionex.de>
parents:
27
diff
changeset
|
596 public String substring( CString str, int start, int end ){ |
23
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
597 return cast(String)str[ start .. end ].dup; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
598 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
599 |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
600 /// Extension to String |
39
0ecb2b338560
further work on phobosification
Frank Benoit <benoit@tionex.de>
parents:
27
diff
changeset
|
601 public wchar[] substring( CString16 str, int start ){ |
23
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
602 return cast(wchar[])(str[ start .. $ ].dup); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
603 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
604 |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
605 /// Extension to String |
39
0ecb2b338560
further work on phobosification
Frank Benoit <benoit@tionex.de>
parents:
27
diff
changeset
|
606 public wchar[] substring( CString16 str, int start, int end ){ |
23
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
607 return str[ start .. end ].dup; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
608 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
609 |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
610 /// Extension to String |
39
0ecb2b338560
further work on phobosification
Frank Benoit <benoit@tionex.de>
parents:
27
diff
changeset
|
611 public char charAt( CString str, int pos ){ |
23
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
612 return str[ pos ]; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
613 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
614 |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
615 /// Extension to String |
39
0ecb2b338560
further work on phobosification
Frank Benoit <benoit@tionex.de>
parents:
27
diff
changeset
|
616 public dchar dcharAt( CString str, int pos ){ |
23
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
617 return str[ pos .. $ ].firstCodePoint(); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
618 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
619 |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
620 /// Extension to String |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
621 public void getChars( String src, int srcBegin, int srcEnd, char[] dst, int dstBegin){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
622 dst[ dstBegin .. dstBegin + srcEnd - srcBegin ] = src[ srcBegin .. srcEnd ]; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
623 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
624 |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
625 /// Extension to String |
39
0ecb2b338560
further work on phobosification
Frank Benoit <benoit@tionex.de>
parents:
27
diff
changeset
|
626 public String16 toWCharArray( CString str ){ |
23
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
627 version(Tango){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
628 return tango.text.convert.Utf.toString16(str); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
629 } else { // Phobos |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
630 implMissing( __FILE__, __LINE__ ); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
631 return null; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
632 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
633 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
634 |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
635 /// Extension to String |
54 | 636 public char[] toCharArray( CString str ){ |
23
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
637 return cast(char[])str; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
638 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
639 |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
640 /// Extension to String |
54 | 641 public bool endsWith( CString src, CString pattern ){ |
23
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
642 if( src.length < pattern.length ){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
643 return false; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
644 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
645 return src[ $-pattern.length .. $ ] == pattern; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
646 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
647 |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
648 /// Extension to String |
54 | 649 public bool equals( CString src, CString other ){ |
23
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
650 return src == other; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
651 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
652 |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
653 /// Extension to String |
54 | 654 public bool equalsIgnoreCase( CString src, CString other ){ |
23
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
655 version(Tango){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
656 return tango.text.Unicode.toFold(src) == tango.text.Unicode.toFold(other); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
657 } else { // Phobos |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
658 implMissing( __FILE__, __LINE__ ); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
659 return false; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
660 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
661 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
662 |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
663 /// Extension to String |
54 | 664 public int compareToIgnoreCase( CString src, CString other ){ |
23
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
665 version(Tango){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
666 return compareTo( tango.text.Unicode.toFold(src), tango.text.Unicode.toFold(other)); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
667 } else { // Phobos |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
668 implMissing( __FILE__, __LINE__ ); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
669 return 0; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
670 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
671 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
672 |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
673 /// Extension to String |
54 | 674 public int compareTo( CString src, CString other ){ |
23
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
675 return typeid(String).compare( cast(void*)&src, cast(void*)&other ); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
676 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
677 |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
678 /// Extension to String |
54 | 679 public bool startsWith( CString src, CString pattern ){ |
23
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
680 if( src.length < pattern.length ){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
681 return false; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
682 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
683 return src[ 0 .. pattern.length ] == pattern; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
684 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
685 |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
686 /// Extension to String |
54 | 687 public String toLowerCase( CString src ){ |
23
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
688 version(Tango){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
689 return tango.text.Unicode.toLower( src ); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
690 } else { // Phobos |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
691 implMissing( __FILE__, __LINE__ ); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
692 return null; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
693 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
694 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
695 |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
696 /// Extension to String |
54 | 697 public hash_t toHash( CString src ){ |
23
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
698 return typeid(String).getHash(&src); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
699 } |
84 | 700 public alias toHash String_toHash; |
23
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
701 |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
702 /// Extension to String |
54 | 703 public String trim( CString str ){ |
23
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
704 version(Tango){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
705 return tango.text.Util.trim( str ).dup; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
706 } else { // Phobos |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
707 implMissing( __FILE__, __LINE__ ); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
708 return null; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
709 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
710 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
711 |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
712 /// Extension to String |
54 | 713 public String intern( CString str ){ |
714 return str._idup(); | |
23
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
715 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
716 |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
717 /++ |
25 | 718 + This is like tango.stdc.stringz.toStringz, but in case of an empty input string, |
719 + this function returns a pointer to a null value instead of a null ptr. | |
720 +/ | |
51 | 721 public char* toStringzValidPtr( CString src ){ |
25 | 722 if( src ){ |
723 return src.toStringz(); | |
23
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
724 } |
25 | 725 else{ |
726 static const char[] nullPtr = "\0"; | |
727 return cast(char*)nullPtr.ptr; | |
728 } | |
729 } | |
23
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
730 |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
731 version(Tango){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
732 public alias tango.stdc.stringz.toStringz toStringz; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
733 public alias tango.stdc.stringz.toString16z toString16z; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
734 public alias tango.stdc.stringz.fromStringz fromStringz; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
735 public alias tango.stdc.stringz.fromString16z fromString16z; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
736 } else { // Phobos |
50 | 737 public char* toStringz( CString s ){ |
23
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
738 implMissing(__FILE__,__LINE__); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
739 return null; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
740 } |
50 | 741 public wchar* toString16z( CString16 s ){ |
23
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
742 implMissing(__FILE__,__LINE__); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
743 return null; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
744 } |
50 | 745 public char[] fromStringz( CCharPtr s ){ |
23
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
746 implMissing(__FILE__,__LINE__); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
747 return null; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
748 } |
50 | 749 public char[] fromString16z( CWCharPtr s ){ |
23
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
750 implMissing(__FILE__,__LINE__); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
751 return null; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
752 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
753 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
754 |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
755 static String toHex(uint value, bool prefix = true, int radix = 8){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
756 version(Tango){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
757 return tango.text.convert.Integer.toString( |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
758 value, |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
759 radix is 10 ? "d" : |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
760 radix is 8 ? "o" : |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
761 radix is 16 ? "x" : |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
762 "d" ); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
763 } else { // Phobos |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
764 implMissing( __FILE__, __LINE__ ); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
765 return null; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
766 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
767 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
768 |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
769 /++ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
770 + String in java is implementing the interface CharSequence |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
771 +/ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
772 class StringCharSequence : CharSequence { |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
773 private String str; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
774 this( String str ){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
775 this.str = str; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
776 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
777 char charAt(int index){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
778 return str[index]; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
779 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
780 int length(){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
781 return str.length; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
782 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
783 CharSequence subSequence(int start, int end){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
784 return new StringCharSequence( str[ start .. end ]); |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
785 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
786 String toString(){ |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
787 return str; |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
788 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
789 } |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
790 |
84 | 791 class StringCls { |
88
9e0ab372d5d8
Revert from TypeInfo/ClassInfo to java.lang.Class
Frank Benoit <benoit@tionex.de>
parents:
87
diff
changeset
|
792 private static Class TYPE_; |
9e0ab372d5d8
Revert from TypeInfo/ClassInfo to java.lang.Class
Frank Benoit <benoit@tionex.de>
parents:
87
diff
changeset
|
793 public static Class TYPE(){ |
84 | 794 if( TYPE_ is null ){ |
88
9e0ab372d5d8
Revert from TypeInfo/ClassInfo to java.lang.Class
Frank Benoit <benoit@tionex.de>
parents:
87
diff
changeset
|
795 TYPE_ = Class.fromType!(char[]); |
84 | 796 } |
797 return TYPE_; | |
798 } | |
799 | |
800 } | |
23
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
801 |
aaa0a4e20edf
Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
802 |