Subversion Repositories Kolibri OS

Rev

Rev 6152 | 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('\n');
  44. }
  45.  
  46. inline void debugi(dword d_int)
  47. {
  48.         char tmpch[12];
  49.         itoa_(#tmpch, d_int);
  50.         debugln(#tmpch);
  51. }
  52.  
  53. :void assert(dword _type, _actual, _expected)
  54. {
  55.         char r[4096];
  56.         if (_type=='s') {
  57.                 if (streq(_actual, _expected)) return;
  58.                 sprintf(#r, "==========nok{\nactual: %s\nexpected: %s", _actual, _expected);
  59.                 debugln(#r);
  60.         }
  61.         if (_type=='i') {
  62.                 if (_actual == _expected)) return;
  63.                 sprintf(#r, "==========nok{\nactual: %i\nexpected: %i", _actual, _expected);
  64.                 debugln(#r);
  65.         }
  66. }
  67.  
  68. #endif