%
% AUTOLOAD.RED - Autoloading entry stubs
% 
% Author:      Eric Benson
%	       Symbolic Computation Group
%              Computer Science Dept.
%              University of Utah
% Date:        25 March 1982
% Copyright (c) 1982 University of Utah
%

%  <PSL.KERNEL>AUTOLOAD.RED.3, 17-Sep-82 16:35:02, Edit by BENSON
%  Changed PrettyPrint to use PrettyPrint, not Pretty

CompileTime <<

macro procedure DefAutoload U;
%
% (DefAutoload name), (DefAutoload name loadname),
% (DefAutoload name loadname fntype), or
% (DefAutoload name loadname fntype numargs)
%
% Default is 1 Arg EXPR in module of same name
%
begin scalar Name, NumArgs, LoadName, FnType;
    U := rest U;
    Name := first U;
    U := rest U;
    if not null U then
    <<  LoadName := first U;
	U :=rest U >>
    else LoadName := Name;
    if EqCar(Name, 'QUOTE) then Name := second Name;
    if EqCar(LoadName, 'QUOTE) then LoadName := second LoadName;
    if not null U then
    <<  FnType := first U;
	U := rest U >>
    else FnType := 'EXPR;
    if not null U then
	NumArgs := first U
    else NumArgs := 1;
    NumArgs := MakeArgList NumArgs;
    return list('PutD, MkQuote Name,
		       MkQuote FnType,
		       list('function, list('lambda, NumArgs,
					    list('load, LoadName),
					    list('Apply, MkQuote Name,
						     'list . NumArgs))));
end;

lisp procedure MakeArgList N;
    GetV('[() (X1) (X1 X2) (X1 X2 X3) (X1 X2 X3 X4) (X1 X2 X3 X4 X5)],
	 N);

>>;

DefAutoload PrettyPrint;

DefAutoload(DefStruct, DefStruct, FEXPR);

DefAutoload(Step);

DefAutoload Mini;

DefAutoload('Help, 'Help, FEXPR);

DefAutoload(Emode, Emode, EXPR, 0);

DefAutoload(Invoke, Mini);

PUT('CREF ,'SIMPFG ,'((T (CREFON)) (NIL (CREFOFF))));

DefAutoload(CrefOn, RCref, EXPR, 0);

put('Syslisp,
    'SimpFg,
    '((T (load Syslisp))));

DefAutoload(CompD, Compiler, EXPR, 3);

DefAutoload(FaslOUT, Compiler);

if_system(Tops20, <<

DefAutoload(Bug, Bug, EXPR, 0);

DefAutoload(MM, Exec, EXPR, 0);

DefAutoload(Exec, Exec, EXPR, 0);

>>);

END;
