/[gcl]/gcl/o/list.d
ViewVC logotype

Diff of /gcl/o/list.d

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.12 by camm, Mon Sep 30 05:12:03 2002 UTC revision 1.13 by camm, Tue Oct 1 04:37:33 2002 UTC
# Line 26  Foundation, 675 Mass Ave, Cambridge, MA Line 26  Foundation, 675 Mass Ave, Cambridge, MA
26    
27  #include "include.h"  #include "include.h"
28    
29    static int reverse_comparison;
30    
31    #define TARG1(a,b) (reverse_comparison ? (b) : (a))
32    #define TARG2(a,b) (reverse_comparison ? (a) : (b))
33    
34  object sKinitial_element;  object sKinitial_element;
35    
# Line 66  object x; Line 70  object x;
70          object b;          object b;
71    
72          vs_push((*kf)(x));          vs_push((*kf)(x));
73          b = ifuncall2(test_function, item_compared, vs_head);          b = ifuncall2(test_function,
74                    TARG1(item_compared, vs_head),
75                    TARG2(item_compared, vs_head));
76          vs_popp;          vs_popp;
77          return(b != Cnil);          return(b != Cnil);
78  }  }
# Line 78  object x; Line 84  object x;
84          object b;          object b;
85    
86          vs_push((*kf)(x));          vs_push((*kf)(x));
87          b = ifuncall2(test_function, item_compared, vs_head);          b = ifuncall2(test_function,
88                    TARG1(item_compared, vs_head),
89                    TARG2(item_compared, vs_head));
90          vs_popp;          vs_popp;
91          return(b == Cnil);          return(b == Cnil);
92  }  }
# Line 1164  check_alist(alist) Line 1172  check_alist(alist)
1172    
1173  PREDICATE(Lmember, Lmember_if, Lmember_if_not, 2)  PREDICATE(Lmember, Lmember_if, Lmember_if_not, 2)
1174    
1175  @(defun member1 (item list &key test test_not key)  @(defun member1 (item list &key test test_not key rev)
1176          saveTEST;          saveTEST;
1177  @  @
1178          protectTEST;          protectTEST;
1179          if (key != Cnil)          if (key != Cnil)
1180                  item = ifuncall1(key, item);                  item = ifuncall1(key, item);
1181            if (rev != Cnil)
1182                    reverse_comparison=1;
1183          setupTEST(item, test, test_not, key);          setupTEST(item, test, test_not, key);
1184          while (!endp(list)) {          while (!endp(list)) {
1185                  if (TEST(list->c.c_car))                  if (TEST(list->c.c_car))
# Line 1177  PREDICATE(Lmember, Lmember_if, Lmember_i Line 1187  PREDICATE(Lmember, Lmember_if, Lmember_i
1187                  list = list->c.c_cdr;                  list = list->c.c_cdr;
1188          }          }
1189          restoreTEST;          restoreTEST;
1190            reverse_comparison=0;
1191          @(return list)          @(return list)
1192  @)  @)
1193    
# Line 1340  init_list_function() Line 1351  init_list_function()
1351          sKtest = make_keyword("TEST");          sKtest = make_keyword("TEST");
1352          sKtest_not = make_keyword("TEST-NOT");          sKtest_not = make_keyword("TEST-NOT");
1353          sKkey = make_keyword("KEY");          sKkey = make_keyword("KEY");
1354            sKrev = make_keyword("REV");
1355    
1356          sKinitial_element = make_keyword("INITIAL-ELEMENT");          sKinitial_element = make_keyword("INITIAL-ELEMENT");
1357    

Legend:
Removed from v.1.12  
changed lines
  Added in v.1.13

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26