コード例 #1
0
ファイル: Fmake_array.c プロジェクト: hoelzl/Clicc
void Fmake_array(CL_FORM *base, int nargs)
{
	BOOL supl_flags[7];
	static CL_FORM * keylist[] =
	{
		SYMBOL(Slisp, 99),	/* ELEMENT-TYPE */
		SYMBOL(Slisp, 155),	/* INITIAL-ELEMENT */
		SYMBOL(Slisp, 103),	/* INITIAL-CONTENTS */
		SYMBOL(Slisp, 100),	/* ADJUSTABLE */
		SYMBOL(Slisp, 101),	/* FILL-POINTER */
		SYMBOL(Slisp, 156),	/* DISPLACED-TO */
		SYMBOL(Slisp, 157),	/* DISPLACED-INDEX-OFFSET */
	};
	keysort(ARG(1), nargs - 1, 7, keylist, supl_flags, FALSE);
	if(NOT(supl_flags[0]))
	{
		LOAD_SYMBOL(SYMBOL(Slisp, 48), ARG(1));	/* T */
	}
	if(NOT(supl_flags[1]))
	{
		LOAD_NIL(ARG(2));
		LOAD_NIL(ARG(8));
	}
	else
	{
		LOAD_T(ARG(8));
	}
	if(NOT(supl_flags[2]))
	{
		LOAD_NIL(ARG(3));
		LOAD_NIL(ARG(9));
	}
	else
	{
		LOAD_T(ARG(9));
	}
	if(NOT(supl_flags[3]))
	{
		LOAD_NIL(ARG(4));
	}
	if(NOT(supl_flags[4]))
	{
		LOAD_NIL(ARG(5));
	}
	if(NOT(supl_flags[5]))
	{
		LOAD_NIL(ARG(6));
	}
	if(NOT(supl_flags[6]))
	{
		LOAD_FIXNUM(ARG(10), 0, ARG(7));
		LOAD_NIL(ARG(10));
	}
	else
	{
		LOAD_T(ARG(10));
	}
	make_array1(ARG(0));
}
コード例 #2
0
ファイル: c_long_p.c プロジェクト: plops/clicc
void c_long_p(CL_FORM *base)
{
	if(CL_C_LONG_P(STACK(base, 0)))
	{
		LOAD_T(STACK(base, 0));
	}
	else
	{
		LOAD_NIL(STACK(base, 0));
	}
}
コード例 #3
0
ファイル: Fin_package.c プロジェクト: hoelzl/Clicc
void Fin_package(CL_FORM *base, int nargs)
{
	BOOL supl_flags[2];
	static CL_FORM * keylist[] =
	{
		SYMBOL(Slisp, 383),	/* NICKNAMES */
		SYMBOL(Slisp, 391),	/* USE */
	};
	keysort(ARG(1), nargs - 1, 2, keylist, supl_flags, FALSE);
	if(NOT(supl_flags[0]))
	{
		LOAD_NIL(ARG(1));
	}
	if(NOT(supl_flags[1]))
	{
		LOAD_NIL(ARG(2));
		LOAD_NIL(ARG(3));
	}
	else
	{
		LOAD_T(ARG(3));
	}
	in_package1(ARG(0));
}
コード例 #4
0
ファイル: lisp344.c プロジェクト: hoelzl/Clicc
void Fmake_pathname(CL_FORM *base, int nargs)
{
	BOOL supl_flags[8];
	static CL_FORM * keylist[] =
	{
		SYMBOL(Slisp, 251),	/* HOST */
		SYMBOL(Slisp, 252),	/* DEVICE */
		SYMBOL(Slisp, 253),	/* DIRECTORY */
		SYMBOL(Slisp, 254),	/* NAME */
		SYMBOL(Slisp, 80),	/* TYPE */
		SYMBOL(Slisp, 255),	/* VERSION */
		SYMBOL(Slisp, 275),	/* DEFAULTS */
		SYMBOL(Slisp, 277),	/* CASE */
	};
	keysort(ARG(0), nargs - 0, 8, keylist, supl_flags, FALSE);
	if(NOT(supl_flags[0]))
	{
		LOAD_NIL(ARG(0));
		LOAD_NIL(ARG(8));
	}
	else
	{
		LOAD_T(ARG(8));
	}
	if(NOT(supl_flags[1]))
	{
		LOAD_NIL(ARG(1));
		LOAD_NIL(ARG(9));
	}
	else
	{
		LOAD_T(ARG(9));
	}
	if(NOT(supl_flags[2]))
	{
		LOAD_NIL(ARG(2));
		LOAD_NIL(ARG(10));
	}
	else
	{
		LOAD_T(ARG(10));
	}
	if(NOT(supl_flags[3]))
	{
		LOAD_NIL(ARG(3));
		LOAD_NIL(ARG(11));
	}
	else
	{
		LOAD_T(ARG(11));
	}
	if(NOT(supl_flags[4]))
	{
		LOAD_NIL(ARG(4));
		LOAD_NIL(ARG(12));
	}
	else
	{
		LOAD_T(ARG(12));
	}
	if(NOT(supl_flags[5]))
	{
		LOAD_NIL(ARG(5));
		LOAD_NIL(ARG(13));
	}
	else
	{
		LOAD_T(ARG(13));
	}
	if(NOT(supl_flags[6]))
	{
		LOAD_NIL(ARG(6));
	}
	if(NOT(supl_flags[7]))
	{
		LOAD_SYMBOL(SYMBOL(Slisp, 276), ARG(7));	/* LOCAL */
	}
	make_pathname1(ARG(0));
}
コード例 #5
0
ファイル: lisp120.c プロジェクト: plops/clicc
void unparse_unix_directory_list(CL_FORM *base)
{
	LOAD_NIL(STACK(base, 1));
	LOAD_NIL(STACK(base, 2));
	{
		CL_FORM *lptr;
		lptr = form_alloc(STACK(base, 3), 2);
		COPY(STACK(base, 1), CAR(lptr));
		COPY(STACK(base, 2), CDR(lptr));
		LOAD_CONS(lptr, STACK(base, 1));
	}
	if(CL_TRUEP(STACK(base, 0)))
	{
		COPY(STACK(base, 0), STACK(base, 2));
		Fcar(STACK(base, 2));
		COPY(STACK(base, 0), STACK(base, 3));
		COPY(STACK(base, 3), STACK(base, 4));
		Fcdr(STACK(base, 4));
		COPY(STACK(base, 4), STACK(base, 0));
		if(CL_SYMBOLP(STACK(base, 2)) && GET_SYMBOL(STACK(base, 2)) == SYMBOL(Slisp, 198))	/* ABSOLUTE */
		{
			LOAD_SMSTR((CL_FORM *)&Kunparse_unix_directory_list[0], STACK(base, 3));	/* / */
			COPY(STACK(base, 1), STACK(base, 4));
			add_q(STACK(base, 3));
		}
		else
		{
			if(CL_SYMBOLP(STACK(base, 2)) && GET_SYMBOL(STACK(base, 2)) == SYMBOL(Slisp, 201))	/* RELATIVE */
			{
				LOAD_T(STACK(base, 3));
			}
			else
			{
				LOAD_NIL(STACK(base, 3));
			}
			if(CL_TRUEP(STACK(base, 3)))
			{
			}
			else
			{
				LOAD_SMSTR((CL_FORM *)&Kunparse_unix_directory_list[2], STACK(base, 4));	/* ecase: the value ~a is not a legal value */
				COPY(STACK(base, 2), STACK(base, 5));
				Ferror(STACK(base, 4), 2);
			}
		}
		LOAD_NIL(STACK(base, 2));
		COPY(STACK(base, 0), STACK(base, 3));
		M33_1:;
		if(CL_ATOMP(STACK(base, 3)))
		{
			LOAD_NIL(STACK(base, 2));
			goto RETURN34;
		}
		COPY(STACK(base, 3), STACK(base, 4));
		Fcar(STACK(base, 4));
		COPY(STACK(base, 4), STACK(base, 2));
		if(CL_SYMBOLP(STACK(base, 2)) && GET_SYMBOL(STACK(base, 2)) == SYMBOL(Slisp, 205))	/* UP */
		{
			LOAD_SMSTR((CL_FORM *)&Kunparse_unix_directory_list[4], STACK(base, 4));	/* ../ */
			COPY(STACK(base, 1), STACK(base, 5));
			add_q(STACK(base, 4));
		}
		else
		{
			if(CL_SYMBOLP(STACK(base, 2)) && GET_SYMBOL(STACK(base, 2)) == SYMBOL(Slisp, 199))	/* BACK */
			{
				LOAD_SMSTR((CL_FORM *)&Kunparse_unix_directory_list[6], STACK(base, 4));	/* :BACK cannot be represented in namestrings. */
				Ferror(STACK(base, 4), 1);
			}
			else
			{
				if(CL_SMAR_P(STACK(base, 2)))
				{
					COPY(STACK(base, 2), STACK(base, 4));
					LOAD_SYMBOL(SYMBOL(Slisp, 43), STACK(base, 5));	/* STANDARD-CHAR */
					LOAD_SYMBOL(SYMBOL(Slisp, 48), STACK(base, 6));	/* * */
					check_array_internal(STACK(base, 4));
				}
				else
				{
					LOAD_NIL(STACK(base, 4));
				}
				if(CL_TRUEP(STACK(base, 4)))
				{
					bool_result = TRUE;
				}
				else
				{
					COPY(STACK(base, 2), STACK(base, 5));
					LOAD_SYMBOL(SYMBOL(Slisp, 181), STACK(base, 6));	/* PATTERN */
					struct_typep(STACK(base, 5));
					bool_result = CL_TRUEP(STACK(base, 5));
				}
				if(bool_result)
				{
					COPY(STACK(base, 2), STACK(base, 4));
					unparse_unix_piece(STACK(base, 4));
					COPY(STACK(base, 1), STACK(base, 5));
					add_q(STACK(base, 4));
					LOAD_SMSTR((CL_FORM *)&Kunparse_unix_directory_list[8], STACK(base, 4));	/* / */
					COPY(STACK(base, 1), STACK(base, 5));
					add_q(STACK(base, 4));
				}
				else
				{
					LOAD_SMSTR((CL_FORM *)&Kunparse_unix_directory_list[10], STACK(base, 4));	/* Invalid directory component: ~S */
					COPY(STACK(base, 2), STACK(base, 5));
					Ferror(STACK(base, 4), 2);
				}
			}
		}
		Fcdr(STACK(base, 3));
		goto M33_1;
		RETURN34:;
	}
	LOAD_GLOBFUN(&CFconcatenate, STACK(base, 2));
	LOAD_SYMBOL(SYMBOL(Slisp, 40), STACK(base, 3));	/* SIMPLE-STRING */
	COPY(STACK(base, 1), STACK(base, 4));
	Fcar(STACK(base, 4));
	Fapply(STACK(base, 2), 3);
	COPY(STACK(base, 2), STACK(base, 0));
}