CMM: utf8_strlen() optimization
git-svn-id: svn://kolibrios.org@5713 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
9516fbc07d
commit
fd987781a3
@ -15,7 +15,7 @@ struct UrlsHistory {
|
|||||||
void AddUrl();
|
void AddUrl();
|
||||||
byte GoBack();
|
byte GoBack();
|
||||||
byte GoForward();
|
byte GoForward();
|
||||||
};
|
} BrowserHistory;
|
||||||
|
|
||||||
dword UrlsHistory::CurrentUrl() {
|
dword UrlsHistory::CurrentUrl() {
|
||||||
return #history_list[current].Item;
|
return #history_list[current].Item;
|
||||||
@ -63,5 +63,3 @@ byte UrlsHistory::GoForward() {
|
|||||||
strlcpy(#URL, #history_list[current].Item, sizeof(URL));
|
strlcpy(#URL, #history_list[current].Item, sizeof(URL));
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
UrlsHistory BrowserHistory;
|
|
@ -403,6 +403,15 @@ void Scan(dword id__)
|
|||||||
OpenPage();
|
OpenPage();
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
case REFRESH:
|
||||||
|
if (http_transfer > 0)
|
||||||
|
{
|
||||||
|
StopLoading();
|
||||||
|
Draw_Window();
|
||||||
|
}
|
||||||
|
else OpenPage();
|
||||||
|
return;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
case 011: //Ctrk+K
|
case 011: //Ctrk+K
|
||||||
BufEncode(CH_KOI8);
|
BufEncode(CH_KOI8);
|
||||||
@ -451,14 +460,7 @@ void Scan(dword id__)
|
|||||||
return;
|
return;
|
||||||
case 054: //F5
|
case 054: //F5
|
||||||
IF(address_box.flags & 0b10) return;
|
IF(address_box.flags & 0b10) return;
|
||||||
case REFRESH:
|
|
||||||
if (http_transfer > 0)
|
|
||||||
{
|
|
||||||
StopLoading();
|
|
||||||
Draw_Window();
|
|
||||||
}
|
|
||||||
else OpenPage();
|
|
||||||
return;
|
|
||||||
case 020:
|
case 020:
|
||||||
case NEWTAB:
|
case NEWTAB:
|
||||||
MoveSize(190,80,OLD,OLD);
|
MoveSize(190,80,OLD,OLD);
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
// strpbrk(dword text1,text2) --- example: strpbrk("this test", " ckfi") -> return "is test"
|
// strpbrk(dword text1,text2) --- example: strpbrk("this test", " ckfi") -> return "is test"
|
||||||
// strcmp( ESI, EDI)
|
// strcmp( ESI, EDI)
|
||||||
// strlen( EDI)
|
// strlen( EDI)
|
||||||
|
// utf8_strlen( ESI)
|
||||||
// strcpy( EDI, ESI) --- 0 if ==
|
// strcpy( EDI, ESI) --- 0 if ==
|
||||||
// strncpy(dword text1,text2,signed length)
|
// strncpy(dword text1,text2,signed length)
|
||||||
// strcat( EDI, ESI)
|
// strcat( EDI, ESI)
|
||||||
@ -140,6 +141,22 @@ inline strnlen(dword str, dword maxlen)
|
|||||||
return cp - str;
|
return cp - str;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inline fastcall unsigned int utf8_strlen( ESI)
|
||||||
|
{
|
||||||
|
$xor ecx, ecx
|
||||||
|
_loop:
|
||||||
|
$lodsb
|
||||||
|
$test al, al
|
||||||
|
$jz _done
|
||||||
|
$and al, 0xc0
|
||||||
|
$cmp al, 0x80
|
||||||
|
$jz _loop
|
||||||
|
$inc ecx
|
||||||
|
$jmp _loop
|
||||||
|
|
||||||
|
_done:
|
||||||
|
return ECX;
|
||||||
|
}
|
||||||
|
|
||||||
inline signed int strcmp(dword text1, text2)
|
inline signed int strcmp(dword text1, text2)
|
||||||
{
|
{
|
||||||
@ -916,27 +933,6 @@ inline void debugi(dword d_int)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
inline fastcall unsigned int utf8_strlen( ESI)
|
|
||||||
{
|
|
||||||
$xor ecx, ecx
|
|
||||||
_loop:
|
|
||||||
$lodsb
|
|
||||||
$test al, al
|
|
||||||
$jz _done
|
|
||||||
$test al, 0x80
|
|
||||||
$jz _1
|
|
||||||
$and al, 0xc0
|
|
||||||
$cmp al, 0x80
|
|
||||||
$jz _loop
|
|
||||||
_1:
|
|
||||||
$inc ecx
|
|
||||||
$jmp _loop
|
|
||||||
|
|
||||||
_done:
|
|
||||||
return ECX;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#define strnmov strmovn
|
#define strnmov strmovn
|
||||||
#define stricmp strcmpi
|
#define stricmp strcmpi
|
||||||
#define strcmpn strncmp
|
#define strcmpn strncmp
|
||||||
|
Loading…
Reference in New Issue
Block a user