Rev 3050 | 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 |
||
3113 | leency | 20 | L1: |
3043 | leency | 21 | $lodsb |
22 | $stosb |
||
23 | $test al,al |
||
3113 | leency | 24 | $jnz L1 |
3043 | leency | 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 |
||
3113 | leency | 33 | $jns F1 |
3043 | leency | 34 | $mov al, '-' |
35 | $stosb |
||
36 | $neg esi |
||
3113 | leency | 37 | F1: |
3043 | leency | 38 | $mov eax, esi |
39 | $push -'0' |
||
3113 | leency | 40 | F2: |
3043 | leency | 41 | $xor edx, edx |
42 | $div ecx |
||
43 | $push edx |
||
44 | $test eax, eax |
||
3113 | leency | 45 | $jnz F2 |
46 | F3: |
||
3043 | leency | 47 | $pop eax |
48 | $add al, '0' |
||
49 | $stosb |
||
3113 | leency | 50 | $jnz F3 |
3043 | leency | 51 | $mov eax, #buffer |
52 | } |
||
53 | |||
54 | inline fastcall dword StrToInt() |
||
55 | { |
||
56 | ESI=EDI=EAX; |
||
57 | IF(DSBYTE[ESI]=='-')ESI++; |
||
58 | EAX=0; |
||
59 | BH=AL; |
||
60 | do{ |
||
61 | BL=DSBYTE[ESI]-'0'; |
||
62 | EAX=EAX*10+EBX; |
||
63 | ESI++; |
||
64 | }while(DSBYTE[ESI]>0); |
||
65 | IF(DSBYTE[EDI]=='-') -EAX; |
||
66 | } |
||
67 | |||
68 | dword StrToCol(char* htmlcolor) |
||
69 | { |
||
70 | dword j, color=0; |
||
71 | char ch=0x00; |
||
72 | |||
73 | FOR (j=0; j<6; j++) |
||
74 | { |
||
75 | ch=ESBYTE[htmlcolor+j]; |
||
76 | IF ((ch>='0') && (ch<='9')) ch -= '0'; |
||
77 | IF ((ch>='A') && (ch<='F')) ch -= 'A'-10; |
||
78 | IF ((ch>='a') && (ch<='f')) ch -= 'a'-10; |
||
79 | color = color*0x10 + ch; |
||
80 | } |
||
3050 | leency | 81 | return color; |
3043 | leency | 82 | } |
83 | |||
3045 | leency | 84 | inline fastcall signed char strcmp(ESI, EDI) |
3043 | leency | 85 | { |
86 | loop() |
||
87 | { |
||
88 | IF (DSBYTE[ESI] |
||
89 | IF (DSBYTE[ESI]>DSBYTE[EDI]) RETURN 1; |
||
90 | IF (DSBYTE[ESI]=='\0') RETURN 0; |
||
91 | ESI++; |
||
92 | EDI++; |
||
93 | } |
||
94 | } |
||
95 | |||
96 | |||
97 | |||
3050 | leency | 98 | inline fastcall signed int strchr(ESI,BL) |
3043 | leency | 99 | { |
100 | int jj=0, last=-1; |
||
101 | do{ |
||
102 | jj++; |
||
103 | $lodsb |
||
104 | IF(AL==BL) last=jj; |
||
105 | } while(AL!=0); |
||
106 | return last; |
||
107 | } |
||
108 | |||
109 | |||
110 | inline fastcall TitleCase( EDX) |
||
111 | { |
||
112 | AL=DSBYTE[EDX]; |
||
113 | IF(AL>='a')&&(AL<='z')DSBYTE[EDX]=AL&0x5f; |
||
114 | IF (AL>=160) && (AL<=175) DSBYTE[EDX] = AL - 32; //à-ï |
||
115 | IF (AL>=224) && (AL<=239) DSBYTE[EDX] = AL - 80; //à-ï |
||
116 | do{ |
||
117 | EDX++; |
||
118 | AL=DSBYTE[EDX]; |
||
119 | IF(AL>='A')&&(AL<='Z'){DSBYTE[EDX]=AL|0x20; CONTINUE;} |
||
120 | IF(AL>='€')&&(AL<='')DSBYTE[EDX]=AL|0x20; // -¯ |
||
121 | IF (AL>=144) && (AL<=159) DSBYTE[EDX] = AL + 80; //à-ï |
||
122 | }while(AL!=0); |
||
123 | } |
||
124 | |||
125 | |||
126 | |||
127 | inline fastcall strcpy( EDI, ESI) |
||
128 | { |
||
129 | $cld |
||
3113 | leency | 130 | L2: |
3043 | leency | 131 | $lodsb |
132 | $stosb |
||
133 | $test al,al |
||
3113 | leency | 134 | $jnz L2 |
3043 | leency | 135 | } |
136 | |||
137 | |||
138 | inline fastcall strcat( EDI, ESI) |
||
139 | { |
||
140 | asm { |
||
141 | mov ebx, edi |
||
142 | xor ecx, ecx |
||
143 | xor eax, eax |
||
144 | dec ecx |
||
145 | repne scasb |
||
146 | dec edi |
||
147 | mov edx, edi |
||
148 | mov edi, esi |
||
149 | xor ecx, ecx |
||
150 | xor eax, eax |
||
151 | dec ecx |
||
152 | repne scasb |
||
153 | xor ecx, 0ffffffffh |
||
154 | mov edi, edx |
||
155 | mov edx, ecx |
||
156 | mov eax, edi |
||
157 | shr ecx, 2 |
||
158 | rep movsd |
||
159 | mov ecx, edx |
||
160 | and ecx, 3 |
||
161 | rep movsb |
||
162 | mov eax, ebx |
||
163 | } |
||
164 | }=159)>='')DSBYTE[EDX]=AL|0x20;>='Z'){DSBYTE[EDX]=AL|0x20;>=239)>=175)>='z')DSBYTE[EDX]=AL&0x5f; |