Subversion Repositories Kolibri OS

Rev

Rev 6058 | Rev 6684 | 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 assert(dword _type, _actual, _expected)
  55. {
  56.         char r[4096];
  57.         if (_type=='s') {
  58.                 if (streq(_actual, _expected)) return;
  59.                 sprintf(#r, "==========nok{\nactual: %s\nexpected: %s", _actual, _expected);
  60.                 debugln(#r);
  61.         }
  62.         if (_type=='i') {
  63.                 if (_actual == _expected)) return;
  64.                 sprintf(#r, "==========nok{\nactual: %i\nexpected: %i", _actual, _expected);
  65.                 debugln(#r);
  66.         }
  67. }
  68.  
  69. #endif