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:
Justine Tunney 2022-03-22 05:51:41 -07:00
parent 5022f9e920
commit 868af3f950
286 changed files with 123987 additions and 507 deletions

View file

@ -102,7 +102,7 @@ Keywords={
"decltype",
"forceinline",
"nocallersavedregisters",
"nothrow",
"dontthrow",
"nooptimize",
"optimizesize",
"optimizespeed",
@ -132,7 +132,7 @@ Keywords={
"warnifused",
"attributeallocsize",
"attributeallocalign",
"nodiscard",
"dontdiscard",
"nointerpose",
"compatfn",
"returnsnonnull",

View file

@ -46,7 +46,7 @@
"decltype"
"forceinline"
"nocallersavedregisters"
"nothrow"
"dontthrow"
"nooptimize"
"optimizesize"
"optimizespeed"
@ -79,7 +79,7 @@
"warnifused"
"attributeallocsize"
"attributeallocalign"
"nodiscard"
"dontdiscard"
"nointerpose"
"compatfn"
"returnsnonnull"

View file

@ -132,6 +132,7 @@
(or (locate-dominating-file (buffer-name) "Makefile")
(file-name-directory (buffer-name))))))
(add-hook 'c-mode-common-hook 'stop-asking-questions-etags)
(add-hook 'c++-mode-common-hook 'stop-asking-questions-etags)
(setq tags-revert-without-query t)
(setq kill-buffer-query-functions ;; disable kill buffer w/ process question
(delq 'process-kill-buffer-query-function kill-buffer-query-functions))
@ -268,6 +269,7 @@
(add-hook 'ld-script-mode-hook 'cosmo-compile-hook)
(add-hook 'dired-mode-hook 'cosmo-compile-hook)
(add-hook 'c-mode-common-hook 'cosmo-compile-hook)
(add-hook 'c++-mode-common-hook 'cosmo-compile-hook)
(add-hook 'fortran-mode-hook 'cosmo-compile-hook)
(add-hook 'protobuf-mode-hook 'cosmo-compile-hook))
@ -781,9 +783,14 @@
root mode (cosmo-file-name-sans-extensions name))))
(when buddy
(find-file buddy))))))
(defun cosmo-lisp-is-the-worst-this-is-so-tiring ()
(defun cosmo-lisp-is-the-best ()
(define-key c-mode-base-map (kbd "C-c C-o") 'cosmo-show-optinfo))
(add-hook 'c-mode-common-hook 'cosmo-lisp-is-the-worst-this-is-so-tiring)
(add-hook 'c-mode-common-hook 'cosmo-lisp-is-the-best)
(defun cosmo-lisp-is-the-best++ ()
(define-key c++-mode-base-map (kbd "C-c C-o") 'cosmo-show-optinfo))
(add-hook 'c++-mode-common-hook 'cosmo-lisp-is-the-best++)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@ -804,6 +811,7 @@
(,cosmo-platform-constants-regex . font-lock-constant-face))))
(add-hook 'c-mode-common-hook 'cosmo-c-keywords-hook)
(add-hook 'c++-mode-common-hook 'cosmo-c-keywords-hook)
(add-hook 'asm-mode-hook 'cosmo-asm-keywords-hook)

View file

@ -345,7 +345,7 @@ cosmo_kws = frozenset([
"memcpyesque",
"nocallback",
"nodebuginfo",
"nodiscard",
"dontdiscard",
"dontinline",
"noinstrument",
"nointerpose",
@ -353,8 +353,7 @@ cosmo_kws = frozenset([
"noprune",
"wontreturn",
"nosideeffect",
"nothrow",
"nothrow",
"dontthrow",
"null",
"nullterminated",
"paramsnonnull",
@ -408,7 +407,7 @@ cosmo_kws = frozenset([
"memcpyesque",
"nocallback",
"nodebuginfo",
"nodiscard",
"dontdiscard",
"dontinline",
"noinstrument",
"nointerpose",
@ -416,8 +415,7 @@ cosmo_kws = frozenset([
"noprune",
"wontreturn",
"nosideeffect",
"nothrow",
"nothrow",
"dontthrow",
"null",
"nullterminated",
"paramsnonnull",