xref: /netbsd-src/external/gpl3/gcc.old/dist/libphobos/libdruntime/rt/typeinfo/ti_n.d (revision 627f7eb200a4419d89b531d55fccd2ee3ffdcde0)
1 /**
2  * TypeInfo support code.
3  *
4  * Copyright: Copyright Digital Mars 2016.
5  * License:   $(WEB www.boost.org/LICENSE_1_0.txt, Boost License 1.0).
6  * Authors:   Kenji Hara
7  */
8 
9 /*          Copyright Digital Mars 2016.
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_n;
15 
16 // typeof(null)
17 
18 class TypeInfo_n : TypeInfo
19 {
toString()20     override string toString() const @safe { return "typeof(null)"; }
21 
getHash(scope const void * p)22     override size_t getHash(scope const void* p) const
23     {
24         return 0;
25     }
26 
equals(in void * p1,in void * p2)27     override bool equals(in void* p1, in void* p2) const @trusted
28     {
29         //return *cast(typeof(null)*)p1 is *cast(typeof(null)*)p2;
30         return true;
31     }
32 
compare(in void * p1,in void * p2)33     override int compare(in void* p1, in void* p2) const @trusted
34     {
35         //if (*cast(int*) p1 < *cast(int*) p2)
36         //    return -1;
37         //else if (*cast(int*) p1 > *cast(int*) p2)
38         //    return 1;
39         return 0;
40     }
41 
tsize()42     override @property size_t tsize() const
43     {
44         return typeof(null).sizeof;
45     }
46 
initializer()47     override const(void)[] initializer() const @trusted
48     {
49         return (cast(void*)null)[0 .. typeof(null).sizeof];
50     }
51 
swap(void * p1,void * p2)52     override void swap(void *p1, void *p2) const @trusted
53     {
54         //auto t = *cast(typeof(null)*)p1;
55         //*cast(typeof(null)*)p1 = *cast(typeof(null)*)p2;
56         //*cast(typeof(null)*)p2 = t;
57     }
58 }
59