diff options
| author | Michael Williamson <mike@zwobble.org> | 2023-12-15 15:47:58 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2023-12-15 15:47:58 +0000 |
| commit | 3ed2ca517aa5f2424f238817844d8a8eb98e64c2 (patch) | |
| tree | 8dc70ba88ce76b22f2539adc932deab0c00ac0c1 /runtime/src/ints.c | |
| parent | 549ec911f67484c875a09d4b5b8a9a4fc0ecc806 (diff) | |
Implement int ops in runtime
Diffstat (limited to 'runtime/src/ints.c')
| -rw-r--r-- | runtime/src/ints.c | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/runtime/src/ints.c b/runtime/src/ints.c new file mode 100644 index 00000000..32bc15bb --- /dev/null +++ b/runtime/src/ints.c @@ -0,0 +1,43 @@ +#include <stdbool.h> + +#include "./shed.h" + +struct ShedInt { + PatioInt value; +}; + +ShedObject shed__runtime__int_create(PatioInt value) { + struct ShedInt* result = shed__runtime__alloc(sizeof(struct ShedInt)); + result->value = value; + return (ShedObject) result; +} + +PatioInt shed__runtime__int_value(ShedObject object) { + return ((struct ShedInt*) object)->value; +} + +ShedObject shed__runtime__int_add(ShedObject left, ShedObject right) { + PatioInt left_value = shed__runtime__int_value(left); + PatioInt right_value = shed__runtime__int_value(right); + PatioInt result_value = left_value + right_value; + return shed__runtime__int_create(result_value); +} + +ShedObject shed__runtime__int_sub(ShedObject left, ShedObject right) { + PatioInt left_value = shed__runtime__int_value(left); + PatioInt right_value = shed__runtime__int_value(right); + PatioInt result_value = left_value - right_value; + return shed__runtime__int_create(result_value); +} + +bool shed__runtime__int_equals(ShedObject left, ShedObject right) { + PatioInt left_value = shed__runtime__int_value(left); + PatioInt right_value = shed__runtime__int_value(right); + return left_value == right_value; +} + +bool shed__runtime__int_not_equal(ShedObject left, ShedObject right) { + PatioInt left_value = shed__runtime__int_value(left); + PatioInt right_value = shed__runtime__int_value(right); + return left_value != right_value; +} |
