start adding error message support
This commit is contained in:
52
src/arobject.h
Normal file
52
src/arobject.h
Normal file
@@ -0,0 +1,52 @@
|
||||
#ifndef AROBJECT_H
|
||||
#define AROBJECT_H
|
||||
|
||||
#include <gmp.h>
|
||||
#include "runtime/internals/dynamic_array_armem/darray_armem.h"
|
||||
|
||||
typedef struct ArgonObject ArgonObject; // forward declaration
|
||||
|
||||
typedef enum ArgonType {
|
||||
TYPE_NULL,
|
||||
TYPE_BOOL,
|
||||
TYPE_NUMBER,
|
||||
TYPE_STRING,
|
||||
TYPE_FUNCTION,
|
||||
TYPE_NATIVE_FUNCTION,
|
||||
TYPE_OBJECT,
|
||||
} ArgonType;
|
||||
|
||||
struct string_struct {
|
||||
char *data;
|
||||
size_t length;
|
||||
};
|
||||
|
||||
typedef struct Stack {
|
||||
ArgonObject *scope;
|
||||
struct Stack *prev;
|
||||
} Stack;
|
||||
|
||||
struct argon_function_struct {
|
||||
darray_armem bytecode;
|
||||
Stack stack;
|
||||
size_t number_of_parameters;
|
||||
char **parameters;
|
||||
};
|
||||
|
||||
// full definition of ArgonObject (no typedef again!)
|
||||
struct ArgonObject {
|
||||
ArgonType type;
|
||||
char *name;
|
||||
ArgonObject *self;
|
||||
ArgonObject *baseObject;
|
||||
struct hashmap_GC *fields;
|
||||
union {
|
||||
mpq_t as_number;
|
||||
bool as_bool;
|
||||
struct string_struct as_str;
|
||||
void *native_fn;
|
||||
struct argon_function_struct argon_fn;
|
||||
} value;
|
||||
};
|
||||
|
||||
#endif // AROBJECT_H
|
||||
Reference in New Issue
Block a user