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_delegate;
15 
16 
17 // delegate
18 
19 alias void delegate(int) dg;
20 
21 class TypeInfo_D : TypeInfo
22 {
23     @trusted:
24     const:
25     pure:
26     nothrow:
27 
getHash(scope const void * p)28     override size_t getHash(scope const void* p)
29     {
30         return hashOf(*cast(dg*)p);
31     }
32 
equals(in void * p1,in void * p2)33     override bool equals(in void* p1, in void* p2)
34     {
35         return *cast(dg *)p1 == *cast(dg *)p2;
36     }
37 
tsize()38     override @property size_t tsize() nothrow pure
39     {
40         return dg.sizeof;
41     }
42 
swap(void * p1,void * p2)43     override void swap(void *p1, void *p2)
44     {
45         dg t;
46 
47         t = *cast(dg *)p1;
48         *cast(dg *)p1 = *cast(dg *)p2;
49         *cast(dg *)p2 = t;
50     }
51 
initializer()52     override const(void)[] initializer() const @trusted
53     {
54         static immutable dg d;
55 
56         return (cast(void *)null)[0 .. dg.sizeof];
57     }
58 
flags()59     override @property uint flags() nothrow pure
60     {
61         return 1;
62     }
63 }
64