4.3BSD/usr/lib/lisp/fcninfo.l

(setq rcs-fcninfo- "$Header: fcninfo.l,v 1.2 84/01/29 23:39:00 layer Exp $")

;;
;; fcninfo.l				-[Sun Jan 29 23:38:10 1984 by layer]-
;;
;; This is normally not loaded into a lisp system but is loaded into
;; the compiler.  
;; number of arguments information for C coded functions
;; not included: evalframe evalhook wait exece
;; stopped in sysat.c after *invmod
;
;; the information is stored in such as way as to minimize the
;; amount of space required to store the informaion.


(eval-when (compile eval)
   (setq cdescrip " defined in C-coded kernel"))

(defmacro decl-fcn-info (tag fcns)
   `(let ((fcninfo ',tag))
       ,@(mapcar '(lambda (fcn) `(putprop ',fcn fcninfo 'fcn-info)) fcns)))
(defmacro zero (&rest args)
   `(decl-fcn-info ((0 . 0) ,cdescrip) ,args))	
(defmacro zero-to-one (&rest args)
   `(decl-fcn-info ((0 . 1) ,cdescrip) ,args))
(defmacro zero-to-two (&rest args)
   `(decl-fcn-info ((0 . 2) ,cdescrip) ,args))
(defmacro zero-to-inf (&rest args)
   `(decl-fcn-info (nil ,cdescrip) ,args))
(defmacro one (&rest args)
   `(decl-fcn-info ((1 . 1) ,cdescrip) ,args))
(defmacro one-to-two (&rest args)
   `(decl-fcn-info ((1 . 2) ,cdescrip) ,args))
(defmacro one-to-three (&rest args)
   `(decl-fcn-info ((1 . 3) ,cdescrip) ,args))
(defmacro one-to-inf (&rest args)
   `(decl-fcn-info ((1 . nil) ,cdescrip) ,args))
(defmacro two (&rest args)
   `(decl-fcn-info ((2 . 2) ,cdescrip) ,args))
(defmacro two-to-inf (&rest args)
   `(decl-fcn-info ((1 . nil) ,cdescrip) ,args))
(defmacro three (&rest args)
   `(decl-fcn-info ((3 . 3) ,cdescrip) ,args))
(defmacro three-to-five (&rest args)
   `(decl-fcn-info ((3 . 5) ,cdescrip) ,args))
(defmacro three-to-inf (&rest args)
   `(decl-fcn-info ((3 . nil) ,cdescrip) ,args))
(defmacro four (&rest args)
   `(decl-fcn-info ((4 . 4) ,cdescrip) ,args))
(defmacro five (&rest args)
   `(decl-fcn-info ((5 . 5) ,cdescrip) ,args))


(zero baktrace fork oblist ptime reset resetio zapline)
(zero-to-one arg close drain dumplisp exit
   gensym monitor nwritn random return terpr time-string tyipeek)
(zero-to-two err ratom read readc tyi)
(zero-to-inf + - * / and concat cond
   difference greaterp lessp list or plus product prog quotient setq
   sum times unconcat)
(one  1+ 1- absval add1
   aexplode aexplodec aexploden argv
   arrayp ascii asin acos atom bcdp
   bignum-to-list boundp car cdr chdir cos
   dtpr exp fact fake fix float frexp function get_pname getaccess getaux
   getd getdata getdelta
   getentry getenv getdisc getlength go haulong infile log 
   implode intern maknam maknum makunbound minus minusp
   not ncons null numberp onep plist pntlen portp ptr 
   quote readlist remob *rset sin sizeof stringp sub1 sqrt symbolp
   truename type valuep zerop)
(one-to-two errset flatc outfile patom print status tyo untyi)
(one-to-three fasl load process)
(one-to-inf funcall progv)
(two  allocate alphalessp
   arrayref assq atan bignum-leftshift *catch cons
   Divide eq equal freturn
   get haipart *invmod lsh
   mfunction mod *mod nthelem putaux putd
   putdata putdelta putdisc putlength
   remprop replace rot rplaca rplacd segment set setarg setplist scons
   signal sstatus sticky-bignum-leftshift *throw
   vref vrefi-byte vrefi-word vrefi-long)
   
(two-to-inf  apply def mapc mapcan mapcar mapcon maplist prog2)
(three putprop)
(three-to-five cfasl)
(three-to-inf boole)
(four Emuldiv)
(five marray)