Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 3106 → Rev 3107

/programs/cmm/lib/strings.h
1,7 → 1,7
//------------------------------------------------------------------------------
// strcmp( ESI, EDI)
// strlen( EDI)
// strcpy( EDI, ESI)
// strcpy( EDI, ESI) --- 0 if ==
// strcat( EDI, ESI)
// strchr( ESI,BL)
// strrchr( ESI,BL)
9,9 → 9,11
// itoa( ESI)
// atoi( EAX)
// strupr( ESI)
// strlwr( ESI) ----- âîçìîæíî íå ïîääåðæèâàåò êèðèëëèöó
// strlwr( ESI) --- kyrillic symbols may not work
// strttl( EDX)
// strtok( ESI)
// strcpyb(dword searchin, copyin, startstr, endstr) --- copy string between strings
//chrnum(dword searchin, char symbol) --- count of symbol in string
//------------------------------------------------------------------------------
 
inline fastcall signed int strcmp( ESI, EDI)
49,39 → 51,6
}
 
 
 
/*
 
inline fastcall signed int strcmpi( ESI,EDI)
uses EBX
{
do{
$lodsb
IF(AL>='a')&&(AL<='z')AL-=0x20;
BL=DSBYTE[(E)DI];
IF(BL>='a')&&(BL<='z')BL-=0x20;
AL-=BL;
IF(!ZEROFLAG)BREAK;
(E)DI++;
}while(BL!=0);
}
 
inline char STRNCMPI((E)SI,(E)DI,(E)CX)
{
(E)AX=0;
LOOPNZ((E)CX){
$lodsb
IF(AL>='a')&&(AL<='z')AL-=0x20;
AH=DSBYTE[EDI];
IF(AH>='a')&&(AH<='z')AH-=0x20;
EDI++;
IF(AL==0)||(AH==0)||(AL!=AH)BREAK;
}
AL=AL-AH;
}*/
 
 
 
inline fastcall unsigned int strlen( EDI)
{
$xor eax, eax
94,11 → 63,11
inline fastcall strcpy( EDI, ESI)
{
$cld
l2:
L2:
$lodsb
$stosb
$test al,al
$jnz l2
$jnz L2
}
 
 
156,17 → 125,17
 
$mov eax, esi
$push -'0'
f2:
F2:
$xor edx, edx
$div ecx
$push edx
$test eax, eax
$jnz f2
f3:
$jnz F2
F3:
$pop eax
$add al, '0'
$stosb
$jnz f3
$jnz F3
$mov al, '\0'
$stosb
186,7 → 155,7
BL=DSBYTE[ESI]-'0';
EAX=EAX*10+EBX;
ESI++;
}while(DSBYTE[ESI]>0);
}while(DSBYTE[ESI]>='0');
IF(DSBYTE[EDI]=='-') -EAX;
}
 
294,9 → 263,37
}
}
 
//
void strcpyb(dword searchin, copyin, startstr, endstr)
{
dword startp, endp;
startp = strstr(searchin, startstr) + strlen(startstr);
endp = strstr(startp, endstr);
if (startp==endp) return;
do
{
DSBYTE[copyin] = DSBYTE[startp];
copyin++;
startp++;
}
while (startp<endp);
DSBYTE[copyin] = '\0';
}
 
int chrnum(dword searchin, char symbol)
{
int num = 0;
while(DSBYTE[searchin])
{
if (DSBYTE[searchin] == symbol) num++;
searchin++;
}
return num;
}
 
 
 
 
/* strtok( LPSTR dest, src, divs);
src - óêàçàòåëü íà èñõîäíóþ ñòðîêó èëè ðåçóëüòàò ïðåäûäóùåãî âûçîâà
dest - óêàçàòåëü íà áóôåð, êóäà áóäåò ñêîïèðîâàíî ñëîâî