Subversion Repositories Kolibri OS

Rev

Rev 3043 | Go to most recent revision | Blame | Last modification | View Log | Download | RSS feed

  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
  52.      $ret
  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.   }
  82.  
  83.   return color;
  84. }
  85.  
  86. inline fastcall signed char strcmp(ESI, EDI)
  87. {
  88.         loop()
  89.         {
  90.                 IF (DSBYTE[ESI]<DSBYTE[EDI]) RETURN -1;
  91.                 IF (DSBYTE[ESI]>DSBYTE[EDI]) RETURN 1;
  92.                 IF (DSBYTE[ESI]=='\0') RETURN 0;
  93.                 ESI++;
  94.                 EDI++;
  95.         }
  96. }
  97.  
  98.  
  99.  
  100. inline fastcall unsigned int strchr(ESI,BL)
  101. {
  102.         int jj=0, last=-1;
  103.         do{
  104.                 jj++;
  105.                 $lodsb
  106.                 IF(AL==BL) last=jj;
  107.         } while(AL!=0);
  108.         return last;
  109. }
  110.  
  111.  
  112. inline fastcall TitleCase( EDX)
  113. {
  114.         AL=DSBYTE[EDX];
  115.         IF(AL>='a')&&(AL<='z')DSBYTE[EDX]=AL&0x5f;
  116.         IF (AL>=160) && (AL<=175) DSBYTE[EDX] = AL - 32;        //à-ï
  117.         IF (AL>=224) && (AL<=239) DSBYTE[EDX] = AL - 80;        //à-ï
  118.         do{
  119.                 EDX++;
  120.                 AL=DSBYTE[EDX];
  121.                 IF(AL>='A')&&(AL<='Z'){DSBYTE[EDX]=AL|0x20; CONTINUE;}
  122.                 IF(AL>='€')&&(AL<='')DSBYTE[EDX]=AL|0x20; // -¯
  123.                 IF (AL>=144) && (AL<=159) DSBYTE[EDX] = AL + 80;        //à-ï
  124.         }while(AL!=0);
  125. }
  126.  
  127.  
  128.  
  129. inline fastcall strcpy( EDI, ESI)
  130. {
  131.         $cld
  132. l2:
  133.         $lodsb
  134.         $stosb
  135.         $test al,al
  136.         $jnz l2
  137. }
  138.  
  139.  
  140. inline fastcall strcat( EDI, ESI)
  141. {
  142.   asm {
  143.     mov ebx, edi
  144.     xor ecx, ecx
  145.     xor eax, eax
  146.     dec ecx
  147.     repne scasb
  148.     dec edi
  149.     mov edx, edi
  150.     mov edi, esi
  151.     xor ecx, ecx
  152.     xor eax, eax
  153.     dec ecx
  154.     repne scasb
  155.     xor ecx, 0ffffffffh
  156.     mov edi, edx
  157.     mov edx, ecx
  158.     mov eax, edi
  159.     shr ecx, 2
  160.     rep movsd
  161.     mov ecx, edx
  162.     and ecx, 3
  163.     rep movsb
  164.     mov eax, ebx
  165.         }
  166. }