entry.nred 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274
  1. COMMENT This file sets up necessary entry points for autoloading modules
  2. in Reduce. It uses a modified version of the Defautoload function
  3. of Eric Benson;
  4. SYMBOLIC MACRO PROCEDURE DEFAUTOLOAD U;
  5. % (DEFAUTOLOAD name), (DEFAUTOLOAD name loadname),
  6. % (DEFAUTOLOAD name loadname fntype), or
  7. % (DEFAUTOLOAD name loadname fntype numargs)
  8. % Default is 1 Arg EXPR in module of same name;
  9. BEGIN SCALAR NAME, NUMARGS, LOADNAME, FNTYPE;
  10. U := CDR U;
  11. NAME := CAR U;
  12. U := CDR U;
  13. IF U THEN <<LOADNAME := CAR U; U :=CDR U>> ELSE LOADNAME := NAME;
  14. IF EQCAR(NAME, 'QUOTE) THEN NAME := CADR NAME;
  15. IF ATOM LOADNAME THEN LOADNAME := LIST LOADNAME
  16. ELSE IF CAR LOADNAME EQ 'QUOTE THEN LOADNAME := CADR LOADNAME;
  17. FOR EACH J IN LOADNAME
  18. COLLECT IF IDP J THEN LIST('RED3!:,(J . 'FAP)) ELSE J;
  19. IF U THEN <<FNTYPE := CAR U; U := CDR U>> ELSE FNTYPE := 'EXPR;
  20. IF U THEN NUMARGS := CAR U ELSE NUMARGS := 1;
  21. NUMARGS := IF NUMARGS=0 THEN NIL
  22. ELSE IF NUMARGS=1 THEN '(X1)
  23. ELSE IF NUMARGS=2 THEN '(X1 X2)
  24. ELSE IF NUMARGS=3 THEN '(X1 X2 X3)
  25. ELSE IF NUMARGS=4 THEN '(X1 X2 X3 X4)
  26. ELSE ERROR(99,LIST(NUMARGS,"too large in DEFAUTOLOAD"));
  27. RETURN
  28. LIST('PUTD,
  29. MKQUOTE NAME,
  30. MKQUOTE FNTYPE,
  31. MKQUOTE LIST('LAMBDA, NUMARGS,
  32. 'PROGN .
  33. ACONC(FOR EACH J IN LOADNAME
  34. COLLECT LIST('LOAD!-MODULE,MKQUOTE J),
  35. LIST('APPLY,
  36. MKQUOTE NAME,
  37. 'LIST . NUMARGS))))
  38. END;
  39. COMMENT Actual Entry Point Definitions;
  40. %input editor entry points;
  41. DEFAUTOLOAD CEDIT;
  42. DEFAUTOLOAD(DISPLAY,CEDIT);
  43. PUT('DISPLAY,'STAT,'RLIS);
  44. DEFAUTOLOAD(EDITDEF,CEDIT);
  45. PUT('EDITDEF,'STAT,'RLIS);
  46. DEFAUTOLOAD(EDITDEF1,CEDIT);
  47. %Compiler and LAP entry points;
  48. %DEFAUTOLOAD(COMPD,'(LAP COMPLR CMACRO),EXPR,3);
  49. %DEFAUTOLOAD(COMPILE,'(LAP COMPLR CMACRO));
  50. DEFAUTOLOAD(LAP,'(LAP COMPILER CMACRO));
  51. %Cross-reference module entry points;
  52. PUT('CREF ,'SIMPFG ,'((T (CREFON)) (NIL (CREFOFF))));
  53. DEFAUTOLOAD(CREFON,'(RCREF REDIO),EXPR,0);
  54. %Factorizer module entry points;
  55. REMPROP('FACTOR,'STAT);
  56. DEFAUTOLOAD(EZGCDF,FACTOR,EXPR,2);
  57. DEFAUTOLOAD(FACTORF,FACTOR);
  58. DEFAUTOLOAD(SIMPFACTORIZE,FACTOR);
  59. PUT('FACTORIZE,'SIMPFN,'SIMPFACTORIZE);
  60. DEFAUTOLOAD(SIMPNPRIMITIVE,FACTOR);
  61. PUT('NPRIMITIVE,'SIMPFN,'SIMPNPRIMITIVE);
  62. DEFAUTOLOAD(SIMPRESULTANT,FACTOR);
  63. PUT('RESULTANT,'SIMPFN,'SIMPRESULTANT);
  64. PUT('FACTOR,'STAT,'RLIS);
  65. %FASL module entry points;
  66. REMPROP('FASLOUT,'STAT);
  67. DEFAUTOLOAD(FASLOUT,'(LAP COMPLR CMACRO FAP));
  68. PUT('FASLOUT,'STAT,'RLIS);
  69. %Help module entry points (not yet available);
  70. %REMFLAG('(HELP),'GO);
  71. %REMPROP('HELP,'STAT);
  72. %DEFAUTOLOAD HELP;
  73. %FLAG('(HELP),'GO);
  74. %PUT('HELP,'STAT,'RLIS);
  75. %Part module entry points;
  76. DEFAUTOLOAD(ARGLENGTH,PART);
  77. FLAG('(ARGLENGTH),'OPFN);
  78. DEFAUTOLOAD(SIMPPART,PART);
  79. PUT('PART,'SIMPFN,'SIMPPART);
  80. DEFAUTOLOAD(SIMPSETPART,PART);
  81. PUT('SETPART!*,'SIMPFN,'SIMPSETPART);
  82. PUT('PART,'SETQFN,'SETPART!*);
  83. %Prettyprint module entry point;
  84. DEFAUTOLOAD(PRETTYPRINT,PRETTY);
  85. %Matrix module entry points;
  86. DEFAUTOLOAD(DETQ,MATR);
  87. DEFAUTOLOAD(LETMTR,MATR,EXPR,3);
  88. DEFAUTOLOAD(MAPC2,MATR,EXPR,2); %used by SOLVE;
  89. DEFAUTOLOAD(MATSM!*,MATR);
  90. DEFAUTOLOAD(SIMPDET,MATR);
  91. PUT('DET,'SIMPFN,'SIMPDET);
  92. DEFAUTOLOAD(SIMPTRACE,MATR);
  93. PUT('TRACE,'SIMPFN,'SIMPTRACE);
  94. %META module entry point (not yet available);
  95. %DEFAUTOLOAD META;
  96. %Rprint module entry point;
  97. DEFAUTOLOAD RPRINT;
  98. %SOLVE module entry point;
  99. DEFAUTOLOAD(SIMPSOLVE,'(MATR SOLVE));
  100. PUT('SOLVE,'SIMPFN,'SIMPSOLVE);
  101. %High energy physics module entry points;
  102. REMPROP('INDEX,'STAT); REMPROP('MASS,'STAT);
  103. REMPROP('MSHELL,'STAT); REMPROP('VECDIM,'STAT);
  104. REMPROP('VECTOR,'STAT);
  105. DEFAUTOLOAD(INDEX,HEPHYS);
  106. DEFAUTOLOAD(MASS,HEPHYS);
  107. DEFAUTOLOAD(MSHELL,HEPHYS);
  108. DEFAUTOLOAD(VECDIM,HEPHYS);
  109. DEFAUTOLOAD(VECTOR,HEPHYS);
  110. PUT('INDEX,'STAT,'RLIS);
  111. PUT('MSHELL,'STAT,'RLIS);
  112. PUT('MASS,'STAT,'RLIS);
  113. PUT('VECDIM,'STAT,'RLIS);
  114. PUT('VECTOR,'STAT,'RLIS);
  115. FLAGOP NONCOM,NOSPUR;
  116. %Integrator module entry point;
  117. DEFAUTOLOAD(SIMPINT,INT);
  118. PUT('INT,'SIMPFN,'SIMPINT);
  119. PUT('BIGFLOAT,'MODULE!-NAME,'BFLOAT);
  120. %Debug module entry points;
  121. DEFAUTOLOAD(EMBFN,DEBUG,EXPR,3);
  122. %DEFAUTOLOAD(SU2SL,TRANS);
  123. % exec and system editor entry points;
  124. REMFLAG('(EXEC PUSH),'GO);
  125. IF SYSTEM!* NEQ 0 THEN
  126. <<REMPROP('CMD,'STAT);
  127. REMPROP('EDIT,'STAT);
  128. REMPROP('CREATE,'STAT);
  129. REMPROP('EXEC,'STAT);
  130. REMPROP('PUSH,'STAT);
  131. DEFAUTOLOAD(EXEC,EXEC,EXPR,0);
  132. DEFAUTOLOAD(PUSH,EXEC,EXPR,0);
  133. DEFAUTOLOAD(CREATE,'(EXEC EDIT),EXPR,0);
  134. DEFAUTOLOAD(EDIT1,'(EXEC EDIT),EXPR,2);
  135. DEFAUTOLOAD(CMD,'(EXEC EDIT),EXPR,0);
  136. DEFAUTOLOAD(EDITSTAT,'(EXEC EDIT),EXPR,0);
  137. DEFAUTOLOAD(PINSTAT,EXEC,EXPR,0);
  138. PUT('CMD,'STAT,'EDITSTAT);
  139. PUT('EXEC,'STAT,'PINSTAT);
  140. PUT('PUSH,'STAT,'PINSTAT);
  141. PUT('CREATE,'STAT,'PINSTAT);
  142. PUT('EDIT,'STAT,'EDITSTAT);
  143. FLAG('(EXEC PUSH CREATE),'IGNORE);
  144. FLAG('(CMD EDIT),'EVAL);
  145. %FLAG('(EXEC PUSH),'GO);
  146. >>;
  147. END;