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 |
|
|
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 |
} |
} |
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 |
} |
} |
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)) |
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 |
|
|
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 |
|
|