From b6e66a5d4328638c8be8c151bd8ef01e0973adbd Mon Sep 17 00:00:00 2001 From: Ralph Sennhauser Date: Fri, 20 Jun 2025 00:06:41 +0200 Subject: [PATCH] Update headers in lobby Some gloox headers need workarounds to be included, so mark the header "lib/external_libraries/gloox.h" as source for all gloox symbols and collect all headers we use under it. Further make include-what-you-use happy with files in source/lobby and fix what needs to be fixed after. Ref: #8086 Signed-off-by: Ralph Sennhauser --- source/lib/external_libraries/gloox.h | 45 ++++++++++++------- source/lobby/Globals.cpp | 4 +- source/lobby/StanzaExtensions.cpp | 4 ++ source/lobby/StanzaExtensions.h | 1 + source/lobby/XmppClient.cpp | 20 ++++++++- source/lobby/XmppClient.h | 9 +++- .../scripting/GlooxScriptConversions.cpp | 9 +++- source/lobby/scripting/JSInterface_Lobby.cpp | 16 ++++++- 8 files changed, 84 insertions(+), 24 deletions(-) diff --git a/source/lib/external_libraries/gloox.h b/source/lib/external_libraries/gloox.h index 9432eb0a28..f72003d055 100644 --- a/source/lib/external_libraries/gloox.h +++ b/source/lib/external_libraries/gloox.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2024 Wildfire Games. +/* Copyright (C) 2025 Wildfire Games. * * Permission is hereby granted, free of charge, to any person obtaining * a copy of this software and associated documentation files (the @@ -38,22 +38,33 @@ #pragma push_macro("lookup") #undef lookup -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include +#include // IWYU pragma: export +#include // IWYU pragma: export +#include // IWYU pragma: export +#include // IWYU pragma: export +#include // IWYU pragma: export +#include // IWYU pragma: export +#include // IWYU pragma: export +#include // IWYU pragma: export +#include // IWYU pragma: export +#include // IWYU pragma: export +#include // IWYU pragma: export +#include // IWYU pragma: export +#include // IWYU pragma: export +#include // IWYU pragma: export +#include // IWYU pragma: export +#include // IWYU pragma: export +#include // IWYU pragma: export +#include // IWYU pragma: export +#include // IWYU pragma: export +#include // IWYU pragma: export +#include // IWYU pragma: export +#include // IWYU pragma: export +#include // IWYU pragma: export +#include // IWYU pragma: export +#include // IWYU pragma: export +#include // IWYU pragma: export +#include // IWYU pragma: export #pragma pop_macro("lookup") diff --git a/source/lobby/Globals.cpp b/source/lobby/Globals.cpp index 1c31d9760d..6b9a26985d 100644 --- a/source/lobby/Globals.cpp +++ b/source/lobby/Globals.cpp @@ -1,4 +1,4 @@ -/* Copyright (C) 2013 Wildfire Games. +/* Copyright (C) 2025 Wildfire Games. * This file is part of 0 A.D. * * 0 A.D. is free software: you can redistribute it and/or modify @@ -19,5 +19,5 @@ #include "IXmppClient.h" -IXmppClient *g_XmppClient = NULL; +IXmppClient *g_XmppClient = nullptr; bool g_rankedGame = false; diff --git a/source/lobby/StanzaExtensions.cpp b/source/lobby/StanzaExtensions.cpp index 7ca0da2fcf..f8ee2ed470 100644 --- a/source/lobby/StanzaExtensions.cpp +++ b/source/lobby/StanzaExtensions.cpp @@ -14,9 +14,13 @@ * You should have received a copy of the GNU General Public License * along with 0 A.D. If not, see . */ + #include "precompiled.h" + #include "StanzaExtensions.h" +#include + /****************************************************** * GameReport, fairly generic custom stanza extension used * to report game statistics. diff --git a/source/lobby/StanzaExtensions.h b/source/lobby/StanzaExtensions.h index 2a26c2610e..5024036839 100644 --- a/source/lobby/StanzaExtensions.h +++ b/source/lobby/StanzaExtensions.h @@ -19,6 +19,7 @@ #include "lib/external_libraries/gloox.h" +#include #include /// Global Gamelist Extension diff --git a/source/lobby/XmppClient.cpp b/source/lobby/XmppClient.cpp index 6dd758e893..0e6e7c8333 100644 --- a/source/lobby/XmppClient.cpp +++ b/source/lobby/XmppClient.cpp @@ -18,21 +18,37 @@ #include "precompiled.h" #include "XmppClient.h" -#include "StanzaExtensions.h" +#include "StanzaExtensions.h" #include "i18n/L10n.h" +#include "lib/external_libraries/gloox.h" #include "lib/utf8.h" -#include "network/NetServer.h" +#include "lobby/IXmppClient.h" #include "network/NetClient.h" +#include "network/NetServer.h" #include "network/StunClient.h" #include "ps/CLogger.h" +#include "ps/CStr.h" #include "ps/ConfigDB.h" #include "ps/GUID.h" #include "ps/Pyrogenesis.h" +#include "scriptinterface/Object.h" +#include "scriptinterface/ScriptConversions.h" #include "scriptinterface/ScriptInterface.h" +#include "scriptinterface/ScriptRequest.h" #include "scriptinterface/StructuredClone.h" #include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include //debug #if 1 diff --git a/source/lobby/XmppClient.h b/source/lobby/XmppClient.h index 28730619f4..edf4eaa3f5 100644 --- a/source/lobby/XmppClient.h +++ b/source/lobby/XmppClient.h @@ -20,14 +20,21 @@ #include "IXmppClient.h" +#include "lib/code_annotation.h" #include "lib/external_libraries/gloox.h" +#include "lib/types.h" #include #include +#include +#include +#include +#include #include #include -class ScriptRequest; +class JSTracer; +class ScriptInterface; class XmppClient : public IXmppClient, public gloox::ConnectionListener, public gloox::MUCRoomHandler, public gloox::IqHandler, public gloox::RegistrationHandler, public gloox::MessageHandler, public gloox::Jingle::SessionHandler, public gloox::LogHandler { diff --git a/source/lobby/scripting/GlooxScriptConversions.cpp b/source/lobby/scripting/GlooxScriptConversions.cpp index ebf0363200..cc703b9c69 100644 --- a/source/lobby/scripting/GlooxScriptConversions.cpp +++ b/source/lobby/scripting/GlooxScriptConversions.cpp @@ -1,4 +1,4 @@ -/* Copyright (C) 2021 Wildfire Games. +/* Copyright (C) 2025 Wildfire Games. * This file is part of 0 A.D. * * 0 A.D. is free software: you can redistribute it and/or modify @@ -19,10 +19,17 @@ #include "lib/config2.h" #if CONFIG2_LOBBY +#include "lib/external_libraries/gloox.h" #include "lib/utf8.h" #include "lobby/XmppClient.h" #include "scriptinterface/ScriptConversions.h" +#include +#include +#include + +class ScriptRequest; + template<> void Script::ToJSVal(const ScriptRequest& rq, JS::MutableHandleValue ret, const gloox::Presence::PresenceType& val) { ToJSVal(rq, ret, XmppClient::GetPresenceString(val)); diff --git a/source/lobby/scripting/JSInterface_Lobby.cpp b/source/lobby/scripting/JSInterface_Lobby.cpp index 06076984f4..dbe273dd5a 100644 --- a/source/lobby/scripting/JSInterface_Lobby.cpp +++ b/source/lobby/scripting/JSInterface_Lobby.cpp @@ -20,6 +20,10 @@ #include "JSInterface_Lobby.h" #include "gui/GUIManager.h" +#include "lib/code_annotation.h" +#include "lib/code_generation.h" +#include "lib/config2.h" +#include "lib/debug.h" #include "lib/utf8.h" #include "lobby/IXmppClient.h" #include "network/NetServer.h" @@ -27,11 +31,21 @@ #include "ps/CStr.h" #include "ps/Util.h" #include "scriptinterface/FunctionWrapper.h" - +#include "scriptinterface/ScriptExceptions.h" +#include "scriptinterface/ScriptRequest.h" #include "third_party/encryption/pkcs5_pbkdf2.h" +#include +#include +#include +#include +#include +#include #include +class ScriptInterface; +namespace JS { class CallArgs; } + namespace JSI_Lobby { bool HasXmppClient()