1 2private with Ada.Strings.Unbounded; 3 4package Predicate2.Source_Reference is 5 6 type Object is tagged private; 7 8 subtype Source_Reference is Object; 9 10 function "<" (Left, Right : Object) return Boolean; 11 12 Undefined : constant Object; 13 14private 15 16 use Ada.Strings.Unbounded; 17 18 type Object is tagged record 19 Line : Natural; 20 Column : Natural; 21 Filename : Unbounded_String; 22 end record 23 with Dynamic_Predicate => Filename /= Null_Unbounded_String; 24 25 function "<" (Left, Right : Object) return Boolean is 26 (Left.Filename < Right.Filename 27 or else 28 (Left.Filename = Right.Filename and then Left.Line < Right.Line)); 29 30 Undefined : constant Object := 31 (0, 0, To_Unbounded_String ("@")); 32 33end Predicate2.Source_Reference; 34