terminal/src/inc/til
Leonard Hecker f2386de422
Improve performance and binary size of til::enumset (#11493)
This commit approximately doubles the performance of til::enumset
and reduces it's binary footprint by approximately 1kB.
Most of the binary size can be attributed to exception handling.

Unfortunately this commit removes assertions that the given values are less than
the number of bits in the `underlying_type`. However I believe this to be a good
trade-off as the tests previously only happened at runtime, while tests at
compile time would be highly preferable. Such tests are technically possible,
however MSVC fails to compile (valid) `static_assert`s containing
`static_cast`s over a parameter pack at the time of writing.
With future MSVC versions such checks can be added to this class.

This change was initially discussed in #10492, but was forgotten to
be considered before it was merged. Since the work was already done,
this commit re-introduces the optimization. It's free!

## PR Checklist
* [x] I work here.
* [x] Tests added/passed

## Validation Steps Performed
* Run `printf '\e]8;;http://example.com\e\\This is a link\e]8;;\e\\\n'` in WSL
* A wild dotted line appears ✔️
2021-11-23 18:44:58 +00:00
..
at.h Add support for more OSC color formats (#7578) 2020-10-14 17:29:10 -07:00
atomic.h Fix output stuttering using a ticket lock (#10653) 2021-07-14 23:41:22 +00:00
bit.h Enable fast floating point model and fast debug linking (#11466) 2021-10-11 21:02:15 +00:00
bitmap.h Eliminate more transient allocations: Titles and invalid rectangles and bitmap runs and utf8 conversions (#8621) 2021-02-16 20:52:33 +00:00
coalesce.h Make Global and Profile settings inheritable (#7923) 2020-10-27 17:35:09 +00:00
color.h Reduce usage of Json::Value throughout Terminal.Settings.Model (#11184) 2021-09-22 16:27:31 +00:00
enumset.h Improve performance and binary size of til::enumset (#11493) 2021-11-23 18:44:58 +00:00
latch.h Introduce til/latch.h, til/mutex.h and til/throttled_func.h (#10403) 2021-06-22 20:16:31 +00:00
math.h add til::math, use it for float conversions to point, size (#5150) 2020-03-27 22:48:49 +00:00
mutex.h Introduce til/latch.h, til/mutex.h and til/throttled_func.h (#10403) 2021-06-22 20:16:31 +00:00
operators.h Render row-by-row instead of invalidating entire screen (#5185) 2020-04-13 20:09:02 +00:00
pmr.h Merged PR 5770253: [Git2Git] Merged PR 5760120: Add propsheet chooser to Windows 2021-03-10 01:19:04 +00:00
point.h Only access ControlInteractivity through the projection (#10051) 2021-07-19 11:59:30 -05:00
rand.h Improve til::gen_random documentation (#11465) 2021-10-11 17:59:40 +02:00
rectangle.h Only access ControlInteractivity through the projection (#10051) 2021-07-19 11:59:30 -05:00
replace.h Fix typo in replace.h (#9679) 2021-04-06 10:38:51 -05:00
rle.h rle: fix build with clang by adding a deduction guide (#10154) 2021-05-24 13:33:43 +00:00
size.h Make the window name _quake special (#9785) 2021-04-26 19:36:23 +00:00
some.h Move ConPTY to use til::bitmap (#5024) 2020-03-23 15:57:54 +00:00
spsc.h Fix #8695: til::spsc assignment operators don't return anything (#8811) 2021-01-19 11:41:08 +00:00
static_map.h Clean up KeyChordSerialization (#10654) 2021-07-14 21:22:24 +00:00
string.h Introduce new TIL string helpers, teach older ones to use wmemcmp (#11725) 2021-11-17 23:42:40 +00:00
throttled_func.h Introduce til/latch.h, til/mutex.h and til/throttled_func.h (#10403) 2021-06-22 20:16:31 +00:00
ticket_lock.h Fix output stuttering using a ticket lock (#10653) 2021-07-14 23:41:22 +00:00
u8u16convert.h Refactor u8u16 and u16u8 conversion functions (#10966) 2021-08-23 23:48:13 +00:00