?login_element?

Subversion Repositories NedoOS

Rev

Rev 92 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. #include "../_sdk/str.h"
  2.  
  3. /*FUNC UINT strlen(PCHAR s)
  4. {
  5. VAR UINT len = 0;
  6.   WHILE (s[len] != 0x00) {
  7.     INC len;
  8.   };
  9.   RETURN len;
  10. } */
  11.  
  12. FUNC UINT strjoin(PCHAR to, UINT tolen, PCHAR s2) //len without terminator!
  13. { //to = to + s2;
  14. VAR UINT len;
  15. VAR CHAR c;
  16.   to = &to[tolen/**+_FIRST*/];
  17.   len = tolen; //len without terminator!
  18.   loop: //REPEAT {
  19.     c = *(PCHAR)s2;
  20.     IF ((c == '\0') || (len>=_STRMAX)) goto endloop; //BREAK; //ЄхЁьшэрЄюЁ эх ъюяшЁєхЄё 
  21.     POKE *(PCHAR)(to) = c;
  22.     INC s2;
  23.     INC to;
  24.     INC len;
  25.   goto loop; //}UNTIL ( (c=='\0') || (len>=_STRMAX) ); //ЄхЁьшэрЄюЁ эх ъюяшЁєхЄё 
  26.   endloop:
  27.   RETURN len; //len without terminator!
  28. }
  29.  
  30. FUNC UINT strjoineol(PCHAR to, UINT tolen, PCHAR s2, CHAR eol) //len without terminator!
  31. { //to = to + s2;
  32. VAR UINT len;
  33. VAR CHAR c;
  34.   to = &to[tolen/**+_FIRST*/];
  35.   len = tolen; //len without terminator!
  36.   loop: //REPEAT {
  37.     c = *(PCHAR)s2;
  38.     IF ((c == eol) || (len>=_STRMAX)) goto endloop; //BREAK; //ЄхЁьшэрЄюЁ эх ъюяшЁєхЄё 
  39.     POKE *(PCHAR)(to) = c;
  40.     INC s2;
  41.     INC to;
  42.     INC len;
  43.   goto loop; //}UNTIL ( (c==eol) || (len>=_STRMAX) ); //ЄхЁьшэрЄюЁ эх ъюяшЁєхЄё 
  44.   endloop:
  45.   RETURN len; //len without terminator!
  46. }
  47.  
  48. FUNC UINT strcopy(PCHAR from, UINT len, PCHAR to) //фышэр схч ЄхЁьшэрЄюЁр!
  49. {
  50. VAR UINT i = len+1;
  51. VAR CHAR c;
  52.   REPEAT {
  53.     c = *(PCHAR)from;
  54.     POKE *(PCHAR)(to) = c;
  55.     INC from;
  56.     INC to;
  57.     DEC i;
  58.   }UNTIL (i==0); //(c=='\0'); //ЄхЁьшэрЄюЁ ъюяшЁєхЄё 
  59.   RETURN len; //фышэр схч ЄхЁьшэрЄюЁр!
  60. }
  61.  
  62. PROC memcopy(PBYTE from, UINT len, PBYTE to)
  63. {
  64. VAR CHAR c;
  65.   REPEAT {
  66.     c = *(PCHAR)from;
  67.     POKE *(PCHAR)(to) = c;
  68.     INC from;
  69.     INC to;
  70.     DEC len;
  71.   }UNTIL (len==0);
  72. }
  73.  
  74. PROC memcopyback(PBYTE from, UINT len, PBYTE to)
  75. {
  76. VAR CHAR c;
  77.   REPEAT {
  78.     c = *(PCHAR)from;
  79.     POKE *(PCHAR)(to) = c;
  80.     DEC from;
  81.     DEC to;
  82.     DEC len;
  83.   }UNTIL (len==0);
  84. }
  85.  
  86. FUNC BOOL strcp(PCHAR s1, PCHAR s2)
  87. {
  88. VAR UINT i;
  89. VAR CHAR c1;
  90. VAR BOOL ok;
  91.   i = 0;
  92.   ok = +TRUE; //яю єьюыўрэш■ ёЄЁюъш Ёртэ√
  93.   REPEAT { //яЁютхЁ хь тёх ёшьтюы√ яхЁтющ ёЄЁюъш, ъЁюьх ЄхЁьшэрЄюЁр
  94.     //IF (s1[i] != s2[i]) { //тЄюЁр  ёЄЁюър Ёрэю ъюэўшырё№ шыш ёшьтюы эх ёютяры
  95.     //  result = +FALSE;
  96.     //  BREAK;
  97.     //};
  98.     c1 = s1[i];
  99.     IF (c1 != s2[i]) {ok = +FALSE; BREAK; }; //ёшьтюы эх ёютяры шыш юфэр шч ёЄЁюъ ъюэўшырё№
  100.     //IF (c1 == '\0') BREAK; //юсх ёЄЁюъш ъюэўшышё№
  101.     INC i;
  102.   }UNTIL (c1 == '\0'); //юсх ёЄЁюъш ъюэўшышё№
  103.   //IF (s2[i] != '\0') result = +FALSE; //тЄюЁр  ёЄЁюър эх ъюэўшырё№
  104.   RETURN ok;
  105. }
  106.  
  107. /**
  108. FUNC UINT strclear(PCHAR s)
  109. { //s = "";
  110.   //s[_FIRST]='\0'; //ЄхЁьшэрЄюЁ (эх эєцхэ - шёяюы№чєхь яюЄюь strclose)
  111.   RETURN 0; //фышэр схч ЄхЁьшэрЄюЁр!
  112. }
  113. */
  114. FUNC UINT stradd(PCHAR s, UINT len, CHAR c) //len without terminator!
  115. { //s = s + c;
  116.   IF (len < _STRMAX) {
  117.     //POKE *(PCHAR)(+(POINTER)(s) + +(POINTER)(len) + +(POINTER)(_FIRST)) = c;
  118.     s[len/**+_FIRST*/] = c;
  119.     INC len;
  120.     //s[len/**+_FIRST*/]='\0'; //ЄхЁьшэрЄюЁ (эх эєцхэ - шёяюы№чєхь яюЄюь strclose)
  121.   };
  122.   RETURN len;
  123. }
  124.  
  125. //PROC strclose(PCHAR s, UINT len) //т√ч√трЄ№ яюёых strclear шыш уЁєяя√ stradd
  126. //{
  127. //  s[len/**+_FIRST*/] = '\0'; //ЄхЁьшэрЄюЁ
  128. //}
  129.  
  130. //FUNC UINT strcopy(PCHAR from, UINT len, PCHAR to) //len without terminator!
  131. //{
  132. //  RETURN strjoin(to, 0/**strclear(to)*/, from); //tolen;
  133. //}
  134.  
  135. /**
  136. PROC stringdecapitalize(PCHAR s1, UINT s1len)
  137. {
  138. VAR UINT i;
  139. VAR CHAR c;
  140.   i = _FIRST;
  141.   WHILE (+TRUE) {
  142.     c = s1[i];
  143.     IF (c == '\0') BREAK;
  144.     IF ((c>='A') && (c<='Z')) {
  145.       //POKE *(PCHAR)(+(POINTER)(s1) + +(POINTER)(i)) = c | +(CHAR)0x20;
  146.       s1[i] = +(CHAR)(c | +(CHAR)0x20);
  147.     };
  148.     i = +(UINT)(i + 1);
  149.   };
  150. }
  151. */
  152.  
  153. FUNC BOOL strcplow(PCHAR s1, PCHAR s2)
  154. {
  155. VAR UINT i;
  156. VAR CHAR c1;
  157. VAR CHAR c2;
  158. VAR BOOL ok;
  159.   i = 0;
  160.   ok = +TRUE; //яю єьюыўрэш■ ёЄЁюъш Ёртэ√
  161.   REPEAT { //яЁютхЁ хь тёх ёшьтюы√ яхЁтющ ёЄЁюъш, ъЁюьх ЄхЁьшэрЄюЁр
  162.     c1 = s1[i/**+_FIRST*/];
  163.     c2 = s2[i/**+_FIRST*/];
  164.     IF ((+(BYTE)c1>=+(BYTE)'A') && (+(BYTE)c1<=+(BYTE)'Z')) c1 = +(CHAR)(+(BYTE)c1 | 0x20);
  165.     IF ((+(BYTE)c2>=+(BYTE)'A') && (+(BYTE)c2<=+(BYTE)'Z')) c2 = +(CHAR)(+(BYTE)c2 | 0x20);
  166.     IF (c1 != c2) {ok = +FALSE; BREAK; }; //ёшьтюы эх ёютяры шыш юфэр шч ёЄЁюъ ъюэўшырё№
  167.     //IF (c1 == '\0') BREAK; //юсх ёЄЁюъш ъюэўшышё№
  168.     //IF (c2 == '\0') {result = +FALSE; BREAK; }; //тЄюЁр  ёЄЁюър Ёрэю ъюэўшырё№
  169.     INC i;
  170.   }UNTIL (c1 == '\0'); //юсх ёЄЁюъш ъюэўшышё№
  171.   //IF (s2[i/**+_FIRST*/] != '\0') result = +FALSE; //тЄюЁр  ёЄЁюър эх ъюэўшырё№
  172.   RETURN ok;
  173. }
  174.  
  175. FUNC UINT hash(PBYTE pstr)
  176. {
  177. VAR UINT hash;
  178. VAR BYTE c;
  179.   hash = 0x0000;
  180.   c = 0x00;
  181.   REPEAT {
  182.     c = c^(+(BYTE)hash);
  183.     hash = hash + hash;
  184.     c = c+(+(BYTE)hash);
  185.     hash = (hash&0xff00) + +(UINT)c;
  186.     c = *(PBYTE)(pstr); //ьхЄър т ёЄЁюъх чрърэўштрхЄё  0x00
  187.     INC pstr;
  188.   }UNTIL (c == 0x00);
  189.   RETURN hash;
  190. };
  191.