Natools

Check-in [076d8be66e]
Login

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:s_expressions-templates-generic_integers: new command for input of several images, leveraging affix syntax
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: 076d8be66ec10638a17e30c2aa3d38168de7796f
User & Date: nat 2014-10-01 17:51:20
Context
2014-10-02
21:26
s_expressions-templates-tests-integers: add tests for image ranges check-in: dc623ed4d6 user: nat tags: trunk
2014-10-01
17:51
s_expressions-templates-generic_integers: new command for input of several images, leveraging affix syntax check-in: 076d8be66e user: nat tags: trunk
2014-09-30
18:50
s_expressions-templates-tests-integers: add tests for prefix and suffix width check-in: e612c1948b user: nat tags: trunk
Changes
Hide Diffs Side-by-Side Diffs Ignore Whitespace Patch

Changes to generated/natools-static_maps-s_expressions-templates-integers-mc.adb.

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
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








-
+


-
+

-
-
-
-
+
+
+
+










-
-
+
+

-
+



with Interfaces; use Interfaces;

package body Natools.Static_Maps.S_Expressions.Templates.Integers.MC is

   P : constant array (0 .. 4) of Natural :=
     (1, 2, 5, 6, 9);

   T1 : constant array (0 .. 4) of Unsigned_8 :=
     (0, 40, 7, 12, 15);
     (10, 36, 34, 8, 27);

   T2 : constant array (0 .. 4) of Unsigned_8 :=
     (31, 48, 43, 13, 1);
     (6, 49, 31, 26, 30);

   G : constant array (0 .. 48) of Unsigned_8 :=
     (0, 14, 0, 0, 0, 0, 0, 18, 0, 17, 10, 5, 0, 18, 0, 0, 18, 8, 0, 16, 18,
      0, 0, 0, 0, 15, 23, 0, 1, 4, 13, 0, 0, 0, 0, 3, 5, 17, 0, 2, 0, 14, 6,
      0, 10, 21, 0, 0, 0);
   G : constant array (0 .. 50) of Unsigned_8 :=
     (0, 10, 0, 6, 0, 0, 0, 0, 8, 0, 0, 4, 0, 0, 11, 0, 4, 14, 1, 0, 0, 0,
      0, 0, 7, 0, 6, 0, 0, 5, 0, 0, 21, 0, 17, 0, 16, 7, 23, 0, 20, 10, 0,
      0, 2, 1, 10, 2, 0, 19, 3);

   function Hash (S : String) return Natural is
      F : constant Natural := S'First - 1;
      L : constant Natural := S'Length;
      F1, F2 : Natural := 0;
      J : Natural;
   begin
      for K in P'Range loop
         exit when L < P (K);
         J  := Character'Pos (S (P (K) + F));
         F1 := (F1 + Natural (T1 (K)) * J) mod 49;
         F2 := (F2 + Natural (T2 (K)) * J) mod 49;
         F1 := (F1 + Natural (T1 (K)) * J) mod 51;
         F2 := (F2 + Natural (T2 (K)) * J) mod 51;
      end loop;
      return (Natural (G (F1)) + Natural (G (F2))) mod 24;
      return (Natural (G (F1)) + Natural (G (F2))) mod 25;
   end Hash;

end Natools.Static_Maps.S_Expressions.Templates.Integers.MC;

Changes to generated/natools-static_maps-s_expressions-templates-integers-t.adb.

1

2
3
4
5
6
7
8

1
2
3
4
5
6
7
8
-
+







--  Generated at 2014-09-26 17:52:14 +0000 by Natools.Static_Hash_Maps
--  Generated at 2014-10-01 17:18:35 +0000 by Natools.Static_Hash_Maps
--  from src/natools-s_expressions-templates-generic_integers-maps.sx

with Natools.Static_Maps.S_Expressions.Templates.Integers.MC;
with Natools.Static_Maps.S_Expressions.Templates.Integers.AC;
function Natools.Static_Maps.S_Expressions.Templates.Integers.T
  return Boolean is
begin

Changes to generated/natools-static_maps-s_expressions-templates-integers-t.ads.

1

2
3
4
5
6

1
2
3
4
5
6
-
+





--  Generated at 2014-09-26 17:52:14 +0000 by Natools.Static_Hash_Maps
--  Generated at 2014-10-01 17:18:35 +0000 by Natools.Static_Hash_Maps
--  from src/natools-s_expressions-templates-generic_integers-maps.sx

function Natools.Static_Maps.S_Expressions.Templates.Integers.T
  return Boolean;
pragma Pure (Natools.Static_Maps.S_Expressions.Templates.Integers.T);

Changes to generated/natools-static_maps-s_expressions-templates-integers.adb.

1

2
3
4
5
6
7
8

1
2
3
4
5
6
7
8
-
+







--  Generated at 2014-09-26 17:52:14 +0000 by Natools.Static_Hash_Maps
--  Generated at 2014-10-01 17:18:35 +0000 by Natools.Static_Hash_Maps
--  from src/natools-s_expressions-templates-generic_integers-maps.sx

with Natools.Static_Maps.S_Expressions.Templates.Integers.MC;
with Natools.Static_Maps.S_Expressions.Templates.Integers.AC;

package body Natools.Static_Maps.S_Expressions.Templates.Integers is

Changes to generated/natools-static_maps-s_expressions-templates-integers.ads.

1

2
3
4
5
6
7
8
9
10
11
12
13

14
15
16
17
18
19
20

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
-
+












+







--  Generated at 2014-09-26 17:52:14 +0000 by Natools.Static_Hash_Maps
--  Generated at 2014-10-01 17:18:35 +0000 by Natools.Static_Hash_Maps
--  from src/natools-s_expressions-templates-generic_integers-maps.sx

package Natools.Static_Maps.S_Expressions.Templates.Integers is
   pragma Pure;

   type Main_Command is
     (Error,
      Align,
      Align_Center,
      Align_Left,
      Align_Right,
      Base,
      Image_Range,
      Images,
      Padding,
      Padding_Left,
      Padding_Right,
      Prefix,
      Sign,
      Suffix,
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
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







-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+







   Map_1_Key_1 : aliased constant String := "align-center";
   Map_1_Key_2 : aliased constant String := "centered";
   Map_1_Key_3 : aliased constant String := "align-left";
   Map_1_Key_4 : aliased constant String := "left-align";
   Map_1_Key_5 : aliased constant String := "align-right";
   Map_1_Key_6 : aliased constant String := "right-align";
   Map_1_Key_7 : aliased constant String := "base";
   Map_1_Key_8 : aliased constant String := "image";
   Map_1_Key_9 : aliased constant String := "images";
   Map_1_Key_10 : aliased constant String := "padding";
   Map_1_Key_11 : aliased constant String := "padding-left";
   Map_1_Key_12 : aliased constant String := "left-padding";
   Map_1_Key_13 : aliased constant String := "padding-right";
   Map_1_Key_14 : aliased constant String := "right-padding";
   Map_1_Key_15 : aliased constant String := "prefix";
   Map_1_Key_16 : aliased constant String := "sign";
   Map_1_Key_17 : aliased constant String := "signs";
   Map_1_Key_18 : aliased constant String := "suffix";
   Map_1_Key_19 : aliased constant String := "width";
   Map_1_Key_20 : aliased constant String := "width-max";
   Map_1_Key_21 : aliased constant String := "max-width";
   Map_1_Key_22 : aliased constant String := "width-min";
   Map_1_Key_23 : aliased constant String := "min-width";
   Map_1_Keys : constant array (0 .. 23) of access constant String
   Map_1_Key_8 : aliased constant String := "image-range";
   Map_1_Key_9 : aliased constant String := "image";
   Map_1_Key_10 : aliased constant String := "images";
   Map_1_Key_11 : aliased constant String := "padding";
   Map_1_Key_12 : aliased constant String := "padding-left";
   Map_1_Key_13 : aliased constant String := "left-padding";
   Map_1_Key_14 : aliased constant String := "padding-right";
   Map_1_Key_15 : aliased constant String := "right-padding";
   Map_1_Key_16 : aliased constant String := "prefix";
   Map_1_Key_17 : aliased constant String := "sign";
   Map_1_Key_18 : aliased constant String := "signs";
   Map_1_Key_19 : aliased constant String := "suffix";
   Map_1_Key_20 : aliased constant String := "width";
   Map_1_Key_21 : aliased constant String := "width-max";
   Map_1_Key_22 : aliased constant String := "max-width";
   Map_1_Key_23 : aliased constant String := "width-min";
   Map_1_Key_24 : aliased constant String := "min-width";
   Map_1_Keys : constant array (0 .. 24) of access constant String
     := (Map_1_Key_0'Access,
         Map_1_Key_1'Access,
         Map_1_Key_2'Access,
         Map_1_Key_3'Access,
         Map_1_Key_4'Access,
         Map_1_Key_5'Access,
         Map_1_Key_6'Access,
73
74
75
76
77
78
79
80
81



82
83
84
85
86
87
88
89

90
91
92
93
94
95
96
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







-
-
+
+
+








+







         Map_1_Key_16'Access,
         Map_1_Key_17'Access,
         Map_1_Key_18'Access,
         Map_1_Key_19'Access,
         Map_1_Key_20'Access,
         Map_1_Key_21'Access,
         Map_1_Key_22'Access,
         Map_1_Key_23'Access);
   Map_1_Elements : constant array (0 .. 23) of Main_Command
         Map_1_Key_23'Access,
         Map_1_Key_24'Access);
   Map_1_Elements : constant array (0 .. 24) of Main_Command
     := (Align,
         Align_Center,
         Align_Center,
         Align_Left,
         Align_Left,
         Align_Right,
         Align_Right,
         Base,
         Image_Range,
         Images,
         Images,
         Padding,
         Padding_Left,
         Padding_Left,
         Padding_Right,
         Padding_Right,

Changes to src/natools-s_expressions-templates-generic_integers-maps.sx.

1
2
3
4
5
6
7
8
9
10
11

12
13
14
15
16
17
18
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19











+







(Natools.Static_Maps.S_Expressions.Templates.Integers
   pure
   (test-function T)
   (extra-decl "\
   type Main_Command is
     (Error,
      Align,
      Align_Center,
      Align_Left,
      Align_Right,
      Base,
      Image_Range,
      Images,
      Padding,
      Padding_Left,
      Padding_Right,
      Prefix,
      Sign,
      Suffix,
28
29
30
31
32
33
34

35
36
37
38
39
40
41
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43







+







      (not-found Error)
      (nodes
         (Align          align)
         (Align_Center   align-center centered)
         (Align_Left     align-left left-align)
         (Align_Right    align-right right-align)
         (Base           base)
         (Image_Range    image-range)
         (Images         image images)
         (Padding        padding)
         (Padding_Left   padding-left left-padding)
         (Padding_Right  padding-right right-padding)
         (Prefix         prefix)
         (Sign           sign signs)
         (Suffix         suffix)

Changes to src/natools-s_expressions-templates-generic_integers.adb.

130
131
132
133
134
135
136



137
138
139
140
141
142
143
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146







+
+
+








         when Commands.Align_Right =>
            State.Set_Align (Right_Aligned);

         when Commands.Base =>
            State.Set_Symbols (Arguments);

         when Commands.Image_Range =>
            Parse (State.Images, Arguments);

         when Commands.Images =>
            Image_Interpreter (Arguments, State, Meaningless_Value);

         when Commands.Padding =>
            case Arguments.Current_Event is
               when Events.Add_Atom =>
                  State.Left_Padding := Create (Arguments.Current_Atom);