add pic_sym macro

This commit is contained in:
Yuichi Nishiwaki 2016-02-23 02:37:33 +09:00
parent 229555fa83
commit e050da8af1
4 changed files with 9 additions and 8 deletions

View File

@ -10,7 +10,7 @@
static pic_value pic_compile(pic_state *, pic_value); static pic_value pic_compile(pic_state *, pic_value);
#define EQ(sym, lit) (strcmp(pic_str(pic, pic_sym_name(pic, sym)), lit) == 0) #define EQ(sym, lit) (strcmp(pic_sym(pic, sym), lit) == 0)
#define S(lit) (pic_intern_lit(pic, lit)) #define S(lit) (pic_intern_lit(pic, lit))
static void static void

View File

@ -122,6 +122,7 @@ double pic_float(pic_state *, pic_value f);
char pic_char(pic_state *, pic_value c); char pic_char(pic_state *, pic_value c);
#define pic_bool(pic,b) (! pic_false_p(pic, b)) #define pic_bool(pic,b) (! pic_false_p(pic, b))
const char *pic_str(pic_state *, pic_value str); const char *pic_str(pic_state *, pic_value str);
#define pic_sym(pic,s) (pic_str(pic, pic_sym_name(pic, (s))))
unsigned char *pic_blob(pic_state *, pic_value blob, int *len); unsigned char *pic_blob(pic_state *, pic_value blob, int *len);
void *pic_data(pic_state *, pic_value data); void *pic_data(pic_state *, pic_value data);

View File

@ -339,10 +339,10 @@ read_minus(pic_state *pic, xFILE *file, int c, struct reader_control *p)
} }
else { else {
sym = read_symbol(pic, file, c, p); sym = read_symbol(pic, file, c, p);
if (strcaseeq(pic_str(pic, pic_sym_name(pic, sym)), "-inf.0")) { if (strcaseeq(pic_sym(pic, sym), "-inf.0")) {
return pic_float_value(pic, -(1.0 / 0.0)); return pic_float_value(pic, -(1.0 / 0.0));
} }
if (strcaseeq(pic_str(pic, pic_sym_name(pic, sym)), "-nan.0")) { if (strcaseeq(pic_sym(pic, sym), "-nan.0")) {
return pic_float_value(pic, -(0.0 / 0.0)); return pic_float_value(pic, -(0.0 / 0.0));
} }
return sym; return sym;
@ -359,10 +359,10 @@ read_plus(pic_state *pic, xFILE *file, int c, struct reader_control *p)
} }
else { else {
sym = read_symbol(pic, file, c, p); sym = read_symbol(pic, file, c, p);
if (strcaseeq(pic_str(pic, pic_sym_name(pic, sym)), "+inf.0")) { if (strcaseeq(pic_sym(pic, sym), "+inf.0")) {
return pic_float_value(pic, 1.0 / 0.0); return pic_float_value(pic, 1.0 / 0.0);
} }
if (strcaseeq(pic_str(pic, pic_sym_name(pic, sym)), "+nan.0")) { if (strcaseeq(pic_sym(pic, sym), "+nan.0")) {
return pic_float_value(pic, 0.0 / 0.0); return pic_float_value(pic, 0.0 / 0.0);
} }
return sym; return sym;

View File

@ -195,7 +195,7 @@ write_pair_help(pic_state *pic, pic_value pair, xFILE *file, struct writer_contr
} }
} }
#define EQ(sym, lit) (strcmp(pic_str(pic, pic_sym_name(pic, sym)), lit) == 0) #define EQ(sym, lit) (strcmp(pic_sym(pic, sym), lit) == 0)
static void static void
write_pair(pic_state *pic, pic_value pair, xFILE *file, struct writer_control *p) write_pair(pic_state *pic, pic_value pair, xFILE *file, struct writer_control *p)
@ -273,7 +273,7 @@ write_dict(pic_state *pic, pic_value dict, xFILE *file, struct writer_control *p
xfprintf(pic, file, "#.(dictionary"); xfprintf(pic, file, "#.(dictionary");
while (pic_dict_next(pic, dict, &it, &key, &val)) { while (pic_dict_next(pic, dict, &it, &key, &val)) {
xfprintf(pic, file, " '%s ", pic_str(pic, pic_sym_name(pic, key))); xfprintf(pic, file, " '%s ", pic_sym(pic, key));
write_core(pic, val, file, p); write_core(pic, val, file, p);
} }
xfprintf(pic, file, ")"); xfprintf(pic, file, ")");
@ -319,7 +319,7 @@ write_core(pic_state *pic, pic_value obj, xFILE *file, struct writer_control *p)
xfprintf(pic, file, "%d", pic_int(pic, obj)); xfprintf(pic, file, "%d", pic_int(pic, obj));
break; break;
case PIC_TYPE_SYMBOL: case PIC_TYPE_SYMBOL:
xfprintf(pic, file, "%s", pic_str(pic, pic_sym_name(pic, obj))); xfprintf(pic, file, "%s", pic_sym(pic, obj));
break; break;
case PIC_TYPE_FLOAT: case PIC_TYPE_FLOAT:
write_float(pic, obj, file); write_float(pic, obj, file);