More compatibility for integer value types

This commit is contained in:
justin 2016-03-14 22:55:09 -04:00
parent 104ee22b5f
commit d0efac2035

View file

@ -810,8 +810,8 @@ object Cyc_is_null(object o){
return boolean_f;} return boolean_f;}
object Cyc_is_number(object o){ object Cyc_is_number(object o){
if (!nullp(o) && !is_value_type(o) && if (!nullp(o) && (obj_is_int(o) ||
(type_of(o) == integer_tag || type_of(o) == double_tag)) (!is_value_type(o) && (type_of(o) == integer_tag || type_of(o) == double_tag))))
return boolean_t; return boolean_t;
return boolean_f;} return boolean_f;}
@ -819,7 +819,8 @@ object Cyc_is_real(object o){
return Cyc_is_number(o);} return Cyc_is_number(o);}
object Cyc_is_integer(object o){ object Cyc_is_integer(object o){
if (!nullp(o) && !is_value_type(o) && type_of(o) == integer_tag) if (!nullp(o) && (obj_is_int(o) ||
(!is_value_type(o) && type_of(o) == integer_tag)))
return boolean_t; return boolean_t;
return boolean_f;} return boolean_f;}
@ -930,7 +931,7 @@ object Cyc_vector_set(void *data, object v, object k, object obj) {
int idx; int idx;
Cyc_check_vec(data, v); Cyc_check_vec(data, v);
Cyc_check_int(data, k); Cyc_check_int(data, k);
idx = ((integer_type *)k)->value; idx = obj_is_int(k) ? obj_obj2int(k) : ((integer_type *)k)->value;
if (idx < 0 || idx >= ((vector)v)->num_elt) { if (idx < 0 || idx >= ((vector)v)->num_elt) {
Cyc_rt_raise2(data, "vector-set! - invalid index", k); Cyc_rt_raise2(data, "vector-set! - invalid index", k);