From aed1570040ed5217623b91785ec1fce3e0cdeb35 Mon Sep 17 00:00:00 2001 From: Ralph Sennhauser Date: Wed, 23 Jul 2025 19:19:42 +0200 Subject: [PATCH] Fix some includes in source/ps Make include-what-you-use happy with some files in source/ps and fix what needs to be fixed. Ref: #8086 Signed-off-by: Ralph Sennhauser --- source/lib/sysdep/arch/x86_x64/x86_x64.h | 4 +- source/ps/ArchiveBuilder.cpp | 9 +++- source/ps/CConsole.cpp | 34 +++++++++++++--- source/ps/CLogger.cpp | 12 ++++-- source/ps/CStrIntern.cpp | 6 ++- source/ps/CStrIntern.h | 2 + source/ps/CacheLoader.cpp | 10 +++-- source/ps/Compress.cpp | 3 +- source/ps/ConfigDB.cpp | 9 ++++ source/ps/DllLoader.cpp | 11 ++++- source/ps/Errors.h | 4 +- source/ps/FileIo.cpp | 13 +++++- source/ps/Filesystem.cpp | 10 ++++- source/ps/GUID.cpp | 8 +++- source/ps/Game.cpp | 31 ++++++++++---- source/ps/GameSetup/Atlas.cpp | 7 +++- source/ps/GameSetup/CmdLineArgs.cpp | 11 ++++- source/ps/GameSetup/Config.cpp | 8 ++-- source/ps/GameSetup/HWDetect.cpp | 52 +++++++++++++++++------- source/ps/GameSetup/Paths.cpp | 16 +++++++- source/ps/Hashing.cpp | 5 ++- source/ps/KeyName.cpp | 5 ++- source/ps/Loader.cpp | 17 +++++--- source/ps/Loader.h | 4 +- source/ps/Mod.cpp | 43 ++++++++++++-------- source/ps/ModIo.cpp | 1 - source/ps/Profile.cpp | 9 ++-- source/ps/ProfileViewer.cpp | 17 +++++++- source/ps/Profiler2.cpp | 9 +++- source/ps/Profiler2GPU.cpp | 1 - source/ps/Pyrogenesis.cpp | 10 +++-- source/ps/Pyrogenesis.h | 4 +- source/ps/Replay.cpp | 23 +++++++---- source/ps/SavedGame.cpp | 28 +++++++++++-- source/ps/SavedGame.h | 3 +- source/ps/Singleton.h | 3 +- source/ps/TaskManager.cpp | 11 ++--- source/ps/TemplateLoader.cpp | 14 +++++++ source/ps/Threading.cpp | 4 +- source/ps/TouchInput.cpp | 12 ++++-- source/ps/Util.cpp | 19 +++++++-- source/ps/World.cpp | 17 +++++--- source/ps/World.h | 6 ++- source/ps/XMB/XMBStorage.cpp | 1 - source/ps/XML/RelaxNG.cpp | 1 - source/ps/XML/Xeromyces.cpp | 4 +- source/ps/scripting/JSInterface_VFS.h | 3 +- source/ps/tests/test_Hotkeys.h | 18 ++++++-- source/ps/tests/test_ModIo.h | 6 ++- source/ps/tests/test_TaskManager.h | 5 ++- source/ps/tests/test_fmt.h | 12 ++++-- 51 files changed, 430 insertions(+), 145 deletions(-) diff --git a/source/lib/sysdep/arch/x86_x64/x86_x64.h b/source/lib/sysdep/arch/x86_x64/x86_x64.h index b82f00537e..92287140e2 100644 --- a/source/lib/sysdep/arch/x86_x64/x86_x64.h +++ b/source/lib/sysdep/arch/x86_x64/x86_x64.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2022 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 @@ -27,6 +27,8 @@ #ifndef INCLUDED_X86_X64 #define INCLUDED_X86_X64 +#include "lib/sysdep/arch.h" + #if !ARCH_X86_X64 #error "including x86_x64.h without ARCH_X86_X64=1" #endif diff --git a/source/ps/ArchiveBuilder.cpp b/source/ps/ArchiveBuilder.cpp index 39f77ea5ba..978eff2ff8 100644 --- a/source/ps/ArchiveBuilder.cpp +++ b/source/ps/ArchiveBuilder.cpp @@ -21,14 +21,19 @@ #include "graphics/ColladaManager.h" #include "graphics/TextureManager.h" +#include "lib/debug.h" +#include "lib/file/archive/archive.h" #include "lib/file/archive/archive_zip.h" +#include "lib/file/file_system.h" #include "lib/file/vfs/vfs_util.h" -#include "lib/tex/tex_codec.h" +#include "lib/path.h" +#include "lib/tex/tex.h" +#include "ps/XMB/XMBStorage.h" #include "ps/XML/Xeromyces.h" -#include "renderer/backend/Sampler.h" #include "renderer/backend/dummy/Device.h" #include +#include CArchiveBuilder::CArchiveBuilder(const OsPath& mod, const OsPath& tempdir) : m_TempDir(tempdir), m_NumBaseMods(0) diff --git a/source/ps/CConsole.cpp b/source/ps/CConsole.cpp index 030669fba6..e1b6f73f0a 100644 --- a/source/ps/CConsole.cpp +++ b/source/ps/CConsole.cpp @@ -20,32 +20,54 @@ #include "CConsole.h" #include "graphics/Canvas2D.h" +#include "graphics/Color.h" #include "graphics/FontMetrics.h" #include "graphics/TextRenderer.h" #include "gui/CGUI.h" #include "gui/GUIManager.h" #include "lib/code_generation.h" +#include "lib/debug.h" +#include "lib/external_libraries/libsdl.h" +#include "lib/file/io/write_buffer.h" +#include "lib/file/vfs/vfs.h" +#include "lib/status.h" #include "lib/timer.h" +#include "lib/types.h" #include "lib/utf8.h" #include "maths/MathUtil.h" -#include "ps/CLogger.h" +#include "maths/Rect.h" +#include "maths/Vector2D.h" +#include "ps/CStr.h" +#include "ps/CStrIntern.h" #include "ps/ConfigDB.h" -#include "ps/CStrInternStatic.h" #include "ps/Filesystem.h" #include "ps/GameSetup/Config.h" #include "ps/Globals.h" #include "ps/Hotkey.h" +#include "ps/KeyName.h" #include "ps/Profile.h" -#include "ps/Pyrogenesis.h" #include "ps/VideoMode.h" -#include "scriptinterface/ScriptInterface.h" #include "scriptinterface/JSON.h" +#include "scriptinterface/ScriptInterface.h" +#include "scriptinterface/ScriptRequest.h" +#include +#include +#include +#include +#include +#include #include #include -#include +#include +#include +#include +#include +#include +#include +#include +#include #include -#include namespace { diff --git a/source/ps/CLogger.cpp b/source/ps/CLogger.cpp index 0889bdbda3..196aae644e 100644 --- a/source/ps/CLogger.cpp +++ b/source/ps/CLogger.cpp @@ -20,24 +20,28 @@ #include "CLogger.h" #include "graphics/Canvas2D.h" +#include "graphics/Color.h" #include "graphics/FontMetrics.h" #include "graphics/TextRenderer.h" +#include "lib/debug.h" #include "lib/os_path.h" +#include "lib/path.h" +#include "lib/secure_crt.h" #include "lib/timer.h" -#include "lib/utf8.h" +#include "maths/Vector2D.h" #include "ps/CConsole.h" #include "ps/CStr.h" -#include "ps/CStrInternStatic.h" +#include "ps/CStrIntern.h" #include "ps/Profile.h" #include "ps/Pyrogenesis.h" +#include +#include #include #include #include #include -#include - CStrW g_UniqueLogPostfix; static const double RENDER_TIMEOUT = 10.0; // seconds before messages are deleted static const double RENDER_TIMEOUT_RATE = 10.0; // number of timed-out messages deleted per second diff --git a/source/ps/CStrIntern.cpp b/source/ps/CStrIntern.cpp index 0d260c97c4..0b1351e22a 100644 --- a/source/ps/CStrIntern.cpp +++ b/source/ps/CStrIntern.cpp @@ -1,4 +1,4 @@ -/* Copyright (C) 2024 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,11 +19,13 @@ #include "CStrIntern.h" +#include "lib/debug.h" #include "lib/fnv_hash.h" -#include "ps/CLogger.h" #include "ps/ThreadUtil.h" +#include #include +#include class CStrInternInternals { diff --git a/source/ps/CStrIntern.h b/source/ps/CStrIntern.h index 111ffdb041..4a4eef673a 100644 --- a/source/ps/CStrIntern.h +++ b/source/ps/CStrIntern.h @@ -20,7 +20,9 @@ #include "lib/types.h" +#include #include +#include class CStrInternInternals; diff --git a/source/ps/CacheLoader.cpp b/source/ps/CacheLoader.cpp index 9e7d832625..bbdaf8ceae 100644 --- a/source/ps/CacheLoader.cpp +++ b/source/ps/CacheLoader.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,11 +19,15 @@ #include "CacheLoader.h" +#include "lib/debug.h" +#include "lib/file/file_system.h" +#include "lib/os_path.h" +#include "lib/path.h" +#include "lib/utf8.h" #include "maths/MD5.h" -#include "ps/CLogger.h" #include "ps/Util.h" -#include +#include CCacheLoader::CCacheLoader(PIVFS vfs, const std::wstring& fileExtension) : m_VFS(vfs), m_FileExtension(fileExtension) diff --git a/source/ps/Compress.cpp b/source/ps/Compress.cpp index 594fc0338e..eaa6cd5908 100644 --- a/source/ps/Compress.cpp +++ b/source/ps/Compress.cpp @@ -1,4 +1,4 @@ -/* Copyright (C) 2011 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 @@ -20,6 +20,7 @@ #include "Compress.h" #include "lib/byte_order.h" +#include "lib/debug.h" #include "lib/external_libraries/zlib.h" void CompressZLib(const std::string& data, std::string& out, bool includeLengthHeader) diff --git a/source/ps/ConfigDB.cpp b/source/ps/ConfigDB.cpp index b117b922b1..5168dec4db 100644 --- a/source/ps/ConfigDB.cpp +++ b/source/ps/ConfigDB.cpp @@ -19,14 +19,23 @@ #include "ConfigDB.h" +#include "lib/alignment.h" #include "lib/allocators/shared_ptr.h" +#include "lib/debug.h" +#include "lib/file/vfs/vfs.h" #include "lib/file/vfs/vfs_path.h" +#include "lib/path.h" +#include "lib/secure_crt.h" +#include "lib/status.h" #include "ps/CLogger.h" #include "ps/CStr.h" #include "ps/Filesystem.h" +#include #include +#include #include +#include #include namespace diff --git a/source/ps/DllLoader.cpp b/source/ps/DllLoader.cpp index 928ffb4cbd..92d1ac9e1e 100644 --- a/source/ps/DllLoader.cpp +++ b/source/ps/DllLoader.cpp @@ -1,4 +1,4 @@ -/* Copyright (C) 2023 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,8 +19,15 @@ #include "DllLoader.h" -#include "lib/timer.h" +#include "lib/code_annotation.h" +#include "lib/debug.h" #include "lib/posix/posix_dlfcn.h" +#include "lib/sysdep/os.h" +#include "lib/timer.h" + +#include +#include +#include #if OS_MACOSX # include "lib/sysdep/os/osx/osx_bundle.h" diff --git a/source/ps/Errors.h b/source/ps/Errors.h index 67453b8e68..3b3084c7f7 100644 --- a/source/ps/Errors.h +++ b/source/ps/Errors.h @@ -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 @@ -70,6 +70,8 @@ plus a few extra things for converting between error codes and exceptions. */ +#include "lib/types.h" + #include typedef u32 PSRETURN; diff --git a/source/ps/FileIo.cpp b/source/ps/FileIo.cpp index 613cf4c738..0c3562c8bd 100644 --- a/source/ps/FileIo.cpp +++ b/source/ps/FileIo.cpp @@ -1,4 +1,4 @@ -/* Copyright (C) 2019 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 @@ -22,10 +22,19 @@ #include "precompiled.h" #include "FileIo.h" + +#include "lib/byte_order.h" +#include "lib/code_annotation.h" +#include "lib/file/vfs/vfs.h" +#include "lib/lib.h" +#include "lib/status.h" #include "ps/CLogger.h" #include "ps/CStr.h" #include "ps/Filesystem.h" -#include "lib/byte_order.h" + +#include +#include +#include #pragma pack(push, 1) diff --git a/source/ps/Filesystem.cpp b/source/ps/Filesystem.cpp index 83786ce24c..67409062cb 100644 --- a/source/ps/Filesystem.cpp +++ b/source/ps/Filesystem.cpp @@ -19,12 +19,20 @@ #include "Filesystem.h" +#include "lib/code_annotation.h" +#include "lib/debug.h" +#include "lib/os_path.h" +#include "lib/path.h" #include "lib/sysdep/dir_watch.h" -#include "lib/utf8.h" #include "ps/CLogger.h" #include "ps/CStr.h" #include "ps/Profile.h" +#include +#include +#include +#include + PIVFS g_VFS; static std::vector > g_ReloadFuncs; diff --git a/source/ps/GUID.cpp b/source/ps/GUID.cpp index d92dcd89e1..9d216c9675 100644 --- a/source/ps/GUID.cpp +++ b/source/ps/GUID.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 @@ -15,9 +15,15 @@ * along with 0 A.D. If not, see . */ #include "precompiled.h" + +#include "lib/code_annotation.h" +#include "lib/secure_crt.h" #include "lib/sysdep/sysdep.h" +#include "lib/types.h" #include "ps/CStr.h" +#include + CStr ps_generate_guid(void) { // TODO: Ideally this will be guaranteed unique (and verified diff --git a/source/ps/Game.cpp b/source/ps/Game.cpp index cb56d30a58..5c76f5624f 100644 --- a/source/ps/Game.cpp +++ b/source/ps/Game.cpp @@ -19,41 +19,54 @@ #include "Game.h" +#include "graphics/Color.h" #include "graphics/GameView.h" #include "graphics/LOSTexture.h" -#include "graphics/ParticleManager.h" #include "graphics/UnitManager.h" -#include "gui/GUIManager.h" #include "gui/CGUI.h" -#include "lib/config2.h" -#include "lib/timer.h" +#include "gui/GUIManager.h" +#include "lib/code_generation.h" +#include "lib/debug.h" #include "network/NetClient.h" -#include "network/NetServer.h" -#include "ps/CConsole.h" #include "ps/CLogger.h" #include "ps/CStr.h" #include "ps/GameSetup/GameSetup.h" #include "ps/Loader.h" #include "ps/Profile.h" #include "ps/Replay.h" -#include "ps/World.h" #include "ps/VideoMode.h" +#include "ps/World.h" #include "renderer/Renderer.h" #include "renderer/SceneRenderer.h" #include "renderer/TimeManager.h" #include "renderer/WaterManager.h" #include "scriptinterface/FunctionWrapper.h" +#include "scriptinterface/JSON.h" +#include "scriptinterface/Object.h" #include "scriptinterface/ScriptContext.h" #include "scriptinterface/ScriptInterface.h" -#include "scriptinterface/JSON.h" +#include "scriptinterface/ScriptRequest.h" #include "simulation2/Simulation2.h" #include "simulation2/components/ICmpPlayer.h" #include "simulation2/components/ICmpPlayerManager.h" +#include "simulation2/system/CmpPtr.h" +#include "simulation2/system/Components.h" +#include "simulation2/system/Entity.h" +#include "simulation2/system/LocalTurnManager.h" #include "simulation2/system/ReplayTurnManager.h" -#include "soundmanager/ISoundManager.h" +#include "simulation2/system/TurnManager.h" #include "tools/atlas/GameInterface/GameLoop.h" +#include #include +#include +#include +#include +#include +#include +#include + +class IComponent; extern GameLoopState* g_AtlasGameLoop; diff --git a/source/ps/GameSetup/Atlas.cpp b/source/ps/GameSetup/Atlas.cpp index e2549997b9..84d4852041 100644 --- a/source/ps/GameSetup/Atlas.cpp +++ b/source/ps/GameSetup/Atlas.cpp @@ -1,4 +1,4 @@ -/* Copyright (C) 2023 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,8 +19,11 @@ #include "Atlas.h" -#include "ps/GameSetup/CmdLineArgs.h" +#include "lib/debug.h" +#include "ps/CLogger.h" +#include "ps/CStr.h" #include "ps/DllLoader.h" +#include "ps/GameSetup/CmdLineArgs.h" //---------------------------------------------------------------------------- // Atlas (map editor) integration diff --git a/source/ps/GameSetup/CmdLineArgs.cpp b/source/ps/GameSetup/CmdLineArgs.cpp index 4138dd1bd3..5a33e0accd 100644 --- a/source/ps/GameSetup/CmdLineArgs.cpp +++ b/source/ps/GameSetup/CmdLineArgs.cpp @@ -1,4 +1,4 @@ -/* Copyright (C) 2023 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,11 +19,18 @@ #include "CmdLineArgs.h" #include "lib/sysdep/sysdep.h" +#include "ps/containers/Span.h" #include "scriptinterface/Object.h" #include "scriptinterface/ScriptConversions.h" +#include "scriptinterface/ScriptRequest.h" #include -#include +#include +#include +#include +#include +#include +#include #include #include diff --git a/source/ps/GameSetup/Config.cpp b/source/ps/GameSetup/Config.cpp index 7506f45d3f..b9d694259d 100644 --- a/source/ps/GameSetup/Config.cpp +++ b/source/ps/GameSetup/Config.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 @@ -20,11 +20,13 @@ #include "Config.h" #include "lib/timer.h" -#include "ps/CConsole.h" -#include "ps/CLogger.h" +#include "ps/CStr.h" #include "ps/ConfigDB.h" #include "ps/GameSetup/CmdLineArgs.h" +#include +#include + // (these variables are documented in the header.) bool g_PauseOnFocusLoss = false; diff --git a/source/ps/GameSetup/HWDetect.cpp b/source/ps/GameSetup/HWDetect.cpp index 40cbabec41..3435f1347a 100644 --- a/source/ps/GameSetup/HWDetect.cpp +++ b/source/ps/GameSetup/HWDetect.cpp @@ -18,41 +18,68 @@ #include "precompiled.h" #include "lib/build_version.h" +#include "lib/code_annotation.h" +#include "lib/config2.h" +#include "lib/debug.h" #include "lib/external_libraries/libsdl.h" +#include "lib/path.h" #include "lib/posix/posix_utsname.h" -#include "lib/timer.h" +#include "lib/sysdep/arch.h" +#include "lib/sysdep/compiler.h" #include "lib/sysdep/cpu.h" #include "lib/sysdep/numa.h" +#include "lib/sysdep/os.h" #include "lib/sysdep/os_cpu.h" #include "lib/sysdep/smbios.h" #include "lib/sysdep/sysdep.h" // sys_OpenFile -#include "lib/utf8.h" -#if CONFIG2_AUDIO -#include "soundmanager/SoundManager.h" -#endif +#include "lib/timer.h" +#include "lib/types.h" #include "ps/CLogger.h" -#include "ps/ConfigDB.h" +#include "ps/CStr.h" +#include "ps/Errors.h" #include "ps/Filesystem.h" #include "ps/GameSetup/Config.h" -#include "ps/Profile.h" #include "ps/Pyrogenesis.h" -#include "ps/scripting/JSInterface_ConfigDB.h" -#include "ps/scripting/JSInterface_Debug.h" #include "ps/UserReport.h" #include "ps/VideoMode.h" +#include "ps/scripting/JSInterface_ConfigDB.h" +#include "ps/scripting/JSInterface_Debug.h" #include "renderer/backend/IDevice.h" #include "scriptinterface/FunctionWrapper.h" #include "scriptinterface/JSON.h" #include "scriptinterface/Object.h" #include "scriptinterface/ScriptInterface.h" +#include "scriptinterface/ScriptRequest.h" #include "scriptinterface/StructuredClone.h" +#include "soundmanager/ISoundManager.h" +#include +#include +#include #include +#include +#include +#include #include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include // FreeType headers might have an include order. #include -#include +#include FT_FREETYPE_H + +#if ARCH_AMD64 +#include "lib/sysdep/arch/x86_x64/x86_x64.h" +#endif #if OS_LINUX #include @@ -62,11 +89,6 @@ #include "nvtt/nvtt.h" #endif -#include -#include -#include -#include - namespace { diff --git a/source/ps/GameSetup/Paths.cpp b/source/ps/GameSetup/Paths.cpp index 22549bd760..4a6927139f 100644 --- a/source/ps/GameSetup/Paths.cpp +++ b/source/ps/GameSetup/Paths.cpp @@ -16,18 +16,30 @@ */ #include "precompiled.h" + #include "Paths.h" +#include "lib/debug.h" #include "lib/file/file_system.h" -#include "lib/sysdep/sysdep.h" // sys_get_executable_name +#include "lib/path.h" +#include "lib/status.h" #include "lib/sysdep/filesystem.h" // wrealpath +#include "lib/sysdep/os.h" +#include "lib/sysdep/sysdep.h" // sys_get_executable_name +#include "ps/CLogger.h" +#include "ps/CStr.h" +#include "ps/GameSetup/CmdLineArgs.h" + +#include +#include +#include + #if OS_WIN # include "lib/sysdep/os/win/wutil.h" // wutil_*Path #elif OS_MACOSX # include "lib/sysdep/os/osx/osx_paths.h" # include "lib/sysdep/os/osx/osx_bundle.h" #endif -#include "ps/CLogger.h" Paths::Paths(const CmdLineArgs& args) diff --git a/source/ps/Hashing.cpp b/source/ps/Hashing.cpp index e4fb667be1..b716afaba1 100644 --- a/source/ps/Hashing.cpp +++ b/source/ps/Hashing.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 @@ -16,10 +16,13 @@ */ #include "precompiled.h" +#include "lib/debug.h" #include "ps/CStr.h" #include "ps/Util.h" +#include #include +#include CStr8 HashCryptographically(const CStr8& string, const CStr8& salt) { diff --git a/source/ps/KeyName.cpp b/source/ps/KeyName.cpp index a0d7acafae..1ebab4e13f 100644 --- a/source/ps/KeyName.cpp +++ b/source/ps/KeyName.cpp @@ -21,12 +21,15 @@ #include "KeyName.h" -#include "lib/external_libraries/libsdl.h" #include "ps/CStr.h" +#include +#include #include #include +#include #include +#include #include // Some scancodes <-> names that SDL doesn't recognise. diff --git a/source/ps/Loader.cpp b/source/ps/Loader.cpp index 867cd1d05b..d8773bbc68 100644 --- a/source/ps/Loader.cpp +++ b/source/ps/Loader.cpp @@ -1,4 +1,4 @@ -/* Copyright (C) 2023 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 @@ -20,13 +20,18 @@ #include "precompiled.h" -#include -#include - -#include "lib/timer.h" -#include "CStr.h" #include "Loader.h" +#include "lib/code_annotation.h" +#include "lib/secure_crt.h" +#include "lib/timer.h" +#include "lib/utf8.h" +#include "ps/CStr.h" + +#include +#include +#include +#include // set by LDR_EndRegistering; may be 0 during development when // estimated task durations haven't yet been set. diff --git a/source/ps/Loader.h b/source/ps/Loader.h index e1e0c8507f..bd93d249e0 100644 --- a/source/ps/Loader.h +++ b/source/ps/Loader.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2023 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 @@ -21,6 +21,8 @@ #ifndef INCLUDED_LOADER #define INCLUDED_LOADER +#include "lib/status.h" + #include #include diff --git a/source/ps/Mod.cpp b/source/ps/Mod.cpp index 7062bbf3a5..5aa65d1e3f 100644 --- a/source/ps/Mod.cpp +++ b/source/ps/Mod.cpp @@ -1,4 +1,4 @@ -/* Copyright (C) 2024 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 @@ -17,35 +17,46 @@ #include "precompiled.h" -#include "ps/Mod.h" +#include "Mod.h" -#include "i18n/L10n.h" #include "lib/file/file_system.h" #include "lib/file/vfs/vfs.h" +#include "lib/path.h" #include "lib/sysdep/os.h" #include "lib/utf8.h" +#include "ps/CLogger.h" +#include "ps/Errors.h" #include "ps/Filesystem.h" -#include "ps/GameSetup/GameSetup.h" +#include "ps/GameSetup/CmdLineArgs.h" #include "ps/GameSetup/Paths.h" #include "ps/Profiler2.h" #include "scriptinterface/JSON.h" #include "scriptinterface/Object.h" -#include "scriptinterface/ScriptExceptions.h" -#include "scriptinterface/ScriptInterface.h" +#include "scriptinterface/ScriptConversions.h" +#include "scriptinterface/ScriptRequest.h" -#if !OS_WIN +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if OS_WIN +#include +#else #include "lib/os_path.h" #endif -#include -#include -#include -#if OS_WIN -#include -#endif -#include -#include -#include +class ScriptInterface; namespace { diff --git a/source/ps/ModIo.cpp b/source/ps/ModIo.cpp index c1ef443caf..2cffa7e0af 100644 --- a/source/ps/ModIo.cpp +++ b/source/ps/ModIo.cpp @@ -44,7 +44,6 @@ #include #include #include -#include ModIo* g_ModIo = nullptr; diff --git a/source/ps/Profile.cpp b/source/ps/Profile.cpp index 02f5f52999..07a8550554 100644 --- a/source/ps/Profile.cpp +++ b/source/ps/Profile.cpp @@ -1,4 +1,4 @@ -/* Copyright (C) 2023 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 @@ -22,11 +22,14 @@ #include "precompiled.h" #include "Profile.h" -#include "ProfileViewer.h" -#include "ThreadUtil.h" +#include "lib/secure_crt.h" #include "lib/timer.h" +#include "ps/CStr.h" +#include "ps/ProfileViewer.h" +#include "ps/ThreadUtil.h" +#include #include /////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/source/ps/ProfileViewer.cpp b/source/ps/ProfileViewer.cpp index 005064b2a2..ecf0de5657 100644 --- a/source/ps/ProfileViewer.cpp +++ b/source/ps/ProfileViewer.cpp @@ -20,22 +20,35 @@ #include "ProfileViewer.h" #include "graphics/Canvas2D.h" +#include "graphics/Color.h" #include "graphics/FontMetrics.h" #include "graphics/TextRenderer.h" #include "lib/external_libraries/libsdl.h" +#include "lib/os_path.h" +#include "lib/path.h" +#include "maths/Rect.h" #include "maths/Size2D.h" #include "maths/Vector2D.h" #include "ps/CLogger.h" -#include "ps/CStrInternStatic.h" -#include "ps/Filesystem.h" +#include "ps/CStrIntern.h" #include "ps/Hotkey.h" #include "ps/Profile.h" #include "ps/Pyrogenesis.h" #include "scriptinterface/Object.h" +#include "scriptinterface/ScriptRequest.h" +#include +#include #include #include #include +#include +#include +#include +#include +#include + +class ScriptInterface; struct CProfileViewerInternals { diff --git a/source/ps/Profiler2.cpp b/source/ps/Profiler2.cpp index 08ea417ca4..875be29745 100644 --- a/source/ps/Profiler2.cpp +++ b/source/ps/Profiler2.cpp @@ -25,21 +25,28 @@ #include "Profiler2.h" #include "lib/allocators/shared_ptr.h" +#include "lib/code_generation.h" #include "lib/os_path.h" +#include "lib/path.h" #include "ps/CLogger.h" -#include "ps/ConfigDB.h" #include "ps/CStr.h" +#include "ps/ConfigDB.h" +#include "ps/Profiler2.h" #include "ps/Profiler2GPU.h" #include "ps/Pyrogenesis.h" #include "third_party/mongoose/mongoose.h" +#include +#include #include #include #include #include #include +#include #include #include +#include CProfiler2 g_Profiler2; diff --git a/source/ps/Profiler2GPU.cpp b/source/ps/Profiler2GPU.cpp index 8cfd0a07d9..8149c09df7 100644 --- a/source/ps/Profiler2GPU.cpp +++ b/source/ps/Profiler2GPU.cpp @@ -35,7 +35,6 @@ #include #include #include -#include #include #include #include diff --git a/source/ps/Pyrogenesis.cpp b/source/ps/Pyrogenesis.cpp index 2e2722e26d..6126287242 100644 --- a/source/ps/Pyrogenesis.cpp +++ b/source/ps/Pyrogenesis.cpp @@ -1,4 +1,4 @@ -/* Copyright (C) 2024 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 @@ -17,12 +17,14 @@ #include "precompiled.h" -#include - #include "Pyrogenesis.h" -#include "lib/sysdep/sysdep.h" #include "lib/build_version.h" +#include "lib/path.h" +#include "lib/sysdep/sysdep.h" + +#include +#include const char* engine_version = PYROGENESIS_VERSION; const char* main_window_name = "0 A.D."; diff --git a/source/ps/Pyrogenesis.h b/source/ps/Pyrogenesis.h index c9c252d170..63be0f17fd 100644 --- a/source/ps/Pyrogenesis.h +++ b/source/ps/Pyrogenesis.h @@ -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 @@ -24,6 +24,8 @@ Standard declarations which are included in all projects. #ifndef INCLUDED_PYROGENESIS #define INCLUDED_PYROGENESIS +#include + class Path; using OsPath = Path; diff --git a/source/ps/Replay.cpp b/source/ps/Replay.cpp index a40e82aed4..a6534a87a1 100644 --- a/source/ps/Replay.cpp +++ b/source/ps/Replay.cpp @@ -19,38 +19,45 @@ #include "Replay.h" -#include "graphics/TerrainTextureManager.h" -#include "lib/timer.h" +#include "lib/code_generation.h" +#include "lib/debug.h" #include "lib/file/file_system.h" -#include "lib/tex/tex.h" +#include "lib/path.h" +#include "lib/timer.h" #include "ps/CLogger.h" +#include "ps/CStr.h" +#include "ps/Errors.h" #include "ps/Game.h" -#include "ps/GameSetup/GameSetup.h" #include "ps/GameSetup/CmdLineArgs.h" +#include "ps/GameSetup/GameSetup.h" #include "ps/GameSetup/Paths.h" #include "ps/Loader.h" #include "ps/Mod.h" #include "ps/Profile.h" #include "ps/ProfileViewer.h" +#include "ps/Profiler2.h" #include "ps/Pyrogenesis.h" -#include "ps/Mod.h" #include "ps/Util.h" #include "ps/VisualReplay.h" -#include "scriptinterface/FunctionWrapper.h" +#include "scriptinterface/JSON.h" #include "scriptinterface/Object.h" #include "scriptinterface/ScriptContext.h" +#include "scriptinterface/ScriptConversions.h" #include "scriptinterface/ScriptInterface.h" #include "scriptinterface/ScriptRequest.h" #include "scriptinterface/ScriptStats.h" -#include "scriptinterface/JSON.h" +#include "simulation2/Simulation2.h" #include "simulation2/components/ICmpGuiInterface.h" #include "simulation2/helpers/Player.h" #include "simulation2/helpers/SimulationCommand.h" -#include "simulation2/Simulation2.h" #include "simulation2/system/CmpPtr.h" +#include "simulation2/system/Entity.h" #include #include +#include +#include +#include /** * Number of turns between two saved profiler snapshots. diff --git a/source/ps/SavedGame.cpp b/source/ps/SavedGame.cpp index 745f0888d5..d62d880ab3 100644 --- a/source/ps/SavedGame.cpp +++ b/source/ps/SavedGame.cpp @@ -20,23 +20,45 @@ #include "SavedGame.h" #include "graphics/GameView.h" -#include "i18n/L10n.h" #include "lib/allocators/shared_ptr.h" +#include "lib/code_annotation.h" +#include "lib/debug.h" +#include "lib/file/archive/archive.h" #include "lib/file/archive/archive_zip.h" +#include "lib/file/file_system.h" #include "lib/file/io/io.h" -#include "lib/utf8.h" +#include "lib/file/io/write_buffer.h" +#include "lib/file/vfs/vfs.h" +#include "lib/file/vfs/vfs_path.h" +#include "lib/file/vfs/vfs_util.h" +#include "lib/path.h" +#include "lib/sysdep/filesystem.h" #include "lib/timer.h" +#include "lib/types.h" #include "maths/Vector3D.h" #include "ps/CLogger.h" #include "ps/Filesystem.h" #include "ps/Game.h" #include "ps/Mod.h" #include "ps/Pyrogenesis.h" -#include "scriptinterface/Object.h" #include "scriptinterface/JSON.h" +#include "scriptinterface/Object.h" +#include "scriptinterface/ScriptConversions.h" +#include "scriptinterface/ScriptRequest.h" #include "scriptinterface/StructuredClone.h" #include "simulation2/Simulation2.h" +#include +#include +#include +#include +#include +#include +#include +#include + +class ScriptInterface; + // TODO: we ought to check version numbers when loading files Status SavedGames::SavePrefix(const CStrW& prefix, const CStrW& description, CSimulation2& simulation, const Script::StructuredClone& guiMetadataClone) diff --git a/source/ps/SavedGame.h b/source/ps/SavedGame.h index 8ce0f2783c..3c0ca10ae4 100644 --- a/source/ps/SavedGame.h +++ b/source/ps/SavedGame.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2024 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 @@ -18,6 +18,7 @@ #ifndef INCLUDED_SAVEDGAME #define INCLUDED_SAVEDGAME +#include "lib/status.h" #include "ps/CStr.h" #include "scriptinterface/ScriptTypes.h" #include "scriptinterface/StructuredClone.h" diff --git a/source/ps/Singleton.h b/source/ps/Singleton.h index dc82d831a4..25ee66bd88 100644 --- a/source/ps/Singleton.h +++ b/source/ps/Singleton.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2019 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 @@ -18,6 +18,7 @@ #ifndef INCLUDED_SINGLETON #define INCLUDED_SINGLETON +#include "lib/code_annotation.h" #include "lib/debug.h" /** diff --git a/source/ps/TaskManager.cpp b/source/ps/TaskManager.cpp index 632a2ca2e4..3567ba6f16 100644 --- a/source/ps/TaskManager.cpp +++ b/source/ps/TaskManager.cpp @@ -1,4 +1,4 @@ -/* Copyright (C) 2024 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 @@ -21,17 +21,16 @@ #include "lib/debug.h" #include "maths/MathUtil.h" -#include "ps/CLogger.h" -#include "ps/ConfigDB.h" -#include "ps/Threading.h" -#include "ps/ThreadUtil.h" #include "ps/Profiler2.h" +#include "ps/Threading.h" +#include #include #include #include #include #include +#include #include namespace Threading @@ -57,8 +56,6 @@ size_t GetDefaultNumberOfWorkers() } // anonymous namespace -class Thread; - using QueueItem = std::function; /** diff --git a/source/ps/TemplateLoader.cpp b/source/ps/TemplateLoader.cpp index e114707dad..64a27e199b 100644 --- a/source/ps/TemplateLoader.cpp +++ b/source/ps/TemplateLoader.cpp @@ -19,11 +19,25 @@ #include "TemplateLoader.h" +#include "lib/code_annotation.h" +#include "lib/file/vfs/vfs_util.h" +#include "lib/path.h" +#include "lib/status.h" #include "lib/utf8.h" #include "ps/CLogger.h" +#include "ps/CStr.h" +#include "ps/Errors.h" #include "ps/Filesystem.h" +#include "ps/XMB/XMBData.h" +#include "ps/XMB/XMBStorage.h" #include "ps/XML/Xeromyces.h" +#include +#include +#include + +class CFileInfo; + static const wchar_t TEMPLATE_ROOT[] = L"simulation/templates/"; static const wchar_t ACTOR_ROOT[] = L"art/actors/"; diff --git a/source/ps/Threading.cpp b/source/ps/Threading.cpp index d53907bad3..19599d0b4b 100644 --- a/source/ps/Threading.cpp +++ b/source/ps/Threading.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,6 +19,8 @@ #include "Threading.h" +#include "ps/ThreadUtil.h" + #include static bool g_MainThreadSet; diff --git a/source/ps/TouchInput.cpp b/source/ps/TouchInput.cpp index 18d386bdea..1e557c7576 100644 --- a/source/ps/TouchInput.cpp +++ b/source/ps/TouchInput.cpp @@ -19,14 +19,20 @@ #include "TouchInput.h" -#include - #include "graphics/Camera.h" #include "graphics/GameView.h" -#include "lib/timer.h" +#include "lib/code_annotation.h" +#include "lib/debug.h" #include "lib/external_libraries/libsdl.h" +#include "lib/sysdep/os.h" +#include "lib/timer.h" +#include "maths/Matrix3D.h" #include "ps/Game.h" +#include +#include +#include + // When emulation is enabled: // Left-click to put finger 0 down. // Then left-click-and-drag to move finger 0. diff --git a/source/ps/Util.cpp b/source/ps/Util.cpp index c3e19ce14a..ada1d6a70b 100644 --- a/source/ps/Util.cpp +++ b/source/ps/Util.cpp @@ -17,16 +17,29 @@ #include "precompiled.h" -#include "ps/Util.h" +#include "Util.h" +#include "lib/allocators/dynarray.h" #include "lib/allocators/shared_ptr.h" +#include "lib/code_annotation.h" +#include "lib/debug.h" +#include "lib/file/file_system.h" +#include "lib/file/vfs/vfs.h" +#include "lib/path.h" +#include "lib/posix/posix_types.h" +#include "lib/secure_crt.h" #include "lib/tex/tex.h" -#include "ps/CLogger.h" +#include "lib/utf8.h" #include "ps/Filesystem.h" #include "ps/Pyrogenesis.h" +#include #include -#include +#include +#include +#include + +struct tm; // not thread-safe! static const wchar_t* HardcodedErrorString(int err) diff --git a/source/ps/World.cpp b/source/ps/World.cpp index 00591ea6a6..7e86f636da 100644 --- a/source/ps/World.cpp +++ b/source/ps/World.cpp @@ -1,4 +1,4 @@ -/* Copyright (C) 2023 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 @@ -17,24 +17,29 @@ #include "precompiled.h" +#include "World.h" + #include "graphics/GameView.h" +#include "graphics/HeightMipmap.h" #include "graphics/LightEnv.h" #include "graphics/MapReader.h" -#include "graphics/MapWriter.h" -#include "graphics/Terrain.h" #include "graphics/Terrain.h" #include "graphics/UnitManager.h" -#include "lib/timer.h" +#include "lib/path.h" #include "ps/CLogger.h" #include "ps/CStr.h" -#include "ps/Errors.h" +#include "ps/FileIo.h" #include "ps/Game.h" #include "ps/Loader.h" -#include "ps/World.h" #include "renderer/Renderer.h" #include "renderer/SceneRenderer.h" #include "simulation2/Simulation2.h" +#include +#include + +class CTriggerManager; + /** * Global light settings. * It is not a member of CWorld because it is passed diff --git a/source/ps/World.h b/source/ps/World.h index 5aa257dcf6..eadfc5d44e 100644 --- a/source/ps/World.h +++ b/source/ps/World.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2023 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 @@ -27,6 +27,10 @@ #include "ps/CStrForward.h" #include "ps/Errors.h" +#include +#include +#include +#include #include #ifndef ERROR_GROUP_GAME_DEFINED diff --git a/source/ps/XMB/XMBStorage.cpp b/source/ps/XMB/XMBStorage.cpp index 35aac7a17d..996921e3de 100644 --- a/source/ps/XMB/XMBStorage.cpp +++ b/source/ps/XMB/XMBStorage.cpp @@ -29,7 +29,6 @@ #include "scriptinterface/ScriptRequest.h" #include -#include #include #include #include diff --git a/source/ps/XML/RelaxNG.cpp b/source/ps/XML/RelaxNG.cpp index 6380e95f4d..5a0601d70a 100644 --- a/source/ps/XML/RelaxNG.cpp +++ b/source/ps/XML/RelaxNG.cpp @@ -19,7 +19,6 @@ #include "RelaxNG.h" -#include "lib/code_annotation.h" #include "lib/timer.h" #include "lib/types.h" #include "ps/CLogger.h" diff --git a/source/ps/XML/Xeromyces.cpp b/source/ps/XML/Xeromyces.cpp index ed4b2e4d41..e298106f42 100644 --- a/source/ps/XML/Xeromyces.cpp +++ b/source/ps/XML/Xeromyces.cpp @@ -19,8 +19,6 @@ #include "Xeromyces.h" -#include "RelaxNG.h" -#include "lib/code_annotation.h" #include "lib/debug.h" #include "lib/file/vfs/vfs.h" #include "lib/path.h" @@ -30,13 +28,13 @@ #include "ps/CStr.h" #include "ps/CacheLoader.h" #include "ps/Filesystem.h" +#include "ps/XML/RelaxNG.h" #include #include #include #include #include -#include #include #include #include diff --git a/source/ps/scripting/JSInterface_VFS.h b/source/ps/scripting/JSInterface_VFS.h index 6528c34ac3..f9f93794d0 100644 --- a/source/ps/scripting/JSInterface_VFS.h +++ b/source/ps/scripting/JSInterface_VFS.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2023 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 @@ -18,6 +18,7 @@ #ifndef INCLUDED_JSI_VFS #define INCLUDED_JSI_VFS +#include "lib/types.h" #include "scriptinterface/ScriptTypes.h" class ScriptRequest; diff --git a/source/ps/tests/test_Hotkeys.h b/source/ps/tests/test_Hotkeys.h index 69eeda7a9f..f31f7440d6 100644 --- a/source/ps/tests/test_Hotkeys.h +++ b/source/ps/tests/test_Hotkeys.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2021 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 @@ -23,10 +23,22 @@ #include "lib/self_test.h" #include "lib/external_libraries/libsdl.h" -#include "ps/Hotkey.h" +#include "lib/file/file_system.h" +#include "lib/file/vfs/vfs.h" +#include "lib/input.h" +#include "lib/path.h" +#include "ps/CStr.h" #include "ps/ConfigDB.h" -#include "ps/Globals.h" #include "ps/Filesystem.h" +#include "ps/Globals.h" +#include "ps/Hotkey.h" + +#include +#include +#include +#include +#include +#include class TestHotkey : public CxxTest::TestSuite diff --git a/source/ps/tests/test_ModIo.h b/source/ps/tests/test_ModIo.h index 0af909126c..99f6cc243c 100644 --- a/source/ps/tests/test_ModIo.h +++ b/source/ps/tests/test_ModIo.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2021 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 @@ -26,7 +26,11 @@ #include "ps/ModIo.h" #include "scriptinterface/ScriptInterface.h" +#include +#include #include +#include +#include class TestModIo : public CxxTest::TestSuite { diff --git a/source/ps/tests/test_TaskManager.h b/source/ps/tests/test_TaskManager.h index 5fde2dfa2c..61e7df2340 100644 --- a/source/ps/tests/test_TaskManager.h +++ b/source/ps/tests/test_TaskManager.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2024 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 @@ -17,12 +17,15 @@ #include "lib/self_test.h" +#include "lib/types.h" #include "ps/Future.h" #include "ps/TaskManager.h" #include #include +#include #include +#include class TestTaskManager : public CxxTest::TestSuite { diff --git a/source/ps/tests/test_fmt.h b/source/ps/tests/test_fmt.h index 6b1506f058..20f2daeec9 100644 --- a/source/ps/tests/test_fmt.h +++ b/source/ps/tests/test_fmt.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2020 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 @@ -15,10 +15,16 @@ * along with 0 A.D. If not, see . */ -#include - #include "lib/self_test.h" +#include "ps/CStr.h" + +#include +#include +#include +#include +#include + class TestFmt : public CxxTest::TestSuite { public: