Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions common/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,8 @@ add_library(${PROJECT_NAME} STATIC
src/memory/address.hpp
src/fmt/glaze_formatter.cpp
src/fmt/glaze_formatter.hpp
src/conversion/cw2a.hpp
src/conversion/cw2a.cpp
)
add_library(base::${PROJECT_NAME} ALIAS ${PROJECT_NAME})

Expand Down
5 changes: 5 additions & 0 deletions common/src/conversion/cw2a.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
//
// Created by X-ray on 18/12/2025.
//

#include "cw2a.hpp"
60 changes: 60 additions & 0 deletions common/src/conversion/cw2a.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
//
// Created by X-ray on 18/12/2025.
//

#pragma once

#include <windows.h>

namespace base::common::conversion {
class CW2A {
public:
explicit CW2A(const wchar_t* src, const UINT codePage = CP_ACP)
: m_buf(nullptr) {
if (!src)
return;

const int len = WideCharToMultiByte(
codePage,
0,
src,
-1,
nullptr,
0,
nullptr,
nullptr
);

if (len <= 0)
return;

m_buf = new char[len];

WideCharToMultiByte(
codePage,
0,
src,
-1,
m_buf,
len,
nullptr,
nullptr
);
}

~CW2A() {
delete[] m_buf;
}

operator const char*() const {
return m_buf;
}

const char* c_str() const {
return m_buf;
}

private:
char* m_buf;
};
}
4 changes: 2 additions & 2 deletions common/src/logging/formatter/thread_id.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@

#ifndef THREAD_ID_HPP
#define THREAD_ID_HPP
#include "../conversion/cw2a.hpp"
#include "spdlog/pattern_formatter.h"
#include <atlstr.h>

inline thread_local std::unordered_map<std::size_t, HANDLE> thread_handles = {};

Expand All @@ -21,7 +21,7 @@ class ThreadIdFormatter final : public spdlog::custom_flag_formatter {
if (handle_kv->second != nullptr) {
PWSTR thread_description;
if (const HRESULT hr = GetThreadDescription(handle_kv->second, &thread_description); SUCCEEDED(hr)) {
thread_id = fmt::format("{}", std::string(CW2A(thread_description)));
thread_id = fmt::format("{}", std::string(base::common::conversion::CW2A(thread_description)));
LocalFree(thread_description);
}
}
Expand Down
4 changes: 3 additions & 1 deletion injector/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -29,4 +29,6 @@ target_compile_definitions(${PROJECT_NAME} PRIVATE WIN32_LEAN_AND_MEAN NOMINMAX
target_precompile_headers(${PROJECT_NAME} PRIVATE src/pch.hpp)

target_link_libraries(${PROJECT_NAME} PRIVATE base::common)
target_link_libraries(${PROJECT_NAME} PRIVATE base::imfont)
target_link_libraries(${PROJECT_NAME} PRIVATE base::imfont)

add_subdirectory(test)
23 changes: 23 additions & 0 deletions injector/test/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
cmake_minimum_required(VERSION 3.26)
project(injector_test LANGUAGES CXX)

set(CMAKE_CXX_STANDARD 23)

file(GLOB_RECURSE INJECTOR_CPP_FILES ${CMAKE_CURRENT_SOURCE_DIR}../src/*.cpp)
list(REMOVE_ITEM INJECTOR_CPP_FILES
${CMAKE_CURRENT_SOURCE_DIR}/src/main.cpp
)

file(GLOB_RECURSE INJECTOR_HEADER_FILES ${CMAKE_CURRENT_SOURCE_DIR}../src/*.hpp)

add_executable(${PROJECT_NAME}
${INJECTOR_CPP_FILES}
${INJECTOR_HEADER_FILES}
src/main.cpp
)

include(../../vendor/gtest.cmake)
enable_testing()

include(GoogleTest)
gtest_discover_tests(${PROJECT_NAME})
10 changes: 10 additions & 0 deletions injector/test/src/main.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
//
// Created by X-ray on 18/12/2025.
//

#include <gtest/gtest.h>

int main(int argc, char** argv) {
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
3 changes: 3 additions & 0 deletions menu/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ add_library(${PROJECT_NAME} MODULE src/dllmain.cpp
src/util/common.hpp
src/hooking/wndproc.cpp
src/hooking/wndproc.hpp
test/src/main.cpp
)
target_compile_definitions(${PROJECT_NAME} PUBLIC BASE_SUBCOMPONENT="${PROJECT_NAME}")

Expand All @@ -69,3 +70,5 @@ target_precompile_headers(${PROJECT_NAME} PRIVATE src/pch.hpp)

target_link_libraries(${PROJECT_NAME} PRIVATE base::common)
target_link_libraries(${PROJECT_NAME} PRIVATE base::imfont)

add_subdirectory(test)
23 changes: 23 additions & 0 deletions menu/test/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
cmake_minimum_required(VERSION 3.26)
project(menu_test LANGUAGES CXX)

set(CMAKE_CXX_STANDARD 23)

file(GLOB_RECURSE MENU_CPP_FILES ${CMAKE_CURRENT_SOURCE_DIR}../src/*.cpp)
list(REMOVE_ITEM MENU_CPP_FILES
${CMAKE_CURRENT_SOURCE_DIR}/src/dllmain.cpp
)

file(GLOB_RECURSE MENU_HEADER_FILES ${CMAKE_CURRENT_SOURCE_DIR}../src/*.hpp)

add_executable(${PROJECT_NAME}
${MENU_CPP_FILES}
${MENU_HEADER_FILES}
src/main.cpp
)

include(../../vendor/gtest.cmake)
enable_testing()

include(GoogleTest)
gtest_discover_tests(${PROJECT_NAME})
10 changes: 10 additions & 0 deletions menu/test/src/main.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
//
// Created by X-ray on 18/12/2025.
//

#include <gtest/gtest.h>

int main(int argc, char** argv) {
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}