Self-contained '.inl' headers + minor refactoring

This commit is contained in:
vittorioromeo 2024-02-05 03:51:14 +01:00 committed by Vittorio Romeo
parent 76295f2624
commit 4ff70c87d3
32 changed files with 148 additions and 43 deletions

View File

@ -31,8 +31,6 @@
#include <SFML/Audio/SoundSource.hpp> #include <SFML/Audio/SoundSource.hpp>
#include <cstdlib>
namespace sf namespace sf
{ {

View File

@ -34,10 +34,11 @@
#include <SFML/System/Time.hpp> #include <SFML/System/Time.hpp>
#include <filesystem> #include <filesystem>
#include <string>
#include <unordered_set> #include <unordered_set>
#include <vector> #include <vector>
#include <cstdint>
namespace sf namespace sf
{ {

View File

@ -29,11 +29,12 @@
//////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////
#include <SFML/Audio/Export.hpp> #include <SFML/Audio/Export.hpp>
#include <algorithm>
#include <filesystem> #include <filesystem>
#include <memory> #include <memory>
#include <vector> #include <vector>
#include <cstddef>
namespace sf namespace sf
{ {

View File

@ -25,6 +25,9 @@
//////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////
// Headers // Headers
//////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////
#include <SFML/Audio/SoundFileFactory.hpp> // NOLINT(misc-header-include-cycle)
#include <algorithm>
namespace sf namespace sf

View File

@ -226,10 +226,10 @@ constexpr Color& operator-=(Color& left, const Color& right);
//////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////
constexpr Color& operator*=(Color& left, const Color& right); constexpr Color& operator*=(Color& left, const Color& right);
#include <SFML/Graphics/Color.inl>
} // namespace sf } // namespace sf
#include <SFML/Graphics/Color.inl>
//////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////
/// \class sf::Color /// \class sf::Color

View File

@ -22,7 +22,14 @@
// //
//////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////
// Headers
////////////////////////////////////////////////////////////
#include <SFML/Graphics/Color.hpp> // NOLINT(misc-header-include-cycle)
namespace sf
{
//////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////
constexpr Color::Color() = default; constexpr Color::Color() = default;
@ -149,3 +156,5 @@ inline constexpr Color Color::Yellow(255, 255, 0);
inline constexpr Color Color::Magenta(255, 0, 255); inline constexpr Color Color::Magenta(255, 0, 255);
inline constexpr Color Color::Cyan(0, 255, 255); inline constexpr Color Color::Cyan(0, 255, 255);
inline constexpr Color Color::Transparent(0, 0, 0, 0); inline constexpr Color Color::Transparent(0, 0, 0, 0);
} // namespace sf

View File

@ -47,8 +47,6 @@ struct Matrix;
template <typename T> template <typename T>
struct Vector4; struct Vector4;
#include <SFML/Graphics/Glsl.inl>
} // namespace priv } // namespace priv
@ -195,6 +193,8 @@ using Mat4 = priv::Matrix<4, 4>;
} // namespace Glsl } // namespace Glsl
} // namespace sf } // namespace sf
#include <SFML/Graphics/Glsl.inl>
//////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////
/// \namespace sf::Glsl /// \namespace sf::Glsl

View File

@ -22,7 +22,14 @@
// //
//////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////
// Headers
////////////////////////////////////////////////////////////
#include <SFML/Graphics/Glsl.hpp> // NOLINT(misc-header-include-cycle)
namespace sf::priv
{
//////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////
/// \brief Helper functions to copy sf::Transform to sf::Glsl::Mat3/4 /// \brief Helper functions to copy sf::Transform to sf::Glsl::Mat3/4
/// ///
@ -149,3 +156,5 @@ struct Vector4
T z{}; //!< 3rd component (Z) of the 4D vector T z{}; //!< 3rd component (Z) of the 4D vector
T w{}; //!< 4th component (W) of the 4D vector T w{}; //!< 4th component (W) of the 4D vector
}; };
} // namespace sf::priv

View File

@ -173,14 +173,14 @@ template <typename T>
template <typename T> template <typename T>
[[nodiscard]] constexpr bool operator!=(const Rect<T>& left, const Rect<T>& right); [[nodiscard]] constexpr bool operator!=(const Rect<T>& left, const Rect<T>& right);
#include <SFML/Graphics/Rect.inl>
// Create type aliases for the most common types // Create type aliases for the most common types
using IntRect = Rect<int>; using IntRect = Rect<int>;
using FloatRect = Rect<float>; using FloatRect = Rect<float>;
} // namespace sf } // namespace sf
#include <SFML/Graphics/Rect.inl>
//////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////
/// \class sf::Rect /// \class sf::Rect

View File

@ -22,7 +22,14 @@
// //
//////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////
// Headers
////////////////////////////////////////////////////////////
#include <SFML/Graphics/Rect.hpp> // NOLINT(misc-header-include-cycle)
namespace sf
{
//////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////
template <typename T> template <typename T>
constexpr Rect<T>::Rect() = default; constexpr Rect<T>::Rect() = default;
@ -150,3 +157,5 @@ constexpr bool operator!=(const Rect<T>& left, const Rect<T>& right)
{ {
return !(left == right); return !(left == right);
} }
} // namespace sf

View File

@ -35,8 +35,7 @@
#include <SFML/Graphics/VertexArray.hpp> #include <SFML/Graphics/VertexArray.hpp>
#include <SFML/System/String.hpp> #include <SFML/System/String.hpp>
#include <SFML/System/Vector2.hpp>
#include <vector>
namespace sf namespace sf

View File

@ -33,8 +33,6 @@
#include <SFML/System/Vector2.hpp> #include <SFML/System/Vector2.hpp>
#include <array>
namespace sf namespace sf
{ {
@ -347,10 +345,10 @@ constexpr Vector2f operator*(const Transform& left, const Vector2f& right);
//////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////
[[nodiscard]] constexpr bool operator!=(const Transform& left, const Transform& right); [[nodiscard]] constexpr bool operator!=(const Transform& left, const Transform& right);
#include <SFML/Graphics/Transform.inl>
} // namespace sf } // namespace sf
#include <SFML/Graphics/Transform.inl>
//////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////
/// \class sf::Transform /// \class sf::Transform

View File

@ -22,7 +22,16 @@
// //
//////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////
// Headers
////////////////////////////////////////////////////////////
#include <SFML/Graphics/Transform.hpp> // NOLINT(misc-header-include-cycle)
#include <array>
namespace sf
{
//////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////
constexpr Transform::Transform() = default; constexpr Transform::Transform() = default;
@ -229,3 +238,5 @@ constexpr bool operator!=(const Transform& left, const Transform& right)
// Note: the 'inline' keyword here is technically not required, but VS2019 fails // Note: the 'inline' keyword here is technically not required, but VS2019 fails
// to compile with a bogus "multiple definition" error if not explicitly used. // to compile with a bogus "multiple definition" error if not explicitly used.
inline constexpr Transform Transform::Identity; inline constexpr Transform Transform::Identity;
} // namespace sf

View File

@ -97,10 +97,10 @@ public:
Vector2f texCoords; //!< Coordinates of the texture's pixel to map to the vertex Vector2f texCoords; //!< Coordinates of the texture's pixel to map to the vertex
}; };
#include <SFML/Graphics/Vertex.inl>
} // namespace sf } // namespace sf
#include <SFML/Graphics/Vertex.inl>
//////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////
/// \class sf::Vertex /// \class sf::Vertex

View File

@ -22,7 +22,14 @@
// //
//////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////
// Headers
////////////////////////////////////////////////////////////
#include <SFML/Graphics/Vertex.hpp> // NOLINT(misc-header-include-cycle)
namespace sf
{
//////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////
constexpr Vertex::Vertex() = default; constexpr Vertex::Vertex() = default;
@ -54,3 +61,5 @@ color(theColor),
texCoords(theTexCoords) texCoords(theTexCoords)
{ {
} }
} // namespace sf

View File

@ -31,8 +31,6 @@
#include <SFML/Network/SocketHandle.hpp> #include <SFML/Network/SocketHandle.hpp>
#include <vector>
namespace sf namespace sf
{ {

View File

@ -34,6 +34,7 @@
#include <SFML/System/Time.hpp> #include <SFML/System/Time.hpp>
#include <optional> #include <optional>
#include <vector>
#include <cstddef> #include <cstddef>

View File

@ -29,8 +29,6 @@
//////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////
#include <SFML/System/Export.hpp> #include <SFML/System/Export.hpp>
#include <cassert>
namespace sf namespace sf
{ {
@ -471,11 +469,10 @@ namespace Literals
[[nodiscard]] constexpr Angle operator""_rad(unsigned long long int angle); [[nodiscard]] constexpr Angle operator""_rad(unsigned long long int angle);
} // namespace Literals } // namespace Literals
} // namespace sf
#include <SFML/System/Angle.inl> #include <SFML/System/Angle.inl>
} // namespace sf
//////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////
/// \class sf::Angle /// \class sf::Angle

View File

@ -22,6 +22,16 @@
// //
//////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////
// Headers
////////////////////////////////////////////////////////////
#include <SFML/System/Angle.hpp> // NOLINT(misc-header-include-cycle)
#include <cassert>
namespace sf
{
namespace priv namespace priv
{ {
constexpr float pi = 3.141592654f; constexpr float pi = 3.141592654f;
@ -267,3 +277,5 @@ constexpr Angle operator""_rad(unsigned long long angle)
// Note: the 'inline' keyword here is technically not required, but VS2019 fails // Note: the 'inline' keyword here is technically not required, but VS2019 fails
// to compile with a bogus "multiple definition" error if not explicitly used. // to compile with a bogus "multiple definition" error if not explicitly used.
inline constexpr Angle Angle::Zero; inline constexpr Angle Angle::Zero;
} // namespace sf

View File

@ -636,10 +636,10 @@ SFML_SYSTEM_API bool operator>=(const String& left, const String& right);
//////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////
SFML_SYSTEM_API String operator+(const String& left, const String& right); SFML_SYSTEM_API String operator+(const String& left, const String& right);
#include <SFML/System/String.inl>
} // namespace sf } // namespace sf
#include <SFML/System/String.inl>
//////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////
/// \class sf::String /// \class sf::String

View File

@ -22,7 +22,14 @@
// //
//////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////
// Headers
////////////////////////////////////////////////////////////
#include <SFML/System/String.hpp> // NOLINT(misc-header-include-cycle)
namespace sf
{
//////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////
template <typename T> template <typename T>
String String::fromUtf8(T begin, T end) String String::fromUtf8(T begin, T end)
@ -51,3 +58,5 @@ String String::fromUtf32(T begin, T end)
string.m_string.assign(begin, end); string.m_string.assign(begin, end);
return string; return string;
} }
} // namespace sf

View File

@ -30,9 +30,7 @@
#include <SFML/System/Export.hpp> #include <SFML/System/Export.hpp>
#include <chrono> #include <chrono>
#include <ratio>
#include <cassert>
#include <cstdint> #include <cstdint>
@ -450,10 +448,10 @@ constexpr Time& operator/=(Time& left, std::int64_t right);
//////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////
constexpr Time& operator%=(Time& left, Time right); constexpr Time& operator%=(Time& left, Time right);
#include <SFML/System/Time.inl>
} // namespace sf } // namespace sf
#include <SFML/System/Time.inl>
//////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////
/// \class sf::Time /// \class sf::Time

View File

@ -22,7 +22,18 @@
// //
//////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////
// Headers
////////////////////////////////////////////////////////////
#include <SFML/System/Time.hpp> // NOLINT(misc-header-include-cycle)
#include <ratio>
#include <cassert>
namespace sf
{
//////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////
constexpr Time::Time() = default; constexpr Time::Time() = default;
@ -273,3 +284,5 @@ constexpr Time& operator%=(Time& left, Time right)
// Note: the 'inline' keyword here is technically not required, but VS2019 fails // Note: the 'inline' keyword here is technically not required, but VS2019 fails
// to compile with a bogus "multiple definition" error if not explicitly used. // to compile with a bogus "multiple definition" error if not explicitly used.
inline constexpr Time Time::Zero; inline constexpr Time Time::Zero;
} // namespace sf

View File

@ -731,8 +731,6 @@ public:
static Out encodeWide(std::uint32_t codepoint, Out output, wchar_t replacement = 0); static Out encodeWide(std::uint32_t codepoint, Out output, wchar_t replacement = 0);
}; };
#include <SFML/System/Utf.inl>
// Make type aliases to get rid of the template syntax // Make type aliases to get rid of the template syntax
using Utf8 = Utf<8>; using Utf8 = Utf<8>;
using Utf16 = Utf<16>; using Utf16 = Utf<16>;
@ -740,6 +738,8 @@ using Utf32 = Utf<32>;
} // namespace sf } // namespace sf
#include <SFML/System/Utf.inl>
//////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////
/// \class sf::Utf /// \class sf::Utf

View File

@ -22,6 +22,11 @@
// //
//////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////
// Headers
////////////////////////////////////////////////////////////
#include <SFML/System/Utf.hpp> // NOLINT(misc-header-include-cycle)
//////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////
// References: // References:
@ -34,6 +39,8 @@
//////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////
namespace sf
{
//////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////
template <typename InputIt, typename OutputIt> template <typename InputIt, typename OutputIt>
OutputIt priv::copy(InputIt first, InputIt last, OutputIt dFirst) OutputIt priv::copy(InputIt first, InputIt last, OutputIt dFirst)
@ -727,3 +734,5 @@ Out Utf<32>::encodeWide(std::uint32_t codepoint, Out output, wchar_t replacement
return output; return output;
} }
} // namespace sf

View File

@ -28,8 +28,6 @@
#include <SFML/System/Angle.hpp> #include <SFML/System/Angle.hpp>
#include <cassert>
namespace sf namespace sf
{ {
@ -398,10 +396,10 @@ template <typename T>
template <typename T> template <typename T>
[[nodiscard]] constexpr bool operator!=(const Vector2<T>& left, const Vector2<T>& right); [[nodiscard]] constexpr bool operator!=(const Vector2<T>& left, const Vector2<T>& right);
#include <SFML/System/Vector2.inl>
} // namespace sf } // namespace sf
#include <SFML/System/Vector2.inl>
//////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////
/// \class sf::Vector2 /// \class sf::Vector2

View File

@ -22,7 +22,16 @@
// //
//////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////
// Headers
////////////////////////////////////////////////////////////
#include <SFML/System/Vector2.hpp> // NOLINT(misc-header-include-cycle)
#include <cassert>
namespace sf
{
//////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////
template <typename T> template <typename T>
constexpr Vector2<T>::Vector2() = default; constexpr Vector2<T>::Vector2() = default;
@ -219,3 +228,5 @@ const Vector2<T> Vector2<T>::UnitX(static_cast<T>(1), static_cast<T>(0));
template <typename T> template <typename T>
const Vector2<T> Vector2<T>::UnitY(static_cast<T>(0), static_cast<T>(1)); const Vector2<T> Vector2<T>::UnitY(static_cast<T>(0), static_cast<T>(1));
} // namespace sf

View File

@ -26,7 +26,6 @@
#include <SFML/System/Export.hpp> #include <SFML/System/Export.hpp>
#include <cassert>
namespace sf namespace sf
{ {
@ -309,14 +308,14 @@ template <typename T>
template <typename T> template <typename T>
[[nodiscard]] constexpr bool operator!=(const Vector3<T>& left, const Vector3<T>& right); [[nodiscard]] constexpr bool operator!=(const Vector3<T>& left, const Vector3<T>& right);
#include <SFML/System/Vector3.inl>
// Define the most common types // Define the most common types
using Vector3i = Vector3<int>; using Vector3i = Vector3<int>;
using Vector3f = Vector3<float>; using Vector3f = Vector3<float>;
} // namespace sf } // namespace sf
#include <SFML/System/Vector3.inl>
//////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////
/// \class sf::Vector3 /// \class sf::Vector3

View File

@ -22,7 +22,16 @@
// //
//////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////
// Headers
////////////////////////////////////////////////////////////
#include <SFML/System/Vector3.hpp> // NOLINT(misc-header-include-cycle)
#include <cassert>
namespace sf
{
//////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////
template <typename T> template <typename T>
constexpr Vector3<T>::Vector3() = default; constexpr Vector3<T>::Vector3() = default;
@ -208,3 +217,5 @@ constexpr bool operator!=(const Vector3<T>& left, const Vector3<T>& right)
{ {
return (left.x != right.x) || (left.y != right.y) || (left.z != right.z); return (left.x != right.x) || (left.y != right.y) || (left.z != right.z);
} }
} // namespace sf

View File

@ -46,6 +46,8 @@
#include <sys/types.h> #include <sys/types.h>
#include <unistd.h> #include <unistd.h>
#include <cstddef>
#endif #endif
#include <cstdint> #include <cstdint>

View File

@ -73,8 +73,8 @@ TEST_CASE("[Graphics] sf::Font", runDisplayTests())
SECTION("Invalid data and size") SECTION("Invalid data and size")
{ {
CHECK(!font.loadFromMemory(nullptr, 1)); CHECK(!font.loadFromMemory(nullptr, 1));
const std::byte byte{0xCD}; const std::byte testByte{0xCD};
CHECK(!font.loadFromMemory(&byte, 0)); CHECK(!font.loadFromMemory(&testByte, 0));
} }
SECTION("Successful load") SECTION("Successful load")

View File

@ -155,8 +155,8 @@ TEST_CASE("[Graphics] sf::Image")
SECTION("Invalid size") SECTION("Invalid size")
{ {
const std::byte byte{0xAB}; const std::byte testByte{0xAB};
CHECK(!image.loadFromMemory(&byte, 0)); CHECK(!image.loadFromMemory(&testByte, 0));
} }
SECTION("Failed load") SECTION("Failed load")