aboutsummaryrefslogtreecommitdiffstats
path: root/src/grt/ghwlib.h
diff options
context:
space:
mode:
authorTristan Gingold <tgingold@free.fr>2020-08-04 19:17:20 +0200
committerTristan Gingold <tgingold@free.fr>2020-08-04 19:17:20 +0200
commit73d3e2bd68995aa55c93fbbaa5d008ec9ce2abfe (patch)
tree4058c116ab868e7e7ab4b87135c3d2c584122dca /src/grt/ghwlib.h
parentc969350770eac2f54cf86284c5d3fd95fdcd762c (diff)
downloadghdl-73d3e2bd68995aa55c93fbbaa5d008ec9ce2abfe.tar.gz
ghdl-73d3e2bd68995aa55c93fbbaa5d008ec9ce2abfe.tar.bz2
ghdl-73d3e2bd68995aa55c93fbbaa5d008ec9ce2abfe.zip
grt: handle more unbounded types in disp_rti and ghw.
Fix #1131
Diffstat (limited to 'src/grt/ghwlib.h')
-rw-r--r--src/grt/ghwlib.h34
1 files changed, 28 insertions, 6 deletions
diff --git a/src/grt/ghwlib.h b/src/grt/ghwlib.h
index 9fdbd1eb8..3c0fecc10 100644
--- a/src/grt/ghwlib.h
+++ b/src/grt/ghwlib.h
@@ -78,16 +78,19 @@ enum ghdl_rtik {
ghdl_rtik_type_file,
ghdl_rtik_subtype_scalar,
ghdl_rtik_subtype_array, /* 35 */
- ghdl_rtik_subtype_array_ptr, /* Obsolete. */
- ghdl_rtik_subtype_unconstrained_array, /* Obsolete. */
+ ghdl_rtik_subtype_array_ptr, /* Obsolete. */
+ ghdl_rtik_subtype_unbounded_array,
ghdl_rtik_subtype_record,
- ghdl_rtik_subtype_access,
+ ghdl_rtik_subtype_unbounded_record,
+#if 0
+ ghdl_rtik_subtype_access, /* 40 */
ghdl_rtik_type_protected,
ghdl_rtik_element,
ghdl_rtik_unit,
ghdl_rtik_attribute_transaction,
ghdl_rtik_attribute_quiet,
ghdl_rtik_attribute_stable,
+#endif
ghdl_rtik_error
};
@@ -198,14 +201,23 @@ struct ghw_type_array
union ghw_type **dims;
};
+struct ghw_subtype_unbounded_array
+{
+ enum ghdl_rtik kind;
+ const char *name;
+
+ union ghw_type *base;
+};
+
struct ghw_subtype_array
{
enum ghdl_rtik kind;
const char *name;
- struct ghw_type_array *base;
+ union ghw_type *base;
int nbr_scalars;
union ghw_range **rngs;
+ union ghw_type *el;
};
struct ghw_subtype_scalar
@@ -243,6 +255,14 @@ struct ghw_subtype_record
struct ghw_record_element *els;
};
+struct ghw_subtype_unbounded_record
+{
+ enum ghdl_rtik kind;
+ const char *name;
+
+ struct ghw_type_record *base;
+};
+
union ghw_type
{
enum ghdl_rtik kind;
@@ -251,10 +271,12 @@ union ghw_type
struct ghw_type_scalar sc;
struct ghw_type_physical ph;
struct ghw_subtype_scalar ss;
- struct ghw_subtype_array sa;
- struct ghw_subtype_record sr;
struct ghw_type_array ar;
struct ghw_type_record rec;
+ struct ghw_subtype_array sa;
+ struct ghw_subtype_unbounded_array sua;
+ struct ghw_subtype_record sr;
+ struct ghw_subtype_unbounded_record sur;
};
union ghw_val