MRMD 0.4.0
Multi Resolution Molecular Dynamics
Loading...
Searching...
No Matches
verbose.hpp File Reference
#include <cassert>
#include <iomanip>
#include <iostream>
#include <sstream>
#include <string>

Go to the source code of this file.

Namespaces

namespace  assumption
 Copyright (c) 2020 Sebastian Eibl.
 

Macros

#define LOG(msg)
 
#define GLUE(x, y)   x y
 
#define RETURN_ARG_COUNT(_1_, _2_, _3_, _4_, _5_, _6_, _7_, _8_, _9_, _10_, count, ...)   count
 
#define EXPAND_ARGS(args)   RETURN_ARG_COUNT args
 
#define COUNT_ARGS_MAX10(...)   EXPAND_ARGS((__VA_ARGS__, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0))
 
#define OVERLOAD_MACRO2(name, count)   name##count
 
#define OVERLOAD_MACRO1(name, count)   OVERLOAD_MACRO2(name, count)
 
#define OVERLOAD_MACRO(name, count)   OVERLOAD_MACRO1(name, count)
 
#define MACRO_OVERLOAD(name, ...)    GLUE(OVERLOAD_MACRO(name, COUNT_ARGS_MAX10(__VA_ARGS__)), (__VA_ARGS__))
 
#define MRMD_VERBOSE_CHECK_1(X)
 
#define MRMD_VERBOSE_CHECK_2(X, MSG)
 
#define MRMD_VERBOSE_CHECK_NULLPTR_1(X)
 
#define MRMD_VERBOSE_CHECK_NULLPTR_2(X, MSG)
 
#define MRMD_VERBOSE_CHECK_NOT_NULLPTR_1(X)
 
#define MRMD_VERBOSE_CHECK_NOT_NULLPTR_2(X, MSG)
 
#define MRMD_VERBOSE_CHECK_EQUAL_2(X, Y)
 
#define MRMD_VERBOSE_CHECK_EQUAL_3(X, Y, MSG)
 
#define MRMD_VERBOSE_CHECK_FLOAT_EQUAL_2(X, Y)
 
#define MRMD_VERBOSE_CHECK_FLOAT_EQUAL_3(X, Y, MSG)
 
#define MRMD_VERBOSE_CHECK_NOT_EQUAL_2(X, Y)
 
#define MRMD_VERBOSE_CHECK_NOT_EQUAL_3(X, Y, MSG)
 
#define MRMD_VERBOSE_CHECK_GREATER_2(X, Y)
 
#define MRMD_VERBOSE_CHECK_GREATER_3(X, Y, MSG)
 
#define MRMD_VERBOSE_CHECK_LESS_2(X, Y)
 
#define MRMD_VERBOSE_CHECK_LESS_3(X, Y, MSG)
 
#define MRMD_VERBOSE_CHECK_GREATEREQUAL_2(X, Y)
 
#define MRMD_VERBOSE_CHECK_GREATEREQUAL_3(X, Y, MSG)
 
#define MRMD_VERBOSE_CHECK_LESSEQUAL_2(X, Y)
 
#define MRMD_VERBOSE_CHECK_LESSEQUAL_3(X, Y, MSG)
 
#define MRMD_VERBOSE_CHECK(...)   MACRO_OVERLOAD(MRMD_VERBOSE_CHECK_, __VA_ARGS__)
 
#define MRMD_VERBOSE_CHECK_NULLPTR(...)   MACRO_OVERLOAD(MRMD_VERBOSE_CHECK_EQUAL_, __VA_ARGS__)
 
#define MRMD_VERBOSE_CHECK_NOT_NULLPTR(...)    MACRO_OVERLOAD(MRMD_VERBOSE_CHECK_NOT_NULLPTR_, __VA_ARGS__)
 
#define MRMD_VERBOSE_CHECK_EQUAL(...)   MACRO_OVERLOAD(MRMD_VERBOSE_CHECK_EQUAL_, __VA_ARGS__)
 
#define MRMD_VERBOSE_CHECK_FLOAT_EQUAL(...)   MACRO_OVERLOAD(MRMD_VERBOSE_CHECK_EQUAL_, __VA_ARGS__)
 
#define MRMD_VERBOSE_CHECK_NOT_EQUAL(...)   MACRO_OVERLOAD(MRMD_VERBOSE_CHECK_NOT_EQUAL_, __VA_ARGS__)
 
#define MRMD_VERBOSE_CHECK_GREATER(...)   MACRO_OVERLOAD(MRMD_VERBOSE_CHECK_GREATER_, __VA_ARGS__)
 
#define MRMD_VERBOSE_CHECK_LESS(...)   MACRO_OVERLOAD(MRMD_VERBOSE_CHECK_LESS_, __VA_ARGS__)
 
#define MRMD_VERBOSE_CHECK_GREATEREQUAL(...)    MACRO_OVERLOAD(MRMD_VERBOSE_CHECK_GREATEREQUAL_, __VA_ARGS__)
 
#define MRMD_VERBOSE_CHECK_LESSEQUAL(...)   MACRO_OVERLOAD(MRMD_VERBOSE_CHECK_LESSEQUAL_, __VA_ARGS__)
 

Functions

void assumption::log (const std::string &msg)
 
template<typename T >
std::string assumption::generateAssertionMessage (const T &lhs, const std::string &lhsExpression, const std::string &opString, const std::string &filename, const int64_t lineno, const std::string &)
 
template<typename T , typename U >
std::string assumption::generateAssertionMessage (const T &lhs, const U &rhs, const std::string &lhsExpression, const std::string &rhsExpression, const std::string &opString, const std::string &filename, const int64_t lineno, const std::string &)
 

Macro Definition Documentation

◆ COUNT_ARGS_MAX10

#define COUNT_ARGS_MAX10 (   ...)    EXPAND_ARGS((__VA_ARGS__, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0))

◆ EXPAND_ARGS

#define EXPAND_ARGS (   args)    RETURN_ARG_COUNT args

◆ GLUE

#define GLUE (   x,
  y 
)    x y

◆ LOG

#define LOG (   msg)
Value:
{ \
std::stringstream ss; \
ss << msg; \
assumption::log(ss.str()); \
}

◆ MACRO_OVERLOAD

#define MACRO_OVERLOAD (   name,
  ... 
)     GLUE(OVERLOAD_MACRO(name, COUNT_ARGS_MAX10(__VA_ARGS__)), (__VA_ARGS__))

◆ MRMD_VERBOSE_CHECK

#define MRMD_VERBOSE_CHECK (   ...)    MACRO_OVERLOAD(MRMD_VERBOSE_CHECK_, __VA_ARGS__)

◆ MRMD_VERBOSE_CHECK_1

#define MRMD_VERBOSE_CHECK_1 (   X)
Value:
{ \
do \
{ \
if (!((X))) \
{ \
(X), #X, "", __FILE__, __LINE__, __func__)); \
assert(false); \
} \
} while (0); \
}
std::string generateAssertionMessage(const T &lhs, const std::string &lhsExpression, const std::string &opString, const std::string &filename, const int64_t lineno, const std::string &)
Definition verbose.hpp:52

◆ MRMD_VERBOSE_CHECK_2

#define MRMD_VERBOSE_CHECK_2 (   X,
  MSG 
)
Value:
{ \
do \
{ \
if (!((X))) \
{ \
(X), #X, "", __FILE__, __LINE__, __func__) \
<< "\n" \
<< MSG); \
assert(false); \
} \
} while (0); \
}

◆ MRMD_VERBOSE_CHECK_EQUAL

#define MRMD_VERBOSE_CHECK_EQUAL (   ...)    MACRO_OVERLOAD(MRMD_VERBOSE_CHECK_EQUAL_, __VA_ARGS__)

◆ MRMD_VERBOSE_CHECK_EQUAL_2

#define MRMD_VERBOSE_CHECK_EQUAL_2 (   X,
  Y 
)
Value:
{ \
do \
{ \
if (!((X) == (Y))) \
{ \
(X), (Y), #X, #Y, " == ", __FILE__, __LINE__, __func__)); \
assert(false); \
} \
} while (0); \
}

◆ MRMD_VERBOSE_CHECK_EQUAL_3

#define MRMD_VERBOSE_CHECK_EQUAL_3 (   X,
  Y,
  MSG 
)
Value:
{ \
do \
{ \
if (!((X) == (Y))) \
{ \
(X), (Y), #X, #Y, " == ", __FILE__, __LINE__, __func__) \
<< "\n" \
<< MSG); \
assert(false); \
} \
} while (0); \
}

◆ MRMD_VERBOSE_CHECK_FLOAT_EQUAL

#define MRMD_VERBOSE_CHECK_FLOAT_EQUAL (   ...)    MACRO_OVERLOAD(MRMD_VERBOSE_CHECK_EQUAL_, __VA_ARGS__)

◆ MRMD_VERBOSE_CHECK_FLOAT_EQUAL_2

#define MRMD_VERBOSE_CHECK_FLOAT_EQUAL_2 (   X,
  Y 
)
Value:
{ \
do \
{ \
if (!(isFloatEqual((X), (Y)))) \
{ \
(X), (Y), #X, #Y, " == ", __FILE__, __LINE__, __func__)); \
assert(false); \
} \
} while (0); \
}

◆ MRMD_VERBOSE_CHECK_FLOAT_EQUAL_3

#define MRMD_VERBOSE_CHECK_FLOAT_EQUAL_3 (   X,
  Y,
  MSG 
)
Value:
{ \
do \
{ \
if (!(isFloatEqual((X), (Y)))) \
{ \
(X), (Y), #X, #Y, " == ", __FILE__, __LINE__, __func__) \
<< "\n" \
<< MSG); \
assert(false); \
} \
} while (0); \
}

◆ MRMD_VERBOSE_CHECK_GREATER

#define MRMD_VERBOSE_CHECK_GREATER (   ...)    MACRO_OVERLOAD(MRMD_VERBOSE_CHECK_GREATER_, __VA_ARGS__)

◆ MRMD_VERBOSE_CHECK_GREATER_2

#define MRMD_VERBOSE_CHECK_GREATER_2 (   X,
  Y 
)
Value:
{ \
do \
{ \
if (!((X) > (Y))) \
{ \
(X), (Y), #X, #Y, " > ", __FILE__, __LINE__, __func__)); \
assert(false); \
} \
} while (0); \
}

◆ MRMD_VERBOSE_CHECK_GREATER_3

#define MRMD_VERBOSE_CHECK_GREATER_3 (   X,
  Y,
  MSG 
)
Value:
{ \
do \
{ \
if (!((X) > (Y))) \
{ \
(X), (Y), #X, #Y, " > ", __FILE__, __LINE__, __func__) \
<< "\n" \
<< MSG); \
assert(false); \
} \
} while (0); \
}

◆ MRMD_VERBOSE_CHECK_GREATEREQUAL

#define MRMD_VERBOSE_CHECK_GREATEREQUAL (   ...)     MACRO_OVERLOAD(MRMD_VERBOSE_CHECK_GREATEREQUAL_, __VA_ARGS__)

◆ MRMD_VERBOSE_CHECK_GREATEREQUAL_2

#define MRMD_VERBOSE_CHECK_GREATEREQUAL_2 (   X,
  Y 
)
Value:
{ \
do \
{ \
if (!((X) >= (Y))) \
{ \
(X), (Y), #X, #Y, " >= ", __FILE__, __LINE__, __func__)); \
assert(false); \
} \
} while (0); \
}

◆ MRMD_VERBOSE_CHECK_GREATEREQUAL_3

#define MRMD_VERBOSE_CHECK_GREATEREQUAL_3 (   X,
  Y,
  MSG 
)
Value:
{ \
do \
{ \
if (!((X) >= (Y))) \
{ \
(X), (Y), #X, #Y, " >= ", __FILE__, __LINE__, __func__) \
<< "\n" \
<< MSG); \
assert(false); \
} \
} while (0); \
}

◆ MRMD_VERBOSE_CHECK_LESS

#define MRMD_VERBOSE_CHECK_LESS (   ...)    MACRO_OVERLOAD(MRMD_VERBOSE_CHECK_LESS_, __VA_ARGS__)

◆ MRMD_VERBOSE_CHECK_LESS_2

#define MRMD_VERBOSE_CHECK_LESS_2 (   X,
  Y 
)
Value:
{ \
do \
{ \
if (!((X) < (Y))) \
{ \
(X), (Y), #X, #Y, " < ", __FILE__, __LINE__, __func__)); \
assert(false); \
} \
} while (0); \
}

◆ MRMD_VERBOSE_CHECK_LESS_3

#define MRMD_VERBOSE_CHECK_LESS_3 (   X,
  Y,
  MSG 
)
Value:
{ \
do \
{ \
if (!((X) < (Y))) \
{ \
(X), (Y), #X, #Y, " < ", __FILE__, __LINE__, __func__) \
<< "\n" \
<< MSG); \
assert(false); \
} \
} while (0); \
}

◆ MRMD_VERBOSE_CHECK_LESSEQUAL

#define MRMD_VERBOSE_CHECK_LESSEQUAL (   ...)    MACRO_OVERLOAD(MRMD_VERBOSE_CHECK_LESSEQUAL_, __VA_ARGS__)

◆ MRMD_VERBOSE_CHECK_LESSEQUAL_2

#define MRMD_VERBOSE_CHECK_LESSEQUAL_2 (   X,
  Y 
)
Value:
{ \
do \
{ \
if (!((X) <= (Y))) \
{ \
(X), (Y), #X, #Y, " <= ", __FILE__, __LINE__, __func__)); \
assert(false); \
} \
} while (0); \
}

◆ MRMD_VERBOSE_CHECK_LESSEQUAL_3

#define MRMD_VERBOSE_CHECK_LESSEQUAL_3 (   X,
  Y,
  MSG 
)
Value:
{ \
do \
{ \
if (!((X) <= (Y))) \
{ \
(X), (Y), #X, #Y, " <= ", __FILE__, __LINE__, __func__) \
<< "\n" \
<< MSG); \
assert(false); \
} \
} while (0); \
}

◆ MRMD_VERBOSE_CHECK_NOT_EQUAL

#define MRMD_VERBOSE_CHECK_NOT_EQUAL (   ...)    MACRO_OVERLOAD(MRMD_VERBOSE_CHECK_NOT_EQUAL_, __VA_ARGS__)

◆ MRMD_VERBOSE_CHECK_NOT_EQUAL_2

#define MRMD_VERBOSE_CHECK_NOT_EQUAL_2 (   X,
  Y 
)
Value:
{ \
do \
{ \
if (!((X) != (Y))) \
{ \
(X), (Y), #X, #Y, " != ", __FILE__, __LINE__, __func__)); \
assert(false); \
} \
} while (0); \
}

◆ MRMD_VERBOSE_CHECK_NOT_EQUAL_3

#define MRMD_VERBOSE_CHECK_NOT_EQUAL_3 (   X,
  Y,
  MSG 
)
Value:
{ \
do \
{ \
if (!((X) != (Y))) \
{ \
(X), (Y), #X, #Y, " != ", __FILE__, __LINE__, __func__) \
<< "\n" \
<< MSG); \
assert(false); \
} \
} while (0); \
}

◆ MRMD_VERBOSE_CHECK_NOT_NULLPTR

#define MRMD_VERBOSE_CHECK_NOT_NULLPTR (   ...)     MACRO_OVERLOAD(MRMD_VERBOSE_CHECK_NOT_NULLPTR_, __VA_ARGS__)

◆ MRMD_VERBOSE_CHECK_NOT_NULLPTR_1

#define MRMD_VERBOSE_CHECK_NOT_NULLPTR_1 (   X)
Value:
{ \
do \
{ \
if (!((X) != nullptr)) \
{ \
(X), #X, "!nullptr", __FILE__, __LINE__, __func__)); \
assert(false); \
} \
} while (0); \
}

◆ MRMD_VERBOSE_CHECK_NOT_NULLPTR_2

#define MRMD_VERBOSE_CHECK_NOT_NULLPTR_2 (   X,
  MSG 
)
Value:
{ \
do \
{ \
if (!((X) != nullptr)) \
{ \
(X), #X, "!nullptr", __FILE__, __LINE__, __func__) \
<< "\n" \
<< MSG); \
assert(false); \
} \
} while (0); \
}

◆ MRMD_VERBOSE_CHECK_NULLPTR

#define MRMD_VERBOSE_CHECK_NULLPTR (   ...)    MACRO_OVERLOAD(MRMD_VERBOSE_CHECK_EQUAL_, __VA_ARGS__)

◆ MRMD_VERBOSE_CHECK_NULLPTR_1

#define MRMD_VERBOSE_CHECK_NULLPTR_1 (   X)
Value:
{ \
do \
{ \
if (!((X) == nullptr)) \
{ \
(X), #X, "nullptr", __FILE__, __LINE__, __func__)); \
assert(false); \
} \
} while (0); \
}

◆ MRMD_VERBOSE_CHECK_NULLPTR_2

#define MRMD_VERBOSE_CHECK_NULLPTR_2 (   X,
  MSG 
)
Value:
{ \
do \
{ \
if (!((X) == nullptr)) \
{ \
(X), #X, "nullptr", __FILE__, __LINE__, __func__) \
<< "\n" \
<< MSG); \
assert(false); \
} \
} while (0); \
}

◆ OVERLOAD_MACRO

#define OVERLOAD_MACRO (   name,
  count 
)    OVERLOAD_MACRO1(name, count)

◆ OVERLOAD_MACRO1

#define OVERLOAD_MACRO1 (   name,
  count 
)    OVERLOAD_MACRO2(name, count)

◆ OVERLOAD_MACRO2

#define OVERLOAD_MACRO2 (   name,
  count 
)    name##count

◆ RETURN_ARG_COUNT

#define RETURN_ARG_COUNT (   _1_,
  _2_,
  _3_,
  _4_,
  _5_,
  _6_,
  _7_,
  _8_,
  _9_,
  _10_,
  count,
  ... 
)    count