with Preelaborate
is
type Big_Integer is private
- with Integer_Literal => From_String,
+ with Integer_Literal => From_Universal_Image,
Put_Image => Put_Image;
function Is_Valid (Arg : Big_Integer) return Boolean
function From_String (Arg : String) return Valid_Big_Integer
with Global => null;
+ function From_Universal_Image (Arg : String) return Valid_Big_Integer
+ renames From_String;
+
procedure Put_Image (S : in out Sink'Class; V : Big_Integer);
function "+" (L : Valid_Big_Integer) return Valid_Big_Integer
end;
end From_String;
- function From_String
- (Numerator, Denominator : String) return Valid_Big_Real is
- begin
- return Big_Integers.From_String (Numerator) /
- Big_Integers.From_String (Denominator);
- end From_String;
-
--------------------------
-- From_Quotient_String --
--------------------------
with Preelaborate
is
type Big_Real is private with
- Real_Literal => From_String,
+ Real_Literal => From_Universal_Image,
Put_Image => Put_Image;
function Is_Valid (Arg : Big_Real) return Boolean
function From_String (Arg : String) return Valid_Big_Real
with Global => null;
- function From_String (Numerator, Denominator : String) return Valid_Big_Real
- with Global => null;
+
+ function From_Universal_Image (Arg : String) return Valid_Big_Real
+ renames From_String;
+ function From_Universal_Image (Num, Den : String) return Valid_Big_Real is
+ (Big_Integers.From_Universal_Image (Num) /
+ Big_Integers.From_Universal_Image (Den))
+ with Global => null;
function To_Quotient_String (Arg : Big_Real) return String is
(Big_Integers.To_String (Numerator (Arg)) & " / "