This file is indexed.

/usr/share/ada/adainclude/gnatcoll/gnatcoll-paragraph_filling-badnesses.adb is in libgnatcoll1.6-dev 1.6gpl2014-6.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
------------------------------------------------------------------------------
--                             G N A T C O L L                              --
--                                                                          --
--                     Copyright (C) 2010-2014, AdaCore                     --
--                                                                          --
-- This library is free software;  you can redistribute it and/or modify it --
-- under terms of the  GNU General Public License  as published by the Free --
-- Software  Foundation;  either version 3,  or (at your  option) any later --
-- version. This library is distributed in the hope that it will be useful, --
-- but WITHOUT ANY WARRANTY;  without even the implied warranty of MERCHAN- --
-- TABILITY or FITNESS FOR A PARTICULAR PURPOSE.                            --
--                                                                          --
--                                                                          --
--                                                                          --
--                                                                          --
--                                                                          --
-- You should have received a copy of the GNU General Public License and    --
-- a copy of the GCC Runtime Library Exception along with this program;     --
-- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
-- <http://www.gnu.org/licenses/>.                                          --
--                                                                          --
------------------------------------------------------------------------------

--  This software was originally contributed by William A. Duff

package body GNATCOLL.Paragraph_Filling.Badnesses is

   ----------
   -- "**" --
   ----------

   function "**" (X : Natural; Y : Positive) return Badness_Value is
      pragma Unsuppress (All_Checks);
   begin
      return Badness_Value (Integer'(X ** Y));
   exception
      when Constraint_Error =>
         return Infinity;
   end "**";

   ---------
   -- "+" --
   ---------

   overriding function "+" (X, Y : Badness_Value) return Badness_Value is
      pragma Unsuppress (All_Checks);
   begin
      return Badness_Value (Integer (X) + Integer (Y));
   exception
      when Constraint_Error =>
         return Infinity;
   end "+";

   ---------
   -- "<" --
   ---------

   overriding function "<" (X, Y : Badness_Value) return Boolean is
   begin
      return Integer (X) < Integer (Y);
   end "<";

   -----------
   -- Image --
   -----------

   function Image (Badness : Badness_Value) return String is
   begin
      if Badness = Infinity then
         return "Inf";
      else
         declare
            Result : constant String := Badness_Value'Image (Badness);
         begin
            --  Slicing removes the superfluous space
            return Result (Result'First + 1 .. Result'Last);
         end;
      end if;
   end Image;

   ------------------
   -- Line_Badness --
   ------------------

   function Line_Badness
     (W                : Paragraph_Filling.Words.Words;
      X, Y             : Word_Index;
      Max_Line_Length  : Positive;
      Format_Last_Line : Boolean := False) return Badness_Value
   is
      Distance : constant Integer := Max_Line_Length - Line_Length (W, X, Y);

   begin
      --  Line is too long

      if Distance < 0 then

         --  One word line, meaning nothing can be done to shorten it

         if X = Y then
            return 0;

         --  Not one word line, meaning it can be split into two pieces

         else
            return Infinity;
         end if;

      --  Last line is not bad if unless Format_Last_Line = True

      elsif  Y = Last_Word (W)  and then not Format_Last_Line then
         return 0;

         --  Otherwise, normal line. Return the badness of distance to the end
         --  of the line squared.

      else
         return Distance ** 2;
      end if;
   end Line_Badness;

   ------------------
   -- Line_Badness --
   ------------------

   function Line_Badness
     (Line_Length : Positive; Max_Line_Length : Positive)
      return Badness_Value is
   begin
      if Line_Length > Max_Line_Length then
         return Infinity;

      else
         return (Max_Line_Length - Line_Length) ** 2;
      end if;
   end Line_Badness;

end GNATCOLL.Paragraph_Filling.Badnesses;