asfml_2.6.0_24478793/include/sf.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
 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
--//////////////////////////////////////////////////////////
-- //
-- // SFML - Simple and Fast Multimedia Library
-- // Copyright (C) 2007-2023 Laurent Gomila (laurent.gom@gmail.com)
-- //
-- // This software is provided 'as-is', without any express or implied warranty.
-- // In no event will the authors be held liable for any damages arising from the use of this software.
-- //
-- // Permission is granted to anyone to use this software for any purpose,
-- // including commercial applications, and to alter it and redistribute it freely,
-- // subject to the following restrictions:
-- //
-- // 1. The origin of this software must not be misrepresented;
-- //    you must not claim that you wrote the original software.
-- //    If you use this software in a product, an acknowledgment
-- //    in the product documentation would be appreciated but is not required.
-- //
-- // 2. Altered source versions must be plainly marked as such,
-- //    and must not be misrepresented as being the original software.
-- //
-- // 3. This notice may not be removed or altered from any source distribution.
-- //
--//////////////////////////////////////////////////////////

--//////////////////////////////////////////////////////////

with Interfaces.C;
private with Interfaces.C.Pointers;

with Ada.Strings.Unbounded;

--/ @image ASFML_Logo.svg
--/ @summary
--/ ASFML: Ada binding to the SFML library
--/
--/ @description
--/ Root package of all the packages provided by SFML. Direct children are the
--/ SFML modules: Audio, Graphics, Network, System and Window.
package Sf is

   --//////////////////////////////////////////////////////////
   -- // Define the ASFML version
   --//////////////////////////////////////////////////////////
   Version_Major : constant := 2;
   Version_Minor : constant := 6;
   --/ This corresponds to the ASFML patch version, not necessarily to the used CSFML one.
   Version_Patch : constant := 0;

   --//////////////////////////////////////////////////////////
   -- // Define a portable boolean type
   --//////////////////////////////////////////////////////////
   type sfBool is new Boolean;
   for sfBool'Size use Interfaces.C.Int'Size;
   for sfBool use (False => 0, True => 1);
   sfFalse : sfBool renames False;
   sfTrue  : sfBool renames True;

   --//////////////////////////////////////////////////////////
   -- // Define portable types
   --//////////////////////////////////////////////////////////

   -- // 8 bits integer types
   type sfInt8 is range -128 .. 127;
   for sfInt8'Size use 8;
   type sfInt8_Ptr is access all sfInt8;
   pragma Convention (C, sfInt8);
   pragma Convention (C, sfInt8_Ptr);

   type sfUint8 is mod 256;
   for sfUint8'Size use 8;
   type sfUint8_Ptr is access all sfUint8;
   pragma Convention (C, sfUint8);
   pragma Convention (C, sfUint8_Ptr);

   -- // 16 bits integer types
   type sfInt16 is new Interfaces.Integer_16;
   type sfInt16_Ptr is access all sfInt16;
   pragma Convention (C, sfInt16);
   pragma Convention (C, sfInt16_Ptr);

   type sfUint16 is mod 2 ** sfInt16'SIZE;
   type sfUint16_Ptr is access all sfUint16;
   pragma Convention (C, sfUint16);
   pragma Convention (C, sfUint16_Ptr);

   -- // 32 bits integer types
   type sfInt32 is new Integer;
   type sfInt32_Ptr is access all sfInt32;
   pragma Convention (C, sfInt32);
   pragma Convention (C, sfInt32_Ptr);

   type sfUint32 is mod 2 ** sfInt32'SIZE;
   type sfUint32_Ptr is access all sfUint32;
   pragma Convention (C, sfUint32);
   pragma Convention (C, sfUint32_Ptr);

   -- // 64 bits integer types
   type sfInt64 is new Interfaces.Integer_64;
   type sfInt64_Ptr is access all sfInt64;
   pragma Convention (C, sfInt64);
   pragma Convention (C, sfInt64_Ptr);

   type sfUint64 is new Interfaces.Unsigned_64;
   type sfUint64_Ptr is access all sfUint64;
   pragma Convention (C, sfUint64_Ptr);

   -- // size_t
   type sfSize_t is mod 2 ** Standard'ADDRESS_SIZE;
   type sfSize_t_Ptr is access all sfSize_t;
   pragma Convention (C, sfSize_t);
   pragma Convention (C, sfSize_t_Ptr);

   type sfArrayOfStrings is array (sfSize_t range <>) of
     Ada.Strings.Unbounded.Unbounded_String;

private

   use Interfaces;

   -- Used by some implementations of functions returning Unicode
   -- strings.
   --
   package Char32_Ptrs is
     new C.Pointers (Index              => C.size_t,
                     Element            => C.char32_t,
                     Element_Array      => C.char32_array,
                     Default_Terminator => C.char32_nul);
end Sf;