/runtime/typeinfo/ti_object.d

http://github.com/wilkie/djehuty · D · 54 lines · 38 code · 9 blank · 7 comment · 6 complexity · 13a7bbe62d7a0996b11f1cce2e04252e MD5 · raw file

  1. /*
  2. * ti_object.d
  3. *
  4. * This module implements the TypeInfo for a class reference.
  5. *
  6. */
  7. module runtime.typeinfo.ti_object;
  8. class TypeInfo_Class : TypeInfo {
  9. hash_t getHash(void *p) {
  10. Object o = *cast(Object*)p;
  11. assert(o);
  12. return o.toHash();
  13. }
  14. int equals(void *p1, void *p2) {
  15. Object o1 = *cast(Object*)p1;
  16. Object o2 = *cast(Object*)p2;
  17. return o1 == o2;
  18. }
  19. int compare(void *p1, void *p2) {
  20. Object o1 = *cast(Object*)p1;
  21. Object o2 = *cast(Object*)p2;
  22. int c = 0;
  23. // Regard null references as always being "less than"
  24. if (!(o1 is o2)) {
  25. if (o1) {
  26. if (!o2) {
  27. c = 1;
  28. }
  29. else {
  30. c = o1.opCmp(o2);
  31. }
  32. }
  33. else {
  34. c = -1;
  35. }
  36. }
  37. return c;
  38. }
  39. size_t tsize() {
  40. return Object.sizeof;
  41. }
  42. uint flags() {
  43. return 1;
  44. }
  45. }