core: assq: Prepare for M2-Planet.
* src/mes.c (assq): Prepare for M2-Planet.
This commit is contained in:
parent
4c83a3bc6b
commit
673ca85c64
35
src/mes.c
35
src/mes.c
|
@ -244,26 +244,41 @@ assq (SCM x, SCM a)
|
||||||
if (TYPE (a) != TPAIR)
|
if (TYPE (a) != TPAIR)
|
||||||
return cell_f;
|
return cell_f;
|
||||||
int t = TYPE (x);
|
int t = TYPE (x);
|
||||||
|
|
||||||
if (t == TSYMBOL || t == TSPECIAL)
|
if (t == TSYMBOL || t == TSPECIAL)
|
||||||
while (a != cell_nil && x != CAAR (a))
|
while (a != cell_nil)
|
||||||
a = CDR (a);
|
{
|
||||||
|
if (x == CAAR (a))
|
||||||
|
return CAR (a);
|
||||||
|
a = CDR (a);
|
||||||
|
}
|
||||||
else if (t == TCHAR || t == TNUMBER)
|
else if (t == TCHAR || t == TNUMBER)
|
||||||
{
|
{
|
||||||
long v = VALUE (x);
|
long v = VALUE (x);
|
||||||
while (a != cell_nil && v != VALUE (CAAR (a)))
|
while (a != cell_nil)
|
||||||
a = CDR (a);
|
{
|
||||||
|
if (v == VALUE (CAAR (a)))
|
||||||
|
return CAR (a);
|
||||||
|
a = CDR (a);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (t == TKEYWORD)
|
else if (t == TKEYWORD)
|
||||||
{
|
{
|
||||||
while (a != cell_nil && string_equal_p (x, CAAR (a)) == cell_f)
|
while (a != cell_nil)
|
||||||
a = CDR (a);
|
{
|
||||||
|
if (string_equal_p (x, CAAR (a)) == cell_t)
|
||||||
|
return CAR (a);
|
||||||
|
a = CDR (a);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
/* pointer equality, e.g. on strings. */
|
/* pointer equality, e.g. on strings. */
|
||||||
while (a != cell_nil && x != CAAR (a))
|
while (a != cell_nil)
|
||||||
a = CDR (a);
|
{
|
||||||
if (a != cell_nil)
|
if (x == CAAR (a))
|
||||||
return CAR (a);
|
return CAR (a);
|
||||||
|
a = CDR (a);
|
||||||
|
}
|
||||||
return cell_f;
|
return cell_f;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue