annotate base/src/java/lang/String.d @ 121:dc6fc593e8d7

Update for dmd-2.054 and small fixes in java.lang.Character
author Denis Shelomovskij <verylonglogin.reg@gmail.com>
date Tue, 12 Jul 2011 11:59:58 +0300
parents 536e43f63c81
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
112
9f4c18c268b2 Update to compile and execute with dmd 2.052.
kntroh
parents: 88
diff changeset
14 static import std.array;
23
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
15 static import std.string;
112
9f4c18c268b2 Update to compile and execute with dmd 2.052.
kntroh
parents: 88
diff changeset
16 static import std.conv;
9f4c18c268b2 Update to compile and execute with dmd 2.052.
kntroh
parents: 88
diff changeset
17 static import std.exception;
23
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
120
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
20 alias TryImmutable!(char)[] String;
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
21 alias TryImmutable!(wchar)[] String16;
23
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
22
120
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
23 String new_String( String cont, int offset, int len ){
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
24 return _idup(cont[ offset .. offset+len ]);
23
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
25 }
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
26
120
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
27 String new_String( String cont ){
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
28 return _idup(cont);
23
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
29 }
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
30
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
31 String String_valueOf( bool v ){
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
32 return v ? "true" : "false";
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
33 }
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
34
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
35 String String_valueOf( byte v ){
120
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
36 return String_valueOf( cast(long) v );
23
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
37 }
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 String String_valueOf( ubyte v ){
120
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
40 return String_valueOf( cast(uint) v );
23
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
41 }
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
42
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
43 String String_valueOf( short v ){
120
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
44 return String_valueOf( cast(long) v );
23
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
45 }
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
46
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
47 String String_valueOf( int v ){
120
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
48 return String_valueOf( cast(long) v );
23
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
49 }
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 String String_valueOf( uint v ){
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
52 version(Tango){
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
53 return tango.text.convert.Integer.toString(v);
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
54 } else { // Phobos
112
9f4c18c268b2 Update to compile and execute with dmd 2.052.
kntroh
parents: 88
diff changeset
55 return std.conv.to!(String)(v);
23
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
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
59 String String_valueOf( long v ){
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
60 version(Tango){
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
61 return tango.text.convert.Integer.toString(v);
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
62 } else { // Phobos
112
9f4c18c268b2 Update to compile and execute with dmd 2.052.
kntroh
parents: 88
diff changeset
63 return std.conv.to!(String)(v);
23
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
64 }
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
65 }
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
66
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
67 String String_valueOf( float v ){
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
68 version(Tango){
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
69 return tango.text.convert.Float.toString(v);
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
70 } else { // Phobos
112
9f4c18c268b2 Update to compile and execute with dmd 2.052.
kntroh
parents: 88
diff changeset
71 return std.conv.to!(String)(v);
23
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
72 }
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
73 }
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 String String_valueOf( double v ){
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
76 version(Tango){
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
77 return tango.text.convert.Float.toString(v);
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
78 } else { // Phobos
112
9f4c18c268b2 Update to compile and execute with dmd 2.052.
kntroh
parents: 88
diff changeset
79 return std.conv.to!(String)(v);
23
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 }
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
82
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
83 String String_valueOf( dchar v ){
120
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
84 version(Tango){
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
85 dchar[1] buf = v;
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
86 return tango.text.convert.Utf.toString( buf );
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
87 } else { // Phobos
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
88 return std.conv.to!(String)(v);
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
89 }
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
90 }
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
91
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
92 String dcharToString( dchar v ){
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
93 return String_valueOf(v);
23
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
94 }
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
95
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
96 String String_valueOf( char[] v ){
120
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
97 return _idup(v);
23
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
98 }
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
99
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
100 String String_valueOf( char[] v, int offset, int len ){
120
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
101 return _idup(v[ offset .. offset+len ]);
23
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 String String_valueOf( Object v ){
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
105 return v is null ? "null" : v.toString();
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
106 }
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
107
120
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
108 String String_valueOf( in wchar[] wstr ){
23
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
109 version(Tango){
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
110 return tango.text.convert.Utf.toString(wstr);
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
111 } else { // Phobos
112
9f4c18c268b2 Update to compile and execute with dmd 2.052.
kntroh
parents: 88
diff changeset
112 return std.conv.to!(String)(wstr);
23
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
113 }
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
114 }
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
115
120
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
116 int length( String str ){
23
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
117 return str.length;
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
118 }
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
119
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
120 /// Extension to String
120
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
121 public String toUpperCase( String str ){
23
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
122 version(Tango){
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
123 return tango.text.Unicode.toUpper( str );
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
124 } else { // Phobos
121
dc6fc593e8d7 Update for dmd-2.054 and small fixes in java.lang.Character
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 120
diff changeset
125 return cast(String) std.string.toUpper( str );
23
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
126 }
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
127 }
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
128
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
129 /// Extension to String
120
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
130 public String replaceFirst( String str, String regex, String replacement ){
23
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
131 implMissing(__FILE__,__LINE__);
39
0ecb2b338560 further work on phobosification
Frank Benoit <benoit@tionex.de>
parents: 27
diff changeset
132 return null;
23
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
133 }
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
134
120
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
135 version(Tango) int tangoToJavaIdx(T)(int idx, T[] arr) {
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
136 return idx is arr.length ? -1 : idx;
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
137 }
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
138
23
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
139 /// Extension to String
120
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
140 public int indexOf( in char[] str, char searched ){
23
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
141 version(Tango){
120
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
142 return tangoToJavaIdx(tango.text.Util.locate( str, searched ), str);
23
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
143 } else { // Phobos
112
9f4c18c268b2 Update to compile and execute with dmd 2.052.
kntroh
parents: 88
diff changeset
144 return std.string.indexOf(str, searched);
23
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
145 }
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
146 }
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 /// Extension to String
120
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
149 public int indexOf( in char[] str, char searched, int fromIndex ){
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
150 if(fromIndex >= str.length)
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
151 return -1;
23
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
152 version(Tango){
120
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
153 return tangoToJavaIdx(tango.text.Util.locate( str, searched, fromIndex ), str);
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
154 } else { // Phobos
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
155 int res = std.string.indexOf(str[fromIndex .. $], searched);
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
156 if (res !is -1) res += fromIndex;
23
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
157 return res;
120
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
158 }
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
159 }
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
160
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
161 /// Extension to String
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
162 public int indexOf(in char[] str, in char[] sub){
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
163 return indexOf( str, sub, 0 );
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
164 }
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
165
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
166 /// Extension to String
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
167 public int indexOf(in char[] str, in char[] sub, int fromIndex){
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
168 if(fromIndex + sub.length > str.length)
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
169 return -1;
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
170 if(!sub.length)
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
171 return fromIndex;
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
172 version(Tango){
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
173 return tangoToJavaIdx(tango.text.Util.locatePattern( str, sub, fromIndex ), str);
23
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
174 } else { // Phobos
120
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
175 int res = std.string.indexOf(str[fromIndex .. $], sub);
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
176 if (res !is -1) res += fromIndex;
112
9f4c18c268b2 Update to compile and execute with dmd 2.052.
kntroh
parents: 88
diff changeset
177 return res;
23
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
178 }
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
179 }
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
180
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
181 /// Extension to String
120
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
182 public int lastIndexOf(in char[] str, char ch){
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
183 return lastIndexOf( str, ch, str.length - 1 );
23
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
184 }
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 /// Extension to String
120
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
187 public int lastIndexOf(in char[] str, char ch, int fromIndex){
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
188 if(fromIndex >= str.length)
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
189 fromIndex = str.length - 1;
23
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
190 version(Tango){
120
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
191 return tangoToJavaIdx(tango.text.Util.locatePrior( str, ch, fromIndex + 1 ), str);
23
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
192 } else { // Phobos
120
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
193 return std.string.lastIndexOf(str[0 .. fromIndex + 1], ch);
23
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 }
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
196
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
197 /// Extension to String
120
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
198 public int lastIndexOf(in char[] str, in char[] sub ){
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
199 return lastIndexOf( str, sub, str.length - sub.length );
23
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
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
202 /// Extension to String
120
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
203 public int lastIndexOf(in char[] str, in char[] sub, int fromIndex){
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
204 int max = cast(int)str.length - cast(int)sub.length;
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
205 if(fromIndex > max)
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
206 fromIndex = max;
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
207 if(!sub.length)
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
208 return fromIndex;
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
209 version(Tango){
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
210 return tangoToJavaIdx(tango.text.Util.locatePatternPrior( str, sub, fromIndex + 1 ), str);
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
211 } else { // Phobos
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
212 size_t to = fromIndex + sub.length;
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
213 return std.string.lastIndexOf(str[0 .. to < $ ? to : $], sub);
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
214 }
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
215 }
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
216
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
217 unittest {
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
218 sizediff_t i;
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
219
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
220 i = lastIndexOf("", 'a');
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
221 assert(i == -1);
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
222 i = lastIndexOf("def", 'a');
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
223 assert(i == -1);
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
224 i = lastIndexOf("abba", 'a');
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
225 assert(i == 3);
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
226 i = lastIndexOf("abba", 'a', 0);
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
227 assert(i == 0);
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
228 i = lastIndexOf("abba", 'a', 1);
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
229 assert(i == 0);
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
230 i = lastIndexOf("abba", 'a', 2);
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
231 assert(i == 0);
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
232 i = lastIndexOf("abba", 'a', 3);
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
233 assert(i == 3);
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
234 i = lastIndexOf("abba", 'a', 4);
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
235 assert(i == 3);
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
236 i = lastIndexOf("abba", 'a', 10);
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
237 assert(i == 3);
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
238 i = lastIndexOf("def", 'f');
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
239 assert(i == 2);
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
240
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
241 i = lastIndexOf("", "a");
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
242 assert(i == -1);
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
243 i = lastIndexOf("", "");
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
244 assert(i == 0);
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
245 i = lastIndexOf("abcdefcdef", "c");
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
246 assert(i == 6);
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
247 i = lastIndexOf("abcdefcdef", "cd");
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
248 assert(i == 6);
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
249 i = lastIndexOf("abcdefcdef", "cd", 5);
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
250 assert(i == 2);
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
251 i = lastIndexOf("abcdefcdef", "cd", 6);
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
252 assert(i == 6);
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
253 i = lastIndexOf("abcdefcdef", "cd", 7);
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
254 assert(i == 6);
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
255 i = lastIndexOf("abcdefcdef", "cd", 10);
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
256 assert(i == 6);
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
257 i = lastIndexOf("abcdefcdef", "x");
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
258 assert(i == -1);
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
259 i = lastIndexOf("abcdefcdef", "xy");
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
260 assert(i == -1);
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
261 i = lastIndexOf("abcdefcdef", "");
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
262 assert(i == 10);
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
263 i = lastIndexOf("abcdefcdef", "", 9);
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
264 assert(i == 9);
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
265 i = lastIndexOf("abcabc", "abc");
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
266 assert(i == 3);
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
267 i = lastIndexOf("abcabc", "abc", 2);
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
268 assert(i == 0);
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
269 i = lastIndexOf("abcabc", "abc", 3);
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
270 assert(i == 3);
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
271 i = lastIndexOf("abcabc", "abc", 4);
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
272 assert(i == 3);
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
273
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
274
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
275
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
276 i = indexOf("", 'a');
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
277 assert(i == -1);
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
278 i = indexOf("def", 'a');
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
279 assert(i == -1);
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
280 i = indexOf("abba", 'a');
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
281 assert(i == 0);
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
282 i = indexOf("abba", 'a', 0);
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
283 assert(i == 0);
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
284 i = indexOf("abba", 'a', 1);
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
285 assert(i == 3);
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
286 i = indexOf("abba", 'a', 2);
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
287 assert(i == 3);
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
288 i = indexOf("abba", 'a', 3);
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
289 assert(i == 3);
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
290 i = indexOf("abba", 'a', 4);
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
291 assert(i == -1);
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
292 i = indexOf("abba", 'a', 10);
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
293 assert(i == -1);
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
294 i = indexOf("def", 'f');
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
295 assert(i == 2);
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
296
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
297 i = indexOf("", "a");
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
298 assert(i == -1);
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
299 i = indexOf("", "");
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
300 assert(i == 0);
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
301 i = indexOf("abcdefcdef", "c");
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
302 assert(i == 2);
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
303 i = indexOf("abcdefcdef", "cd");
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
304 assert(i == 2);
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
305 i = indexOf("abcdefcdef", "cd", 4);
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
306 assert(i == 6);
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
307 i = indexOf("abcdefcdef", "cd", 5);
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
308 assert(i == 6);
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
309 i = indexOf("abcdefcdef", "cd", 6);
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
310 assert(i == 6);
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
311 i = indexOf("abcdefcdef", "cd", 7);
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
312 assert(i == -1);
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
313 i = indexOf("abcdefcdef", "cd", 10);
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
314 assert(i == -1);
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
315 i = indexOf("abcdefcdef", "x");
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
316 assert(i == -1);
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
317 i = indexOf("abcdefcdef", "xy");
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
318 assert(i == -1);
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
319 i = indexOf("abcdefcdef", "");
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
320 assert(i == 0);
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
321 i = indexOf("abcabc", "abc");
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
322 assert(i == 0);
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
323 i = indexOf("abcabc", "abc", 2);
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
324 assert(i == 3);
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
325 i = indexOf("abcabc", "abc", 3);
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
326 assert(i == 3);
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
327 i = indexOf("abcabc", "abc", 4);
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
328 assert(i == -1);
23
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
329 }
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
330
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
331 /// Extension to String
120
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
332 public String replaceAll( String str, String regex, String replacement ){
23
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
333 implMissing(__FILE__,__LINE__);
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
334 return null;
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
335 }
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 /// Extension to String
120
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
338 public String replace( String str, char from, char to ){
23
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
339 version(Tango){
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
340 return tango.text.Util.replace( str.dup, from, to );
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
341 } else { // Phobos
120
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
342 char[1] f = from, t = to;
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
343 auto res = std.array.replace(str, f[], t[]);
112
9f4c18c268b2 Update to compile and execute with dmd 2.052.
kntroh
parents: 88
diff changeset
344 return std.exception.assumeUnique(res);
23
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
345 }
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
346 }
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
347
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
348 /// Extension to String
120
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
349 public String substring( String str, int start ){
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
350 return _idup(str[ start .. $ ]);
23
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
351 }
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 /// Extension to String
120
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
354 public String substring( String str, int start, int end ){
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
355 return _idup(str[ start .. end ]);
23
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
356 }
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
357
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
358 /// Extension to String
120
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
359 public wchar[] substring( String16 str, int start ){
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
360 return str[ start .. $ ].dup;
23
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
361 }
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
362
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
363 /// Extension to String
120
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
364 public wchar[] substring( String16 str, int start, int end ){
23
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
365 return str[ start .. end ].dup;
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
366 }
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 /// Extension to String
120
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
369 public char charAt( String str, int pos ){
23
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
370 return str[ pos ];
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
371 }
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 /// Extension to String
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
374 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
375 dst[ dstBegin .. dstBegin + srcEnd - srcBegin ] = src[ srcBegin .. srcEnd ];
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
376 }
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
377
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
378 /// Extension to String
120
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
379 public String16 toWCharArray( in char[] str ){
23
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
380 version(Tango){
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
381 return tango.text.convert.Utf.toString16(str);
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
382 } else { // Phobos
112
9f4c18c268b2 Update to compile and execute with dmd 2.052.
kntroh
parents: 88
diff changeset
383 return std.conv.to!(String16)(str);
23
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
384 }
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
385 }
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
386
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
387 /// Extension to String
120
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
388 public char[] toCharArray( String str ){
23
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
389 return cast(char[])str;
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 /// Extension to String
120
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
393 public bool endsWith( String src, String pattern ){
23
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
394 if( src.length < pattern.length ){
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
395 return false;
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
396 }
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
397 return src[ $-pattern.length .. $ ] == pattern;
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 /// Extension to String
120
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
401 public bool equals( in char[] src, in char[] other ){
23
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
402 return src == other;
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
403 }
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
404
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
405 /// Extension to String
120
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
406 public bool equalsIgnoreCase( in char[] src, in char[] other ){
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
407 version(Tango) {
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
408 if(src.length != other.length)
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
409 return false;
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
410 String s1b = new char[ src.length * 2 ]; //*2, or Tango may reallocate buffers
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
411 String s2b = new char[ other.length * 2 ];
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
412 scope(exit) {
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
413 delete s1b;
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
414 delete s2b;
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
415 }
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
416 return tango.text.Unicode.toFold( src, s1b ) ==
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
417 tango.text.Unicode.toFold( other, s2b );
23
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
418 } else { // Phobos
120
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
419 return std.string.icmp(src, other) == 0;
23
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
420 }
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
421 }
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
422
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
423 /// Extension to String
120
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
424 public int compareToIgnoreCase( in char[] src, in char[] other ){
23
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
425 version(Tango){
120
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
426 String s1b = new char[ src.length * 2 ]; //*2, or Tango may reallocate buffers
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
427 String s2b = new char[ other.length * 2 ];
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
428 scope(exit) {
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
429 delete s1b;
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
430 delete s2b;
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
431 }
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
432 return compareTo( tango.text.Unicode.toFold(src, s1b),
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
433 tango.text.Unicode.toFold(other, s2b));
23
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
434 } else { // Phobos
120
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
435 return std.string.icmp(src, other);
23
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 }
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
438
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
439 /// Extension to String
120
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
440 public int compareTo( in char[] src, in char[] other ){
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
441 version(Tango){
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
442 return typeid(String).compare( cast(void*)&src, cast(void*)&other );
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
443 } else { // Phobos
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
444 return std.string.cmp(src, other);
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
445 }
23
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
446 }
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
447
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
448 /// Extension to String
120
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
449 public bool startsWith( String src, String pattern ){
23
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
450 if( src.length < pattern.length ){
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
451 return false;
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
452 }
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
453 return src[ 0 .. pattern.length ] == pattern;
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
454 }
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 /// Extension to String
120
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
457 public String toLowerCase( String src ){
23
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
458 version(Tango){
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
459 return tango.text.Unicode.toLower( src );
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
460 } else { // Phobos
121
dc6fc593e8d7 Update for dmd-2.054 and small fixes in java.lang.Character
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 120
diff changeset
461 return cast(String) std.string.toLower(src);
23
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
462 }
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 /// Extension to String
120
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
466 public hash_t toHash( String src ){
23
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
467 return typeid(String).getHash(&src);
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
468 }
84
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
469 public alias toHash String_toHash;
23
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
470
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
471 /// Extension to String
120
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
472 public String trim( String str ){
23
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
473 version(Tango){
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
474 return tango.text.Util.trim( str ).dup;
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
475 } else { // Phobos
114
46539f5c5993 Added implementation of ResourceBundle.
kntroh
parents: 113
diff changeset
476 return std.string.strip( str.idup );
23
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 }
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
479
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
480 /// Extension to String
120
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
481 public String intern( String str ){
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
482 return _idup(str);
25
f713da8bc051 Added SWT Linux GTK
Frank Benoit <benoit@tionex.de>
parents: 23
diff changeset
483 }
23
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
484
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 public alias tango.stdc.stringz.toStringz toStringz;
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
487 public alias tango.stdc.stringz.toString16z toString16z;
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
488 public alias tango.stdc.stringz.fromStringz fromStringz;
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
489 public alias tango.stdc.stringz.fromString16z fromString16z;
120
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
490
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
491 /++
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
492 + This is like tango.stdc.stringz.toStringz, but in case of an empty input string,
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
493 + this function returns a pointer to a null value instead of a null ptr.
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
494 +/
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
495 public char* toStringzValidPtr( String src ){
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
496 if( src ){
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
497 return src.toStringz();
113
fb3aa8075988 D2 support for the linux port.
Jacob Carlborg <doob@me.com>
parents: 112
diff changeset
498 }
120
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
499 else{
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
500 return "".ptr;
113
fb3aa8075988 D2 support for the linux port.
Jacob Carlborg <doob@me.com>
parents: 112
diff changeset
501 }
120
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
502 }
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
503 } else { // Phobos
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
504 static import std.c.string;
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
505
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
506 public char* toStringzValidPtr( in char[] s ) {
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
507 auto copy = new char[s.length + 1];
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
508 copy[0..s.length] = s;
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
509 copy[s.length] = 0;
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
510 return copy.ptr;
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
511 }
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
512
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
513 public char* toStringz( in char[] s ) {
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
514 return s is null ? null : toStringzValidPtr(s);
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
515 }
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
516
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
517 public char[] fromStringz( in char* s ){
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
518 return s ? s[0 .. std.c.string.strlen(s)].dup : cast(char[])null;
23
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
519 }
120
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
520 /*public string fromStringz( in char* s ){
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
521 return std.conv.to!(string)(s);
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
522 }*/
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
523
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
524 private size_t w_strlen(in wchar* s) {
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
525 size_t res = 0;
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
526 while(*(s+res))
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
527 ++res;
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
528 return res;
23
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
529 }
120
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
530
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
531 public wchar* toString16z( in wchar[] s ){
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
532 if(s is null)
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
533 return null;
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
534 auto copy = new wchar[s.length + 1];
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
535 copy[0..s.length] = s;
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
536 copy[s.length] = 0;
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
537 return copy.ptr;
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
538 }
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
539
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
540 //Copy of std.conv.toImpl(T, S)(S s) for C-style strings
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
541 public wstring fromString16z( in wchar* s ){
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
542 return s ? s[0 .. w_strlen(s)].idup : cast(wstring)null;
23
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
120
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
546 static String toHex(uint i){
23
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
547 version(Tango){
120
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
548 return tango.text.convert.Integer.toString(i, "x");
23
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
549 } else { // Phobos
120
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
550 return std.conv.to!(String)(i, 16);
23
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
551 }
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
552 }
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
553
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 + String in java is implementing the interface CharSequence
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 class StringCharSequence : CharSequence {
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
558 private String str;
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
559 this( String str ){
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
560 this.str = str;
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
561 }
120
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
562 char charAt(int index){
23
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
563 return str[index];
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
564 }
120
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
565 int length(){
23
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
566 return str.length;
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
567 }
120
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
568 CharSequence subSequence(int start, int end){
23
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
569 return new StringCharSequence( str[ start .. end ]);
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
570 }
120
536e43f63c81 Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
Denis Shelomovskij <verylonglogin.reg@gmail.com>
parents: 119
diff changeset
571 String toString(){
23
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
572 return str;
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 }
aaa0a4e20edf Added missing files to repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
575
84
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
576 class StringCls {
88
9e0ab372d5d8 Revert from TypeInfo/ClassInfo to java.lang.Class
Frank Benoit <benoit@tionex.de>
parents: 87
diff changeset
577 private static Class TYPE_;
9e0ab372d5d8 Revert from TypeInfo/ClassInfo to java.lang.Class
Frank Benoit <benoit@tionex.de>
parents: 87
diff changeset
578 public static Class TYPE(){
84
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
579 if( TYPE_ is null ){
88
9e0ab372d5d8 Revert from TypeInfo/ClassInfo to java.lang.Class
Frank Benoit <benoit@tionex.de>
parents: 87
diff changeset
580 TYPE_ = Class.fromType!(char[]);
84
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
581 }
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
582 return TYPE_;
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
583 }
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
584
fcf926c91ca4 Added base classes
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
585 }