diff options
-rw-r--r-- | src/synth/synth-objtypes.adb | 17 | ||||
-rw-r--r-- | src/synth/synth-objtypes.ads | 4 | ||||
-rw-r--r-- | src/synth/synth-values.adb | 8 | ||||
-rw-r--r-- | src/synth/synth-values.ads | 1 |
4 files changed, 21 insertions, 9 deletions
diff --git a/src/synth/synth-objtypes.adb b/src/synth/synth-objtypes.adb index 10602256b..f7517c927 100644 --- a/src/synth/synth-objtypes.adb +++ b/src/synth/synth-objtypes.adb @@ -777,6 +777,23 @@ package body Synth.Objtypes is return True; end Is_Equal; + procedure Copy_Memory (Dest : Memory_Ptr; Src : Memory_Ptr; Sz : Size_Type) + is + begin + for I in 1 .. Sz loop + Dest (I - 1) := Src (I - 1); + end loop; + end Copy_Memory; + + function Unshare (Src : Memtyp) return Memtyp + is + Res : Memory_Ptr; + begin + Res := Alloc_Memory (Src.Typ); + Copy_Memory (Res, Src.Mem, Src.Typ.Sz); + return (Src.Typ, Res); + end Unshare; + Bit0_Mem : constant Memory_Element := 0; Bit1_Mem : constant Memory_Element := 1; diff --git a/src/synth/synth-objtypes.ads b/src/synth/synth-objtypes.ads index 91ffcc32e..339197489 100644 --- a/src/synth/synth-objtypes.ads +++ b/src/synth/synth-objtypes.ads @@ -283,6 +283,10 @@ package Synth.Objtypes is function Is_Equal (L, R : Memtyp) return Boolean; + procedure Copy_Memory (Dest : Memory_Ptr; Src : Memory_Ptr; Sz : Size_Type); + + function Unshare (Src : Memtyp) return Memtyp; + procedure Init; -- Set by Init. diff --git a/src/synth/synth-values.adb b/src/synth/synth-values.adb index ed042c849..40a394b4a 100644 --- a/src/synth/synth-values.adb +++ b/src/synth/synth-values.adb @@ -254,14 +254,6 @@ package body Synth.Values is end if; end Strip_Const; - procedure Copy_Memory (Dest : Memory_Ptr; Src : Memory_Ptr; Sz : Size_Type) - is - begin - for I in 1 .. Sz loop - Dest (I - 1) := Src (I - 1); - end loop; - end Copy_Memory; - procedure Write_Value (Dest : Memory_Ptr; Vt : Valtyp) is Mt : Memtyp; diff --git a/src/synth/synth-values.ads b/src/synth/synth-values.ads index 77798c9f0..0cef26b2b 100644 --- a/src/synth/synth-values.ads +++ b/src/synth/synth-values.ads @@ -172,6 +172,5 @@ package Synth.Values is function Read_Fp64 (Vt : Valtyp) return Fp64; - procedure Copy_Memory (Dest : Memory_Ptr; Src : Memory_Ptr; Sz : Size_Type); procedure Write_Value (Dest : Memory_Ptr; Vt : Valtyp); end Synth.Values; |