mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-07-14 06:59:10 +00:00
Import C++ Standard Template Library
You can now use the hardest fastest and most dangerous language there is with Cosmopolitan. So far about 75% of LLVM libcxx has been added. A few breaking changes needed to be made to help this go smoothly. - Rename nothrow to dontthrow - Rename nodiscard to dontdiscard - Add some libm functions, e.g. lgamma, nan, etc. - Change intmax_t from int128 to int64 like everything else - Introduce %jjd formatting directive for int128_t - Introduce strtoi128(), strtou128(), etc. - Rename bsrmax() to bsr128() Some of the templates that should be working currently are std::vector, std::string, std::map, std::set, std::deque, etc.
This commit is contained in:
parent
5022f9e920
commit
868af3f950
286 changed files with 123987 additions and 507 deletions
|
@ -7,6 +7,7 @@
|
|||
#include "libc/testlib/testlib.h"
|
||||
#include "libc/time/time.h"
|
||||
#if !(__ASSEMBLER__ + __LINKER__ + 0)
|
||||
COSMOPOLITAN_C_START_
|
||||
|
||||
#define EZBENCH(INIT, EXPR) EZBENCH2(#EXPR, INIT, EXPR)
|
||||
|
||||
|
@ -189,5 +190,7 @@ void __testlib_ezbenchreport_n(const char *, char, size_t, uint64_t);
|
|||
#define EZBENCH_N(NAME, N, EXPR) (void)0
|
||||
#define EZBENCH_K(NAME, K, EXPR) (void)0
|
||||
#endif
|
||||
|
||||
COSMOPOLITAN_C_END_
|
||||
#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
|
||||
#endif /* COSMOPOLITAN_LIBC_TESTLIB_EZBENCH_H_ */
|
||||
|
|
|
@ -25,7 +25,7 @@
|
|||
static size_t sbufi_;
|
||||
static char sbufs_[2][256];
|
||||
|
||||
nodiscard testonly char *testlib_formatint(intptr_t x) {
|
||||
dontdiscard testonly char *testlib_formatint(intptr_t x) {
|
||||
char *str = sbufi_ < ARRAYLEN(sbufs_) ? sbufs_[sbufi_++] : malloc(256);
|
||||
char *p = str;
|
||||
p += sprintf(p, "%ld\t(or %#lx", x, x);
|
||||
|
|
|
@ -19,6 +19,6 @@
|
|||
#include "libc/testlib/testlib.h"
|
||||
#include "libc/x/x.h"
|
||||
|
||||
nodiscard testonly char *testlib_formatrange(intptr_t beg, intptr_t end) {
|
||||
dontdiscard testonly char *testlib_formatrange(intptr_t beg, intptr_t end) {
|
||||
return xasprintf("[%#ld,%#ld]", beg, end);
|
||||
}
|
||||
|
|
|
@ -24,7 +24,7 @@
|
|||
/**
|
||||
* Turns string into code.
|
||||
*/
|
||||
nodiscard testonly char *testlib_formatstr(size_t cw, const void *s, int n) {
|
||||
dontdiscard testonly char *testlib_formatstr(size_t cw, const void *s, int n) {
|
||||
if (s) {
|
||||
switch (cw) {
|
||||
case 1:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue