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