/[guile]/guile/guile-core/libguile/strop.c
ViewVC logotype

Diff of /guile/guile-core/libguile/strop.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.69 by ttn, Thu Mar 14 03:47:43 2002 UTC revision 1.70 by xxhanwen, Sat Jul 20 14:08:34 2002 UTC
# Line 190  SCM_DEFINE (scm_substring_move_x, "subst Line 190  SCM_DEFINE (scm_substring_move_x, "subst
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])),
# Line 226  SCM_DEFINE (scm_substring_fill_x, "subst Line 226  SCM_DEFINE (scm_substring_fill_x, "subst
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  }  }
# Line 249  SCM_DEFINE (scm_string_null_p, "string-n Line 249  SCM_DEFINE (scm_string_null_p, "string-n
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
# Line 266  SCM_DEFINE (scm_string_to_list, "string- Line 266  SCM_DEFINE (scm_string_to_list, "string-
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;
# Line 307  SCM_DEFINE (scm_string_fill_x, "string-f Line 307  SCM_DEFINE (scm_string_fill_x, "string-f
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  }  }

Legend:
Removed from v.1.69  
changed lines
  Added in v.1.70

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26