annotate dwt/dwthelper/utils.d @ 57:41dbc4d9faab

Update to tango trunk -r3152. Thanks DavidLeon for the adjustment of TracedException to Exception and creating the patch.
author Frank Benoit <benoit@tionex.de>
date Mon, 04 Feb 2008 12:46:24 +0100
parents 0553f4e8ed93
children 66203354c9d3
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
22
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents: 15
diff changeset
1 /**
0
5406a8f6526d Add initial files
John Reimer <terminal.node@gmail.com
parents:
diff changeset
2 * Authors: Frank Benoit <keinfarbton@googlemail.com>
5406a8f6526d Add initial files
John Reimer <terminal.node@gmail.com
parents:
diff changeset
3 */
5406a8f6526d Add initial files
John Reimer <terminal.node@gmail.com
parents:
diff changeset
4 module dwt.dwthelper.utils;
5406a8f6526d Add initial files
John Reimer <terminal.node@gmail.com
parents:
diff changeset
5
5406a8f6526d Add initial files
John Reimer <terminal.node@gmail.com
parents:
diff changeset
6 public import dwt.dwthelper.System;
15
1bea9f0c6f63 FontData, Font
Frank Benoit <benoit@tionex.de>
parents: 0
diff changeset
7 public import Math = tango.math.Math;
0
5406a8f6526d Add initial files
John Reimer <terminal.node@gmail.com
parents:
diff changeset
8
5406a8f6526d Add initial files
John Reimer <terminal.node@gmail.com
parents:
diff changeset
9 import tango.io.Stdout;
15
1bea9f0c6f63 FontData, Font
Frank Benoit <benoit@tionex.de>
parents: 0
diff changeset
10 import tango.stdc.stringz;
1bea9f0c6f63 FontData, Font
Frank Benoit <benoit@tionex.de>
parents: 0
diff changeset
11 import tango.text.Util;
0
5406a8f6526d Add initial files
John Reimer <terminal.node@gmail.com
parents:
diff changeset
12 import tango.text.Unicode;
15
1bea9f0c6f63 FontData, Font
Frank Benoit <benoit@tionex.de>
parents: 0
diff changeset
13 import tango.text.convert.Utf;
1bea9f0c6f63 FontData, Font
Frank Benoit <benoit@tionex.de>
parents: 0
diff changeset
14 import tango.core.Exception;
0
5406a8f6526d Add initial files
John Reimer <terminal.node@gmail.com
parents:
diff changeset
15 import tango.stdc.stdlib : exit;
5406a8f6526d Add initial files
John Reimer <terminal.node@gmail.com
parents:
diff changeset
16
5406a8f6526d Add initial files
John Reimer <terminal.node@gmail.com
parents:
diff changeset
17 void implMissing( char[] file, uint line ){
5406a8f6526d Add initial files
John Reimer <terminal.node@gmail.com
parents:
diff changeset
18 Stderr.formatln( "implementation missing in file {} line {}", file, line );
5406a8f6526d Add initial files
John Reimer <terminal.node@gmail.com
parents:
diff changeset
19 Stderr.formatln( "exiting ..." );
5406a8f6526d Add initial files
John Reimer <terminal.node@gmail.com
parents:
diff changeset
20 exit(1);
5406a8f6526d Add initial files
John Reimer <terminal.node@gmail.com
parents:
diff changeset
21 }
5406a8f6526d Add initial files
John Reimer <terminal.node@gmail.com
parents:
diff changeset
22
5406a8f6526d Add initial files
John Reimer <terminal.node@gmail.com
parents:
diff changeset
23 abstract class ArrayWrapper{
5406a8f6526d Add initial files
John Reimer <terminal.node@gmail.com
parents:
diff changeset
24 }
33
39a9959ef14d Display + ImageList
Frank Benoit <benoit@tionex.de>
parents: 30
diff changeset
25 abstract class ValueWrapper{
39a9959ef14d Display + ImageList
Frank Benoit <benoit@tionex.de>
parents: 30
diff changeset
26 }
0
5406a8f6526d Add initial files
John Reimer <terminal.node@gmail.com
parents:
diff changeset
27
5406a8f6526d Add initial files
John Reimer <terminal.node@gmail.com
parents:
diff changeset
28 class ArrayWrapperT(T) : ArrayWrapper {
5406a8f6526d Add initial files
John Reimer <terminal.node@gmail.com
parents:
diff changeset
29 public T[] array;
5406a8f6526d Add initial files
John Reimer <terminal.node@gmail.com
parents:
diff changeset
30 public this( T[] data ){
5406a8f6526d Add initial files
John Reimer <terminal.node@gmail.com
parents:
diff changeset
31 array = data;
5406a8f6526d Add initial files
John Reimer <terminal.node@gmail.com
parents:
diff changeset
32 }
5406a8f6526d Add initial files
John Reimer <terminal.node@gmail.com
parents:
diff changeset
33 }
5406a8f6526d Add initial files
John Reimer <terminal.node@gmail.com
parents:
diff changeset
34
33
39a9959ef14d Display + ImageList
Frank Benoit <benoit@tionex.de>
parents: 30
diff changeset
35 class ValueWrapperT(T) : ValueWrapper {
39a9959ef14d Display + ImageList
Frank Benoit <benoit@tionex.de>
parents: 30
diff changeset
36 public T value;
39a9959ef14d Display + ImageList
Frank Benoit <benoit@tionex.de>
parents: 30
diff changeset
37 public this( T data ){
39a9959ef14d Display + ImageList
Frank Benoit <benoit@tionex.de>
parents: 30
diff changeset
38 value = data;
39a9959ef14d Display + ImageList
Frank Benoit <benoit@tionex.de>
parents: 30
diff changeset
39 }
39a9959ef14d Display + ImageList
Frank Benoit <benoit@tionex.de>
parents: 30
diff changeset
40 }
39a9959ef14d Display + ImageList
Frank Benoit <benoit@tionex.de>
parents: 30
diff changeset
41
39a9959ef14d Display + ImageList
Frank Benoit <benoit@tionex.de>
parents: 30
diff changeset
42 alias ValueWrapperT!(bool) ValueWrapperBool;
0
5406a8f6526d Add initial files
John Reimer <terminal.node@gmail.com
parents:
diff changeset
43 alias ArrayWrapperT!(byte) ArrayWrapperByte;
5406a8f6526d Add initial files
John Reimer <terminal.node@gmail.com
parents:
diff changeset
44 alias ArrayWrapperT!(int) ArrayWrapperInt;
5406a8f6526d Add initial files
John Reimer <terminal.node@gmail.com
parents:
diff changeset
45 alias ArrayWrapperT!(Object) ArrayWrapperObject;
5406a8f6526d Add initial files
John Reimer <terminal.node@gmail.com
parents:
diff changeset
46 alias ArrayWrapperT!(char) ArrayWrapperString;
5406a8f6526d Add initial files
John Reimer <terminal.node@gmail.com
parents:
diff changeset
47 alias ArrayWrapperT!(char[]) ArrayWrapperString2;
5406a8f6526d Add initial files
John Reimer <terminal.node@gmail.com
parents:
diff changeset
48
5406a8f6526d Add initial files
John Reimer <terminal.node@gmail.com
parents:
diff changeset
49 dchar getFirstCodepoint( char[] str ){
5406a8f6526d Add initial files
John Reimer <terminal.node@gmail.com
parents:
diff changeset
50 foreach( dchar d; str ){
5406a8f6526d Add initial files
John Reimer <terminal.node@gmail.com
parents:
diff changeset
51 return d;
5406a8f6526d Add initial files
John Reimer <terminal.node@gmail.com
parents:
diff changeset
52 }
5406a8f6526d Add initial files
John Reimer <terminal.node@gmail.com
parents:
diff changeset
53 }
5406a8f6526d Add initial files
John Reimer <terminal.node@gmail.com
parents:
diff changeset
54 dchar CharacterToLower( dchar c ){
5406a8f6526d Add initial files
John Reimer <terminal.node@gmail.com
parents:
diff changeset
55 dchar[] r = tango.text.Unicode.toLower( [c] );
5406a8f6526d Add initial files
John Reimer <terminal.node@gmail.com
parents:
diff changeset
56 return r[0];
5406a8f6526d Add initial files
John Reimer <terminal.node@gmail.com
parents:
diff changeset
57 }
5406a8f6526d Add initial files
John Reimer <terminal.node@gmail.com
parents:
diff changeset
58 dchar CharacterToUpper( dchar c ){
5406a8f6526d Add initial files
John Reimer <terminal.node@gmail.com
parents:
diff changeset
59 dchar[] r = tango.text.Unicode.toUpper( [c] );
5406a8f6526d Add initial files
John Reimer <terminal.node@gmail.com
parents:
diff changeset
60 return r[0];
5406a8f6526d Add initial files
John Reimer <terminal.node@gmail.com
parents:
diff changeset
61 }
52
Frank Benoit <benoit@tionex.de>
parents: 40
diff changeset
62 bool CharacterIsWhitespace( dchar c ){
Frank Benoit <benoit@tionex.de>
parents: 40
diff changeset
63 return tango.text.Unicode.isWhitespace( c );
Frank Benoit <benoit@tionex.de>
parents: 40
diff changeset
64 }
0
5406a8f6526d Add initial files
John Reimer <terminal.node@gmail.com
parents:
diff changeset
65
15
1bea9f0c6f63 FontData, Font
Frank Benoit <benoit@tionex.de>
parents: 0
diff changeset
66 public int indexOf( char[] str, char searched ){
1bea9f0c6f63 FontData, Font
Frank Benoit <benoit@tionex.de>
parents: 0
diff changeset
67 int res = tango.text.Util.locate( str, searched );
1bea9f0c6f63 FontData, Font
Frank Benoit <benoit@tionex.de>
parents: 0
diff changeset
68 if( res is str.length ) res = -1;
1bea9f0c6f63 FontData, Font
Frank Benoit <benoit@tionex.de>
parents: 0
diff changeset
69 return res;
1bea9f0c6f63 FontData, Font
Frank Benoit <benoit@tionex.de>
parents: 0
diff changeset
70 }
1bea9f0c6f63 FontData, Font
Frank Benoit <benoit@tionex.de>
parents: 0
diff changeset
71
1bea9f0c6f63 FontData, Font
Frank Benoit <benoit@tionex.de>
parents: 0
diff changeset
72 public int indexOf( char[] str, char searched, int startpos ){
1bea9f0c6f63 FontData, Font
Frank Benoit <benoit@tionex.de>
parents: 0
diff changeset
73 int res = tango.text.Util.locate( str, searched, startpos );
1bea9f0c6f63 FontData, Font
Frank Benoit <benoit@tionex.de>
parents: 0
diff changeset
74 if( res is str.length ) res = -1;
1bea9f0c6f63 FontData, Font
Frank Benoit <benoit@tionex.de>
parents: 0
diff changeset
75 return res;
1bea9f0c6f63 FontData, Font
Frank Benoit <benoit@tionex.de>
parents: 0
diff changeset
76 }
1bea9f0c6f63 FontData, Font
Frank Benoit <benoit@tionex.de>
parents: 0
diff changeset
77
1bea9f0c6f63 FontData, Font
Frank Benoit <benoit@tionex.de>
parents: 0
diff changeset
78 public int indexOf(char[] str, char[] ch, int start){
1bea9f0c6f63 FontData, Font
Frank Benoit <benoit@tionex.de>
parents: 0
diff changeset
79 int res = tango.text.Util.locatePattern( str, ch, start );
1bea9f0c6f63 FontData, Font
Frank Benoit <benoit@tionex.de>
parents: 0
diff changeset
80 if( res is str.length ) res = -1;
1bea9f0c6f63 FontData, Font
Frank Benoit <benoit@tionex.de>
parents: 0
diff changeset
81 return res;
1bea9f0c6f63 FontData, Font
Frank Benoit <benoit@tionex.de>
parents: 0
diff changeset
82 }
1bea9f0c6f63 FontData, Font
Frank Benoit <benoit@tionex.de>
parents: 0
diff changeset
83
1bea9f0c6f63 FontData, Font
Frank Benoit <benoit@tionex.de>
parents: 0
diff changeset
84 public char[] substring( char[] str, int start ){
1bea9f0c6f63 FontData, Font
Frank Benoit <benoit@tionex.de>
parents: 0
diff changeset
85 return str[ start .. $ ].dup;
1bea9f0c6f63 FontData, Font
Frank Benoit <benoit@tionex.de>
parents: 0
diff changeset
86 }
1bea9f0c6f63 FontData, Font
Frank Benoit <benoit@tionex.de>
parents: 0
diff changeset
87
1bea9f0c6f63 FontData, Font
Frank Benoit <benoit@tionex.de>
parents: 0
diff changeset
88 public char[] substring( char[] str, int start, int end ){
1bea9f0c6f63 FontData, Font
Frank Benoit <benoit@tionex.de>
parents: 0
diff changeset
89 return str[ start .. end ].dup;
1bea9f0c6f63 FontData, Font
Frank Benoit <benoit@tionex.de>
parents: 0
diff changeset
90 }
1bea9f0c6f63 FontData, Font
Frank Benoit <benoit@tionex.de>
parents: 0
diff changeset
91
1bea9f0c6f63 FontData, Font
Frank Benoit <benoit@tionex.de>
parents: 0
diff changeset
92 public wchar[] substring( wchar[] str, int start ){
1bea9f0c6f63 FontData, Font
Frank Benoit <benoit@tionex.de>
parents: 0
diff changeset
93 return str[ start .. $ ].dup;
1bea9f0c6f63 FontData, Font
Frank Benoit <benoit@tionex.de>
parents: 0
diff changeset
94 }
1bea9f0c6f63 FontData, Font
Frank Benoit <benoit@tionex.de>
parents: 0
diff changeset
95
1bea9f0c6f63 FontData, Font
Frank Benoit <benoit@tionex.de>
parents: 0
diff changeset
96 public wchar[] substring( wchar[] str, int start, int end ){
1bea9f0c6f63 FontData, Font
Frank Benoit <benoit@tionex.de>
parents: 0
diff changeset
97 return str[ start .. end ].dup;
1bea9f0c6f63 FontData, Font
Frank Benoit <benoit@tionex.de>
parents: 0
diff changeset
98 }
1bea9f0c6f63 FontData, Font
Frank Benoit <benoit@tionex.de>
parents: 0
diff changeset
99
1bea9f0c6f63 FontData, Font
Frank Benoit <benoit@tionex.de>
parents: 0
diff changeset
100 public char charAt( char[] str, int pos ){
1bea9f0c6f63 FontData, Font
Frank Benoit <benoit@tionex.de>
parents: 0
diff changeset
101 return str[ pos ];
1bea9f0c6f63 FontData, Font
Frank Benoit <benoit@tionex.de>
parents: 0
diff changeset
102 }
1bea9f0c6f63 FontData, Font
Frank Benoit <benoit@tionex.de>
parents: 0
diff changeset
103
22
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents: 15
diff changeset
104 public void getChars( char[] src, int srcBegin, int srcEnd, char[] dst, int dstBegin){
23
f5482da87ed8 Image, ImageData
Frank Benoit <benoit@tionex.de>
parents: 22
diff changeset
105 dst[ dstBegin .. dstBegin + srcEnd - srcBegin ] = src[ srcBegin .. srcEnd ];
22
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents: 15
diff changeset
106 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents: 15
diff changeset
107
28
Frank Benoit <benoit@tionex.de>
parents: 23
diff changeset
108 public wchar[] toCharArray( char[] str ){
30
1e14cb29290a TextLayout
Frank Benoit <benoit@tionex.de>
parents: 28
diff changeset
109 return toString16( str );
28
Frank Benoit <benoit@tionex.de>
parents: 23
diff changeset
110 }
Frank Benoit <benoit@tionex.de>
parents: 23
diff changeset
111
22
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents: 15
diff changeset
112 public bool endsWith( char[] src, char[] pattern ){
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents: 15
diff changeset
113 if( src.length < pattern.length ){
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents: 15
diff changeset
114 return false;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents: 15
diff changeset
115 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents: 15
diff changeset
116 return src[ $-pattern.length .. $ ] == pattern;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents: 15
diff changeset
117 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents: 15
diff changeset
118
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents: 15
diff changeset
119 public char[] toLowerCase( char[] src ){
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents: 15
diff changeset
120 return tango.text.Unicode.toLower( src );
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents: 15
diff changeset
121 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents: 15
diff changeset
122
15
1bea9f0c6f63 FontData, Font
Frank Benoit <benoit@tionex.de>
parents: 0
diff changeset
123 static char[] toHex(uint value, bool prefix = true, int radix = 8){
22
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents: 15
diff changeset
124 return tango.text.convert.Integer.toString(
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents: 15
diff changeset
125 value,
15
1bea9f0c6f63 FontData, Font
Frank Benoit <benoit@tionex.de>
parents: 0
diff changeset
126 radix is 10 ? tango.text.convert.Integer.Style.Signed :
1bea9f0c6f63 FontData, Font
Frank Benoit <benoit@tionex.de>
parents: 0
diff changeset
127 radix is 8 ? tango.text.convert.Integer.Style.Octal :
1bea9f0c6f63 FontData, Font
Frank Benoit <benoit@tionex.de>
parents: 0
diff changeset
128 radix is 16 ? tango.text.convert.Integer.Style.Hex :
1bea9f0c6f63 FontData, Font
Frank Benoit <benoit@tionex.de>
parents: 0
diff changeset
129 tango.text.convert.Integer.Style.Signed,
1bea9f0c6f63 FontData, Font
Frank Benoit <benoit@tionex.de>
parents: 0
diff changeset
130 prefix ? tango.text.convert.Integer.Flags.Prefix : tango.text.convert.Integer.Flags.None
1bea9f0c6f63 FontData, Font
Frank Benoit <benoit@tionex.de>
parents: 0
diff changeset
131 );
1bea9f0c6f63 FontData, Font
Frank Benoit <benoit@tionex.de>
parents: 0
diff changeset
132 }
1bea9f0c6f63 FontData, Font
Frank Benoit <benoit@tionex.de>
parents: 0
diff changeset
133
1bea9f0c6f63 FontData, Font
Frank Benoit <benoit@tionex.de>
parents: 0
diff changeset
134 class NumberFormatException : IllegalArgumentException {
1bea9f0c6f63 FontData, Font
Frank Benoit <benoit@tionex.de>
parents: 0
diff changeset
135 this( char[] e ){
1bea9f0c6f63 FontData, Font
Frank Benoit <benoit@tionex.de>
parents: 0
diff changeset
136 super(e);
1bea9f0c6f63 FontData, Font
Frank Benoit <benoit@tionex.de>
parents: 0
diff changeset
137 }
57
41dbc4d9faab Update to tango trunk -r3152. Thanks DavidLeon for the adjustment of TracedException to Exception and creating the patch.
Frank Benoit <benoit@tionex.de>
parents: 52
diff changeset
138 this( Exception e ){
15
1bea9f0c6f63 FontData, Font
Frank Benoit <benoit@tionex.de>
parents: 0
diff changeset
139 super(e.toString);
1bea9f0c6f63 FontData, Font
Frank Benoit <benoit@tionex.de>
parents: 0
diff changeset
140 }
1bea9f0c6f63 FontData, Font
Frank Benoit <benoit@tionex.de>
parents: 0
diff changeset
141 }
1bea9f0c6f63 FontData, Font
Frank Benoit <benoit@tionex.de>
parents: 0
diff changeset
142
40
Frank Benoit <benoit@tionex.de>
parents: 33
diff changeset
143 struct GCStats {
Frank Benoit <benoit@tionex.de>
parents: 33
diff changeset
144 size_t poolsize; // total size of pool
Frank Benoit <benoit@tionex.de>
parents: 33
diff changeset
145 size_t usedsize; // bytes allocated
Frank Benoit <benoit@tionex.de>
parents: 33
diff changeset
146 size_t freeblocks; // number of blocks marked FREE
Frank Benoit <benoit@tionex.de>
parents: 33
diff changeset
147 size_t freelistsize; // total of memory on free lists
Frank Benoit <benoit@tionex.de>
parents: 33
diff changeset
148 size_t pageblocks; // number of blocks marked PAGE
Frank Benoit <benoit@tionex.de>
parents: 33
diff changeset
149 }
Frank Benoit <benoit@tionex.de>
parents: 33
diff changeset
150
Frank Benoit <benoit@tionex.de>
parents: 33
diff changeset
151 extern(System) GCStats gc_stats();
Frank Benoit <benoit@tionex.de>
parents: 33
diff changeset
152
Frank Benoit <benoit@tionex.de>
parents: 33
diff changeset
153 size_t RuntimeTotalMemory(){
Frank Benoit <benoit@tionex.de>
parents: 33
diff changeset
154 GCStats s = gc_stats();
Frank Benoit <benoit@tionex.de>
parents: 33
diff changeset
155 return s.poolsize;
Frank Benoit <benoit@tionex.de>
parents: 33
diff changeset
156 }
15
1bea9f0c6f63 FontData, Font
Frank Benoit <benoit@tionex.de>
parents: 0
diff changeset
157
1bea9f0c6f63 FontData, Font
Frank Benoit <benoit@tionex.de>
parents: 0
diff changeset
158
1bea9f0c6f63 FontData, Font
Frank Benoit <benoit@tionex.de>
parents: 0
diff changeset
159
1bea9f0c6f63 FontData, Font
Frank Benoit <benoit@tionex.de>
parents: 0
diff changeset
160