aboutsummaryrefslogtreecommitdiffstats
path: root/src/synth/elab-vhdl_context.ads
diff options
context:
space:
mode:
authorTristan Gingold <tgingold@free.fr>2022-05-25 08:21:48 +0200
committerTristan Gingold <tgingold@free.fr>2022-05-25 08:21:48 +0200
commit58712f5c52fbe00dc83e8db9c5e262853e2b7617 (patch)
tree1992f64831da64ff4c15ca1b9569764de1e4bda0 /src/synth/elab-vhdl_context.ads
parent29f97619c256b6a1bfa3e2717b9b5d0c33dea449 (diff)
downloadghdl-58712f5c52fbe00dc83e8db9c5e262853e2b7617.tar.gz
ghdl-58712f5c52fbe00dc83e8db9c5e262853e2b7617.tar.bz2
ghdl-58712f5c52fbe00dc83e8db9c5e262853e2b7617.zip
synth: move procedure call copyback values in context
Diffstat (limited to 'src/synth/elab-vhdl_context.ads')
-rw-r--r--src/synth/elab-vhdl_context.ads13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/synth/elab-vhdl_context.ads b/src/synth/elab-vhdl_context.ads
index c67d99b0d..0bf2a4b50 100644
--- a/src/synth/elab-vhdl_context.ads
+++ b/src/synth/elab-vhdl_context.ads
@@ -145,8 +145,11 @@ package Elab.Vhdl_Context is
procedure Mutate_Object
(Syn_Inst : Synth_Instance_Acc; Decl : Node; Vt : Valtyp);
- procedure Destroy_Object
- (Syn_Inst : Synth_Instance_Acc; Decl : Node);
+ type Destroy_Type is limited private;
+ procedure Destroy_Init (D : out Destroy_Type;
+ Syn_Inst : Synth_Instance_Acc);
+ procedure Destroy_Object (D : in out Destroy_Type; Decl : Node);
+ procedure Destroy_Finish (D : in out Destroy_Type);
-- Get the value of OBJ.
function Get_Value (Syn_Inst : Synth_Instance_Acc; Obj : Node)
@@ -176,6 +179,12 @@ package Elab.Vhdl_Context is
function Get_Caller_Instance (Syn_Inst : Synth_Instance_Acc)
return Synth_Instance_Acc;
private
+ type Destroy_Type is record
+ Inst : Synth_Instance_Acc;
+ First : Object_Slot_Type;
+ Last : Object_Slot_Type;
+ end record;
+
type Obj_Kind is
(
Obj_None,