This commit is contained in:
Andre Wagner
2026-05-12 09:21:04 -05:00
parent 2fd11f879c
commit ad970577b0
4 changed files with 49 additions and 19 deletions

View File

@@ -55,7 +55,8 @@ static TYC_RESULT stack_peek(Stack* s, VALUE* v_out)
{
if (s->stack_n < stack_top_fp(s))
return T_ERR_STACK_UNDERFLOW;
*v_out = s->stack[s->stack_n - 1];
if (v_out)
*v_out = s->stack[s->stack_n - 1];
return T_OK;
}
@@ -73,9 +74,17 @@ static size_t stack_len(Stack* s)
return s->stack_n - stack_top_fp(s);
}
static VALUE stack_get(Stack* s, int32_t key)
static TYC_RESULT stack_at(Stack* s, int32_t key, VALUE* v)
{
abort(); // TODO
if (key >= 0) {
*v = s->stack[stack_top_fp(s) + key];
} else {
if (stack_top_fp(s) + s->stack_n + key < 0)
return T_ERR_STACK_ACCESS_OUT_OF_RANGE;
*v = s->stack[s->stack_n + key];
}
return T_OK;
}
static void stack_set(Stack* s, int32_t key, VALUE v)

View File

@@ -7,7 +7,7 @@ typedef enum {
typedef enum {
T_OK = 0,
T_ERR_STACK_UNDERFLOW = -1, T_ERR_STACK_FP_UNDERFLOW = -2,
T_ERR_STACK_UNDERFLOW = -1, T_ERR_STACK_FP_UNDERFLOW = -2, T_ERR_STACK_ACCESS_OUT_OF_RANGE = -3,
} TYC_RESULT;
#endif //TYCHE_TYCHE_H