Rev 3045 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
3043 | leency | 1 | //CODED by Veliant, Leency 2008-2012. GNU GPL licence. |
2 | |||
3 | |||
4 | inline fastcall dword strlen( EDI) |
||
5 | { |
||
6 | asm { |
||
7 | xor ecx, ecx |
||
8 | xor eax, eax |
||
9 | dec ecx |
||
10 | repne scasb |
||
11 | sub eax, 2 |
||
12 | sub eax, ecx |
||
13 | } |
||
14 | } |
||
15 | |||
16 | |||
17 | inline fastcall copystr( ESI,EDI) |
||
18 | { |
||
19 | $cld |
||
20 | l1: |
||
21 | $lodsb |
||
22 | $stosb |
||
23 | $test al,al |
||
24 | $jnz l1 |
||
25 | } |
||
26 | |||
27 | char buffer[11]; |
||
28 | inline fastcall dword IntToStr( ESI) |
||
29 | { |
||
30 | $mov edi, #buffer |
||
31 | $mov ecx, 10 |
||
32 | $test esi, esi |
||
33 | $jns f1 |
||
34 | $mov al, '-' |
||
35 | $stosb |
||
36 | $neg esi |
||
37 | f1: |
||
38 | $mov eax, esi |
||
39 | $push -'0' |
||
40 | f2: |
||
41 | $xor edx, edx |
||
42 | $div ecx |
||
43 | $push edx |
||
44 | $test eax, eax |
||
45 | $jnz f2 |
||
46 | f3: |
||
47 | $pop eax |
||
48 | $add al, '0' |
||
49 | $stosb |
||
50 | $jnz f3 |
||
51 | $mov eax, #buffer |
||
3050 | leency | 52 | //$ret |
3043 | leency | 53 | } |
54 | |||
55 | inline fastcall dword StrToInt() |
||
56 | { |
||
57 | ESI=EDI=EAX; |
||
58 | IF(DSBYTE[ESI]=='-')ESI++; |
||
59 | EAX=0; |
||
60 | BH=AL; |
||
61 | do{ |
||
62 | BL=DSBYTE[ESI]-'0'; |
||
63 | EAX=EAX*10+EBX; |
||
64 | ESI++; |
||
65 | }while(DSBYTE[ESI]>0); |
||
66 | IF(DSBYTE[EDI]=='-') -EAX; |
||
67 | } |
||
68 | |||
69 | dword StrToCol(char* htmlcolor) |
||
70 | { |
||
71 | dword j, color=0; |
||
72 | char ch=0x00; |
||
73 | |||
74 | FOR (j=0; j<6; j++) |
||
75 | { |
||
76 | ch=ESBYTE[htmlcolor+j]; |
||
77 | IF ((ch>='0') && (ch<='9')) ch -= '0'; |
||
78 | IF ((ch>='A') && (ch<='F')) ch -= 'A'-10; |
||
79 | IF ((ch>='a') && (ch<='f')) ch -= 'a'-10; |
||
80 | color = color*0x10 + ch; |
||
81 | } |
||
3050 | leency | 82 | return color; |
3043 | leency | 83 | } |
84 | |||
3045 | leency | 85 | inline fastcall signed char strcmp(ESI, EDI) |
3043 | leency | 86 | { |
87 | loop() |
||
88 | { |
||
89 | IF (DSBYTE[ESI] |
||
90 | IF (DSBYTE[ESI]>DSBYTE[EDI]) RETURN 1; |
||
91 | IF (DSBYTE[ESI]=='\0') RETURN 0; |
||
92 | ESI++; |
||
93 | EDI++; |
||
94 | } |
||
95 | } |
||
96 | |||
97 | |||
98 | |||
3050 | leency | 99 | inline fastcall signed int strchr(ESI,BL) |
3043 | leency | 100 | { |
101 | int jj=0, last=-1; |
||
102 | do{ |
||
103 | jj++; |
||
104 | $lodsb |
||
105 | IF(AL==BL) last=jj; |
||
106 | } while(AL!=0); |
||
107 | return last; |
||
108 | } |
||
109 | |||
110 | |||
111 | inline fastcall TitleCase( EDX) |
||
112 | { |
||
113 | AL=DSBYTE[EDX]; |
||
114 | IF(AL>='a')&&(AL<='z')DSBYTE[EDX]=AL&0x5f; |
||
115 | IF (AL>=160) && (AL<=175) DSBYTE[EDX] = AL - 32; //à-ï |
||
116 | IF (AL>=224) && (AL<=239) DSBYTE[EDX] = AL - 80; //à-ï |
||
117 | do{ |
||
118 | EDX++; |
||
119 | AL=DSBYTE[EDX]; |
||
120 | IF(AL>='A')&&(AL<='Z'){DSBYTE[EDX]=AL|0x20; CONTINUE;} |
||
121 | IF(AL>='€')&&(AL<='')DSBYTE[EDX]=AL|0x20; // -¯ |
||
122 | IF (AL>=144) && (AL<=159) DSBYTE[EDX] = AL + 80; //à-ï |
||
123 | }while(AL!=0); |
||
124 | } |
||
125 | |||
126 | |||
127 | |||
128 | inline fastcall strcpy( EDI, ESI) |
||
129 | { |
||
130 | $cld |
||
131 | l2: |
||
132 | $lodsb |
||
133 | $stosb |
||
134 | $test al,al |
||
135 | $jnz l2 |
||
136 | } |
||
137 | |||
138 | |||
139 | inline fastcall strcat( EDI, ESI) |
||
140 | { |
||
141 | asm { |
||
142 | mov ebx, edi |
||
143 | xor ecx, ecx |
||
144 | xor eax, eax |
||
145 | dec ecx |
||
146 | repne scasb |
||
147 | dec edi |
||
148 | mov edx, edi |
||
149 | mov edi, esi |
||
150 | xor ecx, ecx |
||
151 | xor eax, eax |
||
152 | dec ecx |
||
153 | repne scasb |
||
154 | xor ecx, 0ffffffffh |
||
155 | mov edi, edx |
||
156 | mov edx, ecx |
||
157 | mov eax, edi |
||
158 | shr ecx, 2 |
||
159 | rep movsd |
||
160 | mov ecx, edx |
||
161 | and ecx, 3 |
||
162 | rep movsb |
||
163 | mov eax, ebx |
||
164 | } |
||
165 | }=159)>='')DSBYTE[EDX]=AL|0x20;>='Z'){DSBYTE[EDX]=AL|0x20;>=239)>=175)>='z')DSBYTE[EDX]=AL&0x5f; |