check.h 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. #pragma once
  2. namespace NLWTrace {
  3. struct TCheck {
  4. int Value;
  5. static int ObjCount;
  6. TCheck()
  7. : Value(0)
  8. {
  9. ObjCount++;
  10. }
  11. explicit TCheck(int value)
  12. : Value(value)
  13. {
  14. ObjCount++;
  15. }
  16. TCheck(const TCheck& o)
  17. : Value(o.Value)
  18. {
  19. ObjCount++;
  20. }
  21. ~TCheck() {
  22. ObjCount--;
  23. }
  24. bool operator<(const TCheck& rhs) const {
  25. return Value < rhs.Value;
  26. }
  27. bool operator>(const TCheck& rhs) const {
  28. return Value > rhs.Value;
  29. }
  30. bool operator<=(const TCheck& rhs) const {
  31. return Value <= rhs.Value;
  32. }
  33. bool operator>=(const TCheck& rhs) const {
  34. return Value >= rhs.Value;
  35. }
  36. bool operator==(const TCheck& rhs) const {
  37. return Value == rhs.Value;
  38. }
  39. bool operator!=(const TCheck& rhs) const {
  40. return Value != rhs.Value;
  41. }
  42. TCheck operator+(const TCheck& rhs) const {
  43. return TCheck(Value + rhs.Value);
  44. }
  45. TCheck operator-(const TCheck& rhs) const {
  46. return TCheck(Value - rhs.Value);
  47. }
  48. TCheck operator*(const TCheck& rhs) const {
  49. return TCheck(Value * rhs.Value);
  50. }
  51. TCheck operator/(const TCheck& rhs) const {
  52. return TCheck(Value / rhs.Value);
  53. }
  54. TCheck operator%(const TCheck& rhs) const {
  55. return TCheck(Value % rhs.Value);
  56. }
  57. void Add(const TCheck rhs) {
  58. Value += rhs.Value;
  59. }
  60. void Sub(const TCheck rhs) {
  61. Value -= rhs.Value;
  62. }
  63. void Inc() {
  64. ++Value;
  65. }
  66. void Dec() {
  67. --Value;
  68. }
  69. };
  70. }