aboutsummaryrefslogtreecommitdiffstats
path: root/src/tables.ads
diff options
context:
space:
mode:
authorTristan Gingold <tgingold@free.fr>2016-11-08 08:11:01 +0100
committerTristan Gingold <tgingold@free.fr>2016-11-08 08:11:01 +0100
commit6235a6a731633a2727e3b0022c8aaccf942e7f60 (patch)
tree71c428dc1a92c824f74d35f8cfc2003dd1134ccd /src/tables.ads
parent619a818dde23dfc6361a2edce9fe0b18aa249d40 (diff)
downloadghdl-6235a6a731633a2727e3b0022c8aaccf942e7f60.tar.gz
ghdl-6235a6a731633a2727e3b0022c8aaccf942e7f60.tar.bz2
ghdl-6235a6a731633a2727e3b0022c8aaccf942e7f60.zip
Add dyn_tables package, rewrite tables using dyn_tables.
Diffstat (limited to 'src/tables.ads')
-rw-r--r--src/tables.ads24
1 files changed, 11 insertions, 13 deletions
diff --git a/src/tables.ads b/src/tables.ads
index 0b1026646..b7a4b0344 100644
--- a/src/tables.ads
+++ b/src/tables.ads
@@ -20,6 +20,8 @@
-- - the index type can be any discrete type (in particular a modular type)
-- - the increment is not used
-- - the interface is simplified.
+with Dyn_Tables;
+
generic
-- This package creates:
-- array (Table_Index_Type range Table_Low_Bound .. <>)
@@ -35,23 +37,18 @@ generic
-- Initial number of elements.
Table_Initial : Positive;
package Tables is
- -- Ada type for the array.
- type Table_Type is
- array (Table_Index_Type range <>) of Table_Component_Type;
- -- Fat subtype (so that the access is thin).
- subtype Big_Table_Type is
- Table_Type (Table_Low_Bound .. Table_Index_Type'Last);
+ package Dyn_Table is new Dyn_Tables (Table_Component_Type,
+ Table_Index_Type,
+ Table_Low_Bound,
+ Table_Initial);
+
+ T : Dyn_Table.Instance;
- -- Access type for the vector. This is a thin pointer so that it is
- -- compatible with C pointer, as this package uses malloc/realloc/free for
- -- memory management.
- type Table_Thin_Ptr is access all Big_Table_Type;
- pragma Convention (C, Table_Thin_Ptr);
- for Table_Thin_Ptr'Storage_Size use 0;
+ subtype Table_Type is Dyn_Table.Table_Type;
-- Pointer to the table. Note that the use of a thin pointer to the
-- largest array, this implementation bypasses Ada index checks.
- Table : Table_Thin_Ptr := null;
+ Table : Dyn_Table.Table_Thin_Ptr renames T.Table;
-- Initialize the table. This is done automatically at elaboration.
procedure Init;
@@ -84,4 +81,5 @@ package Tables is
-- Increase by NUM the length of the array, and returns the old value
-- of Last + 1.
function Allocate (Num : Natural := 1) return Table_Index_Type;
+ pragma Inline (Allocate);
end Tables;