[BACK]Return to list.c CVS log [TXT][DIR] Up to [local] / OpenXM_contrib2 / asir2000 / builtin

Diff for /OpenXM_contrib2/asir2000/builtin/list.c between version 1.9 and 1.10

version 1.9, 2004/06/29 15:06:28 version 1.10, 2004/08/25 05:43:35
Line 45 
Line 45 
  * DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE,   * DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE,
  * PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE.   * PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE.
  *   *
  * $OpenXM: OpenXM_contrib2/asir2000/builtin/list.c,v 1.8 2004/06/22 13:40:44 ohara Exp $   * $OpenXM: OpenXM_contrib2/asir2000/builtin/list.c,v 1.9 2004/06/29 15:06:28 ohara Exp $
 */  */
 #include "ca.h"  #include "ca.h"
 #include "parse.h"  #include "parse.h"
   
 void Pcar(), Pcdr(), Pcons(), Pappend(), Preverse(), Plength();  void Pcar(), Pcdr(), Pcons(), Pappend(), Preverse(), Plength();
 void Plist(), Passoc();  void Plist(), Passoc(), Pcadr(), Pcddr();
 void Pnconc(), Preplcd(), Preplca();  void Pnconc(), Preplcd(), Preplca();
   
 struct ftab list_tab[] = {  struct ftab list_tab[] = {
Line 66  struct ftab list_tab[] = {
Line 66  struct ftab list_tab[] = {
         {"replca",Preplca,2},          {"replca",Preplca,2},
         {"list", Plist, -99999999},          {"list", Plist, -99999999},
         {"assoc",Passoc,2},          {"assoc",Passoc,2},
           {"cddr",Pcddr,1},
           {"cadr",Pcadr,1},
         {0,0,0},          {0,0,0},
 };  };
   
Line 89  LIST *rp;
Line 91  LIST *rp;
                 *rp = (LIST)ARG0(arg);                  *rp = (LIST)ARG0(arg);
         else          else
                 MKLIST(*rp,NEXT(BDY((LIST)ARG0(arg))));                  MKLIST(*rp,NEXT(BDY((LIST)ARG0(arg))));
   }
   
   void Pcddr(arg,rp)
   NODE arg;
   LIST *rp;
   {
       NODE n;
       asir_assert(ARG0(arg),O_LIST,"cddr");
       if ( !BDY((LIST)ARG0(arg)) ) {
           *rp = (LIST)ARG0(arg);
       }else {
           n = NEXT(BDY((LIST)ARG0(arg)));
           if ( n ) {
               n = NEXT(n);
           }
           MKLIST(*rp,n);
       }
   }
   
   void Pcadr(arg,rp)
   NODE arg;
   pointer *rp;
   {
       NODE n;
       LIST t;
       asir_assert(ARG0(arg),O_LIST,"cadr");
       if ( !BDY((LIST)ARG0(arg)) ) {
           *rp = ARG0(arg);
       }else {
           n = NEXT(BDY((LIST)ARG0(arg)));
           if ( n ) {
               *rp = (pointer)BDY(n);
           }else {
               MKLIST(t,n);
               *rp = t;
           }
       }
 }  }
   
 void Pcons(arg,rp)  void Pcons(arg,rp)

Legend:
Removed from v.1.9  
changed lines
  Added in v.1.10

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>