예제 #1
0
파일: lisp463.c 프로젝트: hoelzl/Clicc
void Ffind_all_symbols(CL_FORM *base)
{
	GEN_HEAPVAR(ARG(0), ARG(1));
	LOAD_NIL(ARG(1));
	GEN_HEAPVAR(ARG(1), ARG(2));
	if(CL_SYMBOLP(INDIRECT(ARG(0))) || CL_NILP(INDIRECT(ARG(0))))
	{
		COPY(INDIRECT(ARG(0)), ARG(2));
		if(CL_SYMBOLP(ARG(2)))
		{
			LOAD_SMSTR(SYM_NAME(ARG(2)), INDIRECT(ARG(0)));
		}
		else
		{
			LOAD_SMSTR((CL_FORM *)&KClisp[266], INDIRECT(ARG(0)));	/* NIL */
		}
	}
	LOAD_NIL(ARG(2));
	{
		GEN_CLOSURE(array, ARG(3), 5, Z133_lambda, 1);
		COPY(ARG(1), &array[3]);
		COPY(ARG(0), &array[4]);
		LOAD_CLOSURE(array, ARG(3));
	}
	COPY(ARG(3), ARG(3));
	COPY(SYMVAL(Slisp, 389), ARG(4));	/* *PACKAGE-ARRAY* */
	Fmap(ARG(2), 3);
	COPY(INDIRECT(ARG(1)), ARG(0));
}
예제 #2
0
파일: lisp545.c 프로젝트: plops/clicc
void uninterned_reader(CL_FORM *base)
{
	if(CL_TRUEP(ARG(2)))
	{
		LOAD_SMSTR((CL_FORM *)&KClisp[208], ARG(3));	/* extra argument for #~S */
		COPY(ARG(1), ARG(4));
		Ferror(ARG(3), 2);
	}
	LOAD_SYMBOL(SYMBOL(Slisp, 48), ARG(3));	/* T */
	BIND_SPECIAL(SYMBOL(Slisp, 443), ARG(3));	/* *UNINTERNED* */
	COPY(ARG(0), ARG(4));
	LOAD_SYMBOL(SYMBOL(Slisp, 48), ARG(5));	/* T */
	LOAD_NIL(ARG(6));
	LOAD_SYMBOL(SYMBOL(Slisp, 48), ARG(7));	/* T */
	read1(ARG(4));
	bool_result = CL_TRUEP(SYMVAL(Slisp, 408));	/* *READ-SUPPRESS* */
	if(bool_result)
	{
		LOAD_NIL(ARG(0));
	}
	else
	{
		if(CL_SYMBOLP(ARG(4)) || CL_NILP(ARG(4)))
		{
			COPY(ARG(4), ARG(0));
		}
		else
		{
			LOAD_SMSTR((CL_FORM *)&Kuninterned_reader[0], ARG(0));	/* illegal value (~S) followed #: */
			COPY(ARG(4), ARG(1));
			Ferror(ARG(0), 2);
		}
	}
	RESTORE_SPECIAL;
}
예제 #3
0
파일: Fscale_float.c 프로젝트: hoelzl/Clicc
void Fscale_float(CL_FORM *base)
{
	if(CL_FLOATP(ARG(0)))
	{
		COPY(ARG(0), ARG(2));
	}
	else
	{
		LOAD_SMSTR((CL_FORM *)&KClisp[244], ARG(2));	/* type error: ~S is not of type ~S */
		COPY(ARG(0), ARG(3));
		LOAD_SYMBOL(SYMBOL(Slisp, 24), ARG(4));	/* FLOAT */
		Ferror(ARG(2), 3);
	}
	COPY(SYMVAL(Slisp, 324), ARG(3));	/* FLOAT-RADIX */
	COPY(ARG(0), ARG(4));
	float1(ARG(3));
	if(CL_FIXNUMP(ARG(1)))
	{
		COPY(ARG(1), ARG(4));
	}
	else
	{
		LOAD_SMSTR((CL_FORM *)&KClisp[244], ARG(4));	/* type error: ~S is not of type ~S */
		COPY(ARG(1), ARG(5));
		LOAD_SYMBOL(SYMBOL(Slisp, 26), ARG(6));	/* INTEGER */
		Ferror(ARG(4), 3);
	}
	Fexpt(ARG(3));
	Fmult(ARG(2), 2);
	COPY(ARG(2), ARG(0));
}
예제 #4
0
파일: lisp816.c 프로젝트: hoelzl/Clicc
void FFI_lisp_character(CL_FORM *base)
{
	LOAD_BOOL(CL_C_CHAR_P(ARG(0)), ARG(1));
	if(CL_TRUEP(ARG(1)))
	{
		goto THEN1;
	}
	else
	{
	}
	if(CL_C_UNSIGNED_CHAR_P(ARG(0)))
	{
		THEN1:;
		rt_make_lisp_character(ARG(0));
	}
	else
	{
		LOAD_SMSTR((CL_FORM *)&KClisp[240], ARG(1));	/* ~&Error in ~A: ~?~% */
		LOAD_SMSTR((CL_FORM *)&KClisp[10], ARG(2));	/* LISP-CHARACTER */
		LOAD_SMSTR((CL_FORM *)&KClisp[8], ARG(3));	/* The evaluated value ~S is not of type c-<char>. */
		COPY(ARG(0), ARG(4));
		Flist(ARG(4), 1);
		Ferror(ARG(1), 4);
	}
}
예제 #5
0
파일: radix_reader.c 프로젝트: hoelzl/Clicc
void radix_reader(CL_FORM *base)
{
	if(CL_TRUEP(SYMVAL(Slisp, 418)))	/* *READ-SUPPRESS* */
	{
		COPY(ARG(0), ARG(3));
		LOAD_SYMBOL(SYMBOL(Slisp, 48), ARG(4));	/* T */
		LOAD_NIL(ARG(5));
		LOAD_SYMBOL(SYMBOL(Slisp, 48), ARG(6));	/* T */
		read_char1(ARG(3));
		COPY(ARG(0), ARG(4));
		COPY(ARG(3), ARG(5));
		read_token(ARG(4));
		LOAD_NIL(ARG(0));
	}
	else
	{
		if(CL_TRUEP(ARG(2)))
		{
			LOAD_FIXNUM(ARG(3), 2, ARG(3));
			COPY(ARG(2), ARG(4));
			LOAD_FIXNUM(ARG(5), 36, ARG(5));
			Fle(ARG(3), 3);
			if(CL_TRUEP(ARG(3)))
			{
				COPY(ARG(2), ARG(3));
				BIND_SPECIAL(SYMBOL(Slisp, 417), ARG(3));	/* *READ-BASE* */
				COPY(ARG(0), ARG(3));
				LOAD_SYMBOL(SYMBOL(Slisp, 48), ARG(4));	/* T */
				LOAD_NIL(ARG(5));
				LOAD_SYMBOL(SYMBOL(Slisp, 48), ARG(6));	/* T */
				read1(ARG(3));
				RESTORE_SPECIAL;
				if(CL_FIXNUMP(ARG(3)))
				{
				}
				else
				{
					LOAD_SMSTR((CL_FORM *)&Kradix_reader[0], ARG(4));	/* #~A (base ~D) value is not a rational: ~S. */
					COPY(ARG(1), ARG(5));
					COPY(ARG(2), ARG(6));
					COPY(ARG(3), ARG(7));
					Ferror(ARG(4), 4);
				}
				COPY(ARG(3), ARG(0));
			}
			else
			{
				LOAD_SMSTR((CL_FORM *)&Kradix_reader[2], ARG(0));	/* Illegal radix for #R: ~D. */
				COPY(ARG(2), ARG(1));
				Ferror(ARG(0), 2);
			}
		}
		else
		{
			LOAD_SMSTR((CL_FORM *)&Kradix_reader[4], ARG(0));	/* Radix missing in #R. */
			Ferror(ARG(0), 1);
		}
	}
}
예제 #6
0
파일: Fmapcon.c 프로젝트: hoelzl/Clicc
static void Z131_get_rest_args(CL_FORM *base, CL_FORM *display[])
{
	if(CL_ATOMP(ARG(0)))
	{
		LOAD_NIL(ARG(0));
	}
	else
	{
		COPY(GET_CAR(ARG(0)), ARG(1));
		if(CL_ATOMP(ARG(1)))
		{
			COPY(&display[1][0], ARG(1));
			LOAD_NIL(ARG(2));
			call_cont(ARG(1));
		}
		COPY(GET_CAR(ARG(0)), ARG(1));
		if(CL_CONSP(ARG(1)))
		{
			COPY(GET_CAR(ARG(1)), ARG(2));
		}
		else
		{
			if(CL_TRUEP(ARG(1)))
			{
				LOAD_SMSTR((CL_FORM *)&KClisp[264], ARG(2));	/* ~a is not a list */
				COPY(ARG(1), ARG(3));
				Ferror(ARG(2), 2);
			}
			else
			{
				COPY(ARG(1), ARG(2));
			}
		}
		COPY(ARG(1), ARG(3));
		COPY(ARG(3), ARG(4));
		if(CL_CONSP(ARG(4)))
		{
			COPY(GET_CDR(ARG(4)), ARG(1));
		}
		else
		{
			if(CL_TRUEP(ARG(4)))
			{
				LOAD_SMSTR((CL_FORM *)&KClisp[262], ARG(5));	/* ~a is not a list */
				COPY(ARG(4), ARG(6));
				Ferror(ARG(5), 2);
			}
			else
			{
				COPY(ARG(4), ARG(1));
			}
		}
		COPY(ARG(1), GET_CAR(ARG(0)));
		COPY(&display[0][1], ARG(1));
		COPY(GET_CDR(ARG(0)), ARG(2));
		Z131_get_rest_args(ARG(2), display);
		ALLOC_CONS(ARG(3), ARG(1), ARG(2), ARG(0));
	}
}
예제 #7
0
파일: lisp192.c 프로젝트: plops/clicc
static void Z87_readc(CL_FORM *base)
{
	if(CL_TRUEP(INDIRECT(GET_FORM(ARG(0)) + 3)))
	{
		COPY(INDIRECT(GET_FORM(ARG(0)) + 3), ARG(1));
		if(CL_CONSP(ARG(1)))
		{
			COPY(GET_CAR(ARG(1)), ARG(1));
		}
		else
		{
			LOAD_SMSTR((CL_FORM *)&KClisp[239], ARG(2));	/* ~a is not a list */
			COPY(ARG(1), ARG(3));
			Ferror(ARG(2), 2);
		}
		stream_readc(ARG(1));
		Ffuncall(ARG(1), 1);
		mv_count = 1;
		if(CL_TRUEP(ARG(1)))
		{
			COPY(ARG(1), ARG(0));
		}
		else
		{
			if(CL_CONSP(INDIRECT(GET_FORM(ARG(0)) + 3)))
			{
			}
			else
			{
				LOAD_SMSTR((CL_FORM *)&KClisp[239], ARG(2));	/* ~a is not a list */
				COPY(INDIRECT(GET_FORM(ARG(0)) + 3), ARG(3));
				Ferror(ARG(2), 2);
			}
			COPY(INDIRECT(GET_FORM(ARG(0)) + 3), ARG(2));
			COPY(ARG(2), ARG(3));
			if(CL_CONSP(ARG(3)))
			{
				COPY(GET_CDR(ARG(3)), INDIRECT(GET_FORM(ARG(0)) + 3));
			}
			else
			{
				LOAD_SMSTR((CL_FORM *)&KClisp[241], ARG(4));	/* ~a is not a list */
				COPY(ARG(3), ARG(5));
				Ferror(ARG(4), 2);
			}
			COPY(ARG(0), ARG(2));
			Z87_readc(ARG(2));
			COPY(ARG(2), ARG(0));
		}
	}
	else
	{
		LOAD_NIL(ARG(0));
	}
}
예제 #8
0
파일: lisp159.c 프로젝트: hoelzl/Clicc
static void Z69_lambda(CL_FORM *base)
{
	COPY(INDIRECT(GET_FORM(ARG(0)) + 5), ARG(2));
	COPY(INDIRECT(GET_FORM(ARG(0)) + 4), ARG(3));
	Fle(ARG(2), 2);
	if(CL_TRUEP(ARG(2)))
	{
		LOAD_SMSTR((CL_FORM *)&Kmake_string_input_stream1[0], ARG(2));	/* reached start of stream */
		Ferror(ARG(2), 1);
	}
	COPY(INDIRECT(GET_FORM(ARG(0)) + 5), ARG(2));
	F1minus(ARG(2));
	COPY(ARG(2), INDIRECT(GET_FORM(ARG(0)) + 5));
	COPY(INDIRECT(GET_FORM(ARG(0)) + 3), ARG(3));
	Fstringp(ARG(3));
	if(CL_TRUEP(ARG(3)))
	{
	}
	else
	{
		COPY(SYMVAL(Slisp, 58), ARG(3));	/* WRONG_TYPE */
		COPY(INDIRECT(GET_FORM(ARG(0)) + 3), ARG(4));
		LOAD_SYMBOL(SYMBOL(Slisp, 44), ARG(5));	/* STRING */
		Ferror(ARG(3), 3);
	}
	COPY(INDIRECT(GET_FORM(ARG(0)) + 3), ARG(3));
	COPY(INDIRECT(GET_FORM(ARG(0)) + 5), ARG(4));
	Frow_major_aref(ARG(3));
	if(EQL(ARG(1), ARG(3)))
	{
	}
	else
	{
		LOAD_SMSTR((CL_FORM *)&Kmake_string_input_stream1[2], ARG(2));	/* %s should be eql to %s */
		COPY(ARG(1), ARG(3));
		COPY(INDIRECT(GET_FORM(ARG(0)) + 3), ARG(4));
		Fstringp(ARG(4));
		if(CL_TRUEP(ARG(4)))
		{
		}
		else
		{
			COPY(SYMVAL(Slisp, 58), ARG(4));	/* WRONG_TYPE */
			COPY(INDIRECT(GET_FORM(ARG(0)) + 3), ARG(5));
			LOAD_SYMBOL(SYMBOL(Slisp, 44), ARG(6));	/* STRING */
			Ferror(ARG(4), 3);
		}
		COPY(INDIRECT(GET_FORM(ARG(0)) + 3), ARG(4));
		COPY(INDIRECT(GET_FORM(ARG(0)) + 5), ARG(5));
		Frow_major_aref(ARG(4));
		Ferror(ARG(2), 3);
	}
	LOAD_NIL(ARG(0));
}
예제 #9
0
파일: Fslot_boundp.c 프로젝트: hoelzl/Clicc
void Fslot_boundp(CL_FORM *base)
{
	if(CL_INSTANCEP(ARG(0)))
	{
		COPY(OFFSET(AR_BASE(GET_FORM(ARG(0))), -1 + 1), ARG(2));
	}
	else
	{
		LOAD_SMSTR((CL_FORM *)&KClisp[238], ARG(2));	/* ~S ist not a valid argument for CLASS-OF, ~
              these have been restricted to instances of user-defined-classes. */
		COPY(ARG(0), ARG(3));
		Ferror(ARG(2), 2);
	}
	COPY(OFFSET(AR_BASE(GET_FORM(ARG(2))), 3 + 1), ARG(2));
	COPY(ARG(1), ARG(3));
	COPY(ARG(2), ARG(4));
	LOAD_SYMBOL(SYMBOL(Slisp, 209), ARG(5));	/* KEY */
	LOAD_GLOBFUN(&CFthird, ARG(6));
	Fposition(ARG(3), 4);
	if(CL_TRUEP(ARG(3)))
	{
		COPY(OFFSET(AR_BASE(GET_FORM(ARG(0))), GET_FIXNUM(ARG(3)) + 1), ARG(4));
		LOAD_BOOL(CL_UNBOUNDP(ARG(4)), ARG(4));
		if(CL_TRUEP(ARG(4)))
		{
			LOAD_NIL(ARG(0));
		}
		else
		{
			LOAD_SYMBOL(SYMBOL(Slisp, 48), ARG(0));	/* T */
		}
	}
	else
	{
		if(CL_INSTANCEP(ARG(0)))
		{
			COPY(OFFSET(AR_BASE(GET_FORM(ARG(0))), -1 + 1), ARG(4));
		}
		else
		{
			LOAD_SMSTR((CL_FORM *)&KClisp[238], ARG(4));	/* ~S ist not a valid argument for CLASS-OF, ~
              these have been restricted to instances of user-defined-classes. */
			COPY(ARG(0), ARG(5));
			Ferror(ARG(4), 2);
		}
		LOAD_SMSTR((CL_FORM *)&KClisp[234], ARG(5));	/* ~S: The slot ~s is missing from the object ~s of class ~s. */
		LOAD_SYMBOL(SYMBOL(Slisp, 201), ARG(6));	/* SLOT-BOUNDP */
		COPY(ARG(1), ARG(7));
		COPY(ARG(0), ARG(8));
		COPY(ARG(4), ARG(9));
		Ferror(ARG(5), 5);
	}
}
예제 #10
0
파일: Flogeqv.c 프로젝트: hoelzl/Clicc
void Flogeqv(CL_FORM *base, int nargs)
{
	Flist(ARG(0), nargs - 0);
	LOAD_FIXNUM(ARG(1), -1, ARG(1));
	M1_1:;
	if(CL_TRUEP(ARG(0)))
	{
	}
	else
	{
		COPY(ARG(1), ARG(0));
		goto RETURN1;
	}
	COPY(ARG(0), ARG(3));
	COPY(ARG(3), ARG(4));
	if(CL_CONSP(ARG(4)))
	{
		COPY(GET_CAR(ARG(4)), ARG(3));
	}
	else
	{
		LOAD_SMSTR((CL_FORM *)&KClisp[264], ARG(3));	/* ~a is not a list */
		Ferror(ARG(3), 2);
	}
	COPY(ARG(0), ARG(4));
	COPY(ARG(4), ARG(5));
	if(CL_CONSP(ARG(5)))
	{
		COPY(GET_CDR(ARG(5)), ARG(0));
	}
	else
	{
		LOAD_SMSTR((CL_FORM *)&KClisp[262], ARG(6));	/* ~a is not a list */
		COPY(ARG(5), ARG(7));
		Ferror(ARG(6), 2);
	}
	if(CL_FIXNUMP(ARG(3)))
	{
	}
	else
	{
		COPY(ARG(3), ARG(4));
		LOAD_SMSTR((CL_FORM *)&KClisp[244], ARG(3));	/* type error: ~S is not of type ~S */
		LOAD_SYMBOL(SYMBOL(Slisp, 23), ARG(5));	/* FIXNUM */
		Ferror(ARG(3), 3);
	}
	LOAD_FIXNUM(ARG(4), GET_FIXNUM(ARG(1)) ^ GET_FIXNUM(ARG(3)), ARG(2));
	LOAD_FIXNUM(ARG(3),  ~ GET_FIXNUM(ARG(2)), ARG(1));
	goto M1_1;
	RETURN1:;
}
예제 #11
0
파일: lisp192.c 프로젝트: plops/clicc
static void Z86_lambda(CL_FORM *base)
{
	COPY(INDIRECT(GET_FORM(ARG(0)) + 3), ARG(2));
	if(CL_CONSP(ARG(2)))
	{
		COPY(GET_CAR(ARG(2)), ARG(2));
	}
	else
	{
		if(CL_TRUEP(ARG(2)))
		{
			LOAD_SMSTR((CL_FORM *)&KClisp[239], ARG(3));	/* ~a is not a list */
			COPY(ARG(2), ARG(4));
			Ferror(ARG(3), 2);
		}
		else
		{
			LOAD_NIL(ARG(2));
		}
	}
	stream_unreadc(ARG(2));
	COPY(ARG(1), ARG(3));
	Ffuncall(ARG(2), 2);
	COPY(ARG(2), ARG(0));
}
예제 #12
0
파일: lisp819.c 프로젝트: hoelzl/Clicc
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);
	}
}
예제 #13
0
파일: float1.c 프로젝트: plops/clicc
void float1(CL_FORM *base)
{
	if(CL_TRUEP(ARG(1)))
	{
		if(CL_FLOATP(ARG(1)))
		{
			goto ELSE1;
		}
		else
		{
			goto THEN2;
		}
	}
	else
	{
		goto ELSE1;
	}
	{
		THEN2:;
		LOAD_SMSTR((CL_FORM *)&KClisp[0], ARG(2));	/* The value of OTHER, ~S, should be a FLOAT */
		COPY(ARG(1), ARG(3));
		Ferror(ARG(2), 2);
	}
	ELSE1:;
	rt_float(ARG(0));
}
예제 #14
0
파일: lisp767.c 프로젝트: hoelzl/Clicc
void Fstring_left_trim(CL_FORM *base)
{
	Fstring(ARG(1));
	LOAD_FIXNUM(ARG(2), 0, ARG(2));
	M1_1:;
	COPY(ARG(2), ARG(3));
	COPY(ARG(1), ARG(4));
	Flength(ARG(4));
	Fnumeql(ARG(3), 2);
	if(CL_TRUEP(ARG(3)))
	{
		LOAD_SMSTR((CL_FORM *)&KClisp[70], ARG(0));	/*  */
		goto RETURN1;
	}
	COPY(ARG(1), ARG(3));
	Fstringp(ARG(3));
	if(CL_TRUEP(ARG(3)))
	{
	}
	else
	{
		COPY(SYMVAL(Slisp, 58), ARG(3));	/* WRONG_TYPE */
		COPY(ARG(1), ARG(4));
		LOAD_SYMBOL(SYMBOL(Slisp, 44), ARG(5));	/* STRING */
		Ferror(ARG(3), 3);
	}
	COPY(ARG(1), ARG(3));
	COPY(ARG(2), ARG(4));
	Frow_major_aref(ARG(3));
	COPY(ARG(0), ARG(4));
	LOAD_SYMBOL(SYMBOL(Slisp, 282), ARG(5));	/* TEST */
	LOAD_GLOBFUN(&CFcharE, ARG(6));
	Ffind(ARG(3), 4);
	if(CL_TRUEP(ARG(3)))
	{
	}
	else
	{
		goto RETURN2;
	}
	F1plus(ARG(2));
	goto M1_1;
	RETURN2:;
	COPY(ARG(2), ARG(3));
	Fzerop(ARG(3));
	if(CL_TRUEP(ARG(3)))
	{
		COPY(ARG(1), ARG(0));
	}
	else
	{
		COPY(ARG(1), ARG(0));
		COPY(ARG(2), ARG(1));
		LOAD_NIL(ARG(2));
		subseq1(ARG(0));
	}
	RETURN1:;
}
예제 #15
0
파일: Fslot_missing.c 프로젝트: plops/clicc
void Fslot_missing(CL_FORM *base)
{
	LOAD_SMSTR((CL_FORM *)&KClisp[212], ARG(4));	/* ~S: The slot ~s is missing from the object ~s of class ~s. */
	COPY(ARG(3), ARG(5));
	COPY(ARG(2), ARG(6));
	COPY(ARG(1), ARG(7));
	COPY(ARG(0), ARG(8));
	Ferror(ARG(4), 5);
}
예제 #16
0
파일: comma_reader.c 프로젝트: hoelzl/Clicc
void comma_reader(CL_FORM *base)
{
	COPY(SYMVAL(Slisp, 447), ARG(2));	/* *BQ-LEVEL* */
	LOAD_FIXNUM(ARG(3), 0, ARG(3));
	Fle(ARG(2), 2);
	if(CL_TRUEP(ARG(2)))
	{
		LOAD_SMSTR((CL_FORM *)&Kcomma_reader[0], ARG(2));	/* A comma appeared outside of a backquote */
		Ferror(ARG(2), 1);
	}
	COPY(SYMVAL(Slisp, 447), ARG(2));	/* *BQ-LEVEL* */
	F1minus(ARG(2));
	COPY(ARG(2), SYMVAL(Slisp, 447));	/* *BQ-LEVEL* */
	LOAD_NIL(ARG(2));
	COPY(ARG(0), ARG(3));
	LOAD_SYMBOL(SYMBOL(Slisp, 48), ARG(4));	/* T */
	LOAD_NIL(ARG(5));
	LOAD_SYMBOL(SYMBOL(Slisp, 48), ARG(6));	/* T */
	peek_char1(ARG(2));
	if(CL_CHARP(ARG(2)) && GET_CHAR(ARG(2)) == '@')
	{
		COPY(ARG(0), ARG(3));
		LOAD_SYMBOL(SYMBOL(Slisp, 48), ARG(4));	/* T */
		LOAD_NIL(ARG(5));
		LOAD_SYMBOL(SYMBOL(Slisp, 48), ARG(6));	/* T */
		read_char1(ARG(3));
		COPY(SYMVAL(Slisp, 437), ARG(2));	/* *COMMA-ATSIGN* */
	}
	else
	{
		if(CL_CHARP(ARG(2)) && GET_CHAR(ARG(2)) == '.')
		{
			COPY(ARG(0), ARG(3));
			LOAD_SYMBOL(SYMBOL(Slisp, 48), ARG(4));	/* T */
			LOAD_NIL(ARG(5));
			LOAD_SYMBOL(SYMBOL(Slisp, 48), ARG(6));	/* T */
			read_char1(ARG(3));
			COPY(SYMVAL(Slisp, 438), ARG(2));	/* *COMMA-DOT* */
		}
		else
		{
			COPY(SYMVAL(Slisp, 436), ARG(2));	/* *COMMA* */
		}
	}
	COPY(ARG(0), ARG(3));
	LOAD_SYMBOL(SYMBOL(Slisp, 48), ARG(4));	/* T */
	LOAD_NIL(ARG(5));
	LOAD_SYMBOL(SYMBOL(Slisp, 48), ARG(6));	/* T */
	internal_read(ARG(3));
	ALLOC_CONS(ARG(4), ARG(2), ARG(3), ARG(2));
	COPY(SYMVAL(Slisp, 447), ARG(3));	/* *BQ-LEVEL* */
	F1plus(ARG(3));
	COPY(ARG(3), SYMVAL(Slisp, 447));	/* *BQ-LEVEL* */
	COPY(ARG(2), ARG(0));
}
예제 #17
0
파일: Fpathname.c 프로젝트: hoelzl/Clicc
void Fpathname(CL_FORM *base)
{
	COPY(ARG(0), ARG(1));
	LOAD_SYMBOL(SYMBOL(Slisp, 234), ARG(2));	/* PATHNAME */
	rt_struct_typep(ARG(1));
	if(CL_TRUEP(ARG(1)))
	{
		COPY(ARG(0), ARG(1));
	}
	else
	{
		COPY(ARG(0), ARG(1));
		Fstringp(ARG(1));
		if(CL_TRUEP(ARG(1)))
		{
			COPY(ARG(0), ARG(1));
			LOAD_NIL(ARG(2));
			COPY(SYMVAL(Slisp, 233), ARG(3));	/* *DEFAULT-PATHNAME-DEFAULTS* */
			LOAD_FIXNUM(ARG(4), 0, ARG(4));
			LOAD_NIL(ARG(5));
			LOAD_NIL(ARG(6));
			parse_namestring1(ARG(1));
			mv_count = 1;
		}
		else
		{
			COPY(ARG(0), ARG(1));
			LOAD_SYMBOL(SYMBOL(Slisp, 64), ARG(2));	/* STREAM */
			rt_struct_typep(ARG(1));
			if(CL_TRUEP(ARG(1)))
			{
				COPY(ARG(0), ARG(1));
				LOAD_NIL(ARG(2));
				file_name1(ARG(1));
				COPY(SYMVAL(Slisp, 233), ARG(2));	/* *DEFAULT-PATHNAME-DEFAULTS* */
				COPY(ARG(1), ARG(3));
				LOAD_NIL(ARG(4));
				COPY(ARG(2), ARG(5));
				LOAD_FIXNUM(ARG(6), 0, ARG(6));
				LOAD_NIL(ARG(7));
				LOAD_NIL(ARG(8));
				parse_namestring1(ARG(3));
				mv_count = 1;
				COPY(ARG(3), ARG(1));
			}
			else
			{
				LOAD_SMSTR((CL_FORM *)&KClisp[130], ARG(1));	/* etypecase: the value ~a is not a legal value */
				COPY(ARG(0), ARG(2));
				Ferror(ARG(1), 2);
			}
		}
	}
	COPY(ARG(1), ARG(0));
}
예제 #18
0
파일: FFI_c_char.c 프로젝트: hoelzl/Clicc
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);
		}
	}
}
예제 #19
0
파일: lisp809.c 프로젝트: hoelzl/Clicc
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);
		}
	}
}
예제 #20
0
파일: Frplaca.c 프로젝트: plops/clicc
void Frplaca(CL_FORM *base)
{
	if(CL_CONSP(ARG(0)))
	{
		COPY(ARG(1), GET_CAR(ARG(0)));
	}
	else
	{
		LOAD_SMSTR((CL_FORM *)&KClisp[237], ARG(2));	/* ~a is not a cons */
		COPY(ARG(0), ARG(3));
		Ferror(ARG(2), 2);
	}
}
예제 #21
0
파일: FFI_c_float.c 프로젝트: hoelzl/Clicc
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);
		}
	}
}
예제 #22
0
파일: lisp200.c 프로젝트: plops/clicc
void Fstream_element_type(CL_FORM *base)
{
	COPY(ARG(0), ARG(1));
	Fstreamp(ARG(1));
	if(CL_TRUEP(ARG(1)))
	{
		LOAD_SMSTR((CL_FORM *)&KClisp[170], ARG(0));	/* stream expected */
		Ferror(ARG(0), 1);
	}
	else
	{
		LOAD_SYMBOL(SYMBOL(Slisp, 18), ARG(0));	/* CHARACTER */
	}
}
예제 #23
0
파일: pairlis1.c 프로젝트: hoelzl/Clicc
void pairlis1(CL_FORM *base)
{
	M1_1:;
	if(CL_ATOMP(ARG(0)))
	{
		if(CL_ATOMP(ARG(1)))
		{
			COPY(ARG(2), ARG(0));
			goto RETURN1;
		}
		else
		{
			goto M1_2;
		}
	}
	else
	{
		if(CL_ATOMP(ARG(1)))
		{
			goto M1_2;
		}
		else
		{
			COPY(ARG(0), ARG(3));
			COPY(ARG(3), ARG(4));
			COPY(GET_CAR(ARG(4)), ARG(3));
			COPY(ARG(1), ARG(4));
			COPY(ARG(4), ARG(5));
			COPY(GET_CAR(ARG(5)), ARG(4));
			COPY(ARG(2), ARG(5));
			ALLOC_CONS(ARG(8), ARG(3), ARG(4), ARG(6));
			ALLOC_CONS(ARG(8), ARG(6), ARG(5), ARG(2));
			COPY(GET_CAR(ARG(0)), ARG(3));
			COPY(ARG(0), ARG(4));
			COPY(ARG(4), ARG(5));
			COPY(GET_CDR(ARG(5)), ARG(0));
			COPY(GET_CAR(ARG(1)), ARG(3));
			COPY(ARG(1), ARG(4));
			COPY(ARG(4), ARG(5));
			COPY(GET_CDR(ARG(5)), ARG(1));
		}
	}
	goto M1_1;
	M1_2:;
	LOAD_SMSTR((CL_FORM *)&Kpairlis1[0], ARG(3));	/* The lists of keys and data are of unequal length. */
	Ferror(ARG(3), 1);
	LOAD_NIL(ARG(0));
	RETURN1:;
}
예제 #24
0
파일: Fgentemp.c 프로젝트: hoelzl/Clicc
void Fgentemp(CL_FORM *base, int nargs)
{
	switch(nargs)
	{
		case 0:
		LOAD_SMSTR((CL_FORM *)&KClisp[64], ARG(0));	/* T */
		case 1:
		COPY(SYMVAL(Slisp, 353), ARG(1));	/* *PACKAGE* */
		case 2:
		break;
		default:
		Labort(TOO_MANY_ARGS);
	}
	gentemp1(ARG(0));
}
예제 #25
0
파일: lisp184.c 프로젝트: hoelzl/Clicc
void Fget_output_stream_string(CL_FORM *base)
{
	COPY(ARG(0), ARG(1));
	stream_type(ARG(1));
	if(CL_SYMBOLP(ARG(1)) && GET_SYMBOL(ARG(1)) == SYMBOL(Slisp, 102))	/* STRING-OUTPUT */
	{
	}
	else
	{
		LOAD_SMSTR((CL_FORM *)&KClisp[268], ARG(1));	/* string-output-stream expected */
		Ferror(ARG(1), 1);
	}
	stream_extra(ARG(0));
	Ffuncall(ARG(0), 1);
}
예제 #26
0
파일: lisp159.c 프로젝트: hoelzl/Clicc
static void Z67_lambda(CL_FORM *base)
{
	COPY(ARG(1), ARG(2));
	COPY(INDIRECT(GET_FORM(ARG(0)) + 4), ARG(3));
	Fle(ARG(2), 2);
	if(CL_TRUEP(ARG(2)))
	{
		COPY(ARG(1), INDIRECT(GET_FORM(ARG(0)) + 3));
		COPY(INDIRECT(GET_FORM(ARG(0)) + 3), ARG(0));
	}
	else
	{
		LOAD_SMSTR((CL_FORM *)&Kmake_string_input_stream1[4], ARG(2));	/* illegal position */
		Ferror(ARG(2), 1);
	}
}
예제 #27
0
파일: lisp355.c 프로젝트: plops/clicc
static void Z123_diddle_with(CL_FORM *base)
{
	GEN_HEAPVAR(ARG(0), ARG(2));
	GEN_HEAPVAR(ARG(1), ARG(2));
	COPY(INDIRECT(ARG(1)), ARG(2));
	LOAD_SYMBOL(SYMBOL(Slisp, 248), ARG(3));	/* PATTERN */
	rt_struct_typep(ARG(2));
	if(CL_TRUEP(ARG(2)))
	{
		GEN_CLOSURE(array, ARG(2), 5, Z124_lambda, 1);
		COPY(ARG(1), &array[3]);
		COPY(ARG(0), &array[4]);
		LOAD_CLOSURE(array, ARG(2));
		COPY(ARG(2), ARG(2));
		COPY(INDIRECT(ARG(1)), ARG(3));
		pattern_pieces(ARG(3));
		Fmapcar(ARG(2), 2);
		LOAD_SYMBOL(SYMBOL(Slisp, 248), ARG(0));	/* PATTERN */
		COPY(ARG(2), ARG(1));
		rt_make_struct(ARG(0), 2);
	}
	else
	{
		if(CL_LISTP(INDIRECT(ARG(1))))
		{
			COPY(INDIRECT(ARG(0)), ARG(0));
			COPY(INDIRECT(ARG(1)), ARG(1));
			Fmapcar(ARG(0), 2);
		}
		else
		{
			if(CL_SMSTRP(INDIRECT(ARG(1))))
			{
				COPY(INDIRECT(ARG(0)), ARG(0));
				COPY(INDIRECT(ARG(1)), ARG(1));
				Ffuncall(ARG(0), 2);
			}
			else
			{
				LOAD_SMSTR((CL_FORM *)&Kmaybe_diddle_case[2], ARG(0));	/* etypecase: the value ~a is not a legal value */
				COPY(INDIRECT(ARG(1)), ARG(1));
				Ferror(ARG(0), 2);
			}
		}
	}
}
예제 #28
0
파일: lisp534.c 프로젝트: plops/clicc
void right_parenthesis_reader(CL_FORM *base)
{
	if(EQL(ARG(1), SYMVAL(Slisp, 446)))	/* *PARENTHESIS-OPEN* */
	{
		LOAD_NIL(SYMVAL(Slisp, 446));	/* *PARENTHESIS-OPEN* */
		COPY(SYMVAL(Slisp, 446), ARG(0));	/* *PARENTHESIS-OPEN* */
	}
	else
	{
		LOAD_SMSTR((CL_FORM *)&Kright_parenthesis_reader[0], ARG(2));	/* Ignoring an unmatched ~a */
		COPY(ARG(1), ARG(3));
		Fwarn(ARG(2), 2);
		mv_count = 1;
		LOAD_NIL(ARG(0));
		mv_count = 0;
	}
}
예제 #29
0
파일: Fset_elt.c 프로젝트: hoelzl/Clicc
void Fset_elt(CL_FORM *base)
{
	if(CL_CONSP(ARG(1)))
	{
		COPY(ARG(2), ARG(3));
		COPY(ARG(1), ARG(4));
		Fnthcdr(ARG(3));
		if(CL_CONSP(ARG(3)))
		{
			COPY(ARG(0), GET_CAR(ARG(3)));
		}
		else
		{
			LOAD_SMSTR((CL_FORM *)&KClisp[252], ARG(0));	/* ~a is not a cons */
			COPY(ARG(3), ARG(1));
			Ferror(ARG(0), 2);
		}
	}
	else
	{
		LOAD_BOOL(CL_SMVECP(ARG(1)), ARG(3));
		if(CL_TRUEP(ARG(3)))
		{
			goto THEN1;
		}
		else
		{
			COPY(ARG(1), ARG(4));
			LOAD_SYMBOL(SYMBOL(Slisp, 150), ARG(5));	/* COMPLEX-VECTOR */
			rt_struct_typep(ARG(4));
		}
		if(CL_TRUEP(ARG(4)))
		{
			THEN1:;
			Fset_row_major_aref(ARG(0));
		}
		else
		{
			COPY(SYMVAL(Slisp, 58), ARG(0));	/* WRONG_TYPE */
			LOAD_SYMBOL(SYMBOL(Slisp, 36), ARG(2));	/* SEQUENCE */
			Ferror(ARG(0), 3);
		}
	}
}
예제 #30
0
파일: Fcar.c 프로젝트: hoelzl/Clicc
void Fcar(CL_FORM *base)
{
    if(CL_CONSP(ARG(0)))
    {
        COPY(GET_CAR(ARG(0)), ARG(0));
    }
    else
    {
        if(CL_TRUEP(ARG(0)))
        {
            LOAD_SMSTR((CL_FORM *)&KClisp[264], ARG(1));	/* ~a is not a list */
            COPY(ARG(0), ARG(2));
            Ferror(ARG(1), 2);
        }
        else
        {
        }
    }
}