Samchon Framework for CPP  1.0.0
IOperator.hpp
1 #pragma once
2 
18 #define OPERATOR_METHODS_INLINE(_Ty) \
19 auto operator!=(const _Ty &obj) const -> bool \
20 { \
21  return !operator==(obj); \
22 }; \
23 auto operator<=(const _Ty &obj) const -> bool \
24 { \
25  return operator<(obj) || operator==(obj); \
26 }; \
27 auto operator>(const _Ty &obj) const -> bool \
28 { \
29  return !operator<=(obj); \
30 }; \
31 auto operator>=(const _Ty &obj) const -> bool \
32 { \
33  return !operator<(obj); \
34 };
35 
51 #define OPERATOR_METHODS_HEADER(_Ty) \
52 auto operator!=(const _Ty &obj) const -> bool; \
53 auto operator<=(const _Ty &obj) const -> bool; \
54 auto operator>(const _Ty &obj) const -> bool; \
55 auto operator>=(const _Ty &obj) const -> bool;
56 
75 #define OPERATOR_METHODS_BODY(_Class, _Ty) \
76 auto _Class::operator!=(const _Ty &obj) const -> bool \
77 { \
78  return !operator==(obj); \
79 } \
80 auto _Class::operator<=(const _Ty &obj) const -> bool \
81 { \
82  return operator<(obj) || operator==(obj); \
83 } \
84 auto _Class::operator>(const _Ty &obj) const -> bool \
85 { \
86  return !operator<=(obj); \
87 } \
88 auto _Class::operator>=(const _Ty &obj) const -> bool \
89 { \
90  return !operator<(obj); \
91 }
92 
93 namespace samchon
94 {
95 namespace library
96 {
121  template <typename T>
122  class IOperator
123  {
124  public:
129  {
130  };
131  virtual ~IOperator() = default;
132 
140  virtual auto operator<(const IOperator&) const -> bool = 0;
141 
149  virtual auto operator==(const IOperator&) const -> bool = 0;
150 
151  auto operator!=(const IOperator<T> &obj) const -> bool
152  {
153  return !operator==(obj);
154  };
155  auto operator<=(const IOperator<T> &obj) const -> bool
156  {
157  return operator<(obj) || operator==(obj);
158  };
159  auto operator>(const IOperator<T> &obj) const -> bool
160  {
161  return !operator<(obj) && !operator==(obj);
162  };
163  auto operator>=(const IOperator<T> &obj) const -> bool
164  {
165  return !operator<(obj);
166  };
167  };
168 };
169 };
Interface for comparision operator.
Definition: IOperator.hpp:122
virtual auto operator<(const IOperator &) const -> bool=0
Less.
virtual auto operator==(const IOperator &) const -> bool=0
Equal.
IOperator()
Default Constructor.
Definition: IOperator.hpp:128