Exemple #1
0
static void primop_make_string(long argc) {
	object s, o = sp[0];
	long size = the_long(1,o);
	if (size < 0 || size > MAX_STRING_SIZE)
		error(sp[0],"too big of a size for a string");
	s = make_string_of_size(size,argc!=2);
	if (argc == 2) {
		char *p = STRING_VALUE(s), fill;
		TYPE_CHECK(CHARACTER_P(sp[1]),1,"character",sp[1]);
		fill = CHARACTER_VALUE(sp[1]);
		while (size--)
			*p++ = fill;
		*p = '\0';
	}
	sp += argc;
	*--sp = s;
}
Exemple #2
0
static void primop_list_to_string(long argc) {
	object l = sp[0];
	long i, max = 0;
	object s;
	char *p;
	while (PAIR_P(l)) {
		object c = CAR(l);
		if (!CHARACTER_P(c))
			error(sp[0],"list contains a non-character");
		max++;
		l = CDR(l);
	}
	if (!NULL_P(l))
		error(sp[0],"not a proper list");
	s = make_string_of_size(max,0);
	p = STRING_VALUE(s);
	l = sp[0];
	for (i=0; i<max; i++) {
		*p++ = CHARACTER_VALUE(CAR(l));
		l = CDR(l);
	}
	*p = '\0';
	*sp = s;
}
Exemple #3
0
    if (! (CHAR_TO_ASCII_P (object)))
      error_bad_range_arg (n);
    return (CHAR_TO_ASCII (object));
  }
}

long
arg_ascii_integer (int n)
{
  return (arg_index_integer (n, MAX_ASCII));
}

DEFINE_PRIMITIVE ("CHAR?", Prim_char_p, 1, 1, 0)
{
  PRIMITIVE_HEADER (1);
  PRIMITIVE_RETURN (BOOLEAN_TO_OBJECT (CHARACTER_P (ARG_REF (1))));
}

DEFINE_PRIMITIVE ("MAKE-CHAR", Prim_make_char, 2, 2, 0)
{
  PRIMITIVE_HEADER (2);
  PRIMITIVE_RETURN
    (MAKE_CHAR ((arg_index_integer (2, MAX_BITS)),
		(arg_index_integer (1, MAX_CODE))));
}

DEFINE_PRIMITIVE ("CHAR-BITS", Prim_char_bits, 1, 1, 0)
{
  PRIMITIVE_HEADER (1);
  CHECK_ARG (1, CHARACTER_P);
  PRIMITIVE_RETURN (LONG_TO_UNSIGNED_FIXNUM (CHAR_BITS (ARG_REF (1))));
Exemple #4
0
static void primop_character_p(long argc) {
	if (!CHARACTER_P(*sp)) *sp = false_object;
}