/* srfi-13.c --- SRFI-13 procedures for Guile
*
- * Copyright (C) 2001 Free Software Foundation, Inc.
+ * Copyright (C) 2001 Free Software Foundation, Inc.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
cstr += cstart;
while (cstart < cend)
{
- res = scm_apply (pred, SCM_MAKE_CHAR (*cstr), scm_listofnull);
+ res = scm_call_1 (pred, SCM_MAKE_CHAR (*cstr));
if (!SCM_FALSEP (res))
return res;
cstr++;
cstr += cstart;
while (cstart < cend)
{
- res = scm_apply (pred, SCM_MAKE_CHAR (*cstr), scm_listofnull);
+ res = scm_call_1 (pred, SCM_MAKE_CHAR (*cstr));
if (SCM_FALSEP (res))
return res;
cstr++;
i = 0;
while (i < clen)
{
- ch = scm_apply (proc, SCM_MAKINUM (i), scm_listofnull);
+ ch = scm_call_1 (proc, SCM_MAKINUM (i));
if (!SCM_CHARP (ch))
- SCM_MISC_ERROR ("procedure ~S returned non-char", SCM_LIST1 (proc));
+ SCM_MISC_ERROR ("procedure ~S returned non-char", scm_list_1 (proc));
*p++ = SCM_CHAR (ch);
i++;
}
{
unsigned char *data = SCM_STRING_UCHARS (result) + i;
- while (SCM_NNULLP (chrs))
+ while (!SCM_NULLP (chrs))
{
SCM elt = SCM_CAR (chrs);
SCM_VALIDATE_SUBSTRING_SPEC_COPY (1, str, cstr,
2, start, cstart,
3, end, cend);
- return scm_makfromstr (cstr + cstart, cend - cstart, 0);
+ return scm_mem2string (cstr + cstart, cend - cstart);
}
#undef FUNC_NAME
SCM_VALIDATE_INUM_COPY (2, n, cn);
SCM_ASSERT_RANGE (2, n, cn >= 0 && cn <= SCM_STRING_LENGTH (s));
- return scm_makfromstr (cstr, cn, 0);
+ return scm_mem2string (cstr, cn);
}
#undef FUNC_NAME
SCM_VALIDATE_INUM_COPY (2, n, cn);
SCM_ASSERT_RANGE (2, n, cn >= 0 && cn <= SCM_STRING_LENGTH (s));
- return scm_makfromstr (cstr + cn, SCM_STRING_LENGTH (s) - cn, 0);
+ return scm_mem2string (cstr + cn, SCM_STRING_LENGTH (s) - cn);
}
#undef FUNC_NAME
SCM_VALIDATE_INUM_COPY (2, n, cn);
SCM_ASSERT_RANGE (2, n, cn >= 0 && cn <= SCM_STRING_LENGTH (s));
- return scm_makfromstr (cstr + SCM_STRING_LENGTH (s) - cn, cn, 0);
+ return scm_mem2string (cstr + SCM_STRING_LENGTH (s) - cn, cn);
}
#undef FUNC_NAME
SCM_VALIDATE_INUM_COPY (2, n, cn);
SCM_ASSERT_RANGE (2, n, cn >= 0 && cn <= SCM_STRING_LENGTH (s));
- return scm_makfromstr (cstr, SCM_STRING_LENGTH (s) - cn, 0);
+ return scm_mem2string (cstr, SCM_STRING_LENGTH (s) - cn);
}
#undef FUNC_NAME
{
SCM res;
- res = scm_apply (char_pred, SCM_MAKE_CHAR (cstr[cstart]),
- scm_listofnull);
+ res = scm_call_1 (char_pred, SCM_MAKE_CHAR (cstr[cstart]));
if (SCM_FALSEP (res))
break;
cstart++;
}
}
- return scm_makfromstr (cstr + cstart, cend - cstart, 0);
+ return scm_mem2string (cstr + cstart, cend - cstart);
}
#undef FUNC_NAME
{
SCM res;
- res = scm_apply (char_pred, SCM_MAKE_CHAR (cstr[cend - 1]),
- scm_listofnull);
+ res = scm_call_1 (char_pred, SCM_MAKE_CHAR (cstr[cend - 1]));
if (SCM_FALSEP (res))
break;
cend--;
}
}
- return scm_makfromstr (cstr + cstart, cend - cstart, 0);
+ return scm_mem2string (cstr + cstart, cend - cstart);
}
#undef FUNC_NAME
{
SCM res;
- res = scm_apply (char_pred, SCM_MAKE_CHAR (cstr[cstart]),
- scm_listofnull);
+ res = scm_call_1 (char_pred, SCM_MAKE_CHAR (cstr[cstart]));
if (SCM_FALSEP (res))
break;
cstart++;
{
SCM res;
- res = scm_apply (char_pred, SCM_MAKE_CHAR (cstr[cend - 1]),
- scm_listofnull);
+ res = scm_call_1 (char_pred, SCM_MAKE_CHAR (cstr[cend - 1]));
if (SCM_FALSEP (res))
break;
cend--;
}
}
- return scm_makfromstr (cstr + cstart, cend - cstart, 0);
+ return scm_mem2string (cstr + cstart, cend - cstart);
}
#undef FUNC_NAME
while (cstart1 < cend1 && cstart2 < cend2)
{
if (cstr1[cstart1] < cstr2[cstart2])
- return scm_apply (proc_lt, SCM_MAKINUM (cstart1), scm_listofnull);
+ return scm_call_1 (proc_lt, SCM_MAKINUM (cstart1));
else if (cstr1[cstart1] > cstr2[cstart2])
- return scm_apply (proc_gt, SCM_MAKINUM (cstart1), scm_listofnull);
+ return scm_call_1 (proc_gt, SCM_MAKINUM (cstart1));
cstart1++;
cstart2++;
}
if (cstart1 < cend1)
- return scm_apply (proc_gt, SCM_MAKINUM (cstart1), scm_listofnull);
+ return scm_call_1 (proc_gt, SCM_MAKINUM (cstart1));
else if (cstart2 < cend2)
- return scm_apply (proc_lt, SCM_MAKINUM (cstart1), scm_listofnull);
+ return scm_call_1 (proc_lt, SCM_MAKINUM (cstart1));
else
- return scm_apply (proc_eq, SCM_MAKINUM (cstart1), scm_listofnull);
+ return scm_call_1 (proc_eq, SCM_MAKINUM (cstart1));
}
#undef FUNC_NAME
while (cstart1 < cend1 && cstart2 < cend2)
{
if (scm_downcase (cstr1[cstart1]) < scm_downcase (cstr2[cstart2]))
- return scm_apply (proc_lt, SCM_MAKINUM (cstart1), scm_listofnull);
+ return scm_call_1 (proc_lt, SCM_MAKINUM (cstart1));
else if (scm_downcase (cstr1[cstart1]) > scm_downcase (cstr2[cstart2]))
- return scm_apply (proc_gt, SCM_MAKINUM (cstart1), scm_listofnull);
+ return scm_call_1 (proc_gt, SCM_MAKINUM (cstart1));
cstart1++;
cstart2++;
}
if (cstart1 < cend1)
- return scm_apply (proc_gt, SCM_MAKINUM (cstart1), scm_listofnull);
+ return scm_call_1 (proc_gt, SCM_MAKINUM (cstart1));
else if (cstart2 < cend2)
- return scm_apply (proc_lt, SCM_MAKINUM (cstart1), scm_listofnull);
+ return scm_call_1 (proc_lt, SCM_MAKINUM (cstart1));
else
- return scm_apply (proc_eq, SCM_MAKINUM (cstart1), scm_listofnull);
+ return scm_call_1 (proc_eq, SCM_MAKINUM (cstart1));
}
#undef FUNC_NAME
while (cstart < cend)
{
SCM res;
- res = scm_apply (char_pred, SCM_MAKE_CHAR (cstr[cstart]),
- scm_listofnull);
+ res = scm_call_1 (char_pred, SCM_MAKE_CHAR (cstr[cstart]));
if (!SCM_FALSEP (res))
return SCM_MAKINUM (cstart);
cstart++;
{
SCM res;
cend--;
- res = scm_apply (char_pred, SCM_MAKE_CHAR (cstr[cend]),
- scm_listofnull);
+ res = scm_call_1 (char_pred, SCM_MAKE_CHAR (cstr[cend]));
if (!SCM_FALSEP (res))
return SCM_MAKINUM (cend);
}
while (cstart < cend)
{
SCM res;
- res = scm_apply (char_pred, SCM_MAKE_CHAR (cstr[cstart]),
- scm_listofnull);
+ res = scm_call_1 (char_pred, SCM_MAKE_CHAR (cstr[cstart]));
if (SCM_FALSEP (res))
return SCM_MAKINUM (cstart);
cstart++;
{
SCM res;
cend--;
- res = scm_apply (char_pred, SCM_MAKE_CHAR (cstr[cend]),
- scm_listofnull);
+ res = scm_call_1 (char_pred, SCM_MAKE_CHAR (cstr[cend]));
if (SCM_FALSEP (res))
return SCM_MAKINUM (cend);
}
while (cstart < cend)
{
SCM res;
- res = scm_apply (char_pred, SCM_MAKE_CHAR (cstr[cstart]),
- scm_listofnull);
+ res = scm_call_1 (char_pred, SCM_MAKE_CHAR (cstr[cstart]));
if (!SCM_FALSEP (res))
count++;
cstart++;
sz = SCM_STRING_CHARS (str);
for(i = start; i < end; i++)
{
- if(SCM_NFALSEP(scm_char_alphabetic_p(SCM_MAKE_CHAR(sz[i]))))
+ if (!SCM_FALSEP (scm_char_alphabetic_p (SCM_MAKE_CHAR (sz[i]))))
{
if (!in_word)
{
p = SCM_STRING_CHARS (result);
while (cstart < cend)
{
- SCM ch = scm_apply (proc, SCM_MAKE_CHAR (cstr[cstart]),
- scm_listofnull);
+ SCM ch = scm_call_1 (proc, SCM_MAKE_CHAR (cstr[cstart]));
if (!SCM_CHARP (ch))
- SCM_MISC_ERROR ("procedure ~S returned non-char", SCM_LIST1 (proc));
+ SCM_MISC_ERROR ("procedure ~S returned non-char", scm_list_1 (proc));
cstart++;
*p++ = SCM_CHAR (ch);
}
p = SCM_STRING_CHARS (s) + cstart;
while (cstart < cend)
{
- SCM ch = scm_apply (proc, SCM_MAKE_CHAR (cstr[cstart]),
- scm_listofnull);
+ SCM ch = scm_call_1 (proc, SCM_MAKE_CHAR (cstr[cstart]));
if (!SCM_CHARP (ch))
- SCM_MISC_ERROR ("procedure ~S returned non-char", SCM_LIST1 (proc));
+ SCM_MISC_ERROR ("procedure ~S returned non-char", scm_list_1 (proc));
cstart++;
*p++ = SCM_CHAR (ch);
}
result = knil;
while (cstart < cend)
{
- result = scm_apply (kons, SCM_LIST2 (SCM_MAKE_CHAR (cstr[cstart]),
- result), SCM_EOL);
+ result = scm_call_2 (kons, SCM_MAKE_CHAR (cstr[cstart]), result);
cstart++;
}
return result;
result = knil;
while (cstart < cend)
{
- result = scm_apply (kons, SCM_LIST2 (SCM_MAKE_CHAR (cstr[cend - 1]),
- result), SCM_EOL);
+ result = scm_call_2 (kons, SCM_MAKE_CHAR (cstr[cend - 1]), result);
cend--;
}
return result;
if (!SCM_UNBNDP (make_final))
SCM_VALIDATE_PROC (6, make_final);
- res = scm_apply (p, seed, scm_listofnull);
+ res = scm_call_1 (p, seed);
while (SCM_FALSEP (res))
{
SCM str;
- SCM ch = scm_apply (f, seed, scm_listofnull);
+ SCM ch = scm_call_1 (f, seed);
if (!SCM_CHARP (ch))
- SCM_MISC_ERROR ("procedure ~S returned non-char", SCM_LIST1 (f));
+ SCM_MISC_ERROR ("procedure ~S returned non-char", scm_list_1 (f));
str = scm_allocate_string (1);
*SCM_STRING_CHARS (str) = SCM_CHAR (ch);
- ans = scm_string_append (SCM_LIST2 (ans, str));
- seed = scm_apply (g, seed, scm_listofnull);
- res = scm_apply (p, seed, scm_listofnull);
+ ans = scm_string_append (scm_list_2 (ans, str));
+ seed = scm_call_1 (g, seed);
+ res = scm_call_1 (p, seed);
}
if (!SCM_UNBNDP (make_final))
{
- res = scm_apply (make_final, seed, scm_listofnull);
- return scm_string_append (SCM_LIST2 (ans, res));
+ res = scm_call_1 (make_final, seed);
+ return scm_string_append (scm_list_2 (ans, res));
}
else
return ans;
if (!SCM_UNBNDP (make_final))
SCM_VALIDATE_PROC (6, make_final);
- res = scm_apply (p, seed, scm_listofnull);
+ res = scm_call_1 (p, seed);
while (SCM_FALSEP (res))
{
SCM str;
- SCM ch = scm_apply (f, seed, scm_listofnull);
+ SCM ch = scm_call_1 (f, seed);
if (!SCM_CHARP (ch))
- SCM_MISC_ERROR ("procedure ~S returned non-char", SCM_LIST1 (f));
+ SCM_MISC_ERROR ("procedure ~S returned non-char", scm_list_1 (f));
str = scm_allocate_string (1);
*SCM_STRING_CHARS (str) = SCM_CHAR (ch);
- ans = scm_string_append (SCM_LIST2 (str, ans));
- seed = scm_apply (g, seed, scm_listofnull);
- res = scm_apply (p, seed, scm_listofnull);
+ ans = scm_string_append (scm_list_2 (str, ans));
+ seed = scm_call_1 (g, seed);
+ res = scm_call_1 (p, seed);
}
if (!SCM_UNBNDP (make_final))
{
- res = scm_apply (make_final, seed, scm_listofnull);
- return scm_string_append (SCM_LIST2 (res, ans));
+ res = scm_call_1 (make_final, seed);
+ return scm_string_append (scm_list_2 (res, ans));
}
else
return ans;
SCM_VALIDATE_PROC (2, proc);
while (cstart < cend)
{
- scm_apply (proc, SCM_MAKE_CHAR (cstr[cstart]), scm_listofnull);
+ scm_call_1 (proc, SCM_MAKE_CHAR (cstr[cstart]));
cstart++;
}
return SCM_UNSPECIFIED;
break;
cend--;
}
- result = scm_cons (scm_makfromstr (cstr + cend, idx - cend,
- 0), result);
+ result = scm_cons (scm_mem2string (cstr + cend, idx - cend), result);
}
}
else if (SCM_CHARSETP (token_char))
break;
cend--;
}
- result = scm_cons (scm_makfromstr (cstr + cend, idx - cend,
- 0), result);
+ result = scm_cons (scm_mem2string (cstr + cend, idx - cend), result);
}
}
else
break;
cend--;
}
- result = scm_cons (scm_makfromstr (cstr + cend, idx - cend,
- 0), result);
+ result = scm_cons (scm_mem2string (cstr + cend, idx - cend), result);
}
}
return result;
while (idx < cend)
{
SCM res;
- res = scm_apply (char_pred, SCM_MAKE_CHAR (cstr[idx]),
- scm_listofnull);
+ res = scm_call_1 (char_pred, SCM_MAKE_CHAR (cstr[idx]));
if (!SCM_FALSEP (res))
ls = scm_cons (SCM_MAKE_CHAR (cstr[idx]), ls);
idx++;
idx = cstart;
while (idx < cend)
{
- if (SCM_CHARSET_GET (char_pred, cstr[idx]))
+ if (!SCM_CHARSET_GET (char_pred, cstr[idx]))
ls = scm_cons (SCM_MAKE_CHAR (cstr[idx]), ls);
idx++;
}
while (idx < cend)
{
SCM res;
- res = scm_apply (char_pred, SCM_MAKE_CHAR (cstr[idx]),
- scm_listofnull);
+ res = scm_call_1 (char_pred, SCM_MAKE_CHAR (cstr[idx]));
if (SCM_FALSEP (res))
ls = scm_cons (SCM_MAKE_CHAR (cstr[idx]), ls);
idx++;
#undef FUNC_NAME
+/* Initialize the SRFI-13 module. This function will be called by the
+ loading Scheme module. */
void
scm_init_srfi_13 (void)
{
+ /* We initialize the SRFI-14 module here, because the string
+ primitives need the charset smob type created by that module. */
+ scm_c_init_srfi_14 ();
+
+ /* Install the string primitives. */
#ifndef SCM_MAGIC_SNARFER
#include "srfi/srfi-13.x"
#endif
}
-
-void
-scm_init_srfi_13_14 (void)
-{
- static int initialized = 0;
-
- if (!initialized)
- {
- SCM srfi_13_module = scm_make_module (scm_read_0str ("(srfi srfi-13)"));
- SCM srfi_14_module = scm_make_module (scm_read_0str ("(srfi srfi-14)"));
- SCM old_module;
-
- initialized = 1;
-
- old_module = scm_set_current_module (srfi_13_module);
- scm_init_srfi_13 ();
- scm_set_current_module (srfi_14_module);
- scm_init_srfi_14 ();
-
- scm_set_current_module (old_module);
- }
-}
+/* End of srfi-13.c. */