MRMD 0.4.0
Multi Resolution Molecular Dynamics
Loading...
Searching...
No Matches
normal.hpp File Reference
#include <cassert>

Go to the source code of this file.

Macros

#define GLUE(x, y)   x y
 Copyright (c) 2020 Sebastian Eibl.
 
#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_NORMAL_CHECK_1(X)
 
#define MRMD_NORMAL_CHECK_2(X, MSG)
 
#define MRMD_NORMAL_CHECK_NULLPTR_1(X)
 
#define MRMD_NORMAL_CHECK_NULLPTR_2(X, MSG)
 
#define MRMD_NORMAL_CHECK_NOT_NULLPTR_1(X)
 
#define MRMD_NORMAL_CHECK_NOT_NULLPTR_2(X, MSG)
 
#define MRMD_NORMAL_CHECK_EQUAL_2(X, Y)
 
#define MRMD_NORMAL_CHECK_EQUAL_3(X, Y, MSG)
 
#define MRMD_NORMAL_CHECK_FLOAT_EQUAL_2(X, Y)
 
#define MRMD_NORMAL_CHECK_FLOAT_EQUAL_3(X, Y, MSG)
 
#define MRMD_NORMAL_CHECK_NOT_EQUAL_2(X, Y)
 
#define MRMD_NORMAL_CHECK_NOT_EQUAL_3(X, Y, MSG)
 
#define MRMD_NORMAL_CHECK_GREATER_2(X, Y)
 
#define MRMD_NORMAL_CHECK_GREATER_3(X, Y, MSG)
 
#define MRMD_NORMAL_CHECK_LESS_2(X, Y)
 
#define MRMD_NORMAL_CHECK_LESS_3(X, Y, MSG)
 
#define MRMD_NORMAL_CHECK_GREATEREQUAL_2(X, Y)
 
#define MRMD_NORMAL_CHECK_GREATEREQUAL_3(X, Y, MSG)
 
#define MRMD_NORMAL_CHECK_LESSEQUAL_2(X, Y)
 
#define MRMD_NORMAL_CHECK_LESSEQUAL_3(X, Y, MSG)
 
#define MRMD_NORMAL_CHECK(...)   MACRO_OVERLOAD(MRMD_NORMAL_CHECK_, __VA_ARGS__)
 
#define MRMD_NORMAL_CHECK_NULLPTR(...)   MACRO_OVERLOAD(MRMD_NORMAL_CHECK_EQUAL_, __VA_ARGS__)
 
#define MRMD_NORMAL_CHECK_NOT_NULLPTR(...)    MACRO_OVERLOAD(MRMD_NORMAL_CHECK_NOT_NULLPTR_, __VA_ARGS__)
 
#define MRMD_NORMAL_CHECK_EQUAL(...)   MACRO_OVERLOAD(MRMD_NORMAL_CHECK_EQUAL_, __VA_ARGS__)
 
#define MRMD_NORMAL_CHECK_FLOAT_EQUAL(...)   MACRO_OVERLOAD(MRMD_NORMAL_CHECK_EQUAL_, __VA_ARGS__)
 
#define MRMD_NORMAL_CHECK_NOT_EQUAL(...)   MACRO_OVERLOAD(MRMD_NORMAL_CHECK_NOT_EQUAL_, __VA_ARGS__)
 
#define MRMD_NORMAL_CHECK_GREATER(...)   MACRO_OVERLOAD(MRMD_NORMAL_CHECK_GREATER_, __VA_ARGS__)
 
#define MRMD_NORMAL_CHECK_LESS(...)   MACRO_OVERLOAD(MRMD_NORMAL_CHECK_LESS_, __VA_ARGS__)
 
#define MRMD_NORMAL_CHECK_GREATEREQUAL(...)    MACRO_OVERLOAD(MRMD_NORMAL_CHECK_GREATEREQUAL_, __VA_ARGS__)
 
#define MRMD_NORMAL_CHECK_LESSEQUAL(...)   MACRO_OVERLOAD(MRMD_NORMAL_CHECK_LESSEQUAL_, __VA_ARGS__)
 

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

Copyright (c) 2020 Sebastian Eibl.

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

◆ MACRO_OVERLOAD

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

◆ MRMD_NORMAL_CHECK

#define MRMD_NORMAL_CHECK (   ...)    MACRO_OVERLOAD(MRMD_NORMAL_CHECK_, __VA_ARGS__)

◆ MRMD_NORMAL_CHECK_1

#define MRMD_NORMAL_CHECK_1 (   X)
Value:
{ \
assert(X); \
}

◆ MRMD_NORMAL_CHECK_2

#define MRMD_NORMAL_CHECK_2 (   X,
  MSG 
)
Value:
{ \
assert(X); \
}

◆ MRMD_NORMAL_CHECK_EQUAL

#define MRMD_NORMAL_CHECK_EQUAL (   ...)    MACRO_OVERLOAD(MRMD_NORMAL_CHECK_EQUAL_, __VA_ARGS__)

◆ MRMD_NORMAL_CHECK_EQUAL_2

#define MRMD_NORMAL_CHECK_EQUAL_2 (   X,
  Y 
)
Value:
{ \
assert(X == Y); \
}

◆ MRMD_NORMAL_CHECK_EQUAL_3

#define MRMD_NORMAL_CHECK_EQUAL_3 (   X,
  Y,
  MSG 
)
Value:
{ \
assert(X == Y); \
}

◆ MRMD_NORMAL_CHECK_FLOAT_EQUAL

#define MRMD_NORMAL_CHECK_FLOAT_EQUAL (   ...)    MACRO_OVERLOAD(MRMD_NORMAL_CHECK_EQUAL_, __VA_ARGS__)

◆ MRMD_NORMAL_CHECK_FLOAT_EQUAL_2

#define MRMD_NORMAL_CHECK_FLOAT_EQUAL_2 (   X,
  Y 
)
Value:
{ \
assert(X == Y); \
}

◆ MRMD_NORMAL_CHECK_FLOAT_EQUAL_3

#define MRMD_NORMAL_CHECK_FLOAT_EQUAL_3 (   X,
  Y,
  MSG 
)
Value:
{ \
assert(X == Y); \
}

◆ MRMD_NORMAL_CHECK_GREATER

#define MRMD_NORMAL_CHECK_GREATER (   ...)    MACRO_OVERLOAD(MRMD_NORMAL_CHECK_GREATER_, __VA_ARGS__)

◆ MRMD_NORMAL_CHECK_GREATER_2

#define MRMD_NORMAL_CHECK_GREATER_2 (   X,
  Y 
)
Value:
{ \
assert(X > Y); \
}

◆ MRMD_NORMAL_CHECK_GREATER_3

#define MRMD_NORMAL_CHECK_GREATER_3 (   X,
  Y,
  MSG 
)
Value:
{ \
assert(X > Y); \
}

◆ MRMD_NORMAL_CHECK_GREATEREQUAL

#define MRMD_NORMAL_CHECK_GREATEREQUAL (   ...)     MACRO_OVERLOAD(MRMD_NORMAL_CHECK_GREATEREQUAL_, __VA_ARGS__)

◆ MRMD_NORMAL_CHECK_GREATEREQUAL_2

#define MRMD_NORMAL_CHECK_GREATEREQUAL_2 (   X,
  Y 
)
Value:
{ \
assert(X >= Y); \
}

◆ MRMD_NORMAL_CHECK_GREATEREQUAL_3

#define MRMD_NORMAL_CHECK_GREATEREQUAL_3 (   X,
  Y,
  MSG 
)
Value:
{ \
assert(X >= Y); \
}

◆ MRMD_NORMAL_CHECK_LESS

#define MRMD_NORMAL_CHECK_LESS (   ...)    MACRO_OVERLOAD(MRMD_NORMAL_CHECK_LESS_, __VA_ARGS__)

◆ MRMD_NORMAL_CHECK_LESS_2

#define MRMD_NORMAL_CHECK_LESS_2 (   X,
  Y 
)
Value:
{ \
assert(X < Y); \
}

◆ MRMD_NORMAL_CHECK_LESS_3

#define MRMD_NORMAL_CHECK_LESS_3 (   X,
  Y,
  MSG 
)
Value:
{ \
assert(X < Y); \
}

◆ MRMD_NORMAL_CHECK_LESSEQUAL

#define MRMD_NORMAL_CHECK_LESSEQUAL (   ...)    MACRO_OVERLOAD(MRMD_NORMAL_CHECK_LESSEQUAL_, __VA_ARGS__)

◆ MRMD_NORMAL_CHECK_LESSEQUAL_2

#define MRMD_NORMAL_CHECK_LESSEQUAL_2 (   X,
  Y 
)
Value:
{ \
assert(X <= Y); \
}

◆ MRMD_NORMAL_CHECK_LESSEQUAL_3

#define MRMD_NORMAL_CHECK_LESSEQUAL_3 (   X,
  Y,
  MSG 
)
Value:
{ \
assert(X <= Y); \
}

◆ MRMD_NORMAL_CHECK_NOT_EQUAL

#define MRMD_NORMAL_CHECK_NOT_EQUAL (   ...)    MACRO_OVERLOAD(MRMD_NORMAL_CHECK_NOT_EQUAL_, __VA_ARGS__)

◆ MRMD_NORMAL_CHECK_NOT_EQUAL_2

#define MRMD_NORMAL_CHECK_NOT_EQUAL_2 (   X,
  Y 
)
Value:
{ \
assert(X != Y); \
}

◆ MRMD_NORMAL_CHECK_NOT_EQUAL_3

#define MRMD_NORMAL_CHECK_NOT_EQUAL_3 (   X,
  Y,
  MSG 
)
Value:
{ \
assert(X != Y); \
}

◆ MRMD_NORMAL_CHECK_NOT_NULLPTR

#define MRMD_NORMAL_CHECK_NOT_NULLPTR (   ...)     MACRO_OVERLOAD(MRMD_NORMAL_CHECK_NOT_NULLPTR_, __VA_ARGS__)

◆ MRMD_NORMAL_CHECK_NOT_NULLPTR_1

#define MRMD_NORMAL_CHECK_NOT_NULLPTR_1 (   X)
Value:
{ \
assert(X != nullptr); \
}

◆ MRMD_NORMAL_CHECK_NOT_NULLPTR_2

#define MRMD_NORMAL_CHECK_NOT_NULLPTR_2 (   X,
  MSG 
)
Value:
{ \
assert(X != nullptr); \
}

◆ MRMD_NORMAL_CHECK_NULLPTR

#define MRMD_NORMAL_CHECK_NULLPTR (   ...)    MACRO_OVERLOAD(MRMD_NORMAL_CHECK_EQUAL_, __VA_ARGS__)

◆ MRMD_NORMAL_CHECK_NULLPTR_1

#define MRMD_NORMAL_CHECK_NULLPTR_1 (   X)
Value:
{ \
assert(X == nullptr); \
}

◆ MRMD_NORMAL_CHECK_NULLPTR_2

#define MRMD_NORMAL_CHECK_NULLPTR_2 (   X,
  MSG 
)
Value:
{ \
assert(X == nullptr); \
}

◆ 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