Jpp  16.0.0-rc.2
the software that should make you happy
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Macros | Functions
JComparisonAvailable.cc File Reference

Example program to test JLANG::JComparisonAvailable and JLANG::JComparable classes. More...

#include <iostream>
#include <iomanip>
#include "JLang/JComparable.hh"
#include "JLang/JEquals.hh"
#include "JLang/JMultiEquals.hh"
#include "JLang/JComparisonAvailable.hh"
#include "Jeep/JParser.hh"
#include "Jeep/JMessage.hh"

Go to the source code of this file.

Macros

#define PRINT(OUT, CLASS)
 Print availabilty of comparison operators. More...
 

Functions

int main (int argc, char **argv)
 

Detailed Description

Example program to test JLANG::JComparisonAvailable and JLANG::JComparable classes.

Author
mdejong

Definition in file JComparisonAvailable.cc.

Macro Definition Documentation

#define PRINT (   OUT,
  CLASS 
)
Value:
OUT << std::setw(6) << std::left << #CLASS << ' ' ; \
OUT << ' ' << JComparisonAvailable<CLASS>::has_eq << ' '; \
OUT << ' ' << JComparisonAvailable<CLASS>::has_ne << ' '; \
OUT << ' ' << JComparisonAvailable<CLASS>::has_lt << ' '; \
OUT << ' ' << JComparisonAvailable<CLASS>::has_gt << ' '; \
OUT << ' ' << JComparisonAvailable<CLASS>::has_le << ' '; \
OUT << ' ' << JComparisonAvailable<CLASS>::has_ge << std::endl;

Print availabilty of comparison operators.

Parameters
OUToutput stream
CLASSclass name

Definition at line 47 of file JComparisonAvailable.cc.

Function Documentation

int main ( int  argc,
char **  argv 
)

Definition at line 63 of file JComparisonAvailable.cc.

64 {
65  using namespace std;
66  using namespace JPP;
67 
68  int debug;
69 
70  try {
71 
72  JParser<> zap("Example program to test availability of object comparisons.");
73 
74  zap['d'] = make_field(debug) = 3;
75 
76  zap(argc, argv);
77  }
78  catch(const exception &error) {
79  FATAL(error.what() << endl);
80  }
81 
82  if (debug >= debug_t) {
83 
84  cout << setw(6) << left << "class" << ' ' << "eq ne lt gt le ge" << endl;
85 
86  PRINT(cout, __A__);
87  PRINT(cout, __B__);
88  PRINT(cout, __C__);
89  PRINT(cout, __D__);
90  PRINT(cout, __E__);
91  }
92 
93  ASSERT(JComparisonAvailable<__A__>::has_eq == false);
94  ASSERT(JComparisonAvailable<__A__>::has_ne == true);
95  ASSERT(JComparisonAvailable<__A__>::has_lt == false);
96  ASSERT(JComparisonAvailable<__A__>::has_le == false);
97  ASSERT(JComparisonAvailable<__A__>::has_gt == false);
98  ASSERT(JComparisonAvailable<__A__>::has_ge == false);
99 
100  ASSERT(JComparisonAvailable<__C__>::has_eq == false);
101  ASSERT(JComparisonAvailable<__C__>::has_ne == false);
102  ASSERT(JComparisonAvailable<__C__>::has_lt == true);
103  ASSERT(JComparisonAvailable<__C__>::has_le == false);
104  ASSERT(JComparisonAvailable<__C__>::has_gt == true);
105  ASSERT(JComparisonAvailable<__C__>::has_ge == false);
106 
107  ASSERT(JComparisonAvailable<__D__>::has_eq == true);
108  ASSERT(JComparisonAvailable<__D__>::has_ne == true);
109  ASSERT(JComparisonAvailable<__D__>::has_lt == true);
110  ASSERT(JComparisonAvailable<__D__>::has_le == true);
111  ASSERT(JComparisonAvailable<__D__>::has_gt == true);
112  ASSERT(JComparisonAvailable<__D__>::has_ge == true);
113 
114  ASSERT(JComparisonAvailable<__E__>::has_eq == true);
115  ASSERT(JComparisonAvailable<__E__>::has_ne == true);
116  ASSERT(JComparisonAvailable<__E__>::has_lt == true);
117  ASSERT(JComparisonAvailable<__E__>::has_le == true);
118  ASSERT(JComparisonAvailable<__E__>::has_gt == true);
119  ASSERT(JComparisonAvailable<__E__>::has_ge == true);
120 
121  return 0;
122 }
Utility class to parse command line options.
Definition: JParser.hh:1500
debug
Definition: JMessage.hh:29
#define ASSERT(A,...)
Assert macro.
Definition: JMessage.hh:90
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
Definition: JParser.hh:1961
int debug
debug level
Definition: JSirene.cc:63
#define FATAL(A)
Definition: JMessage.hh:67
#define PRINT(OUT, CLASS)
Print availabilty of comparison operators.