work on method wrapper and native function support
This commit is contained in:
@@ -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;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user