File: equal8_pkg.ads

package info (click to toggle)
gcc-arm-none-eabi 15%3A12.2.rel1-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 959,712 kB
  • sloc: cpp: 3,275,382; ansic: 2,061,766; ada: 840,956; f90: 208,513; makefile: 76,132; asm: 73,433; xml: 50,448; exp: 34,146; sh: 32,436; objc: 15,637; fortran: 14,012; python: 11,991; pascal: 6,787; awk: 4,779; perl: 3,054; yacc: 338; ml: 285; lex: 201; haskell: 122
file content (58 lines) | stat: -rw-r--r-- 1,567 bytes parent folder | download
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
generic
   type Component is private;
   type List_Index is range <>;
   type List is array (List_Index range <>) of Component;
   Default_Value : Component;
 --  with function "=" (Left, Right : List) return Boolean is <>;

package Equal8_Pkg is

   pragma Pure;

   Maximum_Length : constant List_Index := List_Index'Last;

   subtype Natural_Index is List_Index'Base range 0 .. Maximum_Length;
   type Sequence (Capacity : Natural_Index) is private;
   --  from zero to Capacity.

   function Value (This : Sequence) return List;
   --  Returns the content of this sequence. The value returned is the
   --  "logical" value in that only that slice which is currently assigned
   --  is returned, as opposed to the entire physical representation.

   overriding
   function "=" (Left, Right : Sequence) return Boolean with
     Inline;

   function "=" (Left : Sequence;  Right : List) return Boolean with
     Inline;

private
   type Sequence (Capacity : Natural_Index) is record
      Current_Length : Natural_Index := 0;
      Content        : List (1 .. Capacity) := (others => Default_Value);
   end record;

   -----------
   -- Value --
   -----------

   function Value (This : Sequence) return List is
     (This.Content (1 .. This.Current_Length));

   ---------
   -- "=" --
   ---------

   overriding
   function "=" (Left, Right : Sequence) return Boolean is
     (Value (Left) = Value (Right));

   ---------
   -- "=" --
   ---------

   function "=" (Left : Sequence;  Right : List) return Boolean is
     (Value (Left) = Right);
end Equal8_Pkg;