mirror of
https://github.com/reactos/reactos.git
synced 2024-12-26 00:54:40 +00:00
Added missing file and some hex string conversion routines. Now displays registry data.
svn path=/trunk/; revision=3288
This commit is contained in:
parent
11a446cf74
commit
63850f4969
6 changed files with 396 additions and 35 deletions
|
@ -35,6 +35,7 @@ OBJS = framewnd.o \
|
||||||
treeview.o \
|
treeview.o \
|
||||||
about.o \
|
about.o \
|
||||||
trace.o \
|
trace.o \
|
||||||
|
hex_str.o \
|
||||||
main.o
|
main.o
|
||||||
|
|
||||||
LIBS = -lgdi32 -luser32 -lkernel32 -lcomctl32
|
LIBS = -lgdi32 -luser32 -lkernel32 -lcomctl32
|
||||||
|
|
153
rosapps/regedit/hex_str.c
Normal file
153
rosapps/regedit/hex_str.c
Normal file
|
@ -0,0 +1,153 @@
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
// HEX_STR.C
|
||||||
|
// Copyright (c) 1995 by Robert Dickenson
|
||||||
|
//
|
||||||
|
#include "hex_str.h"
|
||||||
|
|
||||||
|
|
||||||
|
#define LOBYTE(w) ((unsigned char)(w))
|
||||||
|
#define HIBYTE(w) ((unsigned char)((unsigned short)(w) >> 8))
|
||||||
|
|
||||||
|
|
||||||
|
unsigned char AsciiTable[256][3] = {
|
||||||
|
"00", "01", "02", "03", "04", "05", "06", "07", "08", "09", "0A", "0B", "0C", "0D", "0E", "0F",
|
||||||
|
"10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "1A", "1B", "1C", "1D", "1E", "1F",
|
||||||
|
"20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "2A", "2B", "2C", "2D", "2E", "2F",
|
||||||
|
"30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "3A", "3B", "3C", "3D", "3E", "3F",
|
||||||
|
"40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "4A", "4B", "4C", "4D", "4E", "4F",
|
||||||
|
"50", "51", "52", "53", "54", "55", "56", "57", "58", "59", "5A", "5B", "5C", "5D", "5E", "5F",
|
||||||
|
"60", "61", "62", "63", "64", "65", "66", "67", "68", "69", "6A", "6B", "6C", "6D", "6E", "6F",
|
||||||
|
"70", "71", "72", "73", "74", "75", "76", "77", "78", "79", "7A", "7B", "7C", "7D", "7E", "7F",
|
||||||
|
"80", "81", "82", "83", "84", "85", "86", "87", "88", "89", "8A", "8B", "8C", "8D", "8E", "8F",
|
||||||
|
"90", "91", "92", "93", "94", "95", "96", "97", "98", "99", "9A", "9B", "9C", "9D", "9E", "9F",
|
||||||
|
"A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "A8", "A9", "AA", "AB", "AC", "AD", "AE", "AF",
|
||||||
|
"B0", "B1", "B2", "B3", "B4", "B5", "B6", "B7", "B8", "B9", "BA", "BB", "BC", "BD", "BE", "BF",
|
||||||
|
"C0", "C1", "C2", "C3", "C4", "C5", "C6", "C7", "C8", "C9", "CA", "CB", "CC", "CD", "CE", "CF",
|
||||||
|
"D0", "D1", "D2", "D3", "D4", "D5", "D6", "D7", "D8", "D9", "DA", "DB", "DC", "DD", "DE", "DF",
|
||||||
|
"E0", "E1", "E2", "E3", "E4", "E5", "E6", "E7", "E8", "E9", "EA", "EB", "EC", "ED", "EE", "EF",
|
||||||
|
"F0", "F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9", "FA", "FB", "FC", "FD", "FE", "FF"
|
||||||
|
};
|
||||||
|
|
||||||
|
unsigned char HexTable[24] = {
|
||||||
|
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 0, 0, 0, 0, 0, 0, 10, 11, 12, 13, 14, 15, 16
|
||||||
|
};
|
||||||
|
|
||||||
|
unsigned long BinaryNibbles[] = {
|
||||||
|
(unsigned long)"0000",
|
||||||
|
(unsigned long)"0001",
|
||||||
|
(unsigned long)"0010",
|
||||||
|
(unsigned long)"0011",
|
||||||
|
(unsigned long)"0100",
|
||||||
|
(unsigned long)"0101",
|
||||||
|
(unsigned long)"0110",
|
||||||
|
(unsigned long)"0111",
|
||||||
|
(unsigned long)"1000",
|
||||||
|
(unsigned long)"1001",
|
||||||
|
(unsigned long)"1010",
|
||||||
|
(unsigned long)"1011",
|
||||||
|
(unsigned long)"1100",
|
||||||
|
(unsigned long)"1101",
|
||||||
|
(unsigned long)"1110",
|
||||||
|
(unsigned long)"1111"
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
void ByteBinStr(char* dst, unsigned char num)
|
||||||
|
{
|
||||||
|
*(unsigned long*)dst++ = BinaryNibbles[(num >> 4) & 0x07];
|
||||||
|
*(unsigned long*)dst++ = BinaryNibbles[num & 0x07];
|
||||||
|
}
|
||||||
|
|
||||||
|
void WordBinStr(char* dst, unsigned short num)
|
||||||
|
{
|
||||||
|
ByteBinStr(dst, HIBYTE(num));
|
||||||
|
ByteBinStr(dst+4, LOBYTE(num));
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned short Byte2Hex(unsigned char data)
|
||||||
|
{
|
||||||
|
register unsigned short result;
|
||||||
|
|
||||||
|
result = AsciiTable[data][1] << 8;
|
||||||
|
result += AsciiTable[data][0];
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned long Word2Hex(unsigned short data)
|
||||||
|
{
|
||||||
|
register unsigned long result;
|
||||||
|
|
||||||
|
result = (unsigned long)Byte2Hex(LOBYTE(data)) << 16;
|
||||||
|
result += Byte2Hex(HIBYTE(data));
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned char HexByte(char* str)
|
||||||
|
{
|
||||||
|
register unsigned char result;
|
||||||
|
|
||||||
|
result = HexTable[*str++ - '0'] * 16;
|
||||||
|
result += HexTable[*str++ - '0'];
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned int HexWord(char* str)
|
||||||
|
{
|
||||||
|
register unsigned int result;
|
||||||
|
|
||||||
|
result = HexByte(str) << 8;
|
||||||
|
result += HexByte(str+2);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned long HexLong(char* str)
|
||||||
|
{
|
||||||
|
register unsigned long result;
|
||||||
|
|
||||||
|
result = HexByte(str++) << 24;
|
||||||
|
result += HexByte(str++) << 16;
|
||||||
|
result += HexByte(str++) << 8;
|
||||||
|
result += HexByte(str);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned long HexString(char* str)
|
||||||
|
{
|
||||||
|
unsigned long temp = 0;
|
||||||
|
|
||||||
|
while ( *str )
|
||||||
|
{
|
||||||
|
temp <<= 4;
|
||||||
|
switch ( *str++ )
|
||||||
|
{
|
||||||
|
case '0': break;
|
||||||
|
case '1': temp += 1; break;
|
||||||
|
case '2': temp += 2; break;
|
||||||
|
case '3': temp += 3; break;
|
||||||
|
case '4': temp += 4; break;
|
||||||
|
case '5': temp += 5; break;
|
||||||
|
case '6': temp += 6; break;
|
||||||
|
case '7': temp += 7; break;
|
||||||
|
case '8': temp += 8; break;
|
||||||
|
case '9': temp += 9; break;
|
||||||
|
case 'A': temp += 10; break;
|
||||||
|
case 'B': temp += 11; break;
|
||||||
|
case 'C': temp += 12; break;
|
||||||
|
case 'D': temp += 13; break;
|
||||||
|
case 'E': temp += 14; break;
|
||||||
|
case 'F': temp += 15; break;
|
||||||
|
case 'a': temp += 10; break;
|
||||||
|
case 'b': temp += 11; break;
|
||||||
|
case 'c': temp += 12; break;
|
||||||
|
case 'd': temp += 13; break;
|
||||||
|
case 'e': temp += 14; break;
|
||||||
|
case 'f': temp += 15; break;
|
||||||
|
case 'X': temp = 0; break;
|
||||||
|
case 'x': temp = 0; break;
|
||||||
|
default: return temp;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return temp;
|
||||||
|
}
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
30
rosapps/regedit/hex_str.h
Normal file
30
rosapps/regedit/hex_str.h
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
// HEX_STR.H
|
||||||
|
// Copyright (c) 1995 by Robert Dickenson
|
||||||
|
//
|
||||||
|
#ifndef __HEX_STR_H__
|
||||||
|
#define __HEX_STR_H__
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
unsigned short Byte2Hex(unsigned char);
|
||||||
|
unsigned long Word2Hex(unsigned short);
|
||||||
|
unsigned char HexByte(char*);
|
||||||
|
unsigned int HexWord(char*);
|
||||||
|
unsigned long HexLong(char*);
|
||||||
|
unsigned long HexString(char*);
|
||||||
|
|
||||||
|
void ByteBinStr(char*, unsigned char);
|
||||||
|
void WordBinStr(char*, unsigned short);
|
||||||
|
unsigned long HexString(char*);
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif // __HEX_STR_H__
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
|
@ -53,10 +53,12 @@ static int column_alignment[MAX_LIST_COLUMNS] = { LVCFMT_LEFT, LVCFMT_LEFT, LVCF
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
// Local module support methods
|
// Local module support methods
|
||||||
//
|
//
|
||||||
|
extern unsigned char AsciiTable[256][3];
|
||||||
|
|
||||||
static void AddEntryToList(HWND hwndLV, LPTSTR Name, DWORD dwValType, void* ValBuf, DWORD dwCount)
|
static void AddEntryToList(HWND hwndLV, LPTSTR Name, DWORD dwValType, void* ValBuf, DWORD dwCount)
|
||||||
{
|
{
|
||||||
LVITEM item;
|
LVITEM item;
|
||||||
|
int index;
|
||||||
|
|
||||||
item.mask = LVIF_TEXT | LVIF_PARAM;
|
item.mask = LVIF_TEXT | LVIF_PARAM;
|
||||||
item.iItem = 0;//idx;
|
item.iItem = 0;//idx;
|
||||||
|
@ -65,6 +67,8 @@ static void AddEntryToList(HWND hwndLV, LPTSTR Name, DWORD dwValType, void* ValB
|
||||||
item.stateMask = 0;
|
item.stateMask = 0;
|
||||||
item.pszText = Name;
|
item.pszText = Name;
|
||||||
item.cchTextMax = _tcslen(item.pszText);
|
item.cchTextMax = _tcslen(item.pszText);
|
||||||
|
if (item.cchTextMax == 0)
|
||||||
|
item.pszText = LPSTR_TEXTCALLBACK;
|
||||||
item.cchTextMax = 0;
|
item.cchTextMax = 0;
|
||||||
item.iImage = 0;
|
item.iImage = 0;
|
||||||
item.lParam = (LPARAM)dwValType;
|
item.lParam = (LPARAM)dwValType;
|
||||||
|
@ -72,7 +76,48 @@ static void AddEntryToList(HWND hwndLV, LPTSTR Name, DWORD dwValType, void* ValB
|
||||||
#if (_WIN32_IE >= 0x0300)
|
#if (_WIN32_IE >= 0x0300)
|
||||||
item.iIndent = 0;
|
item.iIndent = 0;
|
||||||
#endif
|
#endif
|
||||||
ListView_InsertItem(hwndLV, &item);
|
|
||||||
|
index = ListView_InsertItem(hwndLV, &item);
|
||||||
|
if (index != -1) {
|
||||||
|
// LPTSTR pszText = NULL;
|
||||||
|
LPTSTR pszText = _T("value");
|
||||||
|
switch (dwValType) {
|
||||||
|
case REG_SZ:
|
||||||
|
case REG_EXPAND_SZ:
|
||||||
|
ListView_SetItemText(hwndLV, index, 2, ValBuf);
|
||||||
|
break;
|
||||||
|
case REG_DWORD:
|
||||||
|
{
|
||||||
|
TCHAR buf[64];
|
||||||
|
wsprintf(buf, "0x%08X (%d)", *(DWORD*)ValBuf, *(DWORD*)ValBuf);
|
||||||
|
ListView_SetItemText(hwndLV, index, 2, buf);
|
||||||
|
}
|
||||||
|
// lpsRes = convertHexToDWORDStr(lpbData, dwLen);
|
||||||
|
break;
|
||||||
|
case REG_BINARY:
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
LPTSTR pData = (LPTSTR)ValBuf;
|
||||||
|
LPTSTR strBinary = malloc(dwCount * sizeof(TCHAR) * 3 + 1);
|
||||||
|
memset(strBinary, _T(' '), dwCount * sizeof(TCHAR) * 3);
|
||||||
|
strBinary[dwCount * sizeof(TCHAR) * 3] = _T('\0');
|
||||||
|
for (i = 0; i < dwCount; i++) {
|
||||||
|
unsigned short* pShort;
|
||||||
|
pShort = &(strBinary[i*3]);
|
||||||
|
// strBinary[i*3] = Byte2Hex((LPTSTR)ValBuf+i);
|
||||||
|
// *pShort++ = Byte2Hex(*(pData+i));
|
||||||
|
*pShort = Byte2Hex(*(pData+i));
|
||||||
|
}
|
||||||
|
ListView_SetItemText(hwndLV, index, 2, strBinary);
|
||||||
|
free(strBinary);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
// lpsRes = convertHexToHexCSV(lpbData, dwLen);
|
||||||
|
ListView_SetItemText(hwndLV, index, 2, pszText);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void CreateListColumns(HWND hWndListView)
|
static void CreateListColumns(HWND hWndListView)
|
||||||
|
@ -291,41 +336,13 @@ HWND CreateListView(HWND hwndParent, int id)
|
||||||
|
|
||||||
BOOL RefreshListView(HWND hwndLV, HKEY hKey, LPTSTR keyPath)
|
BOOL RefreshListView(HWND hwndLV, HKEY hKey, LPTSTR keyPath)
|
||||||
{
|
{
|
||||||
if (hwndLV != NULL) {
|
if (hwndLV != NULL) {
|
||||||
ListView_DeleteAllItems(hwndLV);
|
ListView_DeleteAllItems(hwndLV);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (hKey != NULL) {
|
if (hKey != NULL) {
|
||||||
LONG errCode;
|
|
||||||
HKEY hNewKey;
|
HKEY hNewKey;
|
||||||
|
LONG errCode = RegOpenKeyEx(hKey, keyPath, 0, KEY_READ, &hNewKey);
|
||||||
|
|
||||||
DWORD max_sub_key_len;
|
|
||||||
DWORD max_val_name_len;
|
|
||||||
DWORD max_val_size;
|
|
||||||
DWORD val_count;
|
|
||||||
errCode = RegQueryInfoKey(hKey, NULL, NULL, NULL, NULL,
|
|
||||||
&max_sub_key_len, NULL, &val_count, &max_val_name_len, &max_val_size, NULL, NULL);
|
|
||||||
if (errCode == ERROR_SUCCESS) {
|
|
||||||
TCHAR* ValName = malloc(++max_val_name_len * sizeof(TCHAR));
|
|
||||||
DWORD dwValNameLen = max_val_name_len;
|
|
||||||
BYTE* ValBuf = malloc(++max_val_size);
|
|
||||||
DWORD dwValSize = max_val_size;
|
|
||||||
DWORD dwIndex = 0L;
|
|
||||||
DWORD dwValType;
|
|
||||||
while (RegEnumValue(hKey, dwIndex, ValName, &dwValNameLen, NULL, &dwValType, ValBuf, &dwValSize) == ERROR_SUCCESS) {
|
|
||||||
AddEntryToList(hwndLV, ValName, dwValType, ValBuf, dwIndex);
|
|
||||||
dwValNameLen = max_val_name_len;
|
|
||||||
dwValSize = max_val_size;
|
|
||||||
dwValType = 0L;
|
|
||||||
++dwIndex;
|
|
||||||
}
|
|
||||||
free(ValBuf);
|
|
||||||
free(ValName);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
errCode = RegOpenKeyEx(hKey, keyPath, 0, KEY_READ, &hNewKey);
|
|
||||||
if (errCode == ERROR_SUCCESS) {
|
if (errCode == ERROR_SUCCESS) {
|
||||||
DWORD max_sub_key_len;
|
DWORD max_sub_key_len;
|
||||||
DWORD max_val_name_len;
|
DWORD max_val_name_len;
|
||||||
|
@ -342,9 +359,13 @@ BOOL RefreshListView(HWND hwndLV, HKEY hKey, LPTSTR keyPath)
|
||||||
DWORD dwValSize = max_val_size;
|
DWORD dwValSize = max_val_size;
|
||||||
DWORD dwIndex = 0L;
|
DWORD dwIndex = 0L;
|
||||||
DWORD dwValType;
|
DWORD dwValType;
|
||||||
|
// if (RegQueryValueEx(hNewKey, NULL, NULL, &dwValType, ValBuf, &dwValSize) == ERROR_SUCCESS) {
|
||||||
|
// AddEntryToList(hwndLV, _T("(Default)"), dwValType, ValBuf, dwValSize);
|
||||||
|
// }
|
||||||
|
// dwValSize = max_val_size;
|
||||||
while (RegEnumValue(hNewKey, dwIndex, ValName, &dwValNameLen, NULL, &dwValType, ValBuf, &dwValSize) == ERROR_SUCCESS) {
|
while (RegEnumValue(hNewKey, dwIndex, ValName, &dwValNameLen, NULL, &dwValType, ValBuf, &dwValSize) == ERROR_SUCCESS) {
|
||||||
//while (RegEnumValue(hNewKey, dwIndex, ValName, &dwValNameLen, NULL, &dwValType, NULL, NULL) == ERROR_SUCCESS) {
|
ValBuf[dwValSize] = NULL;
|
||||||
AddEntryToList(hwndLV, ValName, dwValType, ValBuf, dwIndex);
|
AddEntryToList(hwndLV, ValName, dwValType, ValBuf, dwValSize);
|
||||||
dwValNameLen = max_val_name_len;
|
dwValNameLen = max_val_name_len;
|
||||||
dwValSize = max_val_size;
|
dwValSize = max_val_size;
|
||||||
dwValType = 0L;
|
dwValType = 0L;
|
||||||
|
|
84
rosapps/regedit/trace.c
Normal file
84
rosapps/regedit/trace.c
Normal file
|
@ -0,0 +1,84 @@
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Diagnostic Trace
|
||||||
|
//
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdarg.h>
|
||||||
|
#define WIN32_LEAN_AND_MEAN
|
||||||
|
#include "windows.h"
|
||||||
|
#include "trace.h"
|
||||||
|
|
||||||
|
DeclAssertFile; // Should be added at the begining of each .C/.CPP
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef _DEBUG
|
||||||
|
|
||||||
|
#ifdef WIN32
|
||||||
|
//#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
|
||||||
|
//#include <windows.h>
|
||||||
|
//#include <assert.h>
|
||||||
|
//WINBASEAPI VOID WINAPI DebugBreak(VOID);
|
||||||
|
//WINBASEAPI VOID WINAPI OutputDebugStringA(LPCSTR lpOutputString);
|
||||||
|
//WINBASEAPI VOID WINAPI OutputDebugStringW(LPCWSTR lpOutputString);
|
||||||
|
//void __stdcall DebugBreak(void);
|
||||||
|
//void __stdcall OutputDebugStringA(char* lpOutputString);
|
||||||
|
//void __stdcall OutputDebugStringW(wchar_t* lpOutputString);
|
||||||
|
#ifdef UNICODE
|
||||||
|
#define OutputDebugString OutputDebugStringW
|
||||||
|
#else
|
||||||
|
#define OutputDebugString OutputDebugStringA
|
||||||
|
#endif // !UNICODE
|
||||||
|
|
||||||
|
#else
|
||||||
|
#include "hardware.h"
|
||||||
|
#endif // WIN32
|
||||||
|
|
||||||
|
|
||||||
|
#undef THIS_FILE
|
||||||
|
static char THIS_FILE[] = __FILE__;
|
||||||
|
|
||||||
|
void _DebugBreak(void)
|
||||||
|
{
|
||||||
|
DebugBreak();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Trace(TCHAR* lpszFormat, ...)
|
||||||
|
{
|
||||||
|
va_list args;
|
||||||
|
int nBuf;
|
||||||
|
TCHAR szBuffer[512];
|
||||||
|
|
||||||
|
va_start(args, lpszFormat);
|
||||||
|
// nBuf = vsprintf(szBuffer, lpszFormat, args);
|
||||||
|
// nBuf = _vsntprintf(szBuffer, _countof(szBuffer), lpszFormat, args);
|
||||||
|
#ifdef _UNICODE
|
||||||
|
nBuf = _vsnwprintf(szBuffer, sizeof(szBuffer), lpszFormat, args);
|
||||||
|
#else
|
||||||
|
nBuf = _vsnprintf(szBuffer, sizeof(szBuffer), lpszFormat, args);
|
||||||
|
#endif
|
||||||
|
OutputDebugString(szBuffer);
|
||||||
|
// was there an error? was the expanded string too long?
|
||||||
|
// ASSERT(nBuf >= 0);
|
||||||
|
va_end(args);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Assert(void* assert, TCHAR* file, int line, void* msg)
|
||||||
|
{
|
||||||
|
if (msg == NULL) {
|
||||||
|
printf("ASSERT -- %s occured on line %u of file %s.\n",
|
||||||
|
assert, line, file);
|
||||||
|
} else {
|
||||||
|
printf("ASSERT -- %s occured on line %u of file %s: Message = %s.\n",
|
||||||
|
assert, line, file, msg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
//inline void Trace(TCHAR* lpszFormat, ...) { };
|
||||||
|
//inline void Assert(void* assert, TCHAR* file, int line, void* msg) { };
|
||||||
|
void Trace(TCHAR* lpszFormat, ...) { };
|
||||||
|
void Assert(void* assert, TCHAR* file, int line, void* msg) { };
|
||||||
|
|
||||||
|
#endif //_DEBUG
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
72
rosapps/regedit/trace.h
Normal file
72
rosapps/regedit/trace.h
Normal file
|
@ -0,0 +1,72 @@
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
#ifndef __TRACE_H__
|
||||||
|
#define __TRACE_H__
|
||||||
|
|
||||||
|
#ifdef _DEBUG
|
||||||
|
|
||||||
|
//=============================================================================
|
||||||
|
// BreakPoint() macro.
|
||||||
|
//=============================================================================
|
||||||
|
|
||||||
|
#ifdef _X86_
|
||||||
|
#define BreakPoint() _asm { int 3h }
|
||||||
|
#else
|
||||||
|
#define BreakPoint() _DebugBreak()
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//=============================================================================
|
||||||
|
// MACRO: ASSERT()
|
||||||
|
//=============================================================================
|
||||||
|
|
||||||
|
#ifndef ASSERT
|
||||||
|
#define ASSERT(exp) \
|
||||||
|
{ \
|
||||||
|
if ( !(exp) ) \
|
||||||
|
{ \
|
||||||
|
Assert(#exp, __FILE__, __LINE__, NULL); \
|
||||||
|
BreakPoint(); \
|
||||||
|
} \
|
||||||
|
} \
|
||||||
|
|
||||||
|
#define ASSERTMSG(exp, msg) \
|
||||||
|
{ \
|
||||||
|
if ( !(exp) ) \
|
||||||
|
{ \
|
||||||
|
Assert(#exp, __FILE__, __LINE__, msg); \
|
||||||
|
BreakPoint(); \
|
||||||
|
} \
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//=============================================================================
|
||||||
|
// MACRO: TRACE()
|
||||||
|
//=============================================================================
|
||||||
|
|
||||||
|
void Assert(void* assert, TCHAR* file, int line, void* msg);
|
||||||
|
void Trace(TCHAR* lpszFormat, ...);
|
||||||
|
void Trace1(int code, TCHAR* lpszFormat, ...);
|
||||||
|
|
||||||
|
#define TRACE Trace
|
||||||
|
#define TRACE0 Trace
|
||||||
|
|
||||||
|
#else // _DEBUG
|
||||||
|
|
||||||
|
#ifndef ASSERT
|
||||||
|
#define ASSERT(exp)
|
||||||
|
#define ASSERTMSG(exp, msg)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//#define TRACE0 TRACE
|
||||||
|
//#define TRACE1 TRACE
|
||||||
|
|
||||||
|
void Assert(void* assert, TCHAR* file, int line, void* msg);
|
||||||
|
void Trace(TCHAR* lpszFormat, ...);
|
||||||
|
|
||||||
|
#define TRACE 0 ? (void)0 : Trace
|
||||||
|
|
||||||
|
|
||||||
|
#endif // !_DEBUG
|
||||||
|
|
||||||
|
#endif // __TRACE_H__
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
Loading…
Reference in a new issue