DEADSOFTWARE

Добавлен NIL и автоматическое разыменование указателей
[dsw-obn.git] / oberon.h
index 69ee927fede72bb5a643c55608c23db621e78c44..02547cd70be76f7ffdaeb60097fa5fe89cc5dd87 100644 (file)
--- a/oberon.h
+++ b/oberon.h
@@ -72,6 +72,7 @@ enum
        OBERON_TYPE_PROCEDURE,
        OBERON_TYPE_ARRAY,
        OBERON_TYPE_RECORD,
+       OBERON_TYPE_POINTER
 };
 
 /*
@@ -97,12 +98,12 @@ struct oberon_type_s
        int class;
        int size;
 
-       int dim;
-
        int num_decl;
        oberon_type_t * base;
        oberon_object_t * decl;
 
+       int recursive;
+       int initialized;
        gen_type_t * gen_type;
 };
 
@@ -141,6 +142,7 @@ struct oberon_object_s
        char * name;
        int class;
 
+       int linked;
        oberon_type_t * type;
        oberon_item_t * value;
        oberon_object_t * next;
@@ -202,6 +204,7 @@ struct oberon_context_s
        oberon_type_t * int_type;
        oberon_type_t * bool_type;
        oberon_type_t * void_type;
+       oberon_type_t * void_ptr_type;
        oberon_scope_t * world_scope;
 
        gen_context_t * gen_context;
@@ -214,7 +217,9 @@ enum
        MODE_BOOLEAN,
        MODE_CALL,
        MODE_INDEX,
-       MODE_FIELD
+       MODE_FIELD,
+       MODE_DEREF,
+       MODE_NIL
 };
 
 enum