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