/***********************************************************
* Base Filename: uswmem.cpp, uswmem.obj
* Version Information: Version 1.0
* Author: David S. Hall
* Author SSN: 496-68-1789
* Author E-mail: halldavids@sbcglobal.net
* Description: U.S. Code Map Wide Memory Functions
***********************************************************/
/* Precompiled Files */
#include <windows.h>
#pragma hdrstop
/* Include Files */
#include "uswmem.h"
/* Pragmas */
#pragma package(smart_init)
/* Wide Character Memory Compare, Case-Insensitive */
int us_wmemicmp( const wchar_t* dest, const wchar_t* src, size_t len )
{
wchar_t* s;
wchar_t* d;
size_t n;
wchar_t a;
wchar_t b;
int i;
/* Initialize */
s = (wchar_t*)src;
d = (wchar_t*)dest;
n = len;
while (n != 0)
{
a = *s;
b = *d;
if ((a >= (wchar_t)0x0041) && (a <= (wchar_t)0x005A)) a += (wchar_t)0x0020;
if ((b >= (wchar_t)0x0041) && (b <= (wchar_t)0x005A)) b += (wchar_t)0x0020;
if (a > b)
{
i = +1;
return i;
} /* end if */
if (a < b)
{
i = -1;
return i;
} /* end if */
/* Increment To Next */
++s;
++d;
--n;
} /* end while */
/* Comparison Successful */
i = 0;
return i;
} /* end us_wmemicmp */
/* Convert Wide-C-String To Ansi-C-String */
char* us_wcstrtoacstr( wchar_t* wcstr )
{
char* cstr;
size_t len;
wchar_t* src;
char* dest;
len = wcslen( (const wchar_t*)wcstr );
cstr = new char[(len + 1)];
if (cstr == NULL)
return NULL;
src = wcstr;
dest = cstr;
while (len != 0)
{
*dest = (char)*src;
++src;
++dest;
--len;
} /* end while */
*dest = (char)0x00;
return cstr;
} /* end us_wcstrtoacstr */
/* Convert Ansi-C-String To Wide-C-String */
wchar_t* us_acstrtowcstr( char* acstr )
{
wchar_t* wstr;
size_t len;
char* src;
wchar_t* dest;
len = strlen( (const char*)acstr );
wstr = new wchar_t[(len + 1)];
if (wstr == NULL)
return NULL;
src = acstr;
dest = wstr;
while (len != 0)
{
*dest = (wchar_t)*src;
++src;
++dest;
--len;
} /* end while */
*dest = (wchar_t)0x0000;
return wstr;
} /* end us_acstrtowcstr */
/* Convert Ansi-Byte-Array To Wide-C-Array */
wchar_t* us_abyarrtowcarr( void* abyarr, size_t abLen )
{
wchar_t* wcarr;
LPBYTE src;
wchar_t* dest;
size_t len;
wcarr = new wchar_t[abLen];
if (wcarr == NULL)
return NULL;
src = (LPBYTE)abyarr;
dest = wcarr;
len = abLen;
while (len != 0)
{
*dest = (wchar_t)*src;
++src;
++dest;
--len;
} /* end while */
return wcarr;
} /* end us_abyarrtowcarr */
评论