work on method wrapper and native function support

This commit is contained in:
William Bell
2025-08-09 06:40:16 +01:00
parent 38e2cad507
commit 0635ba8517
23 changed files with 404 additions and 324 deletions

View File

@@ -16,6 +16,8 @@ typedef struct ArErr ArErr;
typedef struct ArgonObject ArgonObject; // forward declaration
typedef ArgonObject* (*native_fn)(size_t argc, ArgonObject**argv, ArErr*err);
typedef enum ArgonType {
TYPE_NULL,
TYPE_BOOL,
@@ -24,10 +26,25 @@ typedef enum ArgonType {
TYPE_FUNCTION,
TYPE_NATIVE_FUNCTION,
TYPE_METHOD,
TYPE_NATIVE_METHOD,
TYPE_OBJECT,
} ArgonType;
typedef struct {
void *data;
size_t capacity;
size_t size;
struct hashmap_GC * hashmap;
} ConstantArena;
typedef struct {
uint8_t registerCount;
DArray *return_jumps;
darray_armem bytecode;
ConstantArena constants;
char* path;
} Translated;
struct string_struct {
char *data;
size_t length;
@@ -39,13 +56,12 @@ typedef struct Stack {
} Stack;
struct argon_function_struct {
Translated translated;
uint8_t* bytecode;
size_t bytecode_length;
Stack *stack;
size_t number_of_parameters;
struct string_struct *parameters;
char* path;
DArray source_locations;
uint64_t line;
uint64_t column;
};
@@ -60,7 +76,7 @@ struct ArgonObject {
mpq_t as_number;
bool as_bool;
struct string_struct as_str;
ArgonObject* (*native_fn)(size_t argc, ArgonObject**argv, ArErr*err);
native_fn native_fn;
struct argon_function_struct argon_fn;
} value;
};