Subversion Repositories Kolibri OS

Rev

Rev 1905 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. /*
  2.         debug.h:
  3.                 if DEBUG defined: debugging macro fprintf wrappers
  4.                 else: macros defined to do nothing
  5.         That saves typing #ifdef DEBUG all the time and still preserves
  6.         lean code without debugging.
  7.        
  8.         public domain (or LGPL / GPL, if you like that more;-)
  9.         generated by debugdef.pl, what was
  10.         trivially written by Thomas Orgis <thomas@orgis.org>
  11. */
  12.  
  13. #include "config.h"
  14.  
  15. /*
  16.         I could do that with variadic macros available:
  17.         #define sdebug(me, s) fprintf(stderr, "[location] " s "\n")
  18.         #define debug(me, s, ...) fprintf(stderr, "[location] " s "}n", __VA_ARGS__)
  19.  
  20.         Variadic macros are a C99 feature...
  21.         Now just predefining stuff non-variadic for up to 15 arguments.
  22.         It's cumbersome to have them all with different names, though...
  23. */
  24.  
  25. #ifdef DEBUG
  26. #include <stdio.h>
  27. #define debug(s) fprintf(stderr, "[" __FILE__ ":%i] debug: " s "\n", __LINE__)
  28. #define debug1(s, a) fprintf(stderr, "[" __FILE__ ":%i] debug: " s "\n", __LINE__, a)
  29. #define debug2(s, a, b) fprintf(stderr, "[" __FILE__ ":%i] debug: " s "\n", __LINE__, a, b)
  30. #define debug3(s, a, b, c) fprintf(stderr, "[" __FILE__ ":%i] debug: " s "\n", __LINE__, a, b, c)
  31. #define debug4(s, a, b, c, d) fprintf(stderr, "[" __FILE__ ":%i] debug: " s "\n", __LINE__, a, b, c, d)
  32. #define debug5(s, a, b, c, d, e) fprintf(stderr, "[" __FILE__ ":%i] debug: " s "\n", __LINE__, a, b, c, d, e)
  33. #define debug6(s, a, b, c, d, e, f) fprintf(stderr, "[" __FILE__ ":%i] debug: " s "\n", __LINE__, a, b, c, d, e, f)
  34. #define debug7(s, a, b, c, d, e, f, g) fprintf(stderr, "[" __FILE__ ":%i] debug: " s "\n", __LINE__, a, b, c, d, e, f, g)
  35. #define debug8(s, a, b, c, d, e, f, g, h) fprintf(stderr, "[" __FILE__ ":%i] debug: " s "\n", __LINE__, a, b, c, d, e, f, g, h)
  36. #define debug9(s, a, b, c, d, e, f, g, h, i) fprintf(stderr, "[" __FILE__ ":%i] debug: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i)
  37. #define debug10(s, a, b, c, d, e, f, g, h, i, j) fprintf(stderr, "[" __FILE__ ":%i] debug: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i, j)
  38. #define debug11(s, a, b, c, d, e, f, g, h, i, j, k) fprintf(stderr, "[" __FILE__ ":%i] debug: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i, j, k)
  39. #define debug12(s, a, b, c, d, e, f, g, h, i, j, k, l) fprintf(stderr, "[" __FILE__ ":%i] debug: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i, j, k, l)
  40. #define debug13(s, a, b, c, d, e, f, g, h, i, j, k, l, m) fprintf(stderr, "[" __FILE__ ":%i] debug: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i, j, k, l, m)
  41. #define debug14(s, a, b, c, d, e, f, g, h, i, j, k, l, m, n) fprintf(stderr, "[" __FILE__ ":%i] debug: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i, j, k, l, m, n)
  42. #define debug15(s, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) fprintf(stderr, "[" __FILE__ ":%i] debug: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)
  43. #else
  44. #define debug(s)
  45. #define debug1(s, a)
  46. #define debug2(s, a, b)
  47. #define debug3(s, a, b, c)
  48. #define debug4(s, a, b, c, d)
  49. #define debug5(s, a, b, c, d, e)
  50. #define debug6(s, a, b, c, d, e, f)
  51. #define debug7(s, a, b, c, d, e, f, g)
  52. #define debug8(s, a, b, c, d, e, f, g, h)
  53. #define debug9(s, a, b, c, d, e, f, g, h, i)
  54. #define debug10(s, a, b, c, d, e, f, g, h, i, j)
  55. #define debug11(s, a, b, c, d, e, f, g, h, i, j, k)
  56. #define debug12(s, a, b, c, d, e, f, g, h, i, j, k, l)
  57. #define debug13(s, a, b, c, d, e, f, g, h, i, j, k, l, m)
  58. #define debug14(s, a, b, c, d, e, f, g, h, i, j, k, l, m, n)
  59. #define debug15(s, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)
  60. #endif
  61.  
  62. /* warning macros also here... */
  63. #ifndef NO_WARNING
  64. #define warning(s) fprintf(stderr, "[" __FILE__ ":%i] warning: " s "\n", __LINE__)
  65. #define warning1(s, a) fprintf(stderr, "[" __FILE__ ":%i] warning: " s "\n", __LINE__, a)
  66. #define warning2(s, a, b) fprintf(stderr, "[" __FILE__ ":%i] warning: " s "\n", __LINE__, a, b)
  67. #define warning3(s, a, b, c) fprintf(stderr, "[" __FILE__ ":%i] warning: " s "\n", __LINE__, a, b, c)
  68. #define warning4(s, a, b, c, d) fprintf(stderr, "[" __FILE__ ":%i] warning: " s "\n", __LINE__, a, b, c, d)
  69. #define warning5(s, a, b, c, d, e) fprintf(stderr, "[" __FILE__ ":%i] warning: " s "\n", __LINE__, a, b, c, d, e)
  70. #define warning6(s, a, b, c, d, e, f) fprintf(stderr, "[" __FILE__ ":%i] warning: " s "\n", __LINE__, a, b, c, d, e, f)
  71. #define warning7(s, a, b, c, d, e, f, g) fprintf(stderr, "[" __FILE__ ":%i] warning: " s "\n", __LINE__, a, b, c, d, e, f, g)
  72. #define warning8(s, a, b, c, d, e, f, g, h) fprintf(stderr, "[" __FILE__ ":%i] warning: " s "\n", __LINE__, a, b, c, d, e, f, g, h)
  73. #define warning9(s, a, b, c, d, e, f, g, h, i) fprintf(stderr, "[" __FILE__ ":%i] warning: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i)
  74. #define warning10(s, a, b, c, d, e, f, g, h, i, j) fprintf(stderr, "[" __FILE__ ":%i] warning: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i, j)
  75. #define warning11(s, a, b, c, d, e, f, g, h, i, j, k) fprintf(stderr, "[" __FILE__ ":%i] warning: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i, j, k)
  76. #define warning12(s, a, b, c, d, e, f, g, h, i, j, k, l) fprintf(stderr, "[" __FILE__ ":%i] warning: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i, j, k, l)
  77. #define warning13(s, a, b, c, d, e, f, g, h, i, j, k, l, m) fprintf(stderr, "[" __FILE__ ":%i] warning: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i, j, k, l, m)
  78. #define warning14(s, a, b, c, d, e, f, g, h, i, j, k, l, m, n) fprintf(stderr, "[" __FILE__ ":%i] warning: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i, j, k, l, m, n)
  79. #define warning15(s, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) fprintf(stderr, "[" __FILE__ ":%i] warning: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)
  80. #else
  81. #define warning(s)
  82. #define warning1(s, a)
  83. #define warning2(s, a, b)
  84. #define warning3(s, a, b, c)
  85. #define warning4(s, a, b, c, d)
  86. #define warning5(s, a, b, c, d, e)
  87. #define warning6(s, a, b, c, d, e, f)
  88. #define warning7(s, a, b, c, d, e, f, g)
  89. #define warning8(s, a, b, c, d, e, f, g, h)
  90. #define warning9(s, a, b, c, d, e, f, g, h, i)
  91. #define warning10(s, a, b, c, d, e, f, g, h, i, j)
  92. #define warning11(s, a, b, c, d, e, f, g, h, i, j, k)
  93. #define warning12(s, a, b, c, d, e, f, g, h, i, j, k, l)
  94. #define warning13(s, a, b, c, d, e, f, g, h, i, j, k, l, m)
  95. #define warning14(s, a, b, c, d, e, f, g, h, i, j, k, l, m, n)
  96. #define warning15(s, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)
  97. #endif
  98.  
  99. /* error macros also here... */
  100. #ifndef NO_ERRORMSG
  101. #define error(s) fprintf(stderr, "[" __FILE__ ":%i] error: " s "\n", __LINE__)
  102. #define error1(s, a) fprintf(stderr, "[" __FILE__ ":%i] error: " s "\n", __LINE__, a)
  103. #define error2(s, a, b) fprintf(stderr, "[" __FILE__ ":%i] error: " s "\n", __LINE__, a, b)
  104. #define error3(s, a, b, c) fprintf(stderr, "[" __FILE__ ":%i] error: " s "\n", __LINE__, a, b, c)
  105. #define error4(s, a, b, c, d) fprintf(stderr, "[" __FILE__ ":%i] error: " s "\n", __LINE__, a, b, c, d)
  106. #define error5(s, a, b, c, d, e) fprintf(stderr, "[" __FILE__ ":%i] error: " s "\n", __LINE__, a, b, c, d, e)
  107. #define error6(s, a, b, c, d, e, f) fprintf(stderr, "[" __FILE__ ":%i] error: " s "\n", __LINE__, a, b, c, d, e, f)
  108. #define error7(s, a, b, c, d, e, f, g) fprintf(stderr, "[" __FILE__ ":%i] error: " s "\n", __LINE__, a, b, c, d, e, f, g)
  109. #define error8(s, a, b, c, d, e, f, g, h) fprintf(stderr, "[" __FILE__ ":%i] error: " s "\n", __LINE__, a, b, c, d, e, f, g, h)
  110. #define error9(s, a, b, c, d, e, f, g, h, i) fprintf(stderr, "[" __FILE__ ":%i] error: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i)
  111. #define error10(s, a, b, c, d, e, f, g, h, i, j) fprintf(stderr, "[" __FILE__ ":%i] error: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i, j)
  112. #define error11(s, a, b, c, d, e, f, g, h, i, j, k) fprintf(stderr, "[" __FILE__ ":%i] error: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i, j, k)
  113. #define error12(s, a, b, c, d, e, f, g, h, i, j, k, l) fprintf(stderr, "[" __FILE__ ":%i] error: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i, j, k, l)
  114. #define error13(s, a, b, c, d, e, f, g, h, i, j, k, l, m) fprintf(stderr, "[" __FILE__ ":%i] error: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i, j, k, l, m)
  115. #define error14(s, a, b, c, d, e, f, g, h, i, j, k, l, m, n) fprintf(stderr, "[" __FILE__ ":%i] error: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i, j, k, l, m, n)
  116. #define error15(s, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) fprintf(stderr, "[" __FILE__ ":%i] error: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)
  117. #else
  118. #define error(s)
  119. #define error1(s, a)
  120. #define error2(s, a, b)
  121. #define error3(s, a, b, c)
  122. #define error4(s, a, b, c, d)
  123. #define error5(s, a, b, c, d, e)
  124. #define error6(s, a, b, c, d, e, f)
  125. #define error7(s, a, b, c, d, e, f, g)
  126. #define error8(s, a, b, c, d, e, f, g, h)
  127. #define error9(s, a, b, c, d, e, f, g, h, i)
  128. #define error10(s, a, b, c, d, e, f, g, h, i, j)
  129. #define error11(s, a, b, c, d, e, f, g, h, i, j, k)
  130. #define error12(s, a, b, c, d, e, f, g, h, i, j, k, l)
  131. #define error13(s, a, b, c, d, e, f, g, h, i, j, k, l, m)
  132. #define error14(s, a, b, c, d, e, f, g, h, i, j, k, l, m, n)
  133. #define error15(s, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)
  134. #endif
  135.  
  136. /* ereturn macros also here... */
  137. #ifndef NO_ERETURN
  138. #define ereturn(rv, s) do{ fprintf(stderr, "[" __FILE__ ":%i] ereturn: " s "\n", __LINE__); return rv; }while(0)
  139. #define ereturn1(rv, s, a) do{ fprintf(stderr, "[" __FILE__ ":%i] ereturn: " s "\n", __LINE__, a); return rv; }while(0)
  140. #define ereturn2(rv, s, a, b) do{ fprintf(stderr, "[" __FILE__ ":%i] ereturn: " s "\n", __LINE__, a, b); return rv; }while(0)
  141. #define ereturn3(rv, s, a, b, c) do{ fprintf(stderr, "[" __FILE__ ":%i] ereturn: " s "\n", __LINE__, a, b, c); return rv; }while(0)
  142. #define ereturn4(rv, s, a, b, c, d) do{ fprintf(stderr, "[" __FILE__ ":%i] ereturn: " s "\n", __LINE__, a, b, c, d); return rv; }while(0)
  143. #define ereturn5(rv, s, a, b, c, d, e) do{ fprintf(stderr, "[" __FILE__ ":%i] ereturn: " s "\n", __LINE__, a, b, c, d, e); return rv; }while(0)
  144. #define ereturn6(rv, s, a, b, c, d, e, f) do{ fprintf(stderr, "[" __FILE__ ":%i] ereturn: " s "\n", __LINE__, a, b, c, d, e, f); return rv; }while(0)
  145. #define ereturn7(rv, s, a, b, c, d, e, f, g) do{ fprintf(stderr, "[" __FILE__ ":%i] ereturn: " s "\n", __LINE__, a, b, c, d, e, f, g); return rv; }while(0)
  146. #define ereturn8(rv, s, a, b, c, d, e, f, g, h) do{ fprintf(stderr, "[" __FILE__ ":%i] ereturn: " s "\n", __LINE__, a, b, c, d, e, f, g, h); return rv; }while(0)
  147. #define ereturn9(rv, s, a, b, c, d, e, f, g, h, i) do{ fprintf(stderr, "[" __FILE__ ":%i] ereturn: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i); return rv; }while(0)
  148. #define ereturn10(rv, s, a, b, c, d, e, f, g, h, i, j) do{ fprintf(stderr, "[" __FILE__ ":%i] ereturn: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i, j); return rv; }while(0)
  149. #define ereturn11(rv, s, a, b, c, d, e, f, g, h, i, j, k) do{ fprintf(stderr, "[" __FILE__ ":%i] ereturn: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i, j, k); return rv; }while(0)
  150. #define ereturn12(rv, s, a, b, c, d, e, f, g, h, i, j, k, l) do{ fprintf(stderr, "[" __FILE__ ":%i] ereturn: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i, j, k, l); return rv; }while(0)
  151. #define ereturn13(rv, s, a, b, c, d, e, f, g, h, i, j, k, l, m) do{ fprintf(stderr, "[" __FILE__ ":%i] ereturn: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i, j, k, l, m); return rv; }while(0)
  152. #define ereturn14(rv, s, a, b, c, d, e, f, g, h, i, j, k, l, m, n) do{ fprintf(stderr, "[" __FILE__ ":%i] ereturn: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i, j, k, l, m, n); return rv; }while(0)
  153. #define ereturn15(rv, s, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) do{ fprintf(stderr, "[" __FILE__ ":%i] ereturn: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o); return rv; }while(0)
  154. #else
  155. #define ereturn(rv, s) return rv
  156. #define ereturn1(rv, s, a) return rv
  157. #define ereturn2(rv, s, a, b) return rv
  158. #define ereturn3(rv, s, a, b, c) return rv
  159. #define ereturn4(rv, s, a, b, c, d) return rv
  160. #define ereturn5(rv, s, a, b, c, d, e) return rv
  161. #define ereturn6(rv, s, a, b, c, d, e, f) return rv
  162. #define ereturn7(rv, s, a, b, c, d, e, f, g) return rv
  163. #define ereturn8(rv, s, a, b, c, d, e, f, g, h) return rv
  164. #define ereturn9(rv, s, a, b, c, d, e, f, g, h, i) return rv
  165. #define ereturn10(rv, s, a, b, c, d, e, f, g, h, i, j) return rv
  166. #define ereturn11(rv, s, a, b, c, d, e, f, g, h, i, j, k) return rv
  167. #define ereturn12(rv, s, a, b, c, d, e, f, g, h, i, j, k, l) return rv
  168. #define ereturn13(rv, s, a, b, c, d, e, f, g, h, i, j, k, l, m) return rv
  169. #define ereturn14(rv, s, a, b, c, d, e, f, g, h, i, j, k, l, m, n) return rv
  170. #define ereturn15(rv, s, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) return rv
  171. #endif
  172.