Commit Graph

42 Commits

Author SHA1 Message Date
Michael Scire
d7a9c7ec4c ams: support building unit test programs on windows/linux/macos 2022-03-23 09:15:46 -07:00
Léo Lam
2916512fb7 Minor header fixes to reduce parsing issues with Clang (#1700)
* Work around Clang's incomplete C++20 support for omitting typename

* vapours: fix Clang error about missing return in constexpr function

* stratosphere: fix call to non-constexpr strlen in constexpr function

strlen being constexpr is a non-compliant GCC extension; Clang
explicitly rejects it: https://reviews.llvm.org/D23692

* stratosphere: add a bunch of missing override specifiers

* stratosphere: work around Clang consteval bug

Minimal example: https://godbolt.org/z/MoM64v93M

The issue seems to be that Clang does not consider f(x) to be a
constant expression if x comes from a template argument that isn't
a non-type auto template argument (???)

We can work around this by relaxing GetMessageHeaderForCheck (by using
constexpr instead of consteval). This produces no functional changes
because the result of GetMessageHeaderForCheck() is assigned to a
constexpr variable, so the result is guaranteed to be computed
at compile-time.

* stratosphere: fix missing require clauses in definitions

GCC not requiring the require clauses to be repeated for member
definitions is actually a compiler bug:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96830

Clang rejects declarations with missing require clauses.

* Fix ALWAYS_INLINE_LAMBDA and parameter list relative order

While GCC doesn't seem to care about the position of the always_inline
attribute relative to the parameter list, Clang is very picky
and requires the attribute to appear after the parameter list
(and before a trailing return type)

* stratosphere: fix static constexpr member variable with incomplete type

GCC accepts this for some reason (because of the lambda?) but Clang
correctly rejects this.
2021-11-30 16:34:43 -08:00
Michael Scire
fd1b6d4578 libstrat: enable -Wextra, -Werror
This caught an embarrassingly large number of bugs.
2021-10-07 23:06:28 -07:00
Michael Scire
002422d5dc ams: the copyright^H^H^H^H^H^H^Hmplex plane is the algebraic closure of the reals 2021-10-07 23:06:25 -07:00
Michael Scire
6125281acd os: adopt multiwait naming over waitable 2021-10-07 23:06:23 -07:00
Michael Scire
dc3f54a713 ams: std::optional -> util::optional 2021-07-12 01:59:51 -07:00
Michael Scire
0345840a88 ams: convert to util::ConstructAt where appropriate 2021-04-11 03:59:04 -07:00
Michael Scire
1861791c1c ams: remove TYPED_STORAGE() macro in favor of template 2021-04-11 03:59:03 -07:00
Michael Scire
cc84810ddc htclow: fix ordering of channels, uninitialized bug in service json parse 2021-04-11 03:58:59 -07:00
Michael Scire
e7f61805d0 htc: disable socket driver, needs design thought before we can turn it on for real. 2021-04-11 03:58:56 -07:00
Michael Scire
7d528a30df htc: implement socket driver (socket api not really impl'd yet) 2021-04-11 03:58:54 -07:00
Michael Scire
d23bc85d38 htcs: fixes, echo server is now fully functional 2021-04-11 03:58:53 -07:00
Michael Scire
e788e76571 htc: fixes for WriteFileLarge/sending over data channel 2021-04-11 03:58:49 -07:00
Michael Scire
6068b21626 htc: ReadDirectoryLarge/data channel support 2021-04-11 03:58:48 -07:00
Michael Scire
b56c5aaaeb htc: implement htcfs protocol bringup 2021-04-11 03:58:46 -07:00
Michael Scire
6737e4220e htc: fixes, can now enter ReadyState with wip starlink code 2021-04-11 03:58:45 -07:00
Michael Scire
435211a044 htclow: add Channel wrapper class 2021-04-11 03:58:44 -07:00
Michael Scire
8d6c9bb9ee htc: skeleton constructors for htcmisc 2021-04-11 03:58:38 -07:00
Michael Scire
a1e57a7413 htc: implement remainder of Mux/Tasks 2021-04-11 03:58:38 -07:00
Michael Scire
6a99b7fcd5 htc: implement mux side of connecting (and more) 2021-04-11 03:58:38 -07:00
Michael Scire
67c293faba htc: fix driver manager c/p error 2021-04-11 03:58:37 -07:00
Michael Scire
8bfa4d662e htc: implement remaining htclow::HtclowManagerImpl funcs (mux impls pending) 2021-04-11 03:58:37 -07:00
Michael Scire
fda4ddca62 htc: declare and begin impl of HtclowManagerImpl interface 2021-04-11 03:58:37 -07:00
Michael Scire
996e21863a htc: optimize Mux::QuerySendPacket 2021-04-11 03:58:36 -07:00
Michael Scire
33100d9fbb mux: optimize many accesses to O(log(n)) vs Nintendo's O(log(n)^2) 2021-04-11 03:58:36 -07:00
Michael Scire
b6d73580ed htc: begin skeletoning types for HtcmiscImpl 2021-04-11 03:58:35 -07:00
Michael Scire
53b04c5225 htc: hook up creation of the htc manager service object 2021-04-11 03:58:35 -07:00
Michael Scire
276c3f8434 htc: module id names, skeleton rest of main 2021-04-11 03:58:34 -07:00
Michael Scire
e1b47dab0e htc: implement remaining worker thread send logic (for channel mux) 2021-04-11 03:58:34 -07:00
Michael Scire
aceea1eaa7 htc: send logic for HtcctrlService, bugfixes (thanks @misson20000) 2021-04-11 03:58:33 -07:00
Michael Scire
cb8ed30517 htc: add remaining worker receive thread logic 2021-04-11 03:58:32 -07:00
Michael Scire
c44177cbcc htc: implement service channel parsing (ReceiveReadyPacket) 2021-04-11 03:58:32 -07:00
Michael Scire
c19e50bff1 htc: implement much of worker receive logic 2021-04-11 03:58:31 -07:00
Michael Scire
f8389f9460 htc: fix copy/paste error in usb driver 2021-04-11 03:58:31 -07:00
Michael Scire
6a4247a6ed htc: free ourselves from the tyranny of numerical enums 2021-04-11 03:58:30 -07:00
Michael Scire
9fd6ed27af htc: implement htclow listener thread 2021-04-11 03:58:30 -07:00
Michael Scire
5586a4fb2e htc: actually use the usb driver 2021-04-11 03:58:29 -07:00
Michael Scire
a56a4aed77 htc: implement complete usb driver 2021-04-11 03:58:29 -07:00
Michael Scire
7f16e202eb htc: implement (fixing linker errors) through HtclowManagerImpl::OpenDriver 2021-04-11 03:58:29 -07:00
Michael Scire
d664c8ed8a htclow: fix copyright headers, skeleton more manager types 2021-04-11 03:58:28 -07:00
Michael Scire
3d535e6103 htc: skeleton much of the type hierarchy for htclow manager 2021-04-11 03:58:28 -07:00
Michael Scire
d2102cb585 htc: skeleton some more of main 2021-04-11 03:58:28 -07:00