Subversion Repositories Kolibri OS

Rev

Rev 3045 | 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.    return color;
  83. }
  84.  
  85. inline fastcall signed char strcmp(ESI, EDI)
  86. {
  87.         loop()
  88.         {
  89.                 IF (DSBYTE[ESI]<DSBYTE[EDI]) RETURN -1;
  90.                 IF (DSBYTE[ESI]>DSBYTE[EDI]) RETURN 1;
  91.                 IF (DSBYTE[ESI]=='\0') RETURN 0;
  92.                 ESI++;
  93.                 EDI++;
  94.         }
  95. }
  96.  
  97.  
  98.  
  99. inline fastcall signed int strchr(ESI,BL)
  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. }