package body c_math_c.Conversion is function "+" (Self : in Integer) return C.int is begin return C.int (Self); end "+"; function "+" (Self : in C.int) return Integer is begin return Integer (Self); end "+"; function "+" (Self : in math.Real) return c_math_c.Real is begin return c_math_c.Real (Self); end "+"; function "+" (Self : in c_math_c.Real) return math.Real is begin return math.Real (Self); end "+"; function "+" (Self : in math.Vector_2) return c_math_c.Vector_2.item is Result : c_math_c.Vector_2.item; begin begin Result.x := c_math_c.Real (Self (1)); exception when constraint_Error => if Self (1) > 0.0 then Result.x := c_math_c.Real'Last; else Result.x := c_math_c.Real'First; end if; end; begin Result.y := c_math_c.Real (Self (2)); exception when constraint_Error => if Self (2) > 0.0 then Result.x := c_math_c.Real'Last; else Result.x := c_math_c.Real'First; end if; end; return Result; end "+"; function "+" (Self : in c_math_c.Vector_2.item) return math.Vector_2 is begin return [math.Real (Self.x), math.Real (Self.y)]; end "+"; function "+" (Self : in math.Vector_3) return c_math_c.Vector_3.item is Result : c_math_c.Vector_3.item; begin begin Result.x := c_math_c.Real (Self (1)); exception when constraint_Error => if Self (1) > 0.0 then Result.x := c_math_c.Real'Last; else Result.x := c_math_c.Real'First; end if; end; begin Result.y := c_math_c.Real (Self (2)); exception when constraint_Error => if Self (2) > 0.0 then Result.x := c_math_c.Real'Last; else Result.x := c_math_c.Real'First; end if; end; begin Result.z := c_math_c.Real (Self (3)); exception when constraint_Error => if Self (3) > 0.0 then Result.x := c_math_c.Real'Last; else Result.x := c_math_c.Real'First; end if; end; return Result; end "+"; function "+" (Self : in c_math_c.Vector_3.item) return math.Vector_3 is begin return [math.Real (Self.x), math.Real (Self.y), math.Real (Self.z)]; end "+"; function "+" (Self : in math.Matrix_3x3) return c_math_c.Matrix_3x3.item is begin return (Real (Self (1,1)), Real (Self (1,2)), Real (Self (1,3)), Real (Self (2,1)), Real (Self (2,2)), Real (Self (2,3)), Real (Self (3,1)), Real (Self (3,2)), Real (Self (3,3))); end "+"; function "+" (Self : in c_math_c.Matrix_3x3.item) return math.Matrix_3x3 is begin return [1 => [math.Real (Self.m00), math.Real (Self.m01), math.Real (Self.m02)], 2 => [math.Real (Self.m10), math.Real (Self.m11), math.Real (Self.m12)], 3 => [math.Real (Self.m20), math.Real (Self.m21), math.Real (Self.m22)]]; end "+"; function "+" (Self : in math .Matrix_4x4 ) return c_math_c.Matrix_4x4.item is begin return (Real (Self (1,1)), Real (Self (1,2)), Real (Self (1,3)), Real (Self (1,4)), Real (Self (2,1)), Real (Self (2,2)), Real (Self (2,3)), Real (Self (2,4)), Real (Self (3,1)), Real (Self (3,2)), Real (Self (3,3)), Real (Self (3,4)), Real (Self (4,1)), Real (Self (4,2)), Real (Self (4,3)), Real (Self (4,4))); end "+"; function "+" (Self : in c_math_c.Matrix_4x4.item) return math.Matrix_4x4 is begin return [1 => [math.Real (Self.m00), math.Real (Self.m01), math.Real (Self.m02), math.Real (Self.m03)], 2 => [math.Real (Self.m10), math.Real (Self.m11), math.Real (Self.m12), math.Real (Self.m13)], 3 => [math.Real (Self.m20), math.Real (Self.m21), math.Real (Self.m22), math.Real (Self.m23)], 4 => [math.Real (Self.m30), math.Real (Self.m31), math.Real (Self.m32), math.Real (Self.m33)]]; end "+"; end c_math_c.Conversion;