Subversion Repositories Kolibri OS

Rev

Rev 6152 | Rev 6698 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. #ifndef INCLUDE_DEBUG_H
  2. #define INCLUDE_DEBUG_H
  3. #print "[include <debug.h>]\n"
  4.  
  5. #ifndef INCLUDE_STRING_H
  6. #include "../lib/strings.h"
  7. #endif
  8.  
  9. inline fastcall void debugch( ECX)
  10. {
  11.         $push eax
  12.         $push ebx
  13.         $mov eax,63
  14.         $mov ebx,1
  15.         $int 0x40
  16.         $pop ebx
  17.         $pop eax
  18. }
  19.  
  20. inline fastcall void debug( EDX)
  21. {
  22.         $push eax
  23.         $push ebx
  24.         $push ecx
  25.         $mov eax, 63
  26.         $mov ebx, 1
  27. NEXT_CHAR:
  28.         $mov ecx, DSDWORD[edx]
  29.         $or      cl, cl
  30.         $jz  DONE
  31.         $int 0x40
  32.         $inc edx
  33.         $jmp NEXT_CHAR
  34. DONE:
  35.         $pop ecx
  36.         $pop ebx
  37.         $pop eax
  38. }
  39.  
  40. inline fastcall void debugln( EDX)
  41. {
  42.         debug( EDX);
  43.         debugch(10);
  44.         debugch(13);
  45. }
  46.  
  47. inline void debugi(dword d_int)
  48. {
  49.         char tmpch[12];
  50.         itoa_(#tmpch, d_int);
  51.         debugln(#tmpch);
  52. }
  53.  
  54. :void debugval(dword text,number)
  55. {
  56.         debug(text);
  57.         debug(": ");
  58.         debugi(number);
  59. }
  60.  
  61. :void assert(dword _type, _actual, _expected)
  62. {
  63.         char r[4096];
  64.         if (_type=='s') {
  65.                 if (streq(_actual, _expected)) return;
  66.                 sprintf(#r, "==========nok{\nactual: %s\nexpected: %s", _actual, _expected);
  67.                 debugln(#r);
  68.         }
  69.         if (_type=='i') {
  70.                 if (_actual == _expected)) return;
  71.                 sprintf(#r, "==========nok{\nactual: %i\nexpected: %i", _actual, _expected);
  72.                 debugln(#r);
  73.         }
  74. }
  75.  
  76. #endif