Samchon Framework for CPP  1.0.0
IOperator.hpp
1 #pragma once
2 #include <samchon/API.hpp>
3 
19 #define OPERATOR_METHODS_INLINE(_Ty) \
20 auto operator!=(const _Ty &obj) const -> bool \
21 { \
22  return !operator==(obj); \
23 }; \
24 auto operator<=(const _Ty &obj) const -> bool \
25 { \
26  return operator<(obj) || operator==(obj); \
27 }; \
28 auto operator>(const _Ty &obj) const -> bool \
29 { \
30  return !operator<=(obj); \
31 }; \
32 auto operator>=(const _Ty &obj) const -> bool \
33 { \
34  return !operator<(obj); \
35 };
36 
52 #define OPERATOR_METHODS_HEADER(_Ty) \
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 auto operator>=(const _Ty &obj) const -> bool;
57 
76 #define OPERATOR_METHODS_BODY(_Class, _Ty) \
77 auto _Class::operator!=(const _Ty &obj) const -> bool \
78 { \
79  return !operator==(obj); \
80 } \
81 auto _Class::operator<=(const _Ty &obj) const -> bool \
82 { \
83  return operator<(obj) || operator==(obj); \
84 } \
85 auto _Class::operator>(const _Ty &obj) const -> bool \
86 { \
87  return !operator<=(obj); \
88 } \
89 auto _Class::operator>=(const _Ty &obj) const -> bool \
90 { \
91  return !operator<(obj); \
92 }
93 
94 namespace samchon
95 {
96 namespace library
97 {
122  template <typename T>
123  class IOperator
124  {
125  public:
130  {
131  };
132  virtual ~IOperator() = default;
133 
141  virtual auto operator<(const IOperator&) const -> bool = 0;
142 
150  virtual auto operator==(const IOperator&) const -> bool = 0;
151 
152  auto operator!=(const IOperator<T> &obj) const -> bool
153  {
154  return !operator==(obj);
155  };
156  auto operator<=(const IOperator<T> &obj) const -> bool
157  {
158  return operator<(obj) || operator==(obj);
159  };
160  auto operator>(const IOperator<T> &obj) const -> bool
161  {
162  return !operator<(obj) && !operator==(obj);
163  };
164  auto operator>=(const IOperator<T> &obj) const -> bool
165  {
166  return !operator<(obj);
167  };
168  };
169 };
170 };
Interface for comparision operator.
Definition: IOperator.hpp:123
virtual auto operator<(const IOperator &) const -> bool=0
Less.
virtual auto operator==(const IOperator &) const -> bool=0
Equal.
IOperator()
Default Constructor.
Definition: IOperator.hpp:129
Top level namespace of products built from samchon.
Definition: ByteArray.hpp:7