PageRenderTime 41ms CodeModel.GetById 18ms RepoModel.GetById 0ms app.codeStats 0ms

/srcweb/ode-0.8/ode-error-handler-data.patch

https://bitbucket.org/doub/electronmeat
Patch | 161 lines | 140 code | 21 blank | 0 comment | 0 complexity | e6306961f4f28dc8f3f04f67cc777028 MD5 | raw file
Possible License(s): GPL-2.0
  1. diff -urN a/ode-0.8/include/ode/error.h b/ode-0.8/include/ode/error.h
  2. --- a/ode-0.8/include/ode/error.h Fri Mar 24 15:36:06 2006
  3. +++ b/ode-0.8/include/ode/error.h Wed Jul 11 21:36:17 2007
  4. @@ -34,21 +34,24 @@
  5. /* all user defined error functions have this type. error and debug functions
  6. * should not return.
  7. */
  8. -typedef void dMessageFunction (int errnum, const char *msg, va_list ap);
  9. +typedef void dMessageFunction (void *data, int errnum, const char *msg, va_list ap);
  10. /* set a new error, debug or warning handler. if fn is 0, the default handlers
  11. * are used.
  12. */
  13. -ODE_API void dSetErrorHandler (dMessageFunction *fn);
  14. -ODE_API void dSetDebugHandler (dMessageFunction *fn);
  15. -ODE_API void dSetMessageHandler (dMessageFunction *fn);
  16. +ODE_API void dSetErrorHandler (dMessageFunction *fn, void *data);
  17. +ODE_API void dSetDebugHandler (dMessageFunction *fn, void *data);
  18. +ODE_API void dSetMessageHandler (dMessageFunction *fn, void *data);
  19. /* return the current error, debug or warning handler. if the return value is
  20. * 0, the default handlers are in place.
  21. */
  22. ODE_API dMessageFunction *dGetErrorHandler(void);
  23. +ODE_API void *dGetErrorHandlerData(void);
  24. ODE_API dMessageFunction *dGetDebugHandler(void);
  25. +ODE_API void *dGetDebugHandlerData(void);
  26. ODE_API dMessageFunction *dGetMessageHandler(void);
  27. +ODE_API void *dGetMessageHandlerData(void);
  28. /* generate a fatal error, debug trap or a message. */
  29. ODE_API void dError (int num, const char *msg, ...);
  30. diff -urN a/ode-0.8/ode/src/error.cpp b/ode-0.8/ode/src/error.cpp
  31. --- a/ode-0.8/ode/src/error.cpp Tue Sep 21 16:56:51 2004
  32. +++ b/ode-0.8/ode/src/error.cpp Wed Jul 11 21:34:22 2007
  33. @@ -25,25 +25,31 @@
  34. static dMessageFunction *error_function = 0;
  35. +static void *error_data = 0;
  36. static dMessageFunction *debug_function = 0;
  37. +static void *debug_data = 0;
  38. static dMessageFunction *message_function = 0;
  39. +static void *message_data = 0;
  40. -extern "C" void dSetErrorHandler (dMessageFunction *fn)
  41. +extern "C" void dSetErrorHandler (dMessageFunction *fn, void *data)
  42. {
  43. error_function = fn;
  44. + error_data = data;
  45. }
  46. -extern "C" void dSetDebugHandler (dMessageFunction *fn)
  47. +extern "C" void dSetDebugHandler (dMessageFunction *fn, void *data)
  48. {
  49. debug_function = fn;
  50. + debug_data = data;
  51. }
  52. -extern "C" void dSetMessageHandler (dMessageFunction *fn)
  53. +extern "C" void dSetMessageHandler (dMessageFunction *fn, void *data)
  54. {
  55. message_function = fn;
  56. + message_data = data;
  57. }
  58. @@ -53,18 +59,36 @@
  59. }
  60. +extern "C" void *dGetErrorHandlerData()
  61. +{
  62. + return error_data;
  63. +}
  64. +
  65. +
  66. extern "C" dMessageFunction *dGetDebugHandler()
  67. {
  68. return debug_function;
  69. }
  70. +extern "C" void *dGetDebugHandlerData()
  71. +{
  72. + return debug_data;
  73. +}
  74. +
  75. +
  76. extern "C" dMessageFunction *dGetMessageHandler()
  77. {
  78. return message_function;
  79. }
  80. +extern "C" void *dGetMessageHandlerData()
  81. +{
  82. + return message_data;
  83. +}
  84. +
  85. +
  86. static void printMessage (int num, const char *msg1, const char *msg2,
  87. va_list ap)
  88. {
  89. @@ -86,7 +110,7 @@
  90. {
  91. va_list ap;
  92. va_start (ap,msg);
  93. - if (error_function) error_function (num,msg,ap);
  94. + if (error_function) error_function (error_data,num,msg,ap);
  95. else printMessage (num,"ODE Error",msg,ap);
  96. exit (1);
  97. }
  98. @@ -96,7 +120,7 @@
  99. {
  100. va_list ap;
  101. va_start (ap,msg);
  102. - if (debug_function) debug_function (num,msg,ap);
  103. + if (debug_function) debug_function (debug_data,num,msg,ap);
  104. else printMessage (num,"ODE INTERNAL ERROR",msg,ap);
  105. // *((char *)0) = 0; ... commit SEGVicide
  106. abort();
  107. @@ -107,7 +131,7 @@
  108. {
  109. va_list ap;
  110. va_start (ap,msg);
  111. - if (message_function) message_function (num,msg,ap);
  112. + if (message_function) message_function (message_data,num,msg,ap);
  113. else printMessage (num,"ODE Message",msg,ap);
  114. }
  115. @@ -132,7 +156,7 @@
  116. {
  117. va_list ap;
  118. va_start (ap,msg);
  119. - if (error_function) error_function (num,msg,ap);
  120. + if (error_function) error_function (error_data,num,msg,ap);
  121. else {
  122. char s[1000],title[100];
  123. _snprintf (title,sizeof(title),"ODE Error %d",num);
  124. @@ -148,7 +172,7 @@
  125. {
  126. va_list ap;
  127. va_start (ap,msg);
  128. - if (debug_function) debug_function (num,msg,ap);
  129. + if (debug_function) debug_function (debug_data,num,msg,ap);
  130. else {
  131. char s[1000],title[100];
  132. _snprintf (title,sizeof(title),"ODE INTERNAL ERROR %d",num);
  133. @@ -164,7 +188,7 @@
  134. {
  135. va_list ap;
  136. va_start (ap,msg);
  137. - if (message_function) message_function (num,msg,ap);
  138. + if (message_function) message_function (message_data,num,msg,ap);
  139. else printMessage (num,"ODE Message",msg,ap);
  140. }