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