with ada.unchecked_Deallocation; package body physics.Object is procedure free (Self : in out View) is procedure deallocate is new ada.unchecked_Deallocation (Item'Class, View); begin if Self /= null then Self.destruct; end if; deallocate (Self); end free; protected body safe_Dynamics is procedure set (To : in Matrix_4x4) is begin Dynamics := To; end set; function get return Matrix_4x4 is begin return Dynamics; end get; procedure set_Spin (To : in Matrix_3x3) is use linear_Algebra_3D; begin set_Rotation (Dynamics, To); end set_Spin; function get_Spin return Matrix_3x3 is use linear_Algebra_3D; begin return get_Rotation (Dynamics); end get_Spin; procedure set_Site (To : in Vector_3) is use linear_Algebra_3D; begin set_Translation (Dynamics, To); end set_Site; function get_Site return Vector_3 is use linear_Algebra_3D; begin return get_Translation (Dynamics); end get_Site; end safe_Dynamics; end physics.Object;