Subversion Repositories ScreenTimer

Rev

Blame | Last modification | View Log | Download | RSS feed

  1. #ifndef _JTEST_PF_H_
  2. #define _JTEST_PF_H_
  3.  
  4. /*--------------------------------------------------------------------------------*/
  5. /* Purpose */
  6. /*--------------------------------------------------------------------------------*/
  7. /* jtest_pf.h Contains macros useful for capturing pass/fail data. */
  8.  
  9.  
  10. /*--------------------------------------------------------------------------------*/
  11. /* Macros and Defines */
  12. /*--------------------------------------------------------------------------------*/
  13.  
  14. /**
  15.  * Members that can be added to other structs to extend them pass/fail data and
  16.  * corresponding functionality.
  17.  */
  18. #define JTEST_PF_MEMBERS                            \
  19.     uint32_t passed;                                \
  20.     uint32_t failed /* Note the lacking semicolon*/ \
  21.  
  22. /**
  23.  *  Used for initializing JTEST_PF_MEMBERS in a struct declaration.
  24.  */
  25. #define JTEST_PF_MEMBER_INIT                    \
  26.     0,                                          \
  27.     0
  28.  
  29. /* Member-Incrementing Macros */
  30. /*--------------------------------------------------------------------------------*/
  31.  
  32. /**
  33.  *  Dispatch macro for incrementing #JTEST_PF_MEMBERS.
  34.  *
  35.  *  @param xxx Values: 'passed', 'failed'
  36.  */
  37. #define JTEST_PF_INC_XXX(xxx, struct_pf_ptr, amount)    \
  38.     do                                                  \
  39.     {                                                   \
  40.         ((struct_pf_ptr)->xxx) += (amount);             \
  41.     } while (0)
  42.  
  43. /**
  44.  *  Specialization of the #JTEST_PF_INC_XXX macro to increment the passed
  45.  *  member.
  46.  */
  47. #define JTEST_PF_INC_PASSED(struct_pf_ptr, amount)  \
  48.     JTEST_PF_INC_XXX(passed, struct_pf_ptr, amount)
  49.  
  50.  
  51. /**
  52.  *  Specialization of the #JTEST_PF_INC_XXX macro to increment the failed
  53.  *  member.
  54.  */
  55. #define JTEST_PF_INC_FAILED(struct_pf_ptr, amount)  \
  56.     JTEST_PF_INC_XXX(failed, struct_pf_ptr, amount)
  57.  
  58.  
  59. /* Member-Resetting Macros */
  60. /*--------------------------------------------------------------------------------*/
  61.  
  62. /**
  63.  *  Dispatch macro for setting #JTEST_PF_MEMBERS to zero.
  64.  *
  65.  *  @param xxx Values: 'passed', 'failed'
  66.  */
  67. #define JTEST_PF_RESET_XXX(xxx, struct_pf_ptr)  \
  68.     do                                          \
  69.     {                                           \
  70.         ((struct_pf_ptr)->xxx) = UINT32_C(0);   \
  71.     } while (0)
  72.  
  73. /**
  74.  *  Specialization of #JTEST_PF_RESET_XXX for the 'passed' member.
  75.  */
  76. #define JTEST_PF_RESET_PASSED(struct_pf_ptr)    \
  77.     JTEST_PF_RESET_XXX(passed, struct_pf_ptr)
  78.  
  79. /**
  80.  *  Specialization of #JTEST_PF_RESET_XXX for the 'failed' member.
  81.  */
  82. #define JTEST_PF_RESET_FAILED(struct_pf_ptr)    \
  83.     JTEST_PF_RESET_XXX(failed, struct_pf_ptr)
  84.  
  85. #endif /* _JTEST_PF_H_ */
  86.