190 |
{ |
{ |
191 |
long s1, s2, e, len; |
long s1, s2, e, len; |
192 |
|
|
193 |
SCM_VALIDATE_STRING (1,str1); |
SCM_VALIDATE_STRING (1, str1); |
194 |
SCM_VALIDATE_INUM_COPY (2,start1,s1); |
SCM_VALIDATE_INUM_COPY (2, start1, s1); |
195 |
SCM_VALIDATE_INUM_COPY (3,end1,e); |
SCM_VALIDATE_INUM_COPY (3, end1, e); |
196 |
SCM_VALIDATE_STRING (4,str2); |
SCM_VALIDATE_STRING (4, str2); |
197 |
SCM_VALIDATE_INUM_COPY (5,start2,s2); |
SCM_VALIDATE_INUM_COPY (5, start2, s2); |
198 |
len = e - s1; |
len = e - s1; |
199 |
SCM_ASSERT_RANGE (3,end1,len >= 0); |
SCM_ASSERT_RANGE (3, end1, len >= 0); |
200 |
SCM_ASSERT_RANGE (2,start1,s1 <= SCM_STRING_LENGTH (str1) && s1 >= 0); |
SCM_ASSERT_RANGE (2, start1, s1 <= SCM_STRING_LENGTH (str1) && s1 >= 0); |
201 |
SCM_ASSERT_RANGE (5,start2,s2 <= SCM_STRING_LENGTH (str2) && s2 >= 0); |
SCM_ASSERT_RANGE (5, start2, s2 <= SCM_STRING_LENGTH (str2) && s2 >= 0); |
202 |
SCM_ASSERT_RANGE (3,end1,e <= SCM_STRING_LENGTH (str1) && e >= 0); |
SCM_ASSERT_RANGE (3, end1, e <= SCM_STRING_LENGTH (str1) && e >= 0); |
203 |
SCM_ASSERT_RANGE (5,start2,len+s2 <= SCM_STRING_LENGTH (str2)); |
SCM_ASSERT_RANGE (5, start2, len+s2 <= SCM_STRING_LENGTH (str2)); |
204 |
|
|
205 |
SCM_SYSCALL(memmove((void *)(&(SCM_STRING_CHARS(str2)[s2])), |
SCM_SYSCALL(memmove((void *)(&(SCM_STRING_CHARS(str2)[s2])), |
206 |
(void *)(&(SCM_STRING_CHARS(str1)[s1])), |
(void *)(&(SCM_STRING_CHARS(str1)[s1])), |
226 |
{ |
{ |
227 |
long i, e; |
long i, e; |
228 |
char c; |
char c; |
229 |
SCM_VALIDATE_STRING (1,str); |
SCM_VALIDATE_STRING (1, str); |
230 |
SCM_VALIDATE_INUM_COPY (2,start,i); |
SCM_VALIDATE_INUM_COPY (2, start, i); |
231 |
SCM_VALIDATE_INUM_COPY (3,end,e); |
SCM_VALIDATE_INUM_COPY (3, end, e); |
232 |
SCM_VALIDATE_CHAR_COPY (4,fill,c); |
SCM_VALIDATE_CHAR_COPY (4, fill, c); |
233 |
SCM_ASSERT_RANGE (2,start,i <= SCM_STRING_LENGTH (str) && i >= 0); |
SCM_ASSERT_RANGE (2, start, i <= SCM_STRING_LENGTH (str) && i >= 0); |
234 |
SCM_ASSERT_RANGE (3,end,e <= SCM_STRING_LENGTH (str) && e >= 0); |
SCM_ASSERT_RANGE (3, end, e <= SCM_STRING_LENGTH (str) && e >= 0); |
235 |
while (i<e) SCM_STRING_CHARS (str)[i++] = c; |
while (i<e) SCM_STRING_CHARS (str)[i++] = c; |
236 |
return SCM_UNSPECIFIED; |
return SCM_UNSPECIFIED; |
237 |
} |
} |
249 |
"@end lisp") |
"@end lisp") |
250 |
#define FUNC_NAME s_scm_string_null_p |
#define FUNC_NAME s_scm_string_null_p |
251 |
{ |
{ |
252 |
SCM_VALIDATE_STRING (1,str); |
SCM_VALIDATE_STRING (1, str); |
253 |
return SCM_BOOL (SCM_STRING_LENGTH (str) == 0); |
return SCM_BOOL (SCM_STRING_LENGTH (str) == 0); |
254 |
} |
} |
255 |
#undef FUNC_NAME |
#undef FUNC_NAME |
266 |
long i; |
long i; |
267 |
SCM res = SCM_EOL; |
SCM res = SCM_EOL; |
268 |
unsigned char *src; |
unsigned char *src; |
269 |
SCM_VALIDATE_STRING (1,str); |
SCM_VALIDATE_STRING (1, str); |
270 |
src = SCM_STRING_UCHARS (str); |
src = SCM_STRING_UCHARS (str); |
271 |
for (i = SCM_STRING_LENGTH (str)-1;i >= 0;i--) res = scm_cons (SCM_MAKE_CHAR (src[i]), res); |
for (i = SCM_STRING_LENGTH (str)-1;i >= 0;i--) res = scm_cons (SCM_MAKE_CHAR (src[i]), res); |
272 |
return res; |
return res; |
307 |
{ |
{ |
308 |
register char *dst, c; |
register char *dst, c; |
309 |
register long k; |
register long k; |
310 |
SCM_VALIDATE_STRING_COPY (1,str,dst); |
SCM_VALIDATE_STRING_COPY (1, str, dst); |
311 |
SCM_VALIDATE_CHAR_COPY (2,chr,c); |
SCM_VALIDATE_CHAR_COPY (2, chr, c); |
312 |
for (k = SCM_STRING_LENGTH (str)-1;k >= 0;k--) dst[k] = c; |
for (k = SCM_STRING_LENGTH (str)-1;k >= 0;k--) dst[k] = c; |
313 |
return SCM_UNSPECIFIED; |
return SCM_UNSPECIFIED; |
314 |
} |
} |