X-Git-Url: http://deadsoftware.ru/gitweb?a=blobdiff_plain;f=oberon.h;h=41cec621e9dc6983297d651bcfe9f955e078d497;hb=3376c57aa304940b405940c6463df71c7c1c7f01;hp=becdd78e6cf530ec53d67ab0ce1ed9b86ab818ef;hpb=063ba732ee8778c34a3781270b18d52481dbf0cd;p=dsw-obn.git diff --git a/oberon.h b/oberon.h index becdd78..41cec62 100644 --- a/oberon.h +++ b/oberon.h @@ -15,20 +15,21 @@ typedef struct 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; @@ -69,7 +70,9 @@ enum OBERON_TYPE_INTEGER, OBERON_TYPE_BOOLEAN, OBERON_TYPE_PROCEDURE, - OBERON_TYPE_ARRAY + OBERON_TYPE_ARRAY, + OBERON_TYPE_RECORD, + OBERON_TYPE_POINTER }; /* @@ -101,6 +104,8 @@ struct oberon_type_s oberon_type_t * base; oberon_object_t * decl; + int recursive; + int initialized; gen_type_t * gen_type; }; @@ -120,7 +125,8 @@ enum OBERON_CLASS_PROC, OBERON_CLASS_PARAM, OBERON_CLASS_VAR_PARAM, - OBERON_CLASS_CONST + OBERON_CLASS_CONST, + OBERON_CLASS_FIELD }; /* @@ -138,6 +144,7 @@ struct oberon_object_s char * name; int class; + int linked; oberon_type_t * type; oberon_item_t * value; oberon_object_t * next; @@ -209,7 +216,9 @@ enum MODE_VAR, MODE_INTEGER, MODE_BOOLEAN, - MODE_CALL + MODE_CALL, + MODE_INDEX, + MODE_FIELD }; enum @@ -242,6 +251,8 @@ struct oberon_item_s int boolean; oberon_object_t * var; + oberon_item_t * parent; + int num_args; oberon_expr_t * args; };