Jpp 19.3.0-rc.1
the software that should make you happy
Loading...
Searching...
No Matches
JEquals.cc
Go to the documentation of this file.
1
2#include <iostream>
3#include <iomanip>
4
5#include "JLang/JEquals.hh"
6
7#include "Jeep/JParser.hh"
8#include "Jeep/JMessage.hh"
9
10
11namespace {
12
13 using namespace JPP;
14
15
16 struct __A__ :
17 public JEquals<__A__>
18 {
19 __A__(int __value) :
20 value(__value)
21 {}
22
23 bool equals(const __A__& object) const
24 {
25 return this->value == object.value;
26 }
27
28 friend std::ostream& operator<<(std::ostream& out, const __A__& object)
29 {
30 return out << object.value;
31 }
32
33 int value;
34 };
35
36
37 struct __B__ :
38 public JEquals<__B__, int>
39 {
40 __B__(int __value) :
41 value(__value)
42 {}
43
44 bool equals(const __B__& object) const
45 {
46 return this->value == object.value;
47 }
48
49 bool equals(const int value) const
50 {
51 return this->value == value;
52 }
53
54 friend std::ostream& operator<<(std::ostream& out, const __B__& object)
55 {
56 return out << object.value;
57 }
58
59 int value;
60 };
61
62 /**
63 * Print.
64 *
65 * \param OUT output stream
66 * \param OP operator
67 * \param A first object
68 * \param B second object
69 */
70#define PRINT(OUT,OP,A,B) \
71 OUT << "(" << A << ") " << #OP " (" << B << ") => " << (A OP B) << std::endl;
72}
73
74/**
75 * \file
76 *
77 * Example program to test JLANG::JComparible class.
78 * \author mdejong
79 */
80int main(int argc, char **argv)
81{
82 using namespace std;
83 using namespace JPP;
84
85 int debug;
86
87 try {
88
89 JParser<> zap("Example program to test object comparisons.");
90
91 zap['d'] = make_field(debug) = 3;
92
93 zap(argc, argv);
94 }
95 catch(const exception &error) {
96 FATAL(error.what() << endl);
97 }
98
99 __A__ a1(0);
100 __A__ a2(1);
101
102 PRINT(cout, ==, a1, a2);
103 PRINT(cout, !=, a1, a2);
104
105 __B__ b1(0);
106 __B__ b2(1);
107
108 PRINT(cout, ==, b1, b1);
109 PRINT(cout, !=, b1, b2);
110 PRINT(cout, ==, b1, 1);
111 PRINT(cout, !=, b1, 1);
112
113 ASSERT(a1 == a1);
114 ASSERT(a1 != a2);
115
116 ASSERT(b1 == b1);
117 ASSERT(b1 != b2);
118 ASSERT(b1 == 0);
119 ASSERT(b1 != 1);
120
121 return 0;
122}
int main(int argc, char **argv)
Definition JEquals.cc:80
#define PRINT(OUT, OP, A, B)
Print.
Definition JEquals.cc:70
General purpose messaging.
#define ASSERT(A,...)
Assert macro.
Definition JMessage.hh:90
#define FATAL(A)
Definition JMessage.hh:67
int debug
debug level
Definition JSirene.cc:72
Utility class to parse command line options.
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
Definition JParser.hh:2142
Utility class to parse command line options.
Definition JParser.hh:1698
std::ostream & operator<<(std::ostream &stream, const CLBCommonHeader &header)
bool equals(const JFirst_t &first, const JSecond_t &second, const double precision=std::numeric_limits< double >::min())
Check equality.
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
Template definition of auxiliary base class for comparison of data structures.
Definition JEquals.hh:84