Mercurial > urweb
comparison src/c/urweb.c @ 1388:3913cbfd72e9
String processing optimizations
author | Adam Chlipala <adam@chlipala.net> |
---|---|
date | Tue, 11 Jan 2011 14:03:54 -0500 |
parents | 64724ef86149 |
children | 9a721f0722d3 |
comparison
equal
deleted
inserted
replaced
1387:dd99e1702432 | 1388:3913cbfd72e9 |
---|---|
2131 | 2131 |
2132 return uw_unit_v; | 2132 return uw_unit_v; |
2133 } | 2133 } |
2134 | 2134 |
2135 uw_Basis_char uw_Basis_strsub(uw_context ctx, uw_Basis_string s, uw_Basis_int n) { | 2135 uw_Basis_char uw_Basis_strsub(uw_context ctx, uw_Basis_string s, uw_Basis_int n) { |
2136 if (n >= 0 && n < strlen(s)) | 2136 while (n >= 0) { |
2137 return s[n]; | 2137 if (*s == 0) |
2138 else | 2138 uw_error(ctx, FATAL, "Out-of-bounds strsub"); |
2139 uw_error(ctx, FATAL, "Out-of-bounds strsub"); | 2139 |
2140 if (n == 0) | |
2141 return *s; | |
2142 | |
2143 --n; | |
2144 ++s; | |
2145 } | |
2146 | |
2147 uw_error(ctx, FATAL, "Negative strsub bound"); | |
2140 } | 2148 } |
2141 | 2149 |
2142 uw_Basis_string uw_Basis_strsuffix(uw_context ctx, uw_Basis_string s, uw_Basis_int n) { | 2150 uw_Basis_string uw_Basis_strsuffix(uw_context ctx, uw_Basis_string s, uw_Basis_int n) { |
2143 if (n >= 0 && n < strlen(s)) | 2151 while (n >= 0) { |
2144 return &s[n]; | 2152 if (*s == 0 || n == 0) |
2145 else | 2153 return s; |
2146 uw_error(ctx, FATAL, "Out-of-bounds strsuffix"); | 2154 |
2155 --n; | |
2156 ++s; | |
2157 } | |
2158 | |
2159 uw_error(ctx, FATAL, "Negative strsuffix bound"); | |
2147 } | 2160 } |
2148 | 2161 |
2149 uw_Basis_int uw_Basis_strlen(uw_context ctx, uw_Basis_string s) { | 2162 uw_Basis_int uw_Basis_strlen(uw_context ctx, uw_Basis_string s) { |
2150 return strlen(s); | 2163 return strlen(s); |
2164 } | |
2165 | |
2166 uw_Basis_bool uw_Basis_strlenGe(uw_context ctx, uw_Basis_string s, uw_Basis_int n) { | |
2167 while (n > 0) { | |
2168 if (*s == 0) | |
2169 return uw_Basis_False; | |
2170 | |
2171 --n; | |
2172 ++s; | |
2173 } | |
2174 | |
2175 return uw_Basis_True; | |
2151 } | 2176 } |
2152 | 2177 |
2153 uw_Basis_string uw_Basis_strchr(uw_context ctx, uw_Basis_string s, uw_Basis_char ch) { | 2178 uw_Basis_string uw_Basis_strchr(uw_context ctx, uw_Basis_string s, uw_Basis_char ch) { |
2154 return strchr(s, ch); | 2179 return strchr(s, ch); |
2155 } | 2180 } |