From f360ece932f2f273db7fafb1778ff431b6488804 Mon Sep 17 00:00:00 2001
From: Jamiras <32680403+Jamiras@users.noreply.github.com>
Date: Thu, 20 Nov 2025 10:26:01 -0700
Subject: [PATCH] start moving non-UI code into helper library (#1261)
---
.github/workflows/c-cpp.yml | 12 +-
RA_Integration.sln | 138 ++++-----
src/Exports.cpp | 2 +-
src/RA_Core.cpp | 2 +-
src/RA_Defs.cpp | 3 +-
src/RA_Defs.h | 14 +-
src/RA_Integration.vcxproj | 280 +++--------------
src/RA_Integration.vcxproj.filters | 32 +-
src/api/ApiCall.cpp | 2 -
src/api/UploadBadge.hh | 2 -
src/api/impl/ConnectedServer.cpp | 3 +-
src/api/impl/ServerBase.hh | 4 +-
src/base.props | 135 +++++---
src/data/AsyncObject.hh | 2 +-
src/data/DataModelBase.hh | 2 +-
src/data/ModelCollectionBase.hh | 2 +-
src/data/ModelPropertyContainer.hh | 6 +-
src/data/NotifyTargetSet.hh | 4 +-
src/data/context/ConsoleContext.cpp | 4 +-
src/data/context/ConsoleContext.hh | 2 +-
src/data/context/EmulatorContext.cpp | 4 +-
src/data/context/EmulatorContext.hh | 1 -
src/data/context/GameAssets.cpp | 2 +-
src/data/context/GameContext.cpp | 4 +-
src/data/context/SessionTracker.cpp | 4 +-
src/data/context/UserContext.cpp | 2 +-
src/data/models/AchievementModel.cpp | 2 +-
src/data/models/AssetModelBase.hh | 3 +-
src/data/models/CodeNoteModel.cpp | 3 +-
src/data/models/TriggerValidation.cpp | 2 +-
src/data/search/MemBlock.cpp | 2 +-
src/devkit/RADevKit.vcxproj | 67 ++++
src/devkit/RADevKit.vcxproj.filters | 61 ++++
src/{ => devkit}/data/ModelProperty.cpp | 52 ++--
src/{ => devkit}/data/ModelProperty.hh | 17 +-
src/{ => devkit}/services/ILogger.hh | 0
src/devkit/services/IMessageDispatcher.hh | 36 +++
src/{ => devkit}/services/ServiceLocator.hh | 2 +-
src/devkit/util/Compat.hh | 31 ++
src/{ra_utility.h => devkit/util/EnumOps.hh} | 80 +----
src/devkit/util/GSL.cpp | 68 +++++
src/devkit/util/GSL.hh | 43 +++
src/{RA_Log.h => devkit/util/Log.hh} | 9 +-
.../util/Strings.cpp} | 9 +-
.../util/Strings.hh} | 36 ++-
src/devkit/util/TypeCasts.hh | 80 +++++
.../util/TypeTraits.hh} | 20 +-
src/pch.h | 33 +-
src/ra_fwd.h | 118 -------
src/ra_math.h | 61 ----
src/rcheevos.vcxproj | 131 +-------
src/rcheevos.vcxproj.filters | 3 +
src/services/AchievementLogicSerializer.cpp | 2 +-
src/services/AchievementLogicSerializer.hh | 2 -
src/services/AchievementRuntime.cpp | 6 +-
src/services/AchievementRuntime.hh | 10 +-
src/services/AchievementRuntimeExports.cpp | 2 +-
src/services/FrameEventQueue.cpp | 2 +-
src/services/FrameEventQueue.hh | 4 +-
src/services/GameIdentifier.cpp | 4 +-
src/services/Initialization.cpp | 4 +
src/services/PerformanceCounter.cpp | 2 +-
src/services/Search/SearchImpl.cpp | 2 +-
src/services/Search/SearchImpl_asciitext.hh | 2 +-
src/services/Search/SearchImpl_bitcount.hh | 2 +-
src/services/SearchResults.cpp | 2 +-
src/services/impl/FileLocalStorage.cpp | 5 +-
src/services/impl/FileTextReader.hh | 2 +-
src/services/impl/FileTextWriter.hh | 3 +-
src/services/impl/JsonFileConfiguration.cpp | 5 +-
src/services/impl/MessageDispatcher.hh | 38 +++
src/services/impl/StringTextReader.hh | 2 +-
src/services/impl/StringTextWriter.hh | 2 +-
src/services/impl/ThreadPool.cpp | 2 +-
src/services/impl/ThreadPool.hh | 4 +-
src/services/impl/WindowsFileSystem.cpp | 4 +-
src/services/impl/WindowsFileSystem.hh | 2 +-
src/services/impl/WindowsHttpRequester.cpp | 4 +-
src/services/impl/WindowsHttpRequester.hh | 2 +-
src/ui/EditorTheme.hh | 4 +-
src/ui/ImageReference.hh | 2 -
src/ui/OverlayTheme.hh | 4 +-
src/ui/Theme.cpp | 2 +-
src/ui/ViewModelBase.hh | 4 +-
src/ui/WindowViewModelBase.hh | 3 +-
src/ui/drawing/gdi/ImageRepository.cpp | 1 +
src/ui/drawing/gdi/ResourceRepository.hh | 2 +-
src/ui/viewmodels/AssetEditorViewModel.cpp | 2 +
src/ui/viewmodels/AssetListViewModel.cpp | 2 +-
src/ui/viewmodels/AssetUploadViewModel.cpp | 2 +-
.../BrokenAchievementsViewModel.cpp | 2 +-
.../ChallengeIndicatorViewModel.cpp | 2 +-
src/ui/viewmodels/CodeNotesViewModel.cpp | 2 +-
src/ui/viewmodels/GameChecksumViewModel.cpp | 2 +-
.../viewmodels/IntegrationMenuViewModel.cpp | 2 +-
src/ui/viewmodels/LoginViewModel.cpp | 4 +-
.../viewmodels/MemoryBookmarksViewModel.cpp | 2 +-
src/ui/viewmodels/MemoryRegionsViewModel.cpp | 2 +-
.../viewmodels/MemoryWatchListViewModel.cpp | 2 +-
src/ui/viewmodels/MemoryWatchViewModel.cpp | 2 +-
src/ui/viewmodels/NewAssetViewModel.cpp | 2 +-
.../OverlayAchievementsPageViewModel.cpp | 2 +-
.../OverlayFriendsPageViewModel.cpp | 2 +-
.../OverlayLeaderboardsPageViewModel.cpp | 2 +-
.../viewmodels/OverlayListPageViewModel.cpp | 4 +-
src/ui/viewmodels/OverlayManager.cpp | 2 +-
src/ui/viewmodels/OverlayManager.hh | 2 +-
.../OverlayRecentGamesPageViewModel.cpp | 2 +-
src/ui/viewmodels/OverlayViewModel.cpp | 3 +-
src/ui/viewmodels/OverlayViewModel.hh | 2 +-
src/ui/viewmodels/PointerFinderViewModel.cpp | 2 +-
src/ui/viewmodels/PopupViewModelBase.cpp | 2 +-
.../viewmodels/ProgressTrackerViewModel.cpp | 2 -
.../RichPresenceMonitorViewModel.cpp | 2 +-
src/ui/viewmodels/ScoreTrackerViewModel.cpp | 2 -
src/ui/viewmodels/ScoreboardViewModel.cpp | 2 +-
.../viewmodels/TriggerConditionViewModel.cpp | 2 +-
.../viewmodels/TriggerConditionViewModel.hh | 8 +-
src/ui/viewmodels/TriggerViewModel.cpp | 2 +-
src/ui/viewmodels/UnknownGameViewModel.cpp | 2 +-
src/ui/win32/AssetEditorDialog.cpp | 3 +
src/ui/win32/AssetListDialog.cpp | 3 +
src/ui/win32/BrokenAchievementsDialog.cpp | 2 +
src/ui/win32/CodeNotesDialog.cpp | 4 +-
src/ui/win32/Desktop.cpp | 2 +-
src/ui/win32/DialogBase.cpp | 12 +-
src/ui/win32/DialogBase.hh | 8 +-
src/ui/win32/FileDialog.cpp | 2 +-
src/ui/win32/MemoryBookmarksDialog.cpp | 3 +
src/ui/win32/MemoryInspectorDialog.cpp | 3 +
src/ui/win32/MemoryRegionsDialog.cpp | 4 +-
src/ui/win32/MessageBoxDialog.cpp | 2 +-
src/ui/win32/PointerFinderDialog.cpp | 4 +-
src/ui/win32/PointerInspectorDialog.cpp | 4 +-
src/ui/win32/ProgressDialog.cpp | 2 +-
src/ui/win32/RichPresenceDialog.cpp | 4 +-
src/ui/win32/bindings/ComboBoxBinding.hh | 2 +-
.../bindings/GridAddressColumnBinding.cpp | 3 +-
src/ui/win32/bindings/GridBinding.cpp | 2 +-
src/ui/win32/bindings/GridBinding.hh | 4 +-
.../bindings/GridLookupColumnBinding.cpp | 4 +-
.../bindings/GridNumberColumnBinding.cpp | 3 +-
.../win32/bindings/GridTextColumnBinding.cpp | 3 +-
.../bindings/MemoryViewerControlBinding.cpp | 3 -
.../win32/bindings/MultiLineGridBinding.cpp | 2 +-
.../win32/bindings/NumericTextBoxBinding.hh | 2 +-
src/ui/win32/bindings/WindowBinding.cpp | 2 +-
tests/Exports_Tests.cpp | 2 +-
tests/RA_Integration.Tests.vcxproj | 288 +++---------------
tests/RA_Integration.Tests.vcxproj.filters | 14 +-
tests/RA_Interface.Tests.vcxproj | 271 ++--------------
tests/RA_Interface.Tests.vcxproj.filters | 3 +
tests/RA_Interface_Tests.cpp | 4 +-
tests/RA_UnitTestHelpers.h | 4 +-
tests/base.props | 82 -----
tests/data/DataModelBase_Tests.cpp | 2 -
tests/data/ModelPropertyContainer_Tests.cpp | 2 -
tests/data/NotifyTargetSet_Tests.cpp | 2 -
tests/data/context/GameAssets_Tests.cpp | 2 +-
tests/data/models/AchievementModel_Tests.cpp | 4 +-
tests/data/models/CodeNoteModel_Tests.cpp | 16 +-
tests/data/models/RichPresenceModel_Tests.cpp | 4 +-
tests/devkit/RADevKit.Tests.vcxproj.vcxproj | 66 ++++
.../RADevKit.Tests.vcxproj.vcxproj.filters | 30 ++
.../{ => devkit}/data/ModelProperty_Tests.cpp | 2 +-
tests/devkit/testutil/CppUnitTest.hh | 18 ++
.../util/Strings_Tests.cpp} | 6 +-
tests/mocks/MockAchievementRuntime.cpp | 30 +-
tests/mocks/MockAchievementRuntime.hh | 8 +-
tests/mocks/MockClock.hh | 4 +-
tests/mocks/MockDesktop.hh | 2 +-
tests/mocks/MockEmulatorContext.hh | 6 +-
tests/mocks/MockGameContext.hh | 4 +-
tests/mocks/MockImageRepository.hh | 2 +-
tests/mocks/MockServer.hh | 6 +-
tests/mocks/MockSurface.hh | 2 -
.../AchievementRuntimeExports_Tests.cpp | 28 +-
tests/services/AchievementRuntime_Tests.cpp | 73 ++---
tests/services/ServicesAsserts.hh | 2 +-
tests/ui/ViewModelBase_Tests.cpp | 2 -
tests/ui/ViewModelCollection_Tests.cpp | 2 -
.../viewmodels/AssetEditorViewModel_Tests.cpp | 2 +-
.../viewmodels/AssetListViewModel_Tests.cpp | 18 +-
.../viewmodels/AssetUploadViewModel_Tests.cpp | 4 +-
.../BrokenAchievementsViewModel_Tests.cpp | 2 +-
.../IntegrationMenuViewModel_Tests.cpp | 4 +-
.../MemoryBookmarksViewModel_Tests.cpp | 8 +-
...OverlayAchievementsPageViewModel_Tests.cpp | 2 +-
...OverlayLeaderboardsPageViewModel_Tests.cpp | 4 +-
.../OverlayRecentGamesPageViewModel_Tests.cpp | 2 +-
.../PointerInspectorViewModel_Tests.cpp | 1 +
.../RichPresenceMonitorViewModel_Tests.cpp | 2 +-
.../TriggerConditionViewModel_Tests.cpp | 8 +-
.../ui/viewmodels/TriggerViewModel_Tests.cpp | 7 +-
.../viewmodels/UnknownGameViewModel_Tests.cpp | 4 +-
195 files changed, 1250 insertions(+), 1760 deletions(-)
create mode 100644 src/devkit/RADevKit.vcxproj
create mode 100644 src/devkit/RADevKit.vcxproj.filters
rename src/{ => devkit}/data/ModelProperty.cpp (56%)
rename src/{ => devkit}/data/ModelProperty.hh (94%)
rename src/{ => devkit}/services/ILogger.hh (100%)
create mode 100644 src/devkit/services/IMessageDispatcher.hh
rename src/{ => devkit}/services/ServiceLocator.hh (99%)
create mode 100644 src/devkit/util/Compat.hh
rename src/{ra_utility.h => devkit/util/EnumOps.hh} (58%)
create mode 100644 src/devkit/util/GSL.cpp
create mode 100644 src/devkit/util/GSL.hh
rename src/{RA_Log.h => devkit/util/Log.hh} (88%)
rename src/{RA_StringUtils.cpp => devkit/util/Strings.cpp} (98%)
rename src/{RA_StringUtils.h => devkit/util/Strings.hh} (97%)
create mode 100644 src/devkit/util/TypeCasts.hh
rename src/{ra_type_traits.h => devkit/util/TypeTraits.hh} (92%)
delete mode 100644 src/ra_fwd.h
delete mode 100644 src/ra_math.h
create mode 100644 src/services/impl/MessageDispatcher.hh
delete mode 100644 tests/base.props
create mode 100644 tests/devkit/RADevKit.Tests.vcxproj.vcxproj
create mode 100644 tests/devkit/RADevKit.Tests.vcxproj.vcxproj.filters
rename tests/{ => devkit}/data/ModelProperty_Tests.cpp (97%)
create mode 100644 tests/devkit/testutil/CppUnitTest.hh
rename tests/{RA_StringUtils_Tests.cpp => devkit/util/Strings_Tests.cpp} (99%)
diff --git a/.github/workflows/c-cpp.yml b/.github/workflows/c-cpp.yml
index 55a4587a..9dadbb6a 100644
--- a/.github/workflows/c-cpp.yml
+++ b/.github/workflows/c-cpp.yml
@@ -44,11 +44,13 @@ jobs:
uses: Malcolmnixon/Setup-VSTest@v4
- name: Build
run: msbuild.exe -m RA_Integration.sln -p:Configuration=Release -p:Platform=Win32
+ - name: Run lib Tests
+ run: vstest.console bin\Win32\Release\RADevKit.Tests.dll
- name: Run DLL Tests
- run: vstest.console bin\Win32\Release\tests\RA_Integration\RA_Integration.Tests.dll
+ run: vstest.console bin\Win32\Release\RA_Integration.Tests.dll
- name: Run Interface Tests
# requires the DLL to have been built
- run: vstest.console bin\Win32\Release\tests\RA_Interface\RA_Interface.Tests.dll
+ run: vstest.console bin\Win32\Release\RA_Interface.Tests.dll
Win64-Tests:
runs-on: windows-latest
@@ -63,10 +65,12 @@ jobs:
uses: Malcolmnixon/Setup-VSTest@v4
- name: Build
run: msbuild.exe -m RA_Integration.sln -p:Configuration=Release -p:Platform=x64
+ - name: Run lib Tests
+ run: vstest.console bin\x64\Release\RADevKit.Tests.dll
- name: Run DLL Tests
- run: vstest.console bin\x64\Release\tests\RA_Integration\RA_Integration.Tests.dll
+ run: vstest.console bin\x64\Release\RA_Integration.Tests.dll
- name: Run Interface Tests
- run: vstest.console bin\x64\Release\tests\RA_Interface\RA_Interface.Tests.dll
+ run: vstest.console bin\x64\Release\RA_Interface.Tests.dll
Win32-Analysis:
runs-on: windows-latest
diff --git a/RA_Integration.sln b/RA_Integration.sln
index 5581c33e..ea493bbc 100644
--- a/RA_Integration.sln
+++ b/RA_Integration.sln
@@ -3,8 +3,6 @@ Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.6.33829.357
MinimumVisualStudioVersion = 10.0.40219.1
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "RA_Integration", "src\RA_Integration.vcxproj", "{825CB292-F069-4B27-82CF-3417746ACDF3}"
-EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{264665A7-BA65-4F48-B565-6D97245E2B88}"
ProjectSection(SolutionItems) = preProject
.clang-format = .clang-format
@@ -12,10 +10,16 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution
src\ra_rules.ruleset = src\ra_rules.ruleset
EndProjectSection
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "RA_Integration.Tests", "tests\RA_Integration.Tests.vcxproj", "{876DEBDF-C7C8-4713-8CEF-EBDEE65306A7}"
-EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "rcheevos", "src\rcheevos.vcxproj", "{9D55EBE7-1392-4FA1-A9B9-F022F764CE35}"
EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "RADevKit", "src\devkit\RADevKit.vcxproj", "{8AE21D54-F905-44E1-90E5-D22E346BFF39}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "RADevKit.Tests", "tests\devkit\RADevKit.Tests.vcxproj.vcxproj", "{6131C3D1-165E-4F39-A44C-94F01EAA03C5}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "RA_Integration", "src\RA_Integration.vcxproj", "{825CB292-F069-4B27-82CF-3417746ACDF3}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "RA_Integration.Tests", "tests\RA_Integration.Tests.vcxproj", "{876DEBDF-C7C8-4713-8CEF-EBDEE65306A7}"
+EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "RA_Interface.Tests", "tests\RA_Interface.Tests.vcxproj", "{F78C2C8B-55DD-4252-A38F-F4D252D14DF8}"
EndProject
Global
@@ -26,62 +30,8 @@ Global
Debug|x64 = Debug|x64
Release|Win32 = Release|Win32
Release|x64 = Release|x64
- Release-vista|Win32 = Release-vista|Win32
- Release-vista|x64 = Release-vista|x64
- ReleaseWithDebug|Win32 = ReleaseWithDebug|Win32
- ReleaseWithDebug|x64 = ReleaseWithDebug|x64
- Release-xp|Win32 = Release-xp|Win32
- Release-xp|x64 = Release-xp|x64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {825CB292-F069-4B27-82CF-3417746ACDF3}.Analysis|Win32.ActiveCfg = Analysis|Win32
- {825CB292-F069-4B27-82CF-3417746ACDF3}.Analysis|Win32.Build.0 = Analysis|Win32
- {825CB292-F069-4B27-82CF-3417746ACDF3}.Analysis|x64.ActiveCfg = Analysis|x64
- {825CB292-F069-4B27-82CF-3417746ACDF3}.Analysis|x64.Build.0 = Analysis|x64
- {825CB292-F069-4B27-82CF-3417746ACDF3}.Debug|Win32.ActiveCfg = Debug|Win32
- {825CB292-F069-4B27-82CF-3417746ACDF3}.Debug|Win32.Build.0 = Debug|Win32
- {825CB292-F069-4B27-82CF-3417746ACDF3}.Debug|x64.ActiveCfg = Debug|x64
- {825CB292-F069-4B27-82CF-3417746ACDF3}.Debug|x64.Build.0 = Debug|x64
- {825CB292-F069-4B27-82CF-3417746ACDF3}.Release|Win32.ActiveCfg = Release|Win32
- {825CB292-F069-4B27-82CF-3417746ACDF3}.Release|Win32.Build.0 = Release|Win32
- {825CB292-F069-4B27-82CF-3417746ACDF3}.Release|x64.ActiveCfg = Release|x64
- {825CB292-F069-4B27-82CF-3417746ACDF3}.Release|x64.Build.0 = Release|x64
- {825CB292-F069-4B27-82CF-3417746ACDF3}.Release-vista|Win32.ActiveCfg = Release-vista|Win32
- {825CB292-F069-4B27-82CF-3417746ACDF3}.Release-vista|Win32.Build.0 = Release-vista|Win32
- {825CB292-F069-4B27-82CF-3417746ACDF3}.Release-vista|x64.ActiveCfg = Release-vista|x64
- {825CB292-F069-4B27-82CF-3417746ACDF3}.Release-vista|x64.Build.0 = Release-vista|x64
- {825CB292-F069-4B27-82CF-3417746ACDF3}.ReleaseWithDebug|Win32.ActiveCfg = ReleaseWithDebug|Win32
- {825CB292-F069-4B27-82CF-3417746ACDF3}.ReleaseWithDebug|Win32.Build.0 = ReleaseWithDebug|Win32
- {825CB292-F069-4B27-82CF-3417746ACDF3}.ReleaseWithDebug|x64.ActiveCfg = ReleaseWithDebug|x64
- {825CB292-F069-4B27-82CF-3417746ACDF3}.ReleaseWithDebug|x64.Build.0 = ReleaseWithDebug|x64
- {825CB292-F069-4B27-82CF-3417746ACDF3}.Release-xp|Win32.ActiveCfg = Release-xp|Win32
- {825CB292-F069-4B27-82CF-3417746ACDF3}.Release-xp|Win32.Build.0 = Release-xp|Win32
- {825CB292-F069-4B27-82CF-3417746ACDF3}.Release-xp|x64.ActiveCfg = Release-xp|x64
- {825CB292-F069-4B27-82CF-3417746ACDF3}.Release-xp|x64.Build.0 = Release-xp|x64
- {876DEBDF-C7C8-4713-8CEF-EBDEE65306A7}.Analysis|Win32.ActiveCfg = Analysis|Win32
- {876DEBDF-C7C8-4713-8CEF-EBDEE65306A7}.Analysis|Win32.Build.0 = Analysis|Win32
- {876DEBDF-C7C8-4713-8CEF-EBDEE65306A7}.Analysis|x64.ActiveCfg = Analysis|x64
- {876DEBDF-C7C8-4713-8CEF-EBDEE65306A7}.Analysis|x64.Build.0 = Analysis|x64
- {876DEBDF-C7C8-4713-8CEF-EBDEE65306A7}.Debug|Win32.ActiveCfg = Debug|Win32
- {876DEBDF-C7C8-4713-8CEF-EBDEE65306A7}.Debug|Win32.Build.0 = Debug|Win32
- {876DEBDF-C7C8-4713-8CEF-EBDEE65306A7}.Debug|x64.ActiveCfg = Debug|x64
- {876DEBDF-C7C8-4713-8CEF-EBDEE65306A7}.Debug|x64.Build.0 = Debug|x64
- {876DEBDF-C7C8-4713-8CEF-EBDEE65306A7}.Release|Win32.ActiveCfg = Release|Win32
- {876DEBDF-C7C8-4713-8CEF-EBDEE65306A7}.Release|Win32.Build.0 = Release|Win32
- {876DEBDF-C7C8-4713-8CEF-EBDEE65306A7}.Release|x64.ActiveCfg = Release|x64
- {876DEBDF-C7C8-4713-8CEF-EBDEE65306A7}.Release|x64.Build.0 = Release|x64
- {876DEBDF-C7C8-4713-8CEF-EBDEE65306A7}.Release-vista|Win32.ActiveCfg = Release|Win32
- {876DEBDF-C7C8-4713-8CEF-EBDEE65306A7}.Release-vista|Win32.Build.0 = Release|Win32
- {876DEBDF-C7C8-4713-8CEF-EBDEE65306A7}.Release-vista|x64.ActiveCfg = Release|x64
- {876DEBDF-C7C8-4713-8CEF-EBDEE65306A7}.Release-vista|x64.Build.0 = Release|x64
- {876DEBDF-C7C8-4713-8CEF-EBDEE65306A7}.ReleaseWithDebug|Win32.ActiveCfg = Release|Win32
- {876DEBDF-C7C8-4713-8CEF-EBDEE65306A7}.ReleaseWithDebug|Win32.Build.0 = Release|Win32
- {876DEBDF-C7C8-4713-8CEF-EBDEE65306A7}.ReleaseWithDebug|x64.ActiveCfg = Release|x64
- {876DEBDF-C7C8-4713-8CEF-EBDEE65306A7}.ReleaseWithDebug|x64.Build.0 = Release|x64
- {876DEBDF-C7C8-4713-8CEF-EBDEE65306A7}.Release-xp|Win32.ActiveCfg = Release-xp|Win32
- {876DEBDF-C7C8-4713-8CEF-EBDEE65306A7}.Release-xp|Win32.Build.0 = Release-xp|Win32
- {876DEBDF-C7C8-4713-8CEF-EBDEE65306A7}.Release-xp|x64.ActiveCfg = Release-xp|x64
- {876DEBDF-C7C8-4713-8CEF-EBDEE65306A7}.Release-xp|x64.Build.0 = Release-xp|x64
{9D55EBE7-1392-4FA1-A9B9-F022F764CE35}.Analysis|Win32.ActiveCfg = Release|Win32
{9D55EBE7-1392-4FA1-A9B9-F022F764CE35}.Analysis|Win32.Build.0 = Release|Win32
{9D55EBE7-1392-4FA1-A9B9-F022F764CE35}.Analysis|x64.ActiveCfg = Release|x64
@@ -94,18 +44,54 @@ Global
{9D55EBE7-1392-4FA1-A9B9-F022F764CE35}.Release|Win32.Build.0 = Release|Win32
{9D55EBE7-1392-4FA1-A9B9-F022F764CE35}.Release|x64.ActiveCfg = Release|x64
{9D55EBE7-1392-4FA1-A9B9-F022F764CE35}.Release|x64.Build.0 = Release|x64
- {9D55EBE7-1392-4FA1-A9B9-F022F764CE35}.Release-vista|Win32.ActiveCfg = Release|Win32
- {9D55EBE7-1392-4FA1-A9B9-F022F764CE35}.Release-vista|Win32.Build.0 = Release|Win32
- {9D55EBE7-1392-4FA1-A9B9-F022F764CE35}.Release-vista|x64.ActiveCfg = Release|x64
- {9D55EBE7-1392-4FA1-A9B9-F022F764CE35}.Release-vista|x64.Build.0 = Release|x64
- {9D55EBE7-1392-4FA1-A9B9-F022F764CE35}.ReleaseWithDebug|Win32.ActiveCfg = Release|Win32
- {9D55EBE7-1392-4FA1-A9B9-F022F764CE35}.ReleaseWithDebug|Win32.Build.0 = Release|Win32
- {9D55EBE7-1392-4FA1-A9B9-F022F764CE35}.ReleaseWithDebug|x64.ActiveCfg = Release|x64
- {9D55EBE7-1392-4FA1-A9B9-F022F764CE35}.ReleaseWithDebug|x64.Build.0 = Release|x64
- {9D55EBE7-1392-4FA1-A9B9-F022F764CE35}.Release-xp|Win32.ActiveCfg = Release|Win32
- {9D55EBE7-1392-4FA1-A9B9-F022F764CE35}.Release-xp|Win32.Build.0 = Release|Win32
- {9D55EBE7-1392-4FA1-A9B9-F022F764CE35}.Release-xp|x64.ActiveCfg = Release|x64
- {9D55EBE7-1392-4FA1-A9B9-F022F764CE35}.Release-xp|x64.Build.0 = Release|x64
+ {8AE21D54-F905-44E1-90E5-D22E346BFF39}.Analysis|Win32.ActiveCfg = Analysis|Win32
+ {8AE21D54-F905-44E1-90E5-D22E346BFF39}.Analysis|Win32.Build.0 = Analysis|Win32
+ {8AE21D54-F905-44E1-90E5-D22E346BFF39}.Analysis|x64.ActiveCfg = Analysis|x64
+ {8AE21D54-F905-44E1-90E5-D22E346BFF39}.Analysis|x64.Build.0 = Analysis|x64
+ {8AE21D54-F905-44E1-90E5-D22E346BFF39}.Debug|Win32.ActiveCfg = Debug|Win32
+ {8AE21D54-F905-44E1-90E5-D22E346BFF39}.Debug|Win32.Build.0 = Debug|Win32
+ {8AE21D54-F905-44E1-90E5-D22E346BFF39}.Debug|x64.ActiveCfg = Debug|x64
+ {8AE21D54-F905-44E1-90E5-D22E346BFF39}.Debug|x64.Build.0 = Debug|x64
+ {8AE21D54-F905-44E1-90E5-D22E346BFF39}.Release|Win32.ActiveCfg = Release|Win32
+ {8AE21D54-F905-44E1-90E5-D22E346BFF39}.Release|Win32.Build.0 = Release|Win32
+ {8AE21D54-F905-44E1-90E5-D22E346BFF39}.Release|x64.ActiveCfg = Release|x64
+ {8AE21D54-F905-44E1-90E5-D22E346BFF39}.Release|x64.Build.0 = Release|x64
+ {6131C3D1-165E-4F39-A44C-94F01EAA03C5}.Analysis|Win32.ActiveCfg = Analysis|Win32
+ {6131C3D1-165E-4F39-A44C-94F01EAA03C5}.Analysis|Win32.Build.0 = Analysis|Win32
+ {6131C3D1-165E-4F39-A44C-94F01EAA03C5}.Analysis|x64.ActiveCfg = Analysis|x64
+ {6131C3D1-165E-4F39-A44C-94F01EAA03C5}.Analysis|x64.Build.0 = Analysis|x64
+ {6131C3D1-165E-4F39-A44C-94F01EAA03C5}.Debug|Win32.ActiveCfg = Debug|Win32
+ {6131C3D1-165E-4F39-A44C-94F01EAA03C5}.Debug|Win32.Build.0 = Debug|Win32
+ {6131C3D1-165E-4F39-A44C-94F01EAA03C5}.Debug|x64.ActiveCfg = Debug|x64
+ {6131C3D1-165E-4F39-A44C-94F01EAA03C5}.Debug|x64.Build.0 = Debug|x64
+ {6131C3D1-165E-4F39-A44C-94F01EAA03C5}.Release|Win32.ActiveCfg = Release|Win32
+ {6131C3D1-165E-4F39-A44C-94F01EAA03C5}.Release|Win32.Build.0 = Release|Win32
+ {6131C3D1-165E-4F39-A44C-94F01EAA03C5}.Release|x64.ActiveCfg = Release|x64
+ {6131C3D1-165E-4F39-A44C-94F01EAA03C5}.Release|x64.Build.0 = Release|x64
+ {825CB292-F069-4B27-82CF-3417746ACDF3}.Analysis|Win32.ActiveCfg = Analysis|Win32
+ {825CB292-F069-4B27-82CF-3417746ACDF3}.Analysis|Win32.Build.0 = Analysis|Win32
+ {825CB292-F069-4B27-82CF-3417746ACDF3}.Analysis|x64.ActiveCfg = Analysis|x64
+ {825CB292-F069-4B27-82CF-3417746ACDF3}.Analysis|x64.Build.0 = Analysis|x64
+ {825CB292-F069-4B27-82CF-3417746ACDF3}.Debug|Win32.ActiveCfg = Debug|Win32
+ {825CB292-F069-4B27-82CF-3417746ACDF3}.Debug|Win32.Build.0 = Debug|Win32
+ {825CB292-F069-4B27-82CF-3417746ACDF3}.Debug|x64.ActiveCfg = Debug|x64
+ {825CB292-F069-4B27-82CF-3417746ACDF3}.Debug|x64.Build.0 = Debug|x64
+ {825CB292-F069-4B27-82CF-3417746ACDF3}.Release|Win32.ActiveCfg = Release|Win32
+ {825CB292-F069-4B27-82CF-3417746ACDF3}.Release|Win32.Build.0 = Release|Win32
+ {825CB292-F069-4B27-82CF-3417746ACDF3}.Release|x64.ActiveCfg = Release|x64
+ {825CB292-F069-4B27-82CF-3417746ACDF3}.Release|x64.Build.0 = Release|x64
+ {876DEBDF-C7C8-4713-8CEF-EBDEE65306A7}.Analysis|Win32.ActiveCfg = Analysis|Win32
+ {876DEBDF-C7C8-4713-8CEF-EBDEE65306A7}.Analysis|Win32.Build.0 = Analysis|Win32
+ {876DEBDF-C7C8-4713-8CEF-EBDEE65306A7}.Analysis|x64.ActiveCfg = Analysis|x64
+ {876DEBDF-C7C8-4713-8CEF-EBDEE65306A7}.Analysis|x64.Build.0 = Analysis|x64
+ {876DEBDF-C7C8-4713-8CEF-EBDEE65306A7}.Debug|Win32.ActiveCfg = Debug|Win32
+ {876DEBDF-C7C8-4713-8CEF-EBDEE65306A7}.Debug|Win32.Build.0 = Debug|Win32
+ {876DEBDF-C7C8-4713-8CEF-EBDEE65306A7}.Debug|x64.ActiveCfg = Debug|x64
+ {876DEBDF-C7C8-4713-8CEF-EBDEE65306A7}.Debug|x64.Build.0 = Debug|x64
+ {876DEBDF-C7C8-4713-8CEF-EBDEE65306A7}.Release|Win32.ActiveCfg = Release|Win32
+ {876DEBDF-C7C8-4713-8CEF-EBDEE65306A7}.Release|Win32.Build.0 = Release|Win32
+ {876DEBDF-C7C8-4713-8CEF-EBDEE65306A7}.Release|x64.ActiveCfg = Release|x64
+ {876DEBDF-C7C8-4713-8CEF-EBDEE65306A7}.Release|x64.Build.0 = Release|x64
{F78C2C8B-55DD-4252-A38F-F4D252D14DF8}.Analysis|Win32.ActiveCfg = Release|Win32
{F78C2C8B-55DD-4252-A38F-F4D252D14DF8}.Analysis|x64.ActiveCfg = Release|x64
{F78C2C8B-55DD-4252-A38F-F4D252D14DF8}.Analysis|x64.Build.0 = Release|x64
@@ -117,18 +103,6 @@ Global
{F78C2C8B-55DD-4252-A38F-F4D252D14DF8}.Release|Win32.Build.0 = Release|Win32
{F78C2C8B-55DD-4252-A38F-F4D252D14DF8}.Release|x64.ActiveCfg = Release|x64
{F78C2C8B-55DD-4252-A38F-F4D252D14DF8}.Release|x64.Build.0 = Release|x64
- {F78C2C8B-55DD-4252-A38F-F4D252D14DF8}.Release-vista|Win32.ActiveCfg = Release|Win32
- {F78C2C8B-55DD-4252-A38F-F4D252D14DF8}.Release-vista|Win32.Build.0 = Release|Win32
- {F78C2C8B-55DD-4252-A38F-F4D252D14DF8}.Release-vista|x64.ActiveCfg = Release|x64
- {F78C2C8B-55DD-4252-A38F-F4D252D14DF8}.Release-vista|x64.Build.0 = Release|x64
- {F78C2C8B-55DD-4252-A38F-F4D252D14DF8}.ReleaseWithDebug|Win32.ActiveCfg = Release|Win32
- {F78C2C8B-55DD-4252-A38F-F4D252D14DF8}.ReleaseWithDebug|Win32.Build.0 = Release|Win32
- {F78C2C8B-55DD-4252-A38F-F4D252D14DF8}.ReleaseWithDebug|x64.ActiveCfg = Release|x64
- {F78C2C8B-55DD-4252-A38F-F4D252D14DF8}.ReleaseWithDebug|x64.Build.0 = Release|x64
- {F78C2C8B-55DD-4252-A38F-F4D252D14DF8}.Release-xp|Win32.ActiveCfg = Release-xp|Win32
- {F78C2C8B-55DD-4252-A38F-F4D252D14DF8}.Release-xp|Win32.Build.0 = Release-xp|Win32
- {F78C2C8B-55DD-4252-A38F-F4D252D14DF8}.Release-xp|x64.ActiveCfg = Release-xp|x64
- {F78C2C8B-55DD-4252-A38F-F4D252D14DF8}.Release-xp|x64.Build.0 = Release-xp|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/src/Exports.cpp b/src/Exports.cpp
index 24f28a8e..6cac95c3 100644
--- a/src/Exports.cpp
+++ b/src/Exports.cpp
@@ -2,7 +2,7 @@
#include "RA_BuildVer.h"
#include "RA_Defs.h"
-#include "RA_Log.h"
+#include "util\Log.hh"
#include "RA_Resource.h"
#include "api\IServer.hh"
diff --git a/src/RA_Core.cpp b/src/RA_Core.cpp
index 7482713c..5c7053f8 100644
--- a/src/RA_Core.cpp
+++ b/src/RA_Core.cpp
@@ -2,7 +2,7 @@
#include "Exports.hh"
-#include "RA_Log.h"
+#include "util\Log.hh"
#include "data\context\SessionTracker.hh"
diff --git a/src/RA_Defs.cpp b/src/RA_Defs.cpp
index b94403ce..af4930f5 100644
--- a/src/RA_Defs.cpp
+++ b/src/RA_Defs.cpp
@@ -1,6 +1,7 @@
#include "RA_Defs.h"
-#include "RA_StringUtils.h"
+#include "util\Strings.hh"
+#include "services\ServiceLocator.hh"
#include "data\context\EmulatorContext.hh"
diff --git a/src/RA_Defs.h b/src/RA_Defs.h
index fee7a4af..b4a4fd70 100644
--- a/src/RA_Defs.h
+++ b/src/RA_Defs.h
@@ -2,7 +2,7 @@
#define RA_DEFS_H
#pragma once
-#include "RA_StringUtils.h"
+#include "util\Strings.hh"
#if !(RA_EXPORTS || RA_UTEST)
#include "windows_nodefines.h"
@@ -26,7 +26,7 @@
// Version Information is integrated into tags
#else
-#include "RA_Log.h"
+#include "util\Log.hh"
#include "RA_Json.h"
// RA-Only
@@ -103,7 +103,7 @@ public:
pLT ={ rect.left, rect.top };
pRB ={ rect.right, rect.bottom };
- HWND__* const restrict parentHwnd = ::GetParent(contentHwnd);
+ HWND__* const _RESTRICT parentHwnd = ::GetParent(contentHwnd);
check = ::ScreenToClient(parentHwnd, &pLT);
assert(check != 0);
check = ::ScreenToClient(parentHwnd, &pRB);
@@ -169,12 +169,4 @@ _NODISCARD std::string ByteAddressToString(_In_ ByteAddress nAddr);
_NODISCARD ByteAddress ByteAddressFromString(_In_ const std::string& sByteAddress);
} // namespace ra
-#if _MBCS
-_CONSTANT_VAR RA_MAX_PATH{ _MAX_PATH }; // multibyte max path
-#elif _UNICODE
-_CONSTANT_VAR RA_MAX_PATH{ 32767 }; // Unicode max path
-#else
-#error Unknown character set detected!
-#endif /* _MBCS */
-
#endif // !RA_DEFS_H
diff --git a/src/RA_Integration.vcxproj b/src/RA_Integration.vcxproj
index 4ba85862..d2742e22 100644
--- a/src/RA_Integration.vcxproj
+++ b/src/RA_Integration.vcxproj
@@ -17,30 +17,6 @@
Debug
x64
-
- Release-xp
- Win32
-
-
- Release-xp
- x64
-
-
- Release-vista
- Win32
-
-
- Release-vista
- x64
-
-
- ReleaseWithDebug
- Win32
-
-
- ReleaseWithDebug
- x64
-
Release
Win32
@@ -50,9 +26,54 @@
x64
+
+
+ Designer
+
+
+
+ RA_Integration
+ {825CB292-F069-4B27-82CF-3417746ACDF3}
+ RA_Integration
+ RA_Integration-x64
+ ra
+ DynamicLibrary
+ 10.0
+ v143
+ Unicode
+
+
+
+
+
+
+
+
+
+ RC_CLIENT_SUPPORTS_HASH;%(PreprocessorDefinitions)
+ $(SolutionDir);$(RapidJSON_IncludeDir);%(AdditionalIncludeDirectories)
+ Use
+ pch.h
+ pch.h
+
+
+ "$(SolutionDir)RAInterface\MakeBuildVer.bat" "$(SolutionDir)src\RA_BuildVer.h" RAIntegration RA_INTEGRATION
+
+
+
+ IF "$(LocalDebuggerWorkingDirectory)"=="" GOTO done
+ IF NOT EXIST $(LocalDebuggerWorkingDirectory) GOTO done
+ echo Copying $(Configuration) DLL to $(LocalDebuggerWorkingDirectory)
+ copy /y $(TargetPath) $(LocalDebuggerWorkingDirectory)\$(TargetFileName)
+ :done
+
+
+
+ windowscodecs.lib;winmm.lib;Winhttp.lib;user32.lib;shlwapi.lib;%(AdditionalDependencies)
+
+
-
@@ -87,7 +108,6 @@
-
@@ -216,7 +236,6 @@
-
@@ -238,14 +257,11 @@
-
-
-
@@ -413,213 +429,15 @@
_DEBUG;_WIN64;%(PreprocessorDefinitions)
_WIN64;%(PreprocessorDefinitions)
- _USING_V110_SDK71_;_WIN64;%(PreprocessorDefinitions)
- _USING_V110_SDK71_;_WIN64;%(PreprocessorDefinitions)
-
- Designer
-
-
-
-
-
+
+ {8ae21d54-f905-44e1-90e5-d22e346bff39}
+
{9d55ebe7-1392-4fa1-a9b9-f022f764ce35}
-
- RA_Integration
- {825CB292-F069-4B27-82CF-3417746ACDF3}
- RA_Integration
- RA_Integration-x64
- RA_Integration
- DynamicLibrary
- Unicode
-
-
-
- $(DefaultPlatformToolset)
-
-
- true
-
-
- v141_xp
- true
-
-
- v142
- true
-
-
- true
-
-
-
-
-
-
-
-
-
-
- $(SolutionDir)bin\$(Platform)\$(Configuration)\
- $(SolutionDir)obj\$(Platform)\$(Configuration)\
-
-
- NativeRecommendedRules.ruleset
- false
-
-
- ra_rules.ruleset
- true
- $(RapidJSON_IncludeDir);$(CAExcludePath)
-
-
- false
-
-
- false
-
-
- false
-
-
- false
-
-
-
- Disabled
- _DEBUG;%(PreprocessorDefinitions)
- EnableFastChecks
- MultiThreadedDebug
- true
- EditAndContinue
- false
- false
- true
- false
-
-
- windowscodecs.lib;winmm.lib;Winhttp.lib;user32.lib;shlwapi.lib;%(AdditionalDependencies)
- %(AdditionalLibraryDirectories)
- true
- false
- Windows
-
-
- _DEBUG;%(PreprocessorDefinitions)
-
-
-
-
- Disabled
- NDEBUG;%(PreprocessorDefinitions)
- EnableFastChecks
- MultiThreaded
- true
- ProgramDatabase
- false
- false
- true
- true
- true
-
-
- windowscodecs.lib;winmm.lib;Winhttp.lib;user32.lib;shlwapi.lib;%(AdditionalDependencies)
- %(AdditionalLibraryDirectories)
- false
- false
- Windows
-
-
- NDEBUG;%(PreprocessorDefinitions)
-
-
-
-
-
-
-
- Full
- true
- true
- NDEBUG;%(PreprocessorDefinitions)
- MultiThreaded
- true
- ProgramDatabase
- true
- true
-
-
- windowscodecs.lib;winmm.lib;Winhttp.lib;user32.lib;shlwapi.lib;%(AdditionalDependencies)
- %(AdditionalLibraryDirectories)
- Windows
- false
-
-
-
-
- Full
- true
- true
- NDEBUG;%(PreprocessorDefinitions)
- MultiThreaded
- true
- ProgramDatabase
- true
- true
-
-
- windowscodecs.lib;winmm.lib;Winhttp.lib;user32.lib;shlwapi.lib;%(AdditionalDependencies)
- %(AdditionalLibraryDirectories)
- Windows
- false
-
-
-
-
- Full
- true
- true
- NDEBUG;%(PreprocessorDefinitions)
- MultiThreaded
- true
- ProgramDatabase
- true
- true
-
-
- windowscodecs.lib;winmm.lib;Winhttp.lib;user32.lib;shlwapi.lib;%(AdditionalDependencies)
- %(AdditionalLibraryDirectories)
- Windows
- false
-
-
-
-
- Full
- true
- true
- ..\;%(AdditionalIncludeDirectories)
- NDEBUG;%(PreprocessorDefinitions)
- MultiThreaded
- true
- ProgramDatabase
- true
- true
- UseFastLinkTimeCodeGeneration
-
-
- windowscodecs.lib;winmm.lib;Winhttp.lib;user32.lib;shlwapi.lib;%(AdditionalDependencies)
- %(AdditionalLibraryDirectories)
- Windows
- true
-
-
-
-
\ No newline at end of file
diff --git a/src/RA_Integration.vcxproj.filters b/src/RA_Integration.vcxproj.filters
index ab33acb6..139d0c92 100644
--- a/src/RA_Integration.vcxproj.filters
+++ b/src/RA_Integration.vcxproj.filters
@@ -19,9 +19,6 @@
{3b94374b-a06e-4994-b6f8-3a2f5e215803}
-
- {cd433aa7-9c74-461e-ba0e-3ce327a59b7a}
-
{0badbd6c-a477-4f69-b999-f27b050c3a17}
@@ -96,9 +93,6 @@
UI\Win32
-
- Services
-
Services
@@ -333,9 +327,6 @@
Data\Context
-
- Data
-
Data
@@ -491,18 +482,12 @@
Services
-
- Helpers
-
Services
Services\Impl
-
- Services
-
Services\Impl
@@ -620,9 +605,6 @@
Interface
-
- Helpers
-
API
@@ -926,9 +908,6 @@
Data
-
- Data
-
Data
@@ -1124,6 +1103,9 @@
Data
+
+ Services\Impl
+
@@ -1134,12 +1116,6 @@
-
- Helpers
-
-
- Helpers
-
-
+
\ No newline at end of file
diff --git a/src/api/ApiCall.cpp b/src/api/ApiCall.cpp
index 29db276c..f6e97f0a 100644
--- a/src/api/ApiCall.cpp
+++ b/src/api/ApiCall.cpp
@@ -1,7 +1,5 @@
#include "ApiCall.hh"
-#include "ra_fwd.h"
-
#include "api\IServer.hh"
#include "services\ServiceLocator.hh"
diff --git a/src/api/UploadBadge.hh b/src/api/UploadBadge.hh
index 081f6110..774b9fa8 100644
--- a/src/api/UploadBadge.hh
+++ b/src/api/UploadBadge.hh
@@ -4,8 +4,6 @@
#include "ApiCall.hh"
-#include "ra_fwd.h"
-
namespace ra {
namespace api {
diff --git a/src/api/impl/ConnectedServer.cpp b/src/api/impl/ConnectedServer.cpp
index 5a0c83f5..23e7426e 100644
--- a/src/api/impl/ConnectedServer.cpp
+++ b/src/api/impl/ConnectedServer.cpp
@@ -2,6 +2,7 @@
#include "DisconnectedServer.hh"
#include "RA_Defs.h"
+#include "util\Log.hh"
#include "RA_md5factory.h"
@@ -351,7 +352,7 @@ static bool ValidateResponse(int nResult, const rc_api_response_t& api_response,
return true;
}
-static bool DoUpload(const std::string& sHost, const char* restrict sApiName, const char* restrict sRequestName,
+static bool DoUpload(const std::string& sHost, const char* _RESTRICT sApiName, const char* _RESTRICT sRequestName,
const std::wstring& sFilePath, ApiResponseBase& pResponse, rapidjson::Document& document)
{
const auto& pFileSystem = ra::services::ServiceLocator::Get();
diff --git a/src/api/impl/ServerBase.hh b/src/api/impl/ServerBase.hh
index d3bc28e7..d8585cb8 100644
--- a/src/api/impl/ServerBase.hh
+++ b/src/api/impl/ServerBase.hh
@@ -4,7 +4,7 @@
#include "api/IServer.hh"
-#include "RA_StringUtils.h"
+#include "util\Strings.hh"
#include
@@ -98,7 +98,7 @@ public:
protected:
template
- inline typename TResponse UnsupportedApi(const char* const restrict apiName) const
+ inline typename TResponse UnsupportedApi(const char* const _RESTRICT apiName) const
{
static_assert(std::is_base_of::value, "TResponse must derive from ApiResponseBase");
diff --git a/src/base.props b/src/base.props
index 61b5617b..e917c05f 100644
--- a/src/base.props
+++ b/src/base.props
@@ -1,19 +1,34 @@
-
- $(SolutionDir)
- $(RA_DIR)rapidjson\include\
- $(RA_DIR)rcheevos\include\
- $(RA_DIR)RAInterface
- $(RA_DIR)src\
- $(RA_DIR)GSL\include\
- $(RA_DIR);$(RA_SourceDir);$(RAInterface_IncludePath);$(RapidJSON_IncludeDir);$(rcheevos_IncludePath);$(GSL_IncludeDir)
- true
+ $(SolutionDir)rapidjson\include\
+ $(SolutionDir)rcheevos\include\
+ $(SolutionDir)RAInterface
+ $(SolutionDir)src\
+ $(SolutionDir)src\devkit\
+ $(SolutionDir)GSL\include\
+ $(VCInstallDir)UnitTest\include\
+ $(RA_DevKitSourceDir);$(RA_SourceDir);$(rcheevos_IncludePath);$(GSL_IncludePath)
$(SolutionDir)bin\$(Platform)\$(Configuration)\
- $(SolutionDir)obj\$(Platform)\$(Configuration)\
+ $(SolutionDir)obj\$(Platform)\$(Configuration)\$(ProjectName)\
+
+
+ true
+ NativeRecommendedRules.ruleset
+ false
+
+
+ false
+ $(RA_SourceDir)\ra_rules.ruleset
+ true
+ $(RapidJSON_IncludeDir);$(CAExcludePath)
+
+
+ false
+ true
+ true
@@ -22,42 +37,80 @@
+ CompileAsCpp
+ stdcpp17
+ true
+ Level4
+ $(RA_IncludePath);%(AdditionalIncludeDirectories)
true
true
- stdcpp17
- CompileAsCpp
- $(RA_IncludePath)
ProgramDatabase
- Level4
- Use
- pch.h
- pch.h
- _ARCH=$(PlatformArchitecture);RC_CLIENT_SUPPORTS_HASH;RA_EXPORTS;%(PreprocessorDefinitions)
true
true
+ Unicode
+ false
-
- "$(SolutionDir)RAInterface\MakeBuildVer.bat" "$(SolutionDir)src\RA_BuildVer.h" RAIntegration RA_INTEGRATION
-
-
-
- IF "$(LocalDebuggerWorkingDirectory)"=="" GOTO done
- IF NOT EXIST $(LocalDebuggerWorkingDirectory) GOTO done
- echo Copying $(Configuration) DLL to $(LocalDebuggerWorkingDirectory)
- copy /y $(TargetPath) $(LocalDebuggerWorkingDirectory)\$(TargetFileName)
- :done
-
-
- $(LocalDebuggerWorkingDirectory)\$(TargetName).pdb
+ $(OutDir)\$(TargetName).pdb
libc.lib, libcmt.lib, libcd.lib, libcmtd.lib, msvcrtd.lib
+
+
+ Disabled
+ _DEBUG;%(PreprocessorDefinitions)
+ EnableFastChecks
+ MultiThreadedDebug
+ EditAndContinue
+ false
+ false
+ false
+
+
+ _DEBUG;%(PreprocessorDefinitions)
+
+
+ true
+ false
+
+
+
+
+ MaxSpeed
+ true
+ true
+ true
+ NDEBUG;%(PreprocessorDefinitions)
+ Default
+ MultiThreaded
+
+
+ true
+ true
+ false
+
+
+
+
+ Disabled
+ NDEBUG;%(PreprocessorDefinitions)
+ Default
+ MultiThreaded
+ false
+ false
+ true
+ true
+ true
+
+
+ false
+ false
+
+
+ NDEBUG;%(PreprocessorDefinitions)
+
+
-
- $(RA_DIR)
- true
-
$(RapidJSON_IncludeDir)
true
@@ -74,17 +127,17 @@
$(RA_SourceDir)
true
-
- $(GSL_IncludeDir)
+
+ $(RA_DevKitSourceDir)
+ true
+
+
+ $(GSL_IncludePath)
true
$(RA_IncludePath)
true
-
- $(XPDeprecationWarning)
- true
-
diff --git a/src/data/AsyncObject.hh b/src/data/AsyncObject.hh
index 5cbff230..1f53a13e 100644
--- a/src/data/AsyncObject.hh
+++ b/src/data/AsyncObject.hh
@@ -2,7 +2,7 @@
#define RA_DATA_ASYNCOBJECT_HH
#pragma once
-#include "ra_fwd.h"
+#include "util\GSL.hh"
namespace ra {
namespace data {
diff --git a/src/data/DataModelBase.hh b/src/data/DataModelBase.hh
index 19d2f787..86e06545 100644
--- a/src/data/DataModelBase.hh
+++ b/src/data/DataModelBase.hh
@@ -30,7 +30,7 @@ public:
void RemoveNotifyTarget(NotifyTarget& pTarget) noexcept
{
-#ifdef RA_UTEST
+#ifdef DEBUG
GSL_SUPPRESS_F6 Expects(!m_bDestructed);
#endif
m_vNotifyTargets.Remove(pTarget);
diff --git a/src/data/ModelCollectionBase.hh b/src/data/ModelCollectionBase.hh
index 082ef7bc..b7826416 100644
--- a/src/data/ModelCollectionBase.hh
+++ b/src/data/ModelCollectionBase.hh
@@ -4,7 +4,7 @@
#include "ModelBase.hh"
-#include "ra_utility.h"
+#include "util\TypeCasts.hh"
namespace ra {
namespace data {
diff --git a/src/data/ModelPropertyContainer.hh b/src/data/ModelPropertyContainer.hh
index f33b9754..888a8712 100644
--- a/src/data/ModelPropertyContainer.hh
+++ b/src/data/ModelPropertyContainer.hh
@@ -2,9 +2,7 @@
#define RA_DATA_MODEL_PROPERTY_CONTAINER_H
#pragma once
-#include "ra_fwd.h"
-
-#include "ModelProperty.hh"
+#include "data\ModelProperty.hh"
namespace ra {
namespace data {
@@ -14,7 +12,7 @@ class ModelPropertyContainer
public:
GSL_SUPPRESS_F6 ModelPropertyContainer() = default;
-#ifdef RA_UTEST
+#ifdef DEBUG
virtual ~ModelPropertyContainer() noexcept {
m_bDestructed = true;
}
diff --git a/src/data/NotifyTargetSet.hh b/src/data/NotifyTargetSet.hh
index a02fa74d..fa675ca6 100644
--- a/src/data/NotifyTargetSet.hh
+++ b/src/data/NotifyTargetSet.hh
@@ -2,7 +2,7 @@
#define RA_DATA_NOTIFYTARGET_SET_H
#pragma once
-#include "ra_fwd.h"
+#include "util\GSL.hh"
namespace ra {
namespace data {
@@ -76,7 +76,7 @@ public:
auto begin() const noexcept { return m_pBegin; }
auto end() const noexcept { return m_pEnd; }
- size_t size() const
+ size_t size() const noexcept
{
return m_pEnd.m_pCurrent - m_pBegin.m_pCurrent;
}
diff --git a/src/data/context/ConsoleContext.cpp b/src/data/context/ConsoleContext.cpp
index d0e960c5..e0caaee8 100644
--- a/src/data/context/ConsoleContext.cpp
+++ b/src/data/context/ConsoleContext.cpp
@@ -1,7 +1,7 @@
#include "ConsoleContext.hh"
-#include "RA_Log.h"
-#include "RA_StringUtils.h"
+#include "util\Log.hh"
+#include "util\Strings.hh"
#include
diff --git a/src/data/context/ConsoleContext.hh b/src/data/context/ConsoleContext.hh
index 96e19248..2e07494b 100644
--- a/src/data/context/ConsoleContext.hh
+++ b/src/data/context/ConsoleContext.hh
@@ -3,8 +3,8 @@
#pragma once
#include "RAInterface\RA_Consoles.h"
-#include "ra_fwd.h"
#include "data\Types.hh"
+#include "util\GSL.hh"
#include
diff --git a/src/data/context/EmulatorContext.cpp b/src/data/context/EmulatorContext.cpp
index e3537444..d4bc267e 100644
--- a/src/data/context/EmulatorContext.cpp
+++ b/src/data/context/EmulatorContext.cpp
@@ -2,9 +2,9 @@
#include "Exports.hh"
#include "RA_BuildVer.h"
-#include "RA_Log.h"
#include "RA_Resource.h"
-#include "RA_StringUtils.h"
+#include "util\Log.hh"
+#include "util\Strings.hh"
#include "api\LatestClient.hh"
diff --git a/src/data/context/EmulatorContext.hh b/src/data/context/EmulatorContext.hh
index c5759e72..837e667b 100644
--- a/src/data/context/EmulatorContext.hh
+++ b/src/data/context/EmulatorContext.hh
@@ -5,7 +5,6 @@
#include "RAInterface\RA_Emulators.h"
#include "data\Types.hh"
-#include "ra_fwd.h"
#include
diff --git a/src/data/context/GameAssets.cpp b/src/data/context/GameAssets.cpp
index 5ca493c5..ce5d5090 100644
--- a/src/data/context/GameAssets.cpp
+++ b/src/data/context/GameAssets.cpp
@@ -1,7 +1,7 @@
#include "GameAssets.hh"
#include "Exports.hh"
-#include "RA_Log.h"
+#include "util\Log.hh"
#include "GameContext.hh"
diff --git a/src/data/context/GameContext.cpp b/src/data/context/GameContext.cpp
index f9864407..0ec631d0 100644
--- a/src/data/context/GameContext.cpp
+++ b/src/data/context/GameContext.cpp
@@ -3,9 +3,9 @@
#include "Exports.hh"
#include "RA_Defs.h"
-#include "RA_Log.h"
#include "RA_md5factory.h"
-#include "RA_StringUtils.h"
+#include "util\Log.hh"
+#include "util\Strings.hh"
#include "data\context\ConsoleContext.hh"
#include "data\context\EmulatorContext.hh"
diff --git a/src/data/context/SessionTracker.cpp b/src/data/context/SessionTracker.cpp
index c5ee2cb5..48ae824a 100644
--- a/src/data/context/SessionTracker.cpp
+++ b/src/data/context/SessionTracker.cpp
@@ -1,9 +1,9 @@
#include "SessionTracker.hh"
#include "Exports.hh"
-#include "RA_Log.h"
#include "RA_md5factory.h"
-#include "RA_StringUtils.h"
+#include "util\Log.hh"
+#include "util\Strings.hh"
#include "data\context\GameContext.hh"
diff --git a/src/data/context/UserContext.cpp b/src/data/context/UserContext.cpp
index 0ef39fcd..b9b9acfc 100644
--- a/src/data/context/UserContext.cpp
+++ b/src/data/context/UserContext.cpp
@@ -1,7 +1,7 @@
#include "UserContext.hh"
#include "Exports.hh"
-#include "RA_StringUtils.h"
+#include "util\Strings.hh"
#include "api\impl\DisconnectedServer.hh"
diff --git a/src/data/models/AchievementModel.cpp b/src/data/models/AchievementModel.cpp
index ad9185e1..76f39b43 100644
--- a/src/data/models/AchievementModel.cpp
+++ b/src/data/models/AchievementModel.cpp
@@ -1,6 +1,6 @@
#include "AchievementModel.hh"
-#include "RA_Log.h"
+#include "util\Log.hh"
#include "data\context\GameContext.hh"
diff --git a/src/data/models/AssetModelBase.hh b/src/data/models/AssetModelBase.hh
index 958d14ee..15fa9bab 100644
--- a/src/data/models/AssetModelBase.hh
+++ b/src/data/models/AssetModelBase.hh
@@ -6,8 +6,7 @@
#include "data\DataModelBase.hh"
-#include "RA_StringUtils.h"
-#include "ra_utility.h"
+#include "util\Strings.hh"
namespace ra {
namespace data {
diff --git a/src/data/models/CodeNoteModel.cpp b/src/data/models/CodeNoteModel.cpp
index 69608cda..7ddadb79 100644
--- a/src/data/models/CodeNoteModel.cpp
+++ b/src/data/models/CodeNoteModel.cpp
@@ -5,8 +5,7 @@
#include "services\ServiceLocator.hh"
-#include "RA_StringUtils.h"
-#include "ra_utility.h"
+#include "util\Strings.hh"
namespace ra {
namespace data {
diff --git a/src/data/models/TriggerValidation.cpp b/src/data/models/TriggerValidation.cpp
index 1b909635..14ad3ec8 100644
--- a/src/data/models/TriggerValidation.cpp
+++ b/src/data/models/TriggerValidation.cpp
@@ -1,6 +1,6 @@
#include "TriggerValidation.hh"
-#include "RA_StringUtils.h"
+#include "util\Strings.hh"
#include "RA_Defs.h"
#include "data/context/ConsoleContext.hh"
diff --git a/src/data/search/MemBlock.cpp b/src/data/search/MemBlock.cpp
index 57c4c0b2..f5b1d710 100644
--- a/src/data/search/MemBlock.cpp
+++ b/src/data/search/MemBlock.cpp
@@ -1,6 +1,6 @@
#include "MemBlock.hh"
-#include "ra_fwd.h"
+#include "util\GSL.hh"
namespace ra {
namespace data {
diff --git a/src/devkit/RADevKit.vcxproj b/src/devkit/RADevKit.vcxproj
new file mode 100644
index 00000000..af825e3b
--- /dev/null
+++ b/src/devkit/RADevKit.vcxproj
@@ -0,0 +1,67 @@
+
+
+
+
+ Analysis
+ Win32
+
+
+ Analysis
+ x64
+
+
+ Debug
+ Win32
+
+
+ Debug
+ x64
+
+
+ Release
+ Win32
+
+
+ Release
+ x64
+
+
+
+
+ Designer
+
+
+
+ RADevKit
+ {8AE21D54-F905-44E1-90E5-D22E346BFF39}
+ RADevKit
+ ra
+ StaticLibrary
+ 10.0
+ v143
+ Unicode
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/devkit/RADevKit.vcxproj.filters b/src/devkit/RADevKit.vcxproj.filters
new file mode 100644
index 00000000..4755e4c3
--- /dev/null
+++ b/src/devkit/RADevKit.vcxproj.filters
@@ -0,0 +1,61 @@
+
+
+
+
+
+
+
+ {b8643d27-258d-476b-854a-da94989facbf}
+
+
+ {a189cb4e-de59-400e-9d9b-f3d601b41605}
+
+
+ {f4590fbd-6bec-47dc-a679-380442fca29e}
+
+
+
+
+ data
+
+
+ services
+
+
+ services
+
+
+ util
+
+
+ util
+
+
+ util
+
+
+ util
+
+
+ util
+
+
+ util
+
+
+ util
+
+
+
+
+
+ data
+
+
+ util
+
+
+ util
+
+
+
\ No newline at end of file
diff --git a/src/data/ModelProperty.cpp b/src/devkit/data/ModelProperty.cpp
similarity index 56%
rename from src/data/ModelProperty.cpp
rename to src/devkit/data/ModelProperty.cpp
index 55dbaa0b..654b1ea6 100644
--- a/src/data/ModelProperty.cpp
+++ b/src/devkit/data/ModelProperty.cpp
@@ -1,6 +1,7 @@
#include "ModelProperty.hh"
-#include "ra_fwd.h"
+#include
+#include
namespace ra {
namespace data {
@@ -9,45 +10,50 @@ namespace data {
// and therefore initialized in a sequential manner when the DLL is loaded. s_vProperties is a vector of _references_,
// but you can't declare a vector of reference types, so it's implemented as a vector of pointers. Don't worry about
// deleting the pointers, they should be pointing to the static ModelProperties, which aren't allocated.
-int ModelPropertyBase::s_nNextKey = 1;
-std::vector ModelPropertyBase::s_vProperties;
+static int s_nNextKey = 1;
+static std::unique_ptr> s_vProperties;
_Use_decl_annotations_ ModelPropertyBase::ModelPropertyBase(const char* const sTypeName,
const char* const sPropertyName) :
- m_sTypeName{sTypeName},
- m_sPropertyName{sPropertyName}
+ m_sTypeName(sTypeName),
+ m_sPropertyName(sPropertyName)
{
// ASSERT: ModelProperties are static variables and constructed when the DLL is loaded.
// We cannot reasonably use a mutex because it cannot be locked during static initialization in WinXP.
- // ASSERT: The vector is implicitly sorted as new items are allocated higher keys and added to the end of the
- // vector.
- m_nKey = s_nNextKey++;
-
- if (s_vProperties.empty())
+ // ASSERT: The vector is implicitly sorted as new items are allocated higher keys and
+ // added to the end of the vector.
+ if (s_vProperties == nullptr)
{
- s_vProperties.reserve(128);
-
- // If you encounter this exception, make sure ModelProperty.cpp appears before any files that use it in the
- // vsproj file. The linker will initialize static objects in the order that they're linked, so any
- // ModelProperty that gets initialized before the ModelPropertyBase class is initialized may be lost.
- Expects(m_nKey == 1);
+ s_vProperties = std::make_unique>();
+ s_vProperties->reserve(128);
+ s_nNextKey = 1;
}
- s_vProperties.push_back(this);
+ m_nKey = s_nNextKey++;
+
+ s_vProperties->push_back(this);
}
ModelPropertyBase::~ModelPropertyBase() noexcept
{
- auto iter = std::find(s_vProperties.begin(), s_vProperties.end(), this);
- if (iter != s_vProperties.end())
- s_vProperties.erase(iter);
+ if (!s_vProperties || s_vProperties->empty())
+ return;
+
+ auto iter = std::find(s_vProperties->begin(), s_vProperties->end(), this);
+ if (iter != s_vProperties->end())
+ {
+ s_vProperties->erase(iter);
+
+ if (s_vProperties->empty())
+ s_nNextKey = 1;
+ }
}
const ModelPropertyBase* ModelPropertyBase::GetPropertyForKey(int nKey)
{
ModelPropertyBase search(nKey);
- auto iter = std::lower_bound(s_vProperties.begin(), s_vProperties.end(), &search,
- [](const ModelPropertyBase* restrict left, const ModelPropertyBase* restrict right)
+ auto iter = std::lower_bound(s_vProperties->begin(), s_vProperties->end(), &search,
+ [](const ModelPropertyBase* left, const ModelPropertyBase* right)
{
if (left == nullptr)
return (right != nullptr);
@@ -56,7 +62,7 @@ const ModelPropertyBase* ModelPropertyBase::GetPropertyForKey(int nKey)
return left->GetKey() < right->GetKey();
});
- return (iter == s_vProperties.end() ? nullptr : *iter);
+ return (iter == s_vProperties->end() ? nullptr : *iter);
}
} // namespace data
diff --git a/src/data/ModelProperty.hh b/src/devkit/data/ModelProperty.hh
similarity index 94%
rename from src/data/ModelProperty.hh
rename to src/devkit/data/ModelProperty.hh
index 2c500e07..de95aafe 100644
--- a/src/data/ModelProperty.hh
+++ b/src/devkit/data/ModelProperty.hh
@@ -2,7 +2,10 @@
#define RA_DATA_MODEL_PROPERTY_H
#pragma once
-#include "ra_fwd.h"
+#include "util/Compat.hh"
+#include "util/GSL.hh"
+
+#include