1implement Libc; 2 3include "libc.m"; 4 5islx(c: int): int 6{ 7 return c >= 'a' && c <= 'f'; 8} 9 10isux(c: int): int 11{ 12 return c >= 'A' && c <= 'F'; 13} 14 15isalnum(c: int): int 16{ 17 return isalpha(c) || isdigit(c); 18} 19 20isalpha(c: int): int 21{ 22 return islower(c) || isupper(c); 23} 24 25isascii(c: int): int 26{ 27 return (c&~16r7f) == 0; 28} 29 30iscntrl(c: int): int 31{ 32 return c == 16r7f || (c&~16r1f) == 0; 33} 34 35isdigit(c: int): int 36{ 37 return c >= '0' && c <= '9'; 38} 39 40isgraph(c: int): int 41{ 42 return c >= '!' && c <= '~'; 43} 44 45islower(c: int): int 46{ 47 return c >= 'a' && c <= 'z'; 48} 49 50isprint(c: int): int 51{ 52 return c >= ' ' && c <= '~'; 53} 54 55ispunct(c: int): int 56{ 57 return isascii(c) && !iscntrl(c) && !isspace(c) && !isalnum(c); 58} 59 60isspace(c: int): int 61{ 62 return c == ' ' || c == '\t' || c == '\n' || c == '\r' || c == '\f' || c == '\v'; 63} 64 65isupper(c: int): int 66{ 67 return c >= 'A' && c <= 'Z'; 68} 69 70isxdigit(c: int): int 71{ 72 return isdigit(c) || islx(c) || isux(c); 73} 74 75tolower(c: int): int 76{ 77 if(isupper(c)) 78 return c+'a'-'A'; 79 return c; 80} 81 82toupper(c: int): int 83{ 84 if(islower(c)) 85 return c+'A'-'a'; 86 return c; 87} 88 89toascii(c: int): int 90{ 91 return c&16r7f; 92} 93 94strchr(s: string, n: int): int 95{ 96 l := len s; 97 for(i := 0; i < l; i++) 98 if(s[i] == n) 99 return i; 100 return -1; 101} 102 103strrchr(s: string, n: int): int 104{ 105 l := len s; 106 for(i := l-1; i >= 0; i--) 107 if(s[i] == n) 108 return i; 109 return -1; 110} 111 112strncmp(s1: string, s2: string, n: int): int 113{ 114 l1 := len s1; 115 l2 := len s2; 116 m := n; 117 if(m > l1) 118 m = l1; 119 if(m > l2) 120 m = l2; 121 for(i := 0; i < m; i++) 122 if(s1[i] != s2[i]) 123 return s1[i]-s2[i]; 124 if(i == n) 125 return 0; 126 return l1-l2; 127} 128 129abs(n: int): int 130{ 131 if(n < 0) 132 return -n; 133 return n; 134} 135 136min(m: int, n: int): int 137{ 138 if(m < n) 139 return m; 140 return n; 141} 142 143max(m: int, n: int): int 144{ 145 if(m > n) 146 return m; 147 return n; 148} 149