/** * TypeInfo support code. * * Copyright: Copyright Digital Mars 2004 - 2009. * License: $(WEB www.boost.org/LICENSE_1_0.txt, Boost License 1.0). * Authors: Walter Bright */ /* Copyright Digital Mars 2004 - 2009. * Distributed under the Boost Software License, Version 1.0. * (See accompanying file LICENSE or copy at * http://www.boost.org/LICENSE_1_0.txt) */ module rt.typeinfo.ti_ptr; // internal typeinfo for any pointer type // please keep in sync with TypeInfo_Pointer class TypeInfo_P : TypeInfo { @trusted: const: pure: nothrow: override size_t getHash(scope const void* p) { size_t addr = cast(size_t) *cast(const void**)p; return addr ^ (addr >> 4); } override bool equals(in void* p1, in void* p2) { return *cast(void**)p1 == *cast(void**)p2; } override int compare(in void* p1, in void* p2) { if (*cast(void**)p1 < *cast(void**)p2) return -1; else if (*cast(void**)p1 > *cast(void**)p2) return 1; else return 0; } override @property size_t tsize() nothrow pure { return (void*).sizeof; } override const(void)[] initializer() const @trusted { return (cast(void *)null)[0 .. (void*).sizeof]; } override void swap(void *p1, void *p2) { void* tmp = *cast(void**)p1; *cast(void**)p1 = *cast(void**)p2; *cast(void**)p2 = tmp; } override @property uint flags() nothrow pure const { return 1; } }