/src/rt/typeinfo/ti_ulong.d

http://github.com/AlexeyProkhin/druntime · D · 66 lines · 41 code · 12 blank · 13 comment · 4 complexity · 6999a0e33c6acb5380e32acab6e91ea2 MD5 · raw file

  1. /**
  2. * TypeInfo support code.
  3. *
  4. * Copyright: Copyright Digital Mars 2004 - 2009.
  5. * License: <a href="http://www.boost.org/LICENSE_1_0.txt">Boost License 1.0</a>.
  6. * Authors: Walter Bright
  7. */
  8. /* Copyright Digital Mars 2004 - 2009.
  9. * Distributed under the Boost Software License, Version 1.0.
  10. * (See accompanying file LICENSE or copy at
  11. * http://www.boost.org/LICENSE_1_0.txt)
  12. */
  13. module rt.typeinfo.ti_ulong;
  14. private import rt.util.hash;
  15. // ulong
  16. class TypeInfo_m : TypeInfo
  17. {
  18. @trusted:
  19. const:
  20. pure:
  21. nothrow:
  22. override string toString() const pure nothrow @safe { return "ulong"; }
  23. override size_t getHash(in void* p)
  24. {
  25. return hashOf(p, ulong.sizeof);
  26. }
  27. override bool equals(in void* p1, in void* p2)
  28. {
  29. return *cast(ulong *)p1 == *cast(ulong *)p2;
  30. }
  31. override int compare(in void* p1, in void* p2)
  32. {
  33. if (*cast(ulong *)p1 < *cast(ulong *)p2)
  34. return -1;
  35. else if (*cast(ulong *)p1 > *cast(ulong *)p2)
  36. return 1;
  37. return 0;
  38. }
  39. override @property size_t tsize() nothrow pure
  40. {
  41. return ulong.sizeof;
  42. }
  43. override void swap(void *p1, void *p2)
  44. {
  45. ulong t;
  46. t = *cast(ulong *)p1;
  47. *cast(ulong *)p1 = *cast(ulong *)p2;
  48. *cast(ulong *)p2 = t;
  49. }
  50. override @property size_t talign() nothrow pure
  51. {
  52. return ulong.alignof;
  53. }
  54. }