xref: /netbsd-src/external/gpl3/gcc.old/dist/libphobos/libdruntime/rt/typeinfo/ti_wchar.d (revision 627f7eb200a4419d89b531d55fccd2ee3ffdcde0)
1 /**
2  * TypeInfo support code.
3  *
4  * Copyright: Copyright Digital Mars 2004 - 2009.
5  * License:   $(WEB www.boost.org/LICENSE_1_0.txt, Boost License 1.0).
6  * Authors:   Walter Bright
7  */
8 
9 /*          Copyright Digital Mars 2004 - 2009.
10  * Distributed under the Boost Software License, Version 1.0.
11  *    (See accompanying file LICENSE or copy at
12  *          http://www.boost.org/LICENSE_1_0.txt)
13  */
14 module rt.typeinfo.ti_wchar;
15 
16 // wchar
17 
18 class TypeInfo_u : TypeInfo
19 {
20     @trusted:
21     const:
22     pure:
23     nothrow:
24 
toString()25     override string toString() { return "wchar"; }
26 
getHash(scope const void * p)27     override size_t getHash(scope const void* p)
28     {
29         return *cast(const wchar *)p;
30     }
31 
equals(in void * p1,in void * p2)32     override bool equals(in void* p1, in void* p2)
33     {
34         return *cast(wchar *)p1 == *cast(wchar *)p2;
35     }
36 
compare(in void * p1,in void * p2)37     override int compare(in void* p1, in void* p2)
38     {
39         return *cast(wchar *)p1 - *cast(wchar *)p2;
40     }
41 
tsize()42     override @property size_t tsize()
43     {
44         return wchar.sizeof;
45     }
46 
swap(void * p1,void * p2)47     override void swap(void *p1, void *p2)
48     {
49         wchar t;
50 
51         t = *cast(wchar *)p1;
52         *cast(wchar *)p1 = *cast(wchar *)p2;
53         *cast(wchar *)p2 = t;
54     }
55 
initializer()56     override const(void)[] initializer() const @trusted
57     {
58         static immutable wchar c;
59 
60         return (&c)[0 .. 1];
61     }
62 }
63