Commit graph

732 commits

Author SHA1 Message Date
q66 2f180cfc0e lots of new path functions 2018-04-14 23:21:58 +02:00
q66 1d6c256b2a correct separator replacement 2018-04-14 21:38:23 +02:00
q66 9c2fdd5f67 strip trailing seps 2018-04-14 21:34:24 +02:00
q66 96a3c9da30 paths are now always in a valid format 2018-04-14 21:28:01 +02:00
q66 6eee000b49 drive/root/anchor should be strings 2018-04-14 18:03:43 +02:00
q66 263b686ef0 drive/root/anchor/parent/name/suffix/stem/relative_to for paths 2018-04-14 17:46:44 +02:00
q66 643aa7e01a path move semantics 2018-04-14 01:42:15 +02:00
q66 7e28045942 expand path structure a bit 2018-04-14 01:29:01 +02:00
q66 a7b37b0d2e initial skeleton for path module to replace std::filesystem 2018-04-13 18:57:04 +02:00
q66 45161b9837 more sensible build macros on windows 2018-01-17 22:56:39 +01:00
q66 827aed2bb9 minor fixes 2018-01-15 21:05:58 +01:00
q66 69d5d11da1 POD => trivial, also clarify tstrlen 2018-01-13 22:34:14 +01:00
q66 dab034d9e0 export dem symbols 2018-01-11 23:38:03 +01:00
q66 a93ae710d0 universal internal strlen for all char types 2018-01-11 23:27:45 +01:00
q66 375c014f7a vtable translation unit for thread pool + warns 2018-01-10 02:57:29 +01:00
q66 1f5e7dc193 fully expand constructors in argparse 2018-01-10 02:30:01 +01:00
q66 5646f8610b no need for a generic param 2018-01-10 00:55:50 +01:00
q66 391f511131 use size_t for chunks/take 2018-01-10 00:54:31 +01:00
q66 e792613792 suppress some signed conversion warnings 2018-01-10 00:40:12 +01:00
q66 64843f7aa7 get rid of remaining zero-as-null-pointer-constant usages 2018-01-10 00:34:42 +01:00
q66 d7d3929226 refactor expression SFINAE tests not to use pointers 2018-01-10 00:22:09 +01:00
q66 b077b4fad9 respect width/precision 2018-01-08 00:46:09 +01:00
q66 d47aa75bd3 fix utf-16 string printing 2018-01-08 00:44:57 +01:00
q66 7becc47143 use the standard trait to check for chars 2018-01-07 22:54:02 +01:00
q66 96f627f792 treat chars as ints when not %s/%c and %x/%X/etc as unsigned 2018-01-07 22:53:02 +01:00
q66 36b5316ff6 documentation for all the Unicode APIs 2018-01-07 22:15:34 +01:00
q66 229b715d2c add a standard function to write a replacement character 2018-01-07 21:20:57 +01:00
q66 032d687293 avoid some size checks on utf-32 range 2018-01-07 21:14:59 +01:00
q66 3db863c68d allow encode to work on arbitrary ranges 2018-01-07 19:38:47 +01:00
q66 818fd1e8e8 add utf::unit_bits and encode/iter_u taking number of bits (8/16/32) 2018-01-07 19:27:08 +01:00
q66 798fcec6c8 remove the iter_u* wrappers, leave iter_u 2018-01-07 19:16:13 +01:00
q66 fb91f77eb0 remove the encode_u* wrappers (just use generic type-basedd ver) 2018-01-07 19:08:08 +01:00
q66 4a2e5cd557 completely unify encode funcs 2018-01-07 18:44:12 +01:00
q66 541fa43cbb reduce the encode_u* to 1 sink version per variant 2018-01-07 18:22:30 +01:00
q66 24d1b5ec25 various traits and constants for unicode types 2018-01-07 17:13:53 +01:00
q66 be803bac7b remove sink-based decode (covered by encode_u32) 2018-01-07 16:37:45 +01:00
q66 640a9714f0 universal templated encode, iter for all types 2018-01-07 02:17:05 +01:00
q66 4343bb408d implement compare/case_compare for all slice types 2018-01-07 01:15:17 +01:00
q66 92cfe0aaf5 iter_codes -> iter_u32, iter_bytes -> iter_u8 2018-01-06 02:10:38 +01:00
q66 d94e75cd18 add by-utf8-byte iteration for all slice types 2018-01-06 02:00:56 +01:00
q66 4a992d64b5 move back to sane string range comparison operator defs 2018-01-06 01:17:18 +01:00
q66 7912e699d5 remove char_traits usage 2018-01-06 01:08:19 +01:00
q66 fa5ae71202 perform validity check when decoding utf-32 into itself 2018-01-06 00:52:50 +01:00
q66 ed82fa0233 unified length handling for all encodings 2018-01-06 00:42:14 +01:00
q66 aeb5023b30 relax the rules of zero-argument utf::length 2018-01-06 00:27:04 +01:00
q66 e5162233d4 add missing inline 2018-01-06 00:17:47 +01:00
q66 51d7a62bee eliminate -Wweak-vtables warnings 2018-01-05 22:48:38 +01:00
q66 770ed476ca sink-writing decode 2018-01-05 22:16:18 +01:00
q66 58ccfbe276 direct encoding funcs to u8/u16/uw from any other UTF 2018-01-05 21:49:00 +01:00
q66 daea42666e add range-based advancing encode funcs 2018-01-05 21:16:46 +01:00
q66 61ed0ce71f printing of utf-16 and wide strings in format 2018-01-05 20:02:14 +01:00
q66 200919d96f add funcs to deal with decoding/encoding of wchar_t values/sequences 2018-01-05 19:26:30 +01:00
q66 be25d42660 refactor unicode impl 2018-01-05 18:55:34 +01:00
q66 44854072f7 prevent usage on potential broken platforms/toolchains 2018-01-05 03:05:17 +01:00
q66 d74736d8f4 add utf-16 decoding/encoding support 2018-01-05 02:18:36 +01:00
q66 723c06c612 various warning fixes with -Weverything 2018-01-03 17:13:38 +01:00
q66 fd4b26046c noexcept the ctype funcs 2018-01-03 02:12:23 +01:00
q66 ad149ff0f6 unicode-aware case-insensitive string compares 2018-01-03 01:22:07 +01:00
q66 a0337c401e implement all the unicode ctype funcs, generate the tables 2018-01-02 22:23:18 +01:00
q66 7c2bfa45df overload more Unicode stuff for UTF-32 slices 2018-01-02 00:30:58 +01:00
q66 dd2515de6c add a utility func to construct a container using a range 2018-01-01 21:06:25 +01:00
q66 b75f5f4881 implement utf-32 string printing in format 2018-01-01 20:59:39 +01:00
q66 c35f7377bf encode characters into utf-8 in format with our API 2018-01-01 03:11:00 +01:00
q66 0857edfef4 add a function to encode utf-32 to utf-8 2018-01-01 01:02:49 +01:00
q66 278b6a6269 define string ranges over wchar/char16/char32 2017-12-31 23:42:46 +01:00
q66 c4f67b08b9 rename codepoint to decode 2017-12-31 20:06:36 +01:00
q66 b350eced7e move utf::length wrappper to header 2017-12-31 19:18:08 +01:00
q66 48a7b45115 remove unneeded forward decl 2017-12-31 19:17:02 +01:00
q66 1a07db8bac merge utf impl bits into one place 2017-12-31 19:16:16 +01:00
q66 d3cdbe2fcf expose unicode stuff through string slices 2017-12-31 19:12:51 +01:00
q66 fb2f9e3b0e add support for printing unicode and wide characters 2017-12-31 15:32:33 +01:00
q66 b2ee5c1bd0 add iter_codes to iterate a UTF-8 string by code points 2017-12-31 14:50:48 +01:00
q66 d6a13d8f97 expose multibyte-to-codepoint conversion 2017-12-31 03:26:15 +01:00
q66 3c75d7db98 add some initial code for upcoming unicode support 2017-12-31 03:01:25 +01:00
q66 f7929a1b45 ditch char_traits in string stuff 2017-12-15 23:32:06 +01:00
q66 84fc2bc9c4 do not rely on global locale when converting in format 2017-11-13 17:15:30 +01:00
q66 e5a21382af much better integer formatting (less stack space, better precision handling) 2017-11-13 02:13:42 +01:00
q66 baf0dd4ca6 MB_CUR_MAX is not a constant 2017-11-12 20:25:58 +01:00
q66 db28b66892 workaround the awful bullshit when formatting numbers under locale
Because of the C++ locale APIs and libstdc++ being worthless trash,
we need to resort to this kind of nonsense in order to avoid
gibberish when dealing with grouping and decimal separators.

Libc++ gets this right (comes up with ASCII style representations
when requesting locale facets dealing with char type) but for some
dumb reason libstdc++ comes up with representations that are
garbage even when using a UTF-8 locale, so I guess we'll deal
with it this way for the time being...

That said, all of this code is probably broken on systems that
don't use Unicode and honestly I don't care.
2017-11-12 20:14:26 +01:00
q66 84572dfd01 use C locale in I/O and format by default
Should probably get rid of state in locale-aware APIs, too.
2017-11-12 19:15:43 +01:00
q66 f882292f2a get rid of gcc specific workarounds 2017-11-10 20:19:25 +01:00
q66 1893f4b941 gcc warning fix 2017-11-10 20:11:58 +01:00
q66 ec9ddb2aad yield current task in single-threaded coroutine scheduler on spawn
This schedules tasks more aggressively, letting side tasks always run.
2017-11-05 22:10:22 +01:00
q66 67525af4e5 gcc/libstdc++ 7.x fixes 2017-11-03 12:56:34 +01:00
q66 146da105b9 forward the writer out of get_line 2017-06-19 17:00:53 +02:00
q66 2ce488002a use <> for includes everywhere 2017-06-19 16:59:36 +02:00
q66 3034918496 move glob matching impl into a source file 2017-06-16 18:55:08 +02:00
q66 bee56e6a52 add glob example 2017-06-11 18:51:29 +02:00
q66 cca5952f93 fix the ** pattern not including itself's dir when used in dir position 2017-06-11 18:43:04 +02:00
q66 511ea88161 proper handling of [!...] glob patterns 2017-06-11 18:17:44 +02:00
q66 6b66e6ea69 document glob matching 2017-06-11 18:13:18 +02:00
q66 dd7f38d919 add char range glob pattern support 2017-06-11 00:02:16 +02:00
q66 054f292393 avoid bad path formatting in a very ugly way 2017-06-10 21:17:58 +02:00
q66 7ff454140a add api to check if filename matches glob pattern 2017-06-10 20:30:48 +02:00
q66 c9dafd1766 do not iterate non-directories 2017-06-10 20:26:34 +02:00
q66 374194bba6 there is no need to match filename for ** 2017-06-10 20:10:56 +02:00
q66 eba541842c remove ordinary glob escaping (incompatible with windows, use [c]) 2017-06-10 19:18:24 +02:00
q66 a2f88815bf implement ? wildcard 2017-06-10 19:03:58 +02:00
q66 009f36ba9f more glob fixes, also properly treat ** separately 2017-06-10 18:57:58 +02:00
q66 5396f6b2a5 glob matching fixes 2017-06-10 18:21:11 +02:00