diff --git a/langs/evildoer/io.c b/langs/evildoer/io.c index 7ef82281..b7d9a398 100644 --- a/langs/evildoer/io.c +++ b/langs/evildoer/io.c @@ -7,7 +7,7 @@ val_t read_byte(void) { char c = getc(in); - return (c == EOF) ? val_wrap_eof() : val_wrap_int(c); + return (c == EOF) ? val_wrap_eof() : val_wrap_byte(c); } val_t peek_byte(void) diff --git a/langs/evildoer/values.c b/langs/evildoer/values.c index 9bd2a704..bfdcf630 100644 --- a/langs/evildoer/values.c +++ b/langs/evildoer/values.c @@ -29,6 +29,10 @@ val_t val_wrap_int(int64_t i) { return (i << int_shift) | int_type_tag; } +val_t val_wrap_byte(unsigned char b) +{ + return (b << int_shift) | int_type_tag; +} int val_unwrap_bool(val_t x) { diff --git a/langs/evildoer/values.h b/langs/evildoer/values.h index 39cc43df..44f1c536 100644 --- a/langs/evildoer/values.h +++ b/langs/evildoer/values.h @@ -28,6 +28,7 @@ type_t val_typeof(val_t x); */ int64_t val_unwrap_int(val_t x); val_t val_wrap_int(int64_t i); +val_t val_wrap_byte(unsigned char b); int val_unwrap_bool(val_t x); val_t val_wrap_bool(int b); diff --git a/langs/extort/io.c b/langs/extort/io.c index 7ef82281..b7d9a398 100644 --- a/langs/extort/io.c +++ b/langs/extort/io.c @@ -7,7 +7,7 @@ val_t read_byte(void) { char c = getc(in); - return (c == EOF) ? val_wrap_eof() : val_wrap_int(c); + return (c == EOF) ? val_wrap_eof() : val_wrap_byte(c); } val_t peek_byte(void) diff --git a/langs/extort/values.c b/langs/extort/values.c index 9bd2a704..bfdcf630 100644 --- a/langs/extort/values.c +++ b/langs/extort/values.c @@ -29,6 +29,10 @@ val_t val_wrap_int(int64_t i) { return (i << int_shift) | int_type_tag; } +val_t val_wrap_byte(unsigned char b) +{ + return (b << int_shift) | int_type_tag; +} int val_unwrap_bool(val_t x) { diff --git a/langs/extort/values.h b/langs/extort/values.h index 39cc43df..44f1c536 100644 --- a/langs/extort/values.h +++ b/langs/extort/values.h @@ -28,6 +28,7 @@ type_t val_typeof(val_t x); */ int64_t val_unwrap_int(val_t x); val_t val_wrap_int(int64_t i); +val_t val_wrap_byte(unsigned char b); int val_unwrap_bool(val_t x); val_t val_wrap_bool(int b); diff --git a/langs/fraud/io.c b/langs/fraud/io.c index 7ef82281..b7d9a398 100644 --- a/langs/fraud/io.c +++ b/langs/fraud/io.c @@ -7,7 +7,7 @@ val_t read_byte(void) { char c = getc(in); - return (c == EOF) ? val_wrap_eof() : val_wrap_int(c); + return (c == EOF) ? val_wrap_eof() : val_wrap_byte(c); } val_t peek_byte(void) diff --git a/langs/fraud/values.c b/langs/fraud/values.c index 9bd2a704..bfdcf630 100644 --- a/langs/fraud/values.c +++ b/langs/fraud/values.c @@ -29,6 +29,10 @@ val_t val_wrap_int(int64_t i) { return (i << int_shift) | int_type_tag; } +val_t val_wrap_byte(unsigned char b) +{ + return (b << int_shift) | int_type_tag; +} int val_unwrap_bool(val_t x) { diff --git a/langs/fraud/values.h b/langs/fraud/values.h index 39cc43df..44f1c536 100644 --- a/langs/fraud/values.h +++ b/langs/fraud/values.h @@ -28,6 +28,7 @@ type_t val_typeof(val_t x); */ int64_t val_unwrap_int(val_t x); val_t val_wrap_int(int64_t i); +val_t val_wrap_byte(unsigned char b); int val_unwrap_bool(val_t x); val_t val_wrap_bool(int b); diff --git a/langs/hoax/io.c b/langs/hoax/io.c index 7ef82281..b7d9a398 100644 --- a/langs/hoax/io.c +++ b/langs/hoax/io.c @@ -7,7 +7,7 @@ val_t read_byte(void) { char c = getc(in); - return (c == EOF) ? val_wrap_eof() : val_wrap_int(c); + return (c == EOF) ? val_wrap_eof() : val_wrap_byte(c); } val_t peek_byte(void) diff --git a/langs/hoax/values.c b/langs/hoax/values.c index a61d65e6..b7e95f40 100644 --- a/langs/hoax/values.c +++ b/langs/hoax/values.c @@ -42,6 +42,10 @@ val_t val_wrap_int(int64_t i) { return (i << int_shift) | int_type_tag; } +val_t val_wrap_byte(unsigned char b) +{ + return (b << int_shift) | int_type_tag; +} int val_unwrap_bool(val_t x) { diff --git a/langs/hoax/values.h b/langs/hoax/values.h index 4cc48bbe..b6ac44f9 100644 --- a/langs/hoax/values.h +++ b/langs/hoax/values.h @@ -49,6 +49,7 @@ type_t val_typeof(val_t x); */ int64_t val_unwrap_int(val_t x); val_t val_wrap_int(int64_t i); +val_t val_wrap_byte(unsigned char b); int val_unwrap_bool(val_t x); val_t val_wrap_bool(int b); diff --git a/langs/hustle/io.c b/langs/hustle/io.c index 7ef82281..b7d9a398 100644 --- a/langs/hustle/io.c +++ b/langs/hustle/io.c @@ -7,7 +7,7 @@ val_t read_byte(void) { char c = getc(in); - return (c == EOF) ? val_wrap_eof() : val_wrap_int(c); + return (c == EOF) ? val_wrap_eof() : val_wrap_byte(c); } val_t peek_byte(void) diff --git a/langs/hustle/values.c b/langs/hustle/values.c index 3330f8d2..b96fffbf 100644 --- a/langs/hustle/values.c +++ b/langs/hustle/values.c @@ -38,6 +38,10 @@ val_t val_wrap_int(int64_t i) { return (i << int_shift) | int_type_tag; } +val_t val_wrap_byte(unsigned char b) +{ + return (b << int_shift) | int_type_tag; +} int val_unwrap_bool(val_t x) { diff --git a/langs/hustle/values.h b/langs/hustle/values.h index 92e67e5b..ceab2e0a 100644 --- a/langs/hustle/values.h +++ b/langs/hustle/values.h @@ -39,6 +39,7 @@ type_t val_typeof(val_t x); */ int64_t val_unwrap_int(val_t x); val_t val_wrap_int(int64_t i); +val_t val_wrap_byte(unsigned char b); int val_unwrap_bool(val_t x); val_t val_wrap_bool(int b); diff --git a/langs/iniquity/io.c b/langs/iniquity/io.c index 7ef82281..b7d9a398 100644 --- a/langs/iniquity/io.c +++ b/langs/iniquity/io.c @@ -7,7 +7,7 @@ val_t read_byte(void) { char c = getc(in); - return (c == EOF) ? val_wrap_eof() : val_wrap_int(c); + return (c == EOF) ? val_wrap_eof() : val_wrap_byte(c); } val_t peek_byte(void) diff --git a/langs/iniquity/values.c b/langs/iniquity/values.c index a61d65e6..62bca18c 100644 --- a/langs/iniquity/values.c +++ b/langs/iniquity/values.c @@ -38,6 +38,10 @@ int64_t val_unwrap_int(val_t x) { return x >> int_shift; } +val_t val_wrap_byte(unsigned char b) +{ + return (b << int_shift) | int_type_tag; +} val_t val_wrap_int(int64_t i) { return (i << int_shift) | int_type_tag; diff --git a/langs/iniquity/values.h b/langs/iniquity/values.h index 4cc48bbe..b6ac44f9 100644 --- a/langs/iniquity/values.h +++ b/langs/iniquity/values.h @@ -49,6 +49,7 @@ type_t val_typeof(val_t x); */ int64_t val_unwrap_int(val_t x); val_t val_wrap_int(int64_t i); +val_t val_wrap_byte(unsigned char b); int val_unwrap_bool(val_t x); val_t val_wrap_bool(int b);