From df8b9536b1b351a5f8d3809405a89aa5df79aee9 Mon Sep 17 00:00:00 2001 From: crupest Date: Thu, 29 Sep 2022 21:01:54 +0800 Subject: ... --- include/cru/common/platform/web/WebException.h | 16 ++++++++++++++++ include/cru/common/platform/web/WebFileStream.h | 21 +++++++++++++++++++++ src/common/CMakeLists.txt | 10 ++++++++++ src/common/platform/web/WebException.cpp | 1 + src/common/platform/web/WebFileStream.cpp | 1 + 5 files changed, 49 insertions(+) create mode 100644 include/cru/common/platform/web/WebException.h create mode 100644 include/cru/common/platform/web/WebFileStream.h create mode 100644 src/common/platform/web/WebException.cpp create mode 100644 src/common/platform/web/WebFileStream.cpp diff --git a/include/cru/common/platform/web/WebException.h b/include/cru/common/platform/web/WebException.h new file mode 100644 index 00000000..d98b8943 --- /dev/null +++ b/include/cru/common/platform/web/WebException.h @@ -0,0 +1,16 @@ +#pragma once + +#include "../../PreConfig.h" + +#ifdef CRU_PLATFORM_EMSCRIPTEN + +#include "../Exception.h" + +namespace cru::platform::web { +class WebException : public PlatformException { + public: + using PlatformException::PlatformException; +}; +} // namespace cru::platform::web + +#endif diff --git a/include/cru/common/platform/web/WebFileStream.h b/include/cru/common/platform/web/WebFileStream.h new file mode 100644 index 00000000..66ee0903 --- /dev/null +++ b/include/cru/common/platform/web/WebFileStream.h @@ -0,0 +1,21 @@ +#pragma once + +#include "../../PreConfig.h" + +#ifdef CRU_PLATFORM_EMSCRIPTEN + +#include "../../io/Stream.h" + +namespace cru::platform::web { +/** + * \remark Web just hates filesystems. But luckily emscripten just creates a + * good simulation of it. All we need to do is to use the C api and let + * emscripten take care of it for us. + */ +class WebFileStream : public io::Stream { + public: + // TODO: go on this! +}; +} // namespace cru::platform::web + +#endif diff --git a/src/common/CMakeLists.txt b/src/common/CMakeLists.txt index 119bbbee..fb2dd471 100644 --- a/src/common/CMakeLists.txt +++ b/src/common/CMakeLists.txt @@ -38,6 +38,16 @@ if (APPLE) ) endif() +if (EMSCRIPTEN) + target_compile_options(CruBase PUBLIC "-fwasm-exceptions") + target_link_options(CruBase PUBLIC "-fwasm-exceptions") + + target_sources(CruBase PRIVATE + platform/web/WebException.cpp + platform/web/WebFileStream.cpp + ) +endif() + if (WIN32) target_sources(CruBase PRIVATE platform/win/BridgeComStream.cpp diff --git a/src/common/platform/web/WebException.cpp b/src/common/platform/web/WebException.cpp new file mode 100644 index 00000000..30f9d1f0 --- /dev/null +++ b/src/common/platform/web/WebException.cpp @@ -0,0 +1 @@ +#include "cru/common/platform/web/WebException.h" diff --git a/src/common/platform/web/WebFileStream.cpp b/src/common/platform/web/WebFileStream.cpp new file mode 100644 index 00000000..2e45648e --- /dev/null +++ b/src/common/platform/web/WebFileStream.cpp @@ -0,0 +1 @@ +#include "cru/common/platform/web/WebFileStream.h" -- cgit v1.2.3