#define require_noerr(a, b)                           \
      do                                                                      \
      {                                                                       \
          if ( 0 != (a) )                                             \
          {  goto b;}                                           \
      } while ( 0 )

 #define require(a, b)                                 \
      do                                                                      \
      {                                                                       \
          if ( !(a) )                                                 \
          {                                                                   \
              goto b;                                            \
          }                                                                   \
      } while ( 0 )

 #define require_action(a, b, c)                  \
      do                                                                      \
      {                                                                       \
          if ( !(a) )                                                 \
          {                                                                   \
              { c;}                                                               \
              goto b;                                            \
          }                                                                   \
      } while ( 0 )

#define verify_noerr(a)                                            \
      do                                                                      \
      {                                                                       \
          if ( 0 != (a) )                                             \
          {                                                                   \
          }                                                                   \
      } while ( 0 )

#define require_noerr_quiet(a, b)                        \
  do                                                                          \
  {                                                                           \
      if ( 0 != (a) )                                                 \
      {                                                                       \
          goto b;                                                \
      }                                                                       \
  } while ( 0 )


      #include <stdio.h>
      #define DEBUG_ASSERT_MESSAGE(a, b, label,c, d, e, f) \
                                  fprintf(stderr, "AssertMacros: %s, %s file: %s, line: %d\n", b, (a!=0) ?c : "", d, e);


  #define DEBUG_ASSERT_COMPONENT_NAME_STRING ""

 #define require_action(a, b, c)    do  {  if ( !(a) )  { {c;} goto b;} } while ( 0 )

 #define require_noerr_action(a ,b, c)            \
      do                                                                      \
      {                                                                       \
          if ( 0 != (a) )                                             \
          {                                                                   \
              {                                                               \
                  c;                                                     \
              }                                                               \
              goto b;                                            \
          }                                                                   \
      } while ( 0 )


  #define require_string(a,b,c)                 \
      do                                                                      \
      {                                                                       \
          if ( !(a) )                                                 \
          {                                                                   \
              goto b;                                            \
          }                                                                   \
      } while ( 0 )


 #define require_noerr_string(a, b, c)           \
      do                                                                      \
      {                                                                       \
          if ( 0 != (a) )                                             \
          {                                                                   \
              goto b;                                            \
          }                                                                   \
      } while ( 0 )

 #define check(a)

#define require_quiet(a, b)                              \
  do                                                                          \
  {                                                                           \
      if ( !(a) )                                                     \
      {                                                                       \
          goto b;                                                \
      }                                                                       \
  } while ( 0 )

#define check_noerr(a)                                             \
      do                                                                      \
      {                                                                       \
          int evalOnceErrorCode = (a);                                \
          if ( 0 != evalOnceErrorCode )                                       \
          {                                                                   \
              DEBUG_ASSERT_MESSAGE(                                           \
                  DEBUG_ASSERT_COMPONENT_NAME_STRING,                         \
                  #a " == 0 ",                                        \
                  0,                                                          \
                  0,                                                          \
                  __FILE__,                                                   \
                  __LINE__,                                                   \
                  evalOnceErrorCode);                                         \
          }                                                                   \
      } while ( 0 )

#define require_action_quiet(a, b, c)               \
  do                                                                          \
  {                                                                           \
      if ( !(a) )                                                     \
      {                                                                       \
          {                                                                   \
              c;                                                         \
          }                                                                   \
          goto b;                                                \
      }                                                                       \
  } while ( 0 )
