annotate dmd/Dchar.d @ 192:eb38fdcb3e62 default tip

updated to compile with dmd2.062
author korDen
date Sat, 02 Mar 2013 01:25:52 -0800
parents e28b18c23469
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
1 module dmd.Dchar;
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
2
114
e28b18c23469 added a module dmd.common for commonly used stuff
Trass3r
parents: 0
diff changeset
3 import dmd.common;
0
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
4 import core.stdc.wchar_;
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
5 import core.stdc.string;
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
6 import core.stdc.ctype;
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
7
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
8 version (M_UNICODE) {
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
9 alias wchat dchar_t;
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
10
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
11 struct Dchar
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
12 {
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
13 static dchar_t* inc(dchar_t* p) { return p + 1; }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
14 static dchar_t* dec(dchar_t* pstart, dchar_t* p) { return p - 1; }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
15 static int len(const(dchar_t)* p) { return wcslen(p); }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
16 static dchar_t get(dchar_t* p) { return *p; }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
17 static dchar_t getprev(dchar_t* pstart, dchar_t* p) { return p[-1]; }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
18 static dchar_t* put(dchar_t* p, dchar_t c) { *p = c; return p + 1; }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
19 static int cmp(dchar_t* s1, dchar_t* s2)
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
20 {
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
21 version (__DMC__) {
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
22 if (!*s1 && !*s2) // wcscmp is broken
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
23 return 0;
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
24 }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
25 return wcscmp(s1, s2);
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
26 version (disabled) {
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
27 return (*s1 == *s2)
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
28 ? wcscmp(s1, s2)
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
29 : (cast(int)*s1 - cast(int)*s2);
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
30 }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
31 }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
32 static int memcmp(const(dchar_t)*s1, const(dchar_t)* s2, int nchars) { return .memcmp(s1, s2, nchars * dchar_t.sizeof); }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
33 static int isDigit(dchar_t c) { return '0' <= c && c <= '9'; }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
34 static int isAlpha(dchar_t c) { return iswalpha(c); }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
35 static int isUpper(dchar_t c) { return iswupper(c); }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
36 static int isLower(dchar_t c) { return iswlower(c); }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
37 static int isLocaleUpper(dchar_t c) { return isUpper(c); }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
38 static int isLocaleLower(dchar_t c) { return isLower(c); }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
39 static int toLower(dchar_t c) { return isUpper(c) ? towlower(c) : c; }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
40 static int toLower(dchar_t* p) { return toLower(*p); }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
41 static int toUpper(dchar_t c) { return isLower(c) ? towupper(c) : c; }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
42 static dchar_t* dup(dchar_t* p) { return ._wcsdup(p); } // BUG: out of memory?
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
43
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
44 static dchar_t* dup(char* p)
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
45 {
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
46 assert(false);
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
47 }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
48
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
49 static dchar_t* chr(dchar_t *p, uint c) { return wcschr(p, cast(dchar_t)c); }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
50 static dchar_t* rchr(dchar_t *p, uint c) { return wcsrchr(p, cast(dchar_t)c); }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
51
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
52 static dchar_t* memchr(dchar_t* p, int c, int count)
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
53 {
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
54 assert(false);
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
55 }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
56
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
57 static dchar_t* cpy(dchar_t* s1, dchar_t* s2) { return wcscpy(s1, s2); }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
58 static dchar_t* str(dchar_t* s1, dchar_t* s2) { return wcsstr(s1, s2); }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
59
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
60 static hash_t calcHash(const(dchar_t)* str, size_t len)
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
61 {
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
62 assert(false);
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
63 }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
64
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
65 // Case insensitive versions
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
66 static int icmp(dchar_t* s1, dchar_t* s2) { return wcsicmp(s1, s2); }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
67 static int memicmp(const(dchar_t)* s1, const(dchar_t)* s2, int nchars) { return .wcsnicmp(s1, s2, nchars); }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
68
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
69 static hash_t icalcHash(const(dchar_t)* str, size_t len)
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
70 {
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
71 assert(false);
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
72 }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
73 }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
74 } else version (UTF8) {
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
75 alias char dchar_t;
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
76
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
77 struct Dchar
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
78 {
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
79 static char mblen[256];
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
80
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
81 static dchar_t* inc(dchar_t* p) { return p + mblen[*p & 0xFF]; }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
82
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
83 static dchar_t* dec(dchar_t* pstart, dchar_t* p)
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
84 {
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
85 assert(false);
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
86 }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
87
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
88 static int len(const(dchar_t)* p) { return strlen(p); }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
89
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
90 static int get(dchar_t* p)
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
91 {
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
92 assert(false);
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
93 }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
94
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
95 static int getprev(dchar_t* pstart, dchar_t* p)
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
96 {
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
97 return *dec(pstart, p) & 0xFF;
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
98 }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
99
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
100 static dchar_t* put(dchar_t* p, uint c)
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
101 {
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
102 assert(false);
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
103 }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
104
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
105 static int cmp(dchar_t* s1, dchar_t* s2) { return strcmp(s1, s2); }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
106
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
107 static int memcmp(const(dchar_t)* s1, const(dchar_t)* s2, int nchars) { return .memcmp(s1, s2, nchars); }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
108
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
109 static int isDigit(dchar_t c) { return '0' <= c && c <= '9'; }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
110
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
111 static int isAlpha(dchar_t c) { return c <= 0x7F ? isalpha(c) : 0; }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
112
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
113 static int isUpper(dchar_t c) { return c <= 0x7F ? isupper(c) : 0; }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
114
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
115 static int isLower(dchar_t c) { return c <= 0x7F ? islower(c) : 0; }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
116
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
117 static int isLocaleUpper(dchar_t c) { return isUpper(c); }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
118
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
119 static int isLocaleLower(dchar_t c) { return isLower(c); }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
120
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
121 static int toLower(dchar_t c) { return isUpper(c) ? tolower(c) : c; }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
122
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
123 static int toLower(dchar_t* p) { return toLower(*p); }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
124
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
125 static int toUpper(dchar_t c) { return isLower(c) ? toupper(c) : c; }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
126
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
127 static dchar_t* dup(dchar_t* p) { return .strdup(p); } // BUG: out of memory?
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
128
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
129 static dchar_t* chr(dchar_t* p, int c) { return strchr(p, c); }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
130
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
131 static dchar_t* rchr(dchar_t* p, int c) { return strrchr(p, c); }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
132
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
133 static dchar_t* memchr(dchar_t* p, int c, int count)
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
134 {
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
135 return cast(dchar_t*).memchr(p, c, count);
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
136 }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
137
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
138 static dchar_t* cpy(dchar_t* s1, dchar_t* s2) { return strcpy(s1, s2); }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
139
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
140 static dchar_t* str(dchar_t* s1, dchar_t* s2) { return strstr(s1, s2); }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
141
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
142 static hash_t calcHash(const(dchar_t)* str, size_t len)
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
143 {
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
144 assert(false);
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
145 }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
146
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
147 // Case insensitive versions
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
148 static int icmp(dchar_t* s1, dchar_t* s2) { return _mbsicmp(s1, s2); }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
149
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
150 static int memicmp(const(dchar_t)* s1, const(dchar_t)* s2, int nchars) { return ._mbsnicmp(s1, s2, nchars); }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
151 }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
152 } else {
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
153 alias char dchar_t;
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
154
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
155 struct Dchar
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
156 {
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
157 static dchar_t* inc(dchar_t* p) { return p + 1; }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
158
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
159 static dchar_t* dec(dchar_t* pstart, dchar_t* p) { return p - 1; }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
160
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
161 static int len(const(dchar_t)* p) { return strlen(p); }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
162
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
163 static int get(dchar_t* p) { return *p & 0xFF; }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
164
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
165 static int getprev(dchar_t* pstart, dchar_t* p) { return p[-1] & 0xFF; }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
166
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
167 static dchar_t* put(dchar_t* p, uint c) { *p = cast(dchar_t)c; return p + 1; }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
168
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
169 static int cmp(dchar_t* s1, dchar_t* s2) { return strcmp(s1, s2); }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
170
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
171 static int memcmp(const(dchar_t)* s1, const(dchar_t)* s2, int nchars) { return .memcmp(s1, s2, nchars); }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
172
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
173 static int isDigit(dchar_t c) { return '0' <= c && c <= '9'; }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
174
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
175 version (GCC_SAFE_DMD) {
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
176 } else {
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
177 static int isAlpha(dchar_t c) { return isalpha(c); }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
178
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
179 static int isUpper(dchar_t c) { return isupper(c); }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
180
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
181 static int isLower(dchar_t c) { return islower(c); }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
182
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
183 static int isLocaleUpper(dchar_t c) { return isupper(c); }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
184
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
185 static int isLocaleLower(dchar_t c) { return islower(c); }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
186
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
187 static int toLower(dchar_t c) { return isupper(c) ? tolower(c) : c; }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
188
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
189 static int toLower(dchar_t* p) { return toLower(*p); }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
190
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
191 static int toUpper(dchar_t c) { return islower(c) ? toupper(c) : c; }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
192
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
193 static dchar_t* dup(dchar_t* p) { /*return .strdup(p);*/ assert(false); } // BUG: out of memory?
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
194 }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
195 static dchar_t* chr(dchar_t *p, int c) { return strchr(p, c); }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
196
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
197 static dchar_t* rchr(dchar_t *p, int c) { return strrchr(p, c); }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
198
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
199 static dchar_t* memchr(dchar_t *p, int c, int count)
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
200 {
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
201 return cast(dchar_t*).memchr(p, c, count);
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
202 }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
203
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
204 static dchar_t* cpy(dchar_t* s1, dchar_t* s2) { return strcpy(s1, s2); }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
205
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
206 static dchar_t* str(dchar_t* s1, dchar_t* s2) { return strstr(s1, s2); }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
207
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
208 static hash_t calcHash(const(dchar_t)* str, size_t len)
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
209 {
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
210 hash_t hash = 0;
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
211
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
212 while (1)
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
213 {
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
214 switch (len)
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
215 {
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
216 case 0:
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
217 return hash;
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
218
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
219 case 1:
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
220 hash *= 37;
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
221 hash += *cast(const(uint8_t)*)str;
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
222 return hash;
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
223
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
224 case 2:
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
225 hash *= 37;
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
226 version (__I86__) {
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
227 hash += *cast(const(uint16_t)*)str;
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
228 } else {
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
229 hash += str[0] * 256 + str[1];
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
230 }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
231 return hash;
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
232
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
233 case 3:
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
234 hash *= 37;
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
235 version (__I86__) {
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
236 hash += (*cast(const(uint16_t)*)str << 8) +
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
237 (cast(const(uint8_t)*)str)[2];
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
238 } else {
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
239 hash += (str[0] * 256 + str[1]) * 256 + str[2];
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
240 }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
241 return hash;
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
242
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
243 default:
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
244 hash *= 37;
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
245 version (__I86__) {
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
246 hash += *cast(const(uint32_t)*)str;
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
247 } else {
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
248 hash += ((str[0] * 256 + str[1]) * 256 + str[2]) * 256 + str[3];
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
249 }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
250 str += 4;
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
251 len -= 4;
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
252 break;
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
253 }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
254 }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
255
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
256 assert(false);
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
257 }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
258
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
259 // Case insensitive versions
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
260 version (__GNUC__) {
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
261 static int icmp(dchar_t* s1, dchar_t* s2) { return strcasecmp(s1, s2); }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
262 } else {
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
263 static int icmp(dchar_t* s1, dchar_t* s2) { /*return stricmp(s1, s2);*/ assert(false); }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
264 }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
265 static int memicmp(const(dchar_t)* s1, const(dchar_t)* s2, int nchars) { /*return .memicmp(s1, s2, nchars);*/ assert(false); }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
266 static hash_t icalcHash(const(dchar_t)* str, size_t len)
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
267 {
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
268 assert(false);
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
269 }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
270 }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
271 }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
272