Natools

Check-in [c61c547bb8]
Login
Overview
Comment:smaz-tools: add a size limit for the simple dictionary pending list
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: c61c547bb89c5953739a62986a1290634247aa6e
User & Date: nat on 2016-11-02 20:55:40
Other Links: manifest | tags
Context
2016-11-03
20:20
tools/smaz: new command line option for maximum pending list size check-in: 2ee60631e6 user: nat tags: trunk
2016-11-02
20:55
smaz-tools: add a size limit for the simple dictionary pending list check-in: c61c547bb8 user: nat tags: trunk
2016-11-01
21:32
tools/smaz: fix option arguments in help text check-in: 8a29fd3a72 user: nat tags: trunk
Changes

Modified src/natools-smaz-tools.adb from [7a4d302625] to [f5a81251e0].

801
802
803
804
805
806
807
808



809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826

827
828
829
830
831
832
833
801
802
803
804
805
806
807

808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836







-
+
+
+


















+







   end Simple_Dictionary;


   procedure Simple_Dictionary_And_Pending
     (Counter : in Word_Counter;
      Word_Count : in Natural;
      Selected : out String_Lists.List;
      Pending : out String_Lists.List)
      Pending : out String_Lists.List;
      Max_Pending_Count : in Ada.Containers.Count_Type
        := Ada.Containers.Count_Type'Last)
   is
      use type Ada.Containers.Count_Type;
      Target_Count : constant Ada.Containers.Count_Type
        := Ada.Containers.Count_Type (Word_Count);
      Set : Scored_Word_Sets.Set;
   begin
      for Cursor in Word_Maps.Iterate (Counter.Map) loop
         Scored_Word_Sets.Insert (Set, To_Scored_Word (Cursor));
      end loop;

      Selected := String_Lists.Empty_List;
      Pending := String_Lists.Empty_List;

      for Cursor in Scored_Word_Sets.Iterate (Set) loop
         if String_Lists.Length (Selected) < Target_Count then
            Selected.Append (Scored_Word_Sets.Element (Cursor).Word);
         else
            Pending.Append (Scored_Word_Sets.Element (Cursor).Word);
            exit when String_Lists.Length (Selected) >= Max_Pending_Count;
         end if;
      end loop;
   end Simple_Dictionary_And_Pending;


   function To_Scored_Word (Cursor : in Word_Maps.Cursor)
     return Scored_Word

Modified src/natools-smaz-tools.ads from [f9d85abade] to [be69a43d0e].

158
159
160
161
162
163
164
165



166
167
168
169
170
171
172
158
159
160
161
162
163
164

165
166
167
168
169
170
171
172
173
174







-
+
+
+







      --  Return the Word_Count words in Counter that have the highest score,
      --  the score being count * length.

   procedure Simple_Dictionary_And_Pending
     (Counter : in Word_Counter;
      Word_Count : in Natural;
      Selected : out String_Lists.List;
      Pending : out String_Lists.List);
      Pending : out String_Lists.List;
      Max_Pending_Count : in Ada.Containers.Count_Type
        := Ada.Containers.Count_Type'Last);
      --  Return in Selected the Word_Count words in Counter that have the
      --  highest score, and in Pending the remaining words,
      --  the score being count * length.

   type Dictionary_Counts is
     array (Ada.Streams.Stream_Element) of String_Count;