mirror of
https://github.com/justinethier/cyclone.git
synced 2025-07-04 03:36:34 +02:00
Added safe cxr macros
This commit is contained in:
parent
3cceb2f84c
commit
129f02d70d
2 changed files with 58 additions and 28 deletions
|
@ -501,6 +501,36 @@ typedef pair_type *pair;
|
|||
#define cdddar(x) (cdr(cdr(cdr(car(x)))))
|
||||
#define cddddr(x) (cdr(cdr(cdr(cdr(x)))))
|
||||
|
||||
// Safe versions of the above:
|
||||
#define Cyc_caar(d, x) (Cyc_car(d, Cyc_car(d, x)))
|
||||
#define Cyc_cadr(d, x) (Cyc_car(d, Cyc_cdr(d, x)))
|
||||
#define Cyc_cdar(d, x) (Cyc_cdr(d, Cyc_car(d, x)))
|
||||
#define Cyc_cddr(d, x) (Cyc_cdr(d, Cyc_cdr(d, x)))
|
||||
#define Cyc_caaar(d, x) (Cyc_car(d, Cyc_car(d, Cyc_car(d, x))))
|
||||
#define Cyc_caadr(d, x) (Cyc_car(d, Cyc_car(d, Cyc_cdr(d, x))))
|
||||
#define Cyc_cadar(d, x) (Cyc_car(d, Cyc_cdr(d, Cyc_car(d, x))))
|
||||
#define Cyc_caddr(d, x) (Cyc_car(d, Cyc_cdr(d, Cyc_cdr(d, x))))
|
||||
#define Cyc_cdaar(d, x) (Cyc_cdr(d, Cyc_car(d, Cyc_car(d, x))))
|
||||
#define Cyc_cdadr(d, x) (Cyc_cdr(d, Cyc_car(d, Cyc_cdr(d, x))))
|
||||
#define Cyc_cddar(d, x) (Cyc_cdr(d, Cyc_cdr(d, Cyc_car(d, x))))
|
||||
#define Cyc_cdddr(d, x) (Cyc_cdr(d, Cyc_cdr(d, Cyc_cdr(d, x))))
|
||||
#define Cyc_caaaar(d, x) (Cyc_car(d, Cyc_car(d, Cyc_car(d, Cyc_car(d, x)))))
|
||||
#define Cyc_caaadr(d, x) (Cyc_car(d, Cyc_car(d, Cyc_car(d, Cyc_cdr(d, x)))))
|
||||
#define Cyc_caadar(d, x) (Cyc_car(d, Cyc_car(d, Cyc_cdr(d, Cyc_car(d, x)))))
|
||||
#define Cyc_caaddr(d, x) (Cyc_car(d, Cyc_car(d, Cyc_cdr(d, Cyc_cdr(d, x)))))
|
||||
#define Cyc_cadaar(d, x) (Cyc_car(d, Cyc_cdr(d, Cyc_car(d, Cyc_car(d, x)))))
|
||||
#define Cyc_cadadr(d, x) (Cyc_car(d, Cyc_cdr(d, Cyc_car(d, Cyc_cdr(d, x)))))
|
||||
#define Cyc_caddar(d, x) (Cyc_car(d, Cyc_cdr(d, Cyc_cdr(d, Cyc_car(d, x)))))
|
||||
#define Cyc_cadddr(d, x) (Cyc_car(d, Cyc_cdr(d, Cyc_cdr(d, Cyc_cdr(d, x)))))
|
||||
#define Cyc_cdaaar(d, x) (Cyc_cdr(d, Cyc_car(d, Cyc_car(d, Cyc_car(d, x)))))
|
||||
#define Cyc_cdaadr(d, x) (Cyc_cdr(d, Cyc_car(d, Cyc_car(d, Cyc_cdr(d, x)))))
|
||||
#define Cyc_cdadar(d, x) (Cyc_cdr(d, Cyc_car(d, Cyc_cdr(d, Cyc_car(d, x)))))
|
||||
#define Cyc_cdaddr(d, x) (Cyc_cdr(d, Cyc_car(d, Cyc_cdr(d, Cyc_cdr(d, x)))))
|
||||
#define Cyc_cddaar(d, x) (Cyc_cdr(d, Cyc_cdr(d, Cyc_car(d, Cyc_car(d, x)))))
|
||||
#define Cyc_cddadr(d, x) (Cyc_cdr(d, Cyc_cdr(d, Cyc_car(d, Cyc_cdr(d, x)))))
|
||||
#define Cyc_cdddar(d, x) (Cyc_cdr(d, Cyc_cdr(d, Cyc_cdr(d, Cyc_car(d, x)))))
|
||||
#define Cyc_cddddr(d, x) (Cyc_cdr(d, Cyc_cdr(d, Cyc_cdr(d, Cyc_cdr(d, x)))))
|
||||
|
||||
/* Closure types */
|
||||
|
||||
typedef struct {
|
||||
|
|
56
runtime.c
56
runtime.c
|
@ -2509,196 +2509,196 @@ void _caar(void *data, object cont, object args)
|
|||
{
|
||||
Cyc_check_num_args(data, "caar", 1, args);
|
||||
Cyc_check_pair(data, car(args));
|
||||
return_closcall1(data, cont, caar(car(args)));
|
||||
return_closcall1(data, cont, Cyc_caar(data, car(args)));
|
||||
}
|
||||
|
||||
void _cadr(void *data, object cont, object args)
|
||||
{
|
||||
Cyc_check_num_args(data, "cadr", 1, args);
|
||||
Cyc_check_pair(data, car(args));
|
||||
return_closcall1(data, cont, cadr(car(args)));
|
||||
return_closcall1(data, cont, Cyc_cadr(data, car(args)));
|
||||
}
|
||||
|
||||
void _cdar(void *data, object cont, object args)
|
||||
{
|
||||
Cyc_check_num_args(data, "cdar", 1, args);
|
||||
Cyc_check_pair(data, car(args));
|
||||
return_closcall1(data, cont, cdar(car(args)));
|
||||
return_closcall1(data, cont, Cyc_cdar(data, car(args)));
|
||||
}
|
||||
|
||||
void _cddr(void *data, object cont, object args)
|
||||
{
|
||||
Cyc_check_num_args(data, "cddr", 1, args);
|
||||
Cyc_check_pair(data, car(args));
|
||||
return_closcall1(data, cont, cddr(car(args)));
|
||||
return_closcall1(data, cont, Cyc_cddr(data, car(args)));
|
||||
}
|
||||
|
||||
void _caaar(void *data, object cont, object args)
|
||||
{
|
||||
Cyc_check_num_args(data, "caaar", 1, args);
|
||||
Cyc_check_pair(data, car(args));
|
||||
return_closcall1(data, cont, caaar(car(args)));
|
||||
return_closcall1(data, cont, Cyc_caaar(data, car(args)));
|
||||
}
|
||||
|
||||
void _caadr(void *data, object cont, object args)
|
||||
{
|
||||
Cyc_check_num_args(data, "caadr", 1, args);
|
||||
Cyc_check_pair(data, car(args));
|
||||
return_closcall1(data, cont, caadr(car(args)));
|
||||
return_closcall1(data, cont, Cyc_caadr(data, car(args)));
|
||||
}
|
||||
|
||||
void _cadar(void *data, object cont, object args)
|
||||
{
|
||||
Cyc_check_num_args(data, "cadar", 1, args);
|
||||
Cyc_check_pair(data, car(args));
|
||||
return_closcall1(data, cont, cadar(car(args)));
|
||||
return_closcall1(data, cont, Cyc_cadar(data, car(args)));
|
||||
}
|
||||
|
||||
void _caddr(void *data, object cont, object args)
|
||||
{
|
||||
Cyc_check_num_args(data, "caddr", 1, args);
|
||||
Cyc_check_pair(data, car(args));
|
||||
return_closcall1(data, cont, caddr(car(args)));
|
||||
return_closcall1(data, cont, Cyc_caddr(data, car(args)));
|
||||
}
|
||||
|
||||
void _cdaar(void *data, object cont, object args)
|
||||
{
|
||||
Cyc_check_num_args(data, "cdaar", 1, args);
|
||||
Cyc_check_pair(data, car(args));
|
||||
return_closcall1(data, cont, cdaar(car(args)));
|
||||
return_closcall1(data, cont, Cyc_cdaar(data, car(args)));
|
||||
}
|
||||
|
||||
void _cdadr(void *data, object cont, object args)
|
||||
{
|
||||
Cyc_check_num_args(data, "cdadr", 1, args);
|
||||
Cyc_check_pair(data, car(args));
|
||||
return_closcall1(data, cont, cdadr(car(args)));
|
||||
return_closcall1(data, cont, Cyc_cdadr(data, car(args)));
|
||||
}
|
||||
|
||||
void _cddar(void *data, object cont, object args)
|
||||
{
|
||||
Cyc_check_num_args(data, "cddar", 1, args);
|
||||
Cyc_check_pair(data, car(args));
|
||||
return_closcall1(data, cont, cddar(car(args)));
|
||||
return_closcall1(data, cont, Cyc_cddar(data, car(args)));
|
||||
}
|
||||
|
||||
void _cdddr(void *data, object cont, object args)
|
||||
{
|
||||
Cyc_check_num_args(data, "cdddr", 1, args);
|
||||
Cyc_check_pair(data, car(args));
|
||||
return_closcall1(data, cont, cdddr(car(args)));
|
||||
return_closcall1(data, cont, Cyc_cdddr(data, car(args)));
|
||||
}
|
||||
|
||||
void _caaaar(void *data, object cont, object args)
|
||||
{
|
||||
Cyc_check_num_args(data, "caaaar", 1, args);
|
||||
Cyc_check_pair(data, car(args));
|
||||
return_closcall1(data, cont, caaaar(car(args)));
|
||||
return_closcall1(data, cont, Cyc_caaaar(data, car(args)));
|
||||
}
|
||||
|
||||
void _caaadr(void *data, object cont, object args)
|
||||
{
|
||||
Cyc_check_num_args(data, "caaadr", 1, args);
|
||||
Cyc_check_pair(data, car(args));
|
||||
return_closcall1(data, cont, caaadr(car(args)));
|
||||
return_closcall1(data, cont, Cyc_caaadr(data, car(args)));
|
||||
}
|
||||
|
||||
void _caadar(void *data, object cont, object args)
|
||||
{
|
||||
Cyc_check_num_args(data, "caadar", 1, args);
|
||||
Cyc_check_pair(data, car(args));
|
||||
return_closcall1(data, cont, caadar(car(args)));
|
||||
return_closcall1(data, cont, Cyc_caadar(data, car(args)));
|
||||
}
|
||||
|
||||
void _caaddr(void *data, object cont, object args)
|
||||
{
|
||||
Cyc_check_num_args(data, "caaddr", 1, args);
|
||||
Cyc_check_pair(data, car(args));
|
||||
return_closcall1(data, cont, caaddr(car(args)));
|
||||
return_closcall1(data, cont, Cyc_caaddr(data, car(args)));
|
||||
}
|
||||
|
||||
void _cadaar(void *data, object cont, object args)
|
||||
{
|
||||
Cyc_check_num_args(data, "cadaar", 1, args);
|
||||
Cyc_check_pair(data, car(args));
|
||||
return_closcall1(data, cont, cadaar(car(args)));
|
||||
return_closcall1(data, cont, Cyc_cadaar(data, car(args)));
|
||||
}
|
||||
|
||||
void _cadadr(void *data, object cont, object args)
|
||||
{
|
||||
Cyc_check_num_args(data, "cadadr", 1, args);
|
||||
Cyc_check_pair(data, car(args));
|
||||
return_closcall1(data, cont, cadadr(car(args)));
|
||||
return_closcall1(data, cont, Cyc_cadadr(data, car(args)));
|
||||
}
|
||||
|
||||
void _caddar(void *data, object cont, object args)
|
||||
{
|
||||
Cyc_check_num_args(data, "caddar", 1, args);
|
||||
Cyc_check_pair(data, car(args));
|
||||
return_closcall1(data, cont, caddar(car(args)));
|
||||
return_closcall1(data, cont, Cyc_caddar(data, car(args)));
|
||||
}
|
||||
|
||||
void _cadddr(void *data, object cont, object args)
|
||||
{
|
||||
Cyc_check_num_args(data, "cadddr", 1, args);
|
||||
Cyc_check_pair(data, car(args));
|
||||
return_closcall1(data, cont, cadddr(car(args)));
|
||||
return_closcall1(data, cont, Cyc_cadddr(data, car(args)));
|
||||
}
|
||||
|
||||
void _cdaaar(void *data, object cont, object args)
|
||||
{
|
||||
Cyc_check_num_args(data, "cdaaar", 1, args);
|
||||
Cyc_check_pair(data, car(args));
|
||||
return_closcall1(data, cont, cdaaar(car(args)));
|
||||
return_closcall1(data, cont, Cyc_cdaaar(data, car(args)));
|
||||
}
|
||||
|
||||
void _cdaadr(void *data, object cont, object args)
|
||||
{
|
||||
Cyc_check_num_args(data, "cdaadr", 1, args);
|
||||
Cyc_check_pair(data, car(args));
|
||||
return_closcall1(data, cont, cdaadr(car(args)));
|
||||
return_closcall1(data, cont, Cyc_cdaadr(data, car(args)));
|
||||
}
|
||||
|
||||
void _cdadar(void *data, object cont, object args)
|
||||
{
|
||||
Cyc_check_num_args(data, "cdadar", 1, args);
|
||||
Cyc_check_pair(data, car(args));
|
||||
return_closcall1(data, cont, cdadar(car(args)));
|
||||
return_closcall1(data, cont, Cyc_cdadar(data, car(args)));
|
||||
}
|
||||
|
||||
void _cdaddr(void *data, object cont, object args)
|
||||
{
|
||||
Cyc_check_num_args(data, "cdaddr", 1, args);
|
||||
Cyc_check_pair(data, car(args));
|
||||
return_closcall1(data, cont, cdaddr(car(args)));
|
||||
return_closcall1(data, cont, Cyc_cdaddr(data, car(args)));
|
||||
}
|
||||
|
||||
void _cddaar(void *data, object cont, object args)
|
||||
{
|
||||
Cyc_check_num_args(data, "cddaar", 1, args);
|
||||
Cyc_check_pair(data, car(args));
|
||||
return_closcall1(data, cont, cddaar(car(args)));
|
||||
return_closcall1(data, cont, Cyc_cddaar(data, car(args)));
|
||||
}
|
||||
|
||||
void _cddadr(void *data, object cont, object args)
|
||||
{
|
||||
Cyc_check_num_args(data, "cddadr", 1, args);
|
||||
Cyc_check_pair(data, car(args));
|
||||
return_closcall1(data, cont, cddadr(car(args)));
|
||||
return_closcall1(data, cont, Cyc_cddadr(data, car(args)));
|
||||
}
|
||||
|
||||
void _cdddar(void *data, object cont, object args)
|
||||
{
|
||||
Cyc_check_num_args(data, "cdddar", 1, args);
|
||||
Cyc_check_pair(data, car(args));
|
||||
return_closcall1(data, cont, cdddar(car(args)));
|
||||
return_closcall1(data, cont, Cyc_cdddar(data, car(args)));
|
||||
}
|
||||
|
||||
void _cddddr(void *data, object cont, object args)
|
||||
{
|
||||
Cyc_check_num_args(data, "cddddr", 1, args);
|
||||
Cyc_check_pair(data, car(args));
|
||||
return_closcall1(data, cont, cddddr(car(args)));
|
||||
return_closcall1(data, cont, Cyc_cddddr(data, car(args)));
|
||||
}
|
||||
|
||||
void _cons(void *data, object cont, object args)
|
||||
|
|
Loading…
Add table
Reference in a new issue