diff --git a/oberon.h b/oberon.h
index becdd78e6cf530ec53d67ab0ce1ed9b86ab818ef..69ee927fede72bb5a643c55608c23db621e78c44 100644 (file)
--- a/oberon.h
+++ b/oberon.h
typedef struct
{
gcc_jit_type * gcc_type;
+ gcc_jit_struct * gcc_struct;
} gen_type_t;
typedef struct
{
- char stub[16];
- gcc_jit_lvalue * gcc_lvalue;
- gcc_jit_param * gcc_param;
+ gcc_jit_lvalue * gcc_lvalue;
+ gcc_jit_param * gcc_param;
+ gcc_jit_field * gcc_field;
} gen_var_t;
typedef struct
{
- gcc_jit_context * gcc_context;
- gcc_jit_block * gcc_block;
- gcc_jit_result * gcc_result;
+ gcc_jit_context * gcc_context;
+ gcc_jit_block * gcc_block;
+ gcc_jit_result * gcc_result;
} gen_context_t;
typedef struct oberon_type_s oberon_type_t;
OBERON_TYPE_INTEGER,
OBERON_TYPE_BOOLEAN,
OBERON_TYPE_PROCEDURE,
- OBERON_TYPE_ARRAY
+ OBERON_TYPE_ARRAY,
+ OBERON_TYPE_RECORD,
};
/*
OBERON_CLASS_PROC,
OBERON_CLASS_PARAM,
OBERON_CLASS_VAR_PARAM,
- OBERON_CLASS_CONST
+ OBERON_CLASS_CONST,
+ OBERON_CLASS_FIELD
};
/*
MODE_VAR,
MODE_INTEGER,
MODE_BOOLEAN,
- MODE_CALL
+ MODE_CALL,
+ MODE_INDEX,
+ MODE_FIELD
};
enum
int boolean;
oberon_object_t * var;
+ oberon_item_t * parent;
+
int num_args;
oberon_expr_t * args;
};