bbs_0.1.0_d0806fab/src/bbs.ads

 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
--
-- Author: Brent Seidel
-- Version: V01.01
-- Date: 27-Apr-2021
--
-- License:
-- This is free and unencumbered software released into the public domain.
--
-- Anyone is free to copy, modify, publish, use, compile, sell, or
-- distribute this software, either in source code form or as a compiled
-- binary, for any purpose, commercial or non-commercial, and by any
-- means.
--
-- In jurisdictions that recognize copyright laws, the author or authors
-- of this software dedicate any and all copyright interest in the
-- software to the public domain. We make this dedication for the benefit
-- of the public at large and to the detriment of our heirs and
-- successors. We intend this dedication to be an overt act of
-- relinquishment in perpetuity of all present and future rights to this
-- software under copyright law.
--
-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-- IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
-- OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-- ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-- OTHER DEALINGS IN THE SOFTWARE.
--
-- For more information, please refer to <http://unlicense.org>
--
with Ada.Unchecked_Conversion;
package BBS with SPARK_Mode => on is
   pragma Pure;
   pragma No_Elaboration_Code_All;
   --
   -- This is really trivial so I don't care if anyone copies this.  If you do
   -- though, you should at least change it to your name and initials.
   --
   --  Since many of my packeges are for embedded or related software,
   --  some basic types and conversions are defined here so that they
   --  can easily be used everywhere else.
   --
   type bit is range 0 .. 1
     with Size => 1;
   type int8 is range -128 .. 127
     with size => 8;
   type uint8 is mod 2**8
     with size => 8;
   type int16 is range -(2**15) .. 2**15 - 1
     with size => 16;
   type uint16 is mod 2**16
     with Size => 16;
   type int32 is range -(2**31) .. 2**31 - 1
     with Size => 32;
   type uint32 is mod 2**32
     with Size => 32;
   type int64 is range -(2**63) .. 2**63 - 1
     with Size => 64;
   type uint64 is mod 2**64
     with Size => 64;
   --
   -- Some unchecked conversions to convert between unsigned and signed values.
   --
   function uint8_to_int8 is
     new Ada.Unchecked_Conversion(source => uint8, target => int8);
   function int8_to_uint8 is
     new Ada.Unchecked_Conversion(source => int8, target => uint8);
   function uint16_to_int16 is
     new Ada.Unchecked_Conversion(source => uint16, target => int16);
   function int16_to_uint16 is
     new Ada.Unchecked_Conversion(source => int16, target => uint16);
   function uint32_to_int is
      new Ada.Unchecked_Conversion(source => uint32, target => Integer);
   function int_to_uint32 is
      new Ada.Unchecked_Conversion(source => Integer, target => uint32);
   function uint64_to_int64 is
     new Ada.Unchecked_Conversion(source => uint64, target => int64);
   function int64_to_uint64 is
     new Ada.Unchecked_Conversion(source => int64, target => uint64);
end BBS;