Пример #1
0
void FFI_make_lisp_string(CL_FORM *base)
{
	COPY(ARG(0), ARG(1));
	FFI_c_string_p(ARG(1));
	if(CL_TRUEP(ARG(1)))
	{
		rt_internal_make_lisp_string(ARG(0));
	}
	else
	{
		LOAD_SMSTR((CL_FORM *)&KClisp[222], ARG(1));	/* MAKE-LISP-STRING */
		LOAD_SMSTR((CL_FORM *)&KClisp[220], ARG(2));	/* The evaluated value ~S is not of type c-string. */
		COPY(ARG(0), ARG(3));
		error_in(ARG(1), 3);
	}
}
Пример #2
0
void FFI_c_char(CL_FORM *base)
{
	if(CL_CHARP(ARG(0)))
	{
		rt_make_c_char(ARG(0));
	}
	else
	{
		if(CL_C_CHAR_P(ARG(0)))
		{
			rt_cast_c_char(ARG(0));
		}
		else
		{
			LOAD_SMSTR((CL_FORM *)&KClisp[62], ARG(1));	/* C-CHAR */
			LOAD_SMSTR((CL_FORM *)&KClisp[60], ARG(2));	/* The evaluated value ~S is not of type character. */
			COPY(ARG(0), ARG(3));
			error_in(ARG(1), 3);
		}
	}
}
Пример #3
0
void FFI_c_unsigned_int(CL_FORM *base)
{
	if(CL_FIXNUMP(ARG(0)))
	{
		rt_make_c_unsigned_int(ARG(0));
	}
	else
	{
		if(CL_C_UNSIGNED_INT_P(ARG(0)))
		{
			rt_cast_c_unsigned_int(ARG(0));
		}
		else
		{
			LOAD_SMSTR((CL_FORM *)&KClisp[38], ARG(1));	/* C-UNSIGNED-INT */
			LOAD_SMSTR((CL_FORM *)&KClisp[36], ARG(2));	/* The evaluated value ~S is not of type fixnum. */
			COPY(ARG(0), ARG(3));
			error_in(ARG(1), 3);
		}
	}
}
Пример #4
0
void FFI_c_float(CL_FORM *base)
{
	if(CL_FLOATP(ARG(0)))
	{
		rt_make_c_float(ARG(0));
	}
	else
	{
		COPY(ARG(0), ARG(1));
		c_floating_p(ARG(1));
		if(CL_TRUEP(ARG(1)))
		{
			rt_cast_c_float(ARG(0));
		}
		else
		{
			LOAD_SMSTR((CL_FORM *)&KClisp[18], ARG(1));	/* C-FLOAT */
			COPY(SYMVAL(Slisp, 714), ARG(2));	/* NO-FLOAT */
			COPY(ARG(0), ARG(3));
			error_in(ARG(1), 3);
		}
	}
}
Пример #5
0
void FFI_c_unsigned_long(CL_FORM *base)
{
	if(CL_FIXNUMP(ARG(0)))
	{
		rt_make_c_unsigned_long(ARG(0));
	}
	else
	{
		COPY(ARG(0), ARG(1));
		c_primitive_p(ARG(1));
		if(CL_TRUEP(ARG(1)))
		{
			rt_cast_c_unsigned_long(ARG(0));
		}
		else
		{
			LOAD_SMSTR((CL_FORM *)&KClisp[20], ARG(1));	/* C-UNSIGNED-LONG */
			COPY(SYMVAL(Slisp, 713), ARG(2));	/* NO-INTEGER */
			COPY(ARG(0), ARG(3));
			error_in(ARG(1), 3);
		}
	}
}
Пример #6
0
void FFI_c_float(CL_FORM *base)
{
	if(CL_FLOATP(ARG(0)))
	{
		rt_make_c_float(ARG(0));
	}
	else
	{
		COPY(ARG(0), ARG(1));
		FFI_c_float_p(ARG(1));
		if(CL_TRUEP(ARG(1)))
		{
			rt_cast_c_float(ARG(0));
		}
		else
		{
			LOAD_SMSTR((CL_FORM *)&KClisp[30], ARG(1));	/* C-FLOAT */
			LOAD_SMSTR((CL_FORM *)&KClisp[28], ARG(2));	/* The evaluated value ~S is not of type float. */
			COPY(ARG(0), ARG(3));
			error_in(ARG(1), 3);
		}
	}
}