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 */ 14module rt.typeinfo.ti_C; 15 16// Object 17 18class TypeInfo_C : TypeInfo 19{ 20 @trusted: 21 const: 22 //pure: 23 //nothrow: 24 25 override size_t getHash(scope const void* p) 26 { 27 Object o = *cast(Object*)p; 28 return o ? o.toHash() : 0; 29 } 30 31 override bool equals(in void* p1, in void* p2) 32 { 33 Object o1 = *cast(Object*)p1; 34 Object o2 = *cast(Object*)p2; 35 36 return o1 == o2; 37 } 38 39 override int compare(in void* p1, in void* p2) 40 { 41 Object o1 = *cast(Object*)p1; 42 Object o2 = *cast(Object*)p2; 43 int c = 0; 44 45 // Regard null references as always being "less than" 46 if (!(o1 is o2)) 47 { 48 if (o1) 49 { 50 if (!o2) 51 c = 1; 52 else 53 c = o1.opCmp(o2); 54 } 55 else 56 c = -1; 57 } 58 return c; 59 } 60 61 override @property size_t tsize() nothrow pure 62 { 63 return Object.sizeof; 64 } 65 66 override const(void)[] initializer() const @trusted 67 { 68 return (cast(void *)null)[0 .. Object.sizeof]; 69 } 70 71 override @property uint flags() nothrow pure 72 { 73 return 1; 74 } 75} 76