DEADSOFTWARE

Добавлены объявления типов-записей и типов-процедур, добавлены и исправлены селекторы...
[dsw-obn.git] / oberon.h
index becdd78e6cf530ec53d67ab0ce1ed9b86ab818ef..69ee927fede72bb5a643c55608c23db621e78c44 100644 (file)
--- 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,8 @@ enum
        OBERON_TYPE_INTEGER,
        OBERON_TYPE_BOOLEAN,
        OBERON_TYPE_PROCEDURE,
-       OBERON_TYPE_ARRAY
+       OBERON_TYPE_ARRAY,
+       OBERON_TYPE_RECORD,
 };
 
 /*
@@ -120,7 +122,8 @@ enum
        OBERON_CLASS_PROC,
        OBERON_CLASS_PARAM,
        OBERON_CLASS_VAR_PARAM,
-       OBERON_CLASS_CONST
+       OBERON_CLASS_CONST,
+       OBERON_CLASS_FIELD
 };
 
 /*
@@ -209,7 +212,9 @@ enum
        MODE_VAR,
        MODE_INTEGER,
        MODE_BOOLEAN,
-       MODE_CALL
+       MODE_CALL,
+       MODE_INDEX,
+       MODE_FIELD
 };
 
 enum
@@ -242,6 +247,8 @@ struct oberon_item_s
        int boolean;
        oberon_object_t * var;
 
+       oberon_item_t * parent;
+
        int num_args;
        oberon_expr_t * args;
 };