Cyclone Scheme  0.5

◆ Cyc_string_append_va_list

#define Cyc_string_append_va_list (   data,
  argc 
)
Value:
{ \
int i = 0, total_len = 1; \
int *len = alloca(sizeof(int) * argc); \
char *buffer, *bufferp, **str = alloca(sizeof(char *) * argc); \
object tmp; \
if (argc > 0) { \
Cyc_check_str(data, str1); \
str[i] = ((string_type *)str1)->str; \
len[i] = string_len((str1)); \
total_len += len[i]; \
} \
for (i = 1; i < argc; i++) { \
tmp = va_arg(ap, object); \
Cyc_check_str(data, tmp); \
str[i] = ((string_type *)tmp)->str; \
len[i] = string_len((tmp)); \
total_len += len[i]; \
} \
buffer = bufferp = alloca(sizeof(char) * total_len); \
for (i = 0; i < argc; i++) { \
memcpy(bufferp, str[i], len[i]); \
bufferp += len[i]; \
} \
*bufferp = '\0'; \
make_string(result, buffer); \
va_end(ap); \
_return_closcall1(data, cont, &result); \
}
The string type.
Definition: types.h:708
#define string_len(x)
Definition: types.h:748