Mercurial > projects > dil
comparison trunk/src/dil/Converter.d @ 786:3b34f6a95a27
Added and revised documenation comments.
author | Aziz K?ksal <aziz.koeksal@gmail.com> |
---|---|
date | Sun, 24 Feb 2008 02:41:11 +0100 |
parents | 4579e8505d5e |
children |
comparison
equal
deleted
inserted
replaced
785:57ef69eced96 | 786:3b34f6a95a27 |
---|---|
24 conv.filePath = filePath; | 24 conv.filePath = filePath; |
25 conv.infoMan = infoMan; | 25 conv.infoMan = infoMan; |
26 return conv; | 26 return conv; |
27 } | 27 } |
28 | 28 |
29 /// Byte-swaps c. | |
29 dchar swapBytes(dchar c) | 30 dchar swapBytes(dchar c) |
30 { | 31 { |
31 return c = (c << 24) | | 32 return c = (c << 24) | |
32 ((c >> 8) & 0xFF00) | | 33 ((c >> 8) & 0xFF00) | |
33 ((c << 8) & 0xFF0000) | | 34 ((c << 8) & 0xFF0000) | |
34 (c >> 24); | 35 (c >> 24); |
35 } | 36 } |
36 | 37 |
38 /// Byte-swaps c. | |
37 wchar swapBytes(wchar c) | 39 wchar swapBytes(wchar c) |
38 { | 40 { |
39 return (c << 8) | (c >> 8); | 41 return (c << 8) | (c >> 8); |
40 } | 42 } |
41 | 43 |
42 wchar BEtoMachineDword(dchar c) | 44 /// Swaps the bytes of c on a little-endian machine. |
45 dchar BEtoMachineDword(dchar c) | |
43 { | 46 { |
44 version(LittleEndian) | 47 version(LittleEndian) |
45 return swapBytes(c); | 48 return swapBytes(c); |
46 else | 49 else |
47 return c; | 50 return c; |
48 } | 51 } |
49 | 52 |
50 wchar LEtoMachineDword(dchar c) | 53 /// Swaps the bytes of c on a big-endian machine. |
54 dchar LEtoMachineDword(dchar c) | |
51 { | 55 { |
52 version(LittleEndian) | 56 version(LittleEndian) |
53 return c; | 57 return c; |
54 else | 58 else |
55 return swapBytes(c); | 59 return swapBytes(c); |
56 } | 60 } |
57 | 61 |
62 /// Swaps the bytes of c on a little-endian machine. | |
58 wchar BEtoMachineWord(wchar c) | 63 wchar BEtoMachineWord(wchar c) |
59 { | 64 { |
60 version(LittleEndian) | 65 version(LittleEndian) |
61 return swapBytes(c); | 66 return swapBytes(c); |
62 else | 67 else |
63 return c; | 68 return c; |
64 } | 69 } |
65 | 70 |
71 /// Swaps the bytes of c on a big-endian machine. | |
66 wchar LEtoMachineWord(wchar c) | 72 wchar LEtoMachineWord(wchar c) |
67 { | 73 { |
68 version(LittleEndian) | 74 version(LittleEndian) |
69 return c; | 75 return c; |
70 else | 76 else |
71 return swapBytes(c); | 77 return swapBytes(c); |
72 } | 78 } |
73 | 79 |
80 /// Converts a UTF-32 text to UTF-8. | |
74 char[] UTF32toUTF8(bool isBigEndian)(ubyte[] data) | 81 char[] UTF32toUTF8(bool isBigEndian)(ubyte[] data) |
75 { | 82 { |
76 if (data.length == 0) | 83 if (data.length == 0) |
77 return null; | 84 return null; |
78 | 85 |
107 ); | 114 ); |
108 | 115 |
109 return result; | 116 return result; |
110 } | 117 } |
111 | 118 |
112 alias UTF32toUTF8!(true) UTF32BEtoUTF8; | 119 alias UTF32toUTF8!(true) UTF32BEtoUTF8; /// Instantiation for UTF-32 BE. |
113 alias UTF32toUTF8!(false) UTF32LEtoUTF8; | 120 alias UTF32toUTF8!(false) UTF32LEtoUTF8; /// Instantiation for UTF-32 LE. |
114 | 121 |
122 /// Converts a UTF-16 text to UTF-8. | |
115 char[] UTF16toUTF8(bool isBigEndian)(ubyte[] data) | 123 char[] UTF16toUTF8(bool isBigEndian)(ubyte[] data) |
116 { | 124 { |
117 if (data.length == 0) | 125 if (data.length == 0) |
118 return null; | 126 return null; |
119 | 127 |
168 MSG.UTF16FileMustBeDivisibleBy2 | 176 MSG.UTF16FileMustBeDivisibleBy2 |
169 ); | 177 ); |
170 return result; | 178 return result; |
171 } | 179 } |
172 | 180 |
173 alias UTF16toUTF8!(true) UTF16BEtoUTF8; | 181 alias UTF16toUTF8!(true) UTF16BEtoUTF8; /// Instantiation for UTF-16 BE. |
174 alias UTF16toUTF8!(false) UTF16LEtoUTF8; | 182 alias UTF16toUTF8!(false) UTF16LEtoUTF8; /// Instantiation for UTF-16 LE. |
175 | 183 |
184 /// Converts the text in data to UTF-8. | |
185 /// Leaves data unchanged if it is in UTF-8 already. | |
176 char[] data2UTF8(ubyte[] data) | 186 char[] data2UTF8(ubyte[] data) |
177 { | 187 { |
178 if (data.length == 0) | 188 if (data.length == 0) |
179 return ""; | 189 return ""; |
180 | 190 |