Skip to content

Commit d888b3e

Browse files
committed
fix compilation on windows/LLVM
1 parent fd47865 commit d888b3e

11 files changed

Lines changed: 77 additions & 30 deletions

File tree

include/Stl/format.hpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
#include <locale>
55
#include <stdexcept>
66

7+
#include <string>
8+
79
#if __has_include(<string_view>)
810
# include <string_view>
911

modules/Language/VirtualMachine.mpp

Lines changed: 19 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ export namespace CppUtils::Language::VirtualMachine
9797
case '#':
9898
if (auto startPosition = stack.template get<std::size_t>(); not startPosition) [[unlikely]]
9999
return std::unexpected{startPosition.error()};
100-
else if (auto result = stack.set(std::hash<decltype(source)>{}(decltype(source){std::cbegin(source) + startPosition.value() + 1, std::cbegin(source) + position - 1})); not result) [[unlikely]]
100+
else if (auto result = stack.set(std::hash<decltype(source)>{}(decltype(source){std::cbegin(source) + static_cast<long long>(startPosition.value() + 1), std::cbegin(source) + static_cast<long long>(position - 1)})); not result) [[unlikely]]
101101
return result;
102102
break;
103103

@@ -178,9 +178,9 @@ export namespace CppUtils::Language::VirtualMachine
178178
case '>':
179179
if (auto key = stack.template get<std::size_t>(); not key) [[unlikely]]
180180
return std::unexpected{key.error()};
181-
else if (registers.contains(key.value())) [[likely]]
182-
stack.set(registers[key.value()]);
183-
else
181+
else if (registers.contains(key.value())) [[likely]] {
182+
auto _ = stack.set(registers[key.value()]);
183+
} else
184184
return std::unexpected{"Unknown register key"sv};
185185
break;
186186

@@ -253,55 +253,60 @@ export namespace CppUtils::Language::VirtualMachine
253253

254254
case '\\': ++position; break;
255255

256-
case '!':
256+
case '!': {
257257
if (auto result = stack.template get<std::size_t>(); not result) [[unlikely]]
258258
return std::unexpected{result.error()};
259259
else
260-
stack.set<std::size_t>(not result.value());
260+
auto _ = stack.set<std::size_t>(not result.value());
261261
break;
262+
}
262263

263-
case '?':
264+
case '?': {
264265
if (auto condition = stack.template get<std::size_t>(sizeof(std::size_t)); not condition) [[unlikely]]
265266
return std::unexpected{condition.error()};
266267
else if (auto newPosition = stack.template pop<std::size_t>(); not newPosition) [[unlikely]]
267268
return std::unexpected{newPosition.error()};
268269
else if (not condition.value())
269270
position = newPosition.value();
270-
stack.drop(sizeof(std::size_t));
271+
auto _ = stack.drop(sizeof(std::size_t));
271272
break;
273+
}
272274

273275
case 'X': return {};
274276

275-
case '+':
277+
case '+': {
276278
if (auto lhs = stack.template pop<std::size_t>(); not lhs) [[unlikely]]
277279
return std::unexpected{lhs.error()};
278280
else if (auto rhs = stack.template get<std::size_t>(); not rhs) [[unlikely]]
279281
return std::unexpected{rhs.error()};
280282
else
281-
stack.set(lhs.value() + rhs.value());
283+
auto _ = stack.set(lhs.value() + rhs.value());
282284
break;
285+
}
283286

284-
case '-':
287+
case '-': {
285288
if (auto lhs = stack.template pop<std::size_t>(); not lhs) [[unlikely]]
286289
return std::unexpected{lhs.error()};
287290
else if (auto rhs = stack.template get<std::size_t>(); not rhs) [[unlikely]]
288291
return std::unexpected{rhs.error()};
289292
else
290-
stack.set(lhs.value() - rhs.value());
293+
auto _ = stack.set(lhs.value() - rhs.value());
291294
break;
295+
}
292296

293297
case ',': stack.dump(); break;
294298

295-
case '\'': stack.set(source[++position]); break;
299+
case '\'': { auto _ = stack.set(source[++position]); break; }
296300

297301
default:
298302
if (instruction >= '0' and instruction <= '9')
299303
{
300304
if (auto result = stack.template get<std::size_t>(); not result) [[unlikely]]
301305
return std::unexpected{result.error()};
302306
else
303-
stack.set(result.value() * 10 + static_cast<std::size_t>(instruction - '0'));
307+
auto _ = stack.set(result.value() * 10 + static_cast<std::size_t>(instruction - '0'));
304308
}
309+
break;
305310
}
306311

307312
return {};

modules/Network/Socket.mpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -364,7 +364,12 @@ export namespace CppUtils::Network
364364
auto data = T{};
365365
for (auto totalBytesReceived = 0uz; totalBytesReceived < sizeof(T);)
366366
{
367-
auto bytesReceived = ::recv(m_socket, reinterpret_cast<char*>(std::addressof(data)) + totalBytesReceived, sizeof(T) - totalBytesReceived, 0);
367+
#if defined(OS_WINDOWS)
368+
const auto size = static_cast<int>(sizeof(T) - totalBytesReceived);
369+
#else
370+
const auto size = sizeof(T) - totalBytesReceived;
371+
#endif
372+
auto bytesReceived = ::recv(m_socket, reinterpret_cast<char*>(std::addressof(data)) + totalBytesReceived, size, 0);
368373
if (bytesReceived < 0)
369374
{
370375
#if defined(OS_WINDOWS)

modules/Terminal/Cursor.mpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@ export namespace CppUtils::Terminal
1818
auto consoleScreenBufferInfo = CONSOLE_SCREEN_BUFFER_INFO{};
1919
GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &consoleScreenBufferInfo);
2020
return Container::Size2{
21-
consoleScreenBufferInfo.srWindow.X,
22-
consoleScreenBufferInfo.srWindow.Y};
21+
consoleScreenBufferInfo.srWindow.Left,
22+
consoleScreenBufferInfo.srWindow.Top};
2323
}
2424
#elif defined(OS_MAC) or defined(OS_LINUX)
2525
[[nodiscard]] inline auto getCursorPosition() -> std::expected<Container::Size2, std::string_view>
@@ -41,7 +41,7 @@ export namespace CppUtils::Terminal
4141
#if defined(OS_WINDOWS)
4242
inline auto setCursorPosition(Container::Size2 position) -> void
4343
{
44-
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), COORD{position.x(), position.y()});
44+
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), COORD{static_cast<SHORT>(position.x()), static_cast<SHORT>(position.y())});
4545
}
4646
#elif defined(OS_MAC) or defined(OS_LINUX)
4747
inline auto setCursorPosition([[maybe_unused]] Container::Size2 position) -> void

modules/Terminal/Handle.mpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ module;
22

33
#include <CppUtils/System/Windows.hpp>
44

5+
#include <cstdio>
6+
57
export module CppUtils.Terminal.Handle;
68

79
import std;

modules/Terminal/TextModifier.mpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import CppUtils.Terminal.BackgroundColor;
99
import CppUtils.Terminal.Utility;
1010
import CppUtils.Terminal.TextColor;
1111
import CppUtils.Terminal.TextStyle;
12+
import CppUtils.Terminal.Handle;
1213

1314
export namespace CppUtils::Terminal
1415
{

tests/Container/DependencyGraph.mpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ export namespace CppUtils::UnitTest::Container::DependencyGraph
141141

142142
suite.expect(not graph.hasCycle());
143143

144-
graph.forEach([](const auto& key, const auto& value, [[maybe_unused]] const auto& dependencies) -> void {
144+
auto _ = graph.forEach([](const auto& key, const auto& value, [[maybe_unused]] const auto& dependencies) -> void {
145145
std::println("{}: {}", key, value);
146146
});
147147
});
@@ -159,7 +159,7 @@ export namespace CppUtils::UnitTest::Container::DependencyGraph
159159

160160
suite.expect(graph.hasCycle());
161161

162-
graph.forEach([](const auto& key, const auto& value, [[maybe_unused]] const auto& dependencies) -> void {
162+
auto _ = graph.forEach([](const auto& key, const auto& value, [[maybe_unused]] const auto& dependencies) -> void {
163163
std::println("{}: {}", key, value);
164164
});
165165
});

tests/Container/Stack.mpp

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ export namespace CppUtils::UnitTest::Container::Stack
8282
auto getNumber = []() -> std::size_t {
8383
return 42uz;
8484
};
85-
stack.call(+getNumber);
85+
auto _ = stack.call(+getNumber);
8686
{
8787
auto result = stack.pop<std::size_t>();
8888
suite.expect(result.has_value());
@@ -97,7 +97,7 @@ export namespace CppUtils::UnitTest::Container::Stack
9797
std::println("{}", nb);
9898
};
9999
stack.push(42uz);
100-
stack.call(print);
100+
auto _ = stack.call(print);
101101
});
102102

103103
suite.addTest("Call function: (std::size_t, std::size_t) -> std::size_t", [&] {
@@ -108,8 +108,8 @@ export namespace CppUtils::UnitTest::Container::Stack
108108
auto add = [](std::size_t lhs, std::size_t rhs) -> std::size_t {
109109
return lhs + rhs;
110110
};
111-
stack.call(add);
112-
stack.drop(sizeof(std::size_t) * 2);
111+
auto _ = stack.call(add);
112+
auto _ = stack.drop(sizeof(std::size_t) * 2);
113113
{
114114
auto result = stack.pop<std::size_t>();
115115
suite.expect(result.has_value());
@@ -129,15 +129,15 @@ export namespace CppUtils::UnitTest::Container::Stack
129129
auto print = [](std::size_t nb) -> void {
130130
std::println("{}", nb);
131131
};
132-
stack.call(add);
133-
stack.drop(sizeof(std::size_t) * 2);
132+
auto _ = stack.call(add);
133+
auto _ = stack.drop(sizeof(std::size_t) * 2);
134134
{
135135
auto result = stack.get<std::size_t>();
136136
suite.expect(result.has_value());
137137
suite.expectEqual(result.value(), 42uz);
138138
}
139-
stack.call(print);
140-
stack.drop(sizeof(std::size_t));
139+
auto _ = stack.call(print);
140+
auto _ = stack.drop(sizeof(std::size_t));
141141
suite.expect(std::empty(stack));
142142
});
143143
}};

tests/FileSystem/Watcher.mpp

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
module;
2+
3+
#include <CppUtils/System/OS.hpp>
4+
15
export module CppUtils.UnitTests.FileSystem.Watcher;
26

37
import std;
@@ -10,18 +14,25 @@ export namespace CppUtils::UnitTest::FileSystem::Watcher
1014
{"Logger", "FileSystem/Directory", "FileSystem/File"},
1115
[](auto& suite) {
1216
using namespace std::chrono_literals;
17+
#if defined(OS_LINUX)
1318
using Logger = CppUtils::Logger<"CppUtils">;
19+
#endif
1420

1521
suite.addTest("No file", [&] {
1622
CppUtils::FileSystem::TemporaryDirectory{[&suite](const auto& directory) -> void {
1723
auto watcher = CppUtils::FileSystem::Watcher{};
1824
watcher.watch(directory / "test.tmp");
25+
#if defined(OS_LINUX)
1926
watcher.onEvent(
2027
[&suite](
2128
[[maybe_unused]] CppUtils::FileSystem::Event event,
2229
[[maybe_unused]] const std::filesystem::path& filePath) -> void {
2330
suite.expect(false);
2431
});
32+
#else
33+
auto &_ = suite;
34+
#warning "TODO onEvent not implemented for this platform"
35+
#endif
2536
std::this_thread::sleep_for(10ms);
2637
}};
2738
});
@@ -33,12 +44,17 @@ export namespace CppUtils::UnitTest::FileSystem::Watcher
3344

3445
auto watcher = CppUtils::FileSystem::Watcher{};
3546
watcher.watch(filePath);
47+
#if defined(OS_LINUX)
3648
watcher.onEvent(
3749
[&suite](
3850
[[maybe_unused]] CppUtils::FileSystem::Event event,
3951
[[maybe_unused]] const std::filesystem::path& filePath) -> void {
4052
suite.expect(false);
4153
});
54+
#else
55+
auto &_ = suite;
56+
#warning "TODO onEvent not implemented for this platform"
57+
#endif
4258
std::this_thread::sleep_for(10ms);
4359
}};
4460
});
@@ -59,6 +75,7 @@ export namespace CppUtils::UnitTest::FileSystem::Watcher
5975

6076
auto watcher = CppUtils::FileSystem::Watcher{};
6177
watcher.watch(directory);
78+
#if defined(OS_LINUX)
6279
watcher.onEvent(
6380
[](CppUtils::FileSystem::Event event,
6481
const std::filesystem::path& filePath) -> void {
@@ -80,6 +97,9 @@ export namespace CppUtils::UnitTest::FileSystem::Watcher
8097
suite.expectEqual(eventFilePath, filePath);
8198
expectCloseFile = true;
8299
});
100+
#else
101+
#warning "TODO onEvent not implemented for this platform"
102+
#endif
83103

84104
CppUtils::FileSystem::String::write(directory / "test.tmp", "Hello World!");
85105
std::this_thread::sleep_for(100ms);
@@ -96,6 +116,7 @@ export namespace CppUtils::UnitTest::FileSystem::Watcher
96116

97117
auto watcher = CppUtils::FileSystem::Watcher{};
98118
watcher.watch(filePath);
119+
#if defined(OS_LINUX)
99120
watcher.onEvent(
100121
[](CppUtils::FileSystem::Event event,
101122
const std::filesystem::path& filePath) -> void {
@@ -109,6 +130,9 @@ export namespace CppUtils::UnitTest::FileSystem::Watcher
109130
suite.expectEqual(eventFilePath, filePath);
110131
expectModifyFile = true;
111132
});
133+
#else
134+
#warning "TODO onEvent not implemented for this platform"
135+
#endif
112136

113137
CppUtils::FileSystem::String::write(filePath, "Bar");
114138
std::this_thread::sleep_for(100ms);
@@ -124,6 +148,7 @@ export namespace CppUtils::UnitTest::FileSystem::Watcher
124148

125149
auto watcher = CppUtils::FileSystem::Watcher{};
126150
watcher.watch(directory);
151+
#if defined(OS_LINUX)
127152
watcher.onEvent(
128153
[](CppUtils::FileSystem::Event event,
129154
const std::filesystem::path& filePath) -> void {
@@ -137,6 +162,9 @@ export namespace CppUtils::UnitTest::FileSystem::Watcher
137162
suite.expectEqual(eventFilePath, filePath);
138163
expectModifyFile = true;
139164
});
165+
#else
166+
#warning "TODO onEvent not implemented for this platform"
167+
#endif
140168

141169
CppUtils::FileSystem::String::write(filePath, "Bar");
142170
std::this_thread::sleep_for(100ms);
@@ -152,6 +180,7 @@ export namespace CppUtils::UnitTest::FileSystem::Watcher
152180

153181
auto watcher = CppUtils::FileSystem::Watcher{};
154182
watcher.watch(directory);
183+
#if defined(OS_LINUX)
155184
watcher.onEvent(
156185
[](CppUtils::FileSystem::Event event,
157186
const std::filesystem::path& filePath) -> void {
@@ -165,6 +194,9 @@ export namespace CppUtils::UnitTest::FileSystem::Watcher
165194
suite.expectEqual(eventFilePath, filePath);
166195
expectDeleteFile = true;
167196
});
197+
#else
198+
#warning "TODO onEvent not implemented for this platform"
199+
#endif
168200

169201
std::filesystem::remove(filePath);
170202
std::this_thread::sleep_for(100ms);

tests/Type/Tuple.mpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ export namespace CppUtils::UnitTest::Type::Tuple
1616
};
1717

1818
auto tuple = std::make_tuple(1, "Hello World!");
19-
CppUtils::Type::Tuple::visitAt(tuple, 1, function);
19+
auto _ = CppUtils::Type::Tuple::visitAt(tuple, 1, function);
2020

2121
suite.expect(called);
2222
});

0 commit comments

Comments
 (0)