DEADSOFTWARE

Теперь возможен вызов процедур-переменных из полей записей
[dsw-obn.git] / src / oberon-internals.h
index 1e92de1763923d410e342e0d21cb29ab68c2961e..c28cfa5b80761a1d42992a32ffa5d49fa31dce76 100644 (file)
@@ -44,6 +44,9 @@ enum
        OBERON_TYPE_REAL
 };
 
+typedef oberon_expr_t * (*GenerateFuncCallback)(oberon_context_t *, int, oberon_expr_t *);
+typedef void (*GenerateProcCallback)(oberon_context_t *, int, oberon_expr_t *);
+
 struct oberon_type_t
 {
        int class;
@@ -54,6 +57,10 @@ struct oberon_type_t
        oberon_object_t * decl;
        oberon_scope_t * scope;
 
+       bool sysproc;
+       GenerateFuncCallback genfunc;
+       GenerateProcCallback genproc;
+
        oberon_module_t * module;
 
        int recursive;
@@ -73,9 +80,6 @@ enum
        OBERON_CLASS_MODULE
 };
 
-typedef oberon_expr_t * (*GenerateFuncCallback)(oberon_context_t *, int, oberon_expr_t *);
-typedef void (*GenerateProcCallback)(oberon_context_t *, int, oberon_expr_t *);
-
 struct oberon_object_t
 {
        char * name;
@@ -92,9 +96,6 @@ struct oberon_object_t
 
        oberon_scope_t * scope; // for proc
        int has_return; // for proc
-       int sysproc;
-       GenerateFuncCallback genfunc;
-       GenerateProcCallback genproc;
 
        oberon_type_t * type;
        oberon_item_t * value;
@@ -167,7 +168,6 @@ enum
        MODE_NIL,
        MODE_NEW,
        MODE_REAL,
-       MODE_CAST
 };
 
 enum
@@ -193,7 +193,9 @@ enum
        OP_LSS,
        OP_LEQ,
        OP_GRT,
-       OP_GEQ
+       OP_GEQ,
+
+       OP_CAST
 };
 
 struct oberon_item_t
@@ -209,7 +211,7 @@ struct oberon_item_t
        int boolean;
        oberon_object_t * var;
 
-       oberon_expr_t * parent;
+       oberon_item_t * parent;
 
        int num_args;
        oberon_expr_t * args;