ftp.nice.ch/pub/next/developer/languages/lisp/AKCL.1.599.s.tar.gz#/akcl-1-599/lsp/module.c

This is module.c in view mode; [Download] [Up]

/* (C) Copyright Taiichi Yuasa and Masami Hagiya, 1984. All rights reserved. */
#include <cmpinclude.h>
#include "module.h"
init_module(start,size,data)char *start;int size;object data;
{	register object *base=vs_top;register object *sup=base+VM2;vs_top=sup;vs_check;
	Cstart=start;Csize=size;Cdata=data;set_VV(VV,VM1,data);
	VV[0]->s.s_stype=(short)stp_special;
	if(VV[0]->s.s_dbind == OBJNULL){
	VV[0]->s.s_dbind = Cnil;}
	MF(VV[11],L1,start,size,data);
	MF(VV[12],L2,start,size,data);
	MF(VV[13],L3,start,size,data);
	MF(VV[14],L4,start,size,data);
	vs_top=vs_base=base;
}
/*	function definition for PROVIDE	*/

static L1()
{	register object *base=vs_base;
	register object *sup=base+VM3;
	vs_reserve(VM3);
	check_arg(1);
	vs_top=sup;
TTL:;
	base[1]= coerce_to_string(base[0]);
	base[2]= symbol_value(VV[0]);
	base[3]= VV[1];
	base[4]= symbol_function(VV[15]);
	vs_top=(vs_base=base+1)+4;
	Ladjoin();
	vs_top=sup;
	setq(VV[0],vs_base[0]);
	base[1]= symbol_value(VV[0]);
	vs_top=(vs_base=base+1)+1;
	return;
}
/*	function definition for REQUIRE	*/

static L2()
{	register object *base=vs_base;
	register object *sup=base+VM4;
	vs_reserve(VM4);
	bds_check;
	if(vs_top-vs_base<1) too_few_arguments();
	if(vs_top-vs_base>2) too_many_arguments();
	vs_base=vs_base+1;
	if(vs_base>=vs_top){vs_top=sup;goto T7;}
	vs_top=sup;
	goto T8;
T7:;
	base[2]= coerce_to_string(base[0]);
	vs_top=(vs_base=base+2)+1;
	Lstring_downcase();
	vs_top=sup;
	base[1]= vs_base[0];
T8:;
	bds_bind(VV[2],VV[3]);
	base[3]= coerce_to_string(base[0]);
	base[4]= symbol_value(VV[0]);
	base[5]= VV[1];
	base[6]= symbol_function(VV[15]);
	vs_top=(vs_base=base+3)+4;
	Lmember();
	vs_top=sup;
	if((vs_base[0])!=Cnil){
	goto T12;}
	if(!(type_of(base[1])!=t_cons)){
	goto T19;}
	base[3]= base[1];
	vs_top=(vs_base=base+3)+1;
	Lload();
	bds_unwind1;
	return;
T19:;
	base[3]= base[1];
T23:;
	if(!(endp(base[3]))){
	goto T24;}
	base[4]= Cnil;
	vs_top=(vs_base=base+4)+1;
	bds_unwind1;
	return;
T24:;
	base[4]= car(base[3]);
	vs_top=(vs_base=base+4)+1;
	Lload();
	vs_top=sup;
	base[3]= cdr(base[3]);
	goto T23;
T12:;
	base[3]= Cnil;
	vs_top=(vs_base=base+3)+1;
	bds_unwind1;
	return;
}
/*	function definition for DOCUMENTATION	*/

static L3()
{	register object *base=vs_base;
	register object *sup=base+VM5;
	vs_reserve(VM5);
	check_arg(2);
	vs_top=sup;
TTL:;
	{object V1= base[1];
	if((V1!= VV[16]))goto T33;
	base[2]= get(base[0],VV[4],Cnil);
	vs_top=(vs_base=base+2)+1;
	return;
T33:;
	if((V1!= VV[17]))goto T34;
	base[2]= get(base[0],VV[5],Cnil);
	vs_top=(vs_base=base+2)+1;
	return;
T34:;
	if((V1!= VV[18]))goto T35;
	base[2]= get(base[0],VV[6],Cnil);
	vs_top=(vs_base=base+2)+1;
	return;
T35:;
	if((V1!= VV[19]))goto T36;
	base[2]= get(base[0],VV[7],Cnil);
	vs_top=(vs_base=base+2)+1;
	return;
T36:;
	if((V1!= VV[20]))goto T37;
	base[2]= get(base[0],VV[8],Cnil);
	vs_top=(vs_base=base+2)+1;
	return;
T37:;
	base[2]= VV[9];
	base[3]= base[1];
	vs_top=(vs_base=base+2)+2;
	Lerror();
	return;}
}
/*	function definition for FIND-DOCUMENTATION	*/

static L4()
{	register object *base=vs_base;
	register object *sup=base+VM6;
	vs_reserve(VM6);
	check_arg(1);
	vs_top=sup;
TTL:;
	if(endp(base[0])){
	goto T40;}
	if(!(endp(cdr(base[0])))){
	goto T41;}
T40:;
	base[1]= Cnil;
	vs_top=(vs_base=base+1)+1;
	return;
T41:;
	base[2]= car(base[0]);
	vs_top=(vs_base=base+2)+1;
	Lmacroexpand();
	vs_top=sup;
	base[1]= vs_base[0];
	if(!(type_of(base[1])==t_string)){
	goto T48;}
	vs_top=(vs_base=base+1)+1;
	return;
T48:;
	if(!(type_of(base[1])==t_cons)){
	goto T51;}
	if(!(car(base[1])==VV[10])){
	goto T51;}
	base[0]= cdr(base[0]);
	goto TTL;
T51:;
	base[2]= Cnil;
	vs_top=(vs_base=base+2)+1;
	return;
}

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.