kolibrios/programs/cmm/lib/debug.h
Kirill Lipatov (Leency) ae17b4e165 Aelia 0.3: Sandwich menu, handle redirects, add links.h
+ lib/debug.h

git-svn-id: svn://kolibrios.org@6058 a494cfbc-eb01-0410-851d-a64ba20cac60
2016-01-14 23:05:51 +00:00

68 lines
1.1 KiB
C

#ifndef INCLUDE_DEBUG_H
#define INCLUDE_DEBUG_H
#print "[include <debug.h>]\n"
#ifndef INCLUDE_STRING_H
#include "../lib/strings.h"
#endif
inline fastcall void debugch( ECX)
{
$push eax
$push ebx
$mov eax,63
$mov ebx,1
$int 0x40
$pop ebx
$pop eax
}
inline fastcall void debug( EDX)
{
$push eax
$push ebx
$push ecx
$mov eax, 63
$mov ebx, 1
NEXT_CHAR:
$mov ecx, DSDWORD[edx]
$or cl, cl
$jz DONE
$int 0x40
$inc edx
$jmp NEXT_CHAR
DONE:
$pop ecx
$pop ebx
$pop eax
}
inline fastcall void debugln( EDX)
{
debug( EDX);
debugch('\n');
}
inline void debugi(dword d_int)
{
char tmpch[12];
itoa_(#tmpch, d_int);
debugln(#tmpch);
}
:void assert(dword _type, _actual, _expected)
{
char r[4096];
if (_type=='s') {
if (streq(_actual, _expected)) return;
sprintf(#r, "==========nok{\nactual: %s\nexpected: %s", _actual, _expected);
debugln(#r);
}
if (_type=='i') {
if (_actual == _expected)) return;
sprintf(#r, "==========nok{\nactual: %i\nexpected: %i", _actual, _expected);
debugln(#r);
}
}
#endif