Jpp  master_rocky
the software that should make you happy
Macros | Functions
JBool.cc File Reference

Example program to test JLANG::JBool class. More...

#include <iostream>
#include <iomanip>
#include "JLang/JBool.hh"
#include "JLang/JConversion.hh"
#include "Jeep/JParser.hh"
#include "Jeep/JMessage.hh"

Go to the source code of this file.

Macros

#define C_OPERAND(OP, A, B)   OP< JBool<A>, JBool<B> >::value
 Operand macro. More...
 
#define C_SWITCH(VALUE, A, B)   VALUE.c_switch<A,B>()
 Switch macro. More...
 

Functions

int main (int argc, char **argv)
 

Detailed Description

Example program to test JLANG::JBool class.

Author
mdejong

Definition in file JBool.cc.

Macro Definition Documentation

◆ C_OPERAND

#define C_OPERAND (   OP,
  A,
 
)    OP< JBool<A>, JBool<B> >::value

Operand macro.

Parameters
OPlogical operator
Afirst value
Bsecond value
Returns
result

Definition at line 62 of file JBool.cc.

◆ C_SWITCH

#define C_SWITCH (   VALUE,
  A,
 
)    VALUE.c_switch<A,B>()

Switch macro.


The result equals first option if value true; else second option.

Parameters
VALUEvalue
Afirst option
Bsecond option
Returns
result

Definition at line 73 of file JBool.cc.

Function Documentation

◆ main()

int main ( int  argc,
char **  argv 
)

Definition at line 82 of file JBool.cc.

83 {
84  using namespace std;
85 
86  int debug;
87 
88  try {
89 
90  JParser<> zap("Example program to test boolean algebra at compile time.");
91 
92  zap['d'] = make_field(debug) = 3;
93 
94  zap(argc, argv);
95  }
96  catch(const exception &error) {
97  FATAL(error.what() << endl);
98  }
99 
100  using namespace JPP;
101 
102  const bool X = true;
103  const bool Y = false;
104 
105  ASSERT(JBool<X>::value == true);
106  ASSERT(JBool<Y>::value == false);
107 
108  ASSERT(C_OPERAND(AND, X, X) == true);
109  ASSERT(C_OPERAND(AND, X, Y) == false);
110  ASSERT(C_OPERAND(OR, X, X) == true);
111  ASSERT(C_OPERAND(OR, Y, Y) == false);
112  ASSERT(C_OPERAND(OR, X, Y) == true);
113  ASSERT(C_OPERAND(XOR, X, X) == false);
114  ASSERT(C_OPERAND(XOR, X, Y) == true);
115 
116  ASSERT(invert(JBool<true>()) == false);
117  ASSERT(invert(JBool<false>()) == true);
118 
119  JBool<true> option;
120 
121  ASSERT(C_SWITCH(option,X,Y));
122  ASSERT(!C_SWITCH(option,Y,X));
123 
124  ASSERT(!C_SWITCH(option.c_not(),X,Y));
125  ASSERT(C_SWITCH(option.c_not(),Y,X));
126 
127  return 0;
128 }
#define C_OPERAND(OP, A, B)
Operand macro.
Definition: JBool.cc:62
#define C_SWITCH(VALUE, A, B)
Switch macro.
Definition: JBool.cc:73
#define ASSERT(A,...)
Assert macro.
Definition: JMessage.hh:90
#define FATAL(A)
Definition: JMessage.hh:67
int debug
debug level
Definition: JSirene.cc:69
#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
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
Definition: JSTDTypes.hh:14
Type definition of logical AND.
Definition: JBool.hh:307
Auxiliary template class for type bool.
Definition: JBool.hh:21
static JBool<!value > c_not()
Make logical NOT.
Definition: JBool.hh:57
Type definition of logical OR.
Definition: JBool.hh:322
Type definition of logical XOR.
Definition: JBool.hh:337