Commit Graph

742 Commits (master)

Author SHA1 Message Date
Daniel Kolesa 7a11157f95 formatting 2016-08-03 16:50:06 +01:00
Daniel Kolesa d259877fba typo fix 2016-07-31 20:50:07 +01:00
Daniel Kolesa 8afffc1fb7 refactoring, style updates, various fixes 2016-07-31 20:40:25 +01:00
Daniel Kolesa 88241f5f9e remove namespace 2016-07-08 19:48:11 +01:00
Daniel Kolesa 115da8be30 use lstat for consistent behavior 2016-07-07 19:46:53 +01:00
Daniel Kolesa 8b7fc0f791 don't alloc path twice 2016-07-07 17:06:57 +01:00
Daniel Kolesa b02966fb9d environment api for windows, and rename environ namespace to envvar because windows is retarded 2016-07-06 20:40:43 +02:00
Daniel Kolesa dd35b0bf05 fix incorrect FindFirstFile logic on Windows 2016-07-06 19:51:39 +02:00
Daniel Kolesa 85d98780ce windows build warning/error fixes 2016-07-06 19:31:21 +02:00
Daniel Kolesa 0a1b578fcd ignore some template specializations for systems with no big char builtins 2016-07-06 19:10:17 +02:00
Daniel Kolesa 0c8c16a44a windows fixes + stdin/stdout/stderr might be defined as macros 2016-07-06 17:05:32 +01:00
Daniel Kolesa f5a7c19acc fix invalid cast 2016-07-05 18:27:27 +01:00
Daniel Kolesa b7a2322990 add nothrow constructible/assignable/destructible type traits (for when user code uses exceptions) 2016-07-03 01:39:13 +01:00
Daniel Kolesa 47ed1a700c don't use classic style casts 2016-07-02 04:57:23 +01:00
Daniel Kolesa 85b7602654 fix directory stream on Linux as glibc's dirent.h doesn't put . and .. entries to the start 2016-06-28 19:52:37 +01:00
Daniel Kolesa 676f76acee string element append fix and OS X support note 2016-06-27 19:18:31 +01:00
Daniel Kolesa 7912c24e3a const syntax refactoring 2016-06-23 19:18:35 +01:00
Daniel Kolesa 430ca81bfd pass compare func by reference in sort impl (don't copy it around) 2016-05-29 02:41:58 +01:00
Daniel Kolesa 46d8844a49 return fix 2016-05-24 01:30:11 +01:00
Daniel Kolesa 5189bab1af simplify string operator+= for T 2016-05-22 15:31:11 +01:00
Daniel Kolesa d9bd0f8380 restrict string operator+ (conflicts with range offset) 2016-05-21 15:36:14 +01:00
Daniel Kolesa 65954f614c decay map/filter callbacks before storing them 2016-05-09 00:07:25 +01:00
Daniel Kolesa a5c4b9d3ca global concat op for strings 2016-05-07 17:25:40 +01:00
Daniel Kolesa 7561d40b14 missed inline 2016-05-04 00:50:52 +01:00
Daniel Kolesa 75e27a14b0 overload rvalue refs to const for tuple 2016-05-02 18:21:54 +01:00
Daniel Kolesa 34cb1f1fbd forward the tuple to ensure correct get semantics 2016-05-01 00:53:48 +01:00
Daniel Kolesa f46ffa53fd forwarding join/zip 2016-05-01 00:34:00 +01:00
Daniel Kolesa b16e72fa16 convert nearly all algos (except variadic ones) to use perfect forwarding 2016-04-30 19:21:50 +01:00
Daniel Kolesa ca0dfcd8a4 fix return type 2016-04-30 18:27:53 +01:00
Daniel Kolesa 0f5ed68124 actually need to move things into the lambda or they die 2016-04-30 18:24:17 +01:00
Daniel Kolesa 5dfc54dad9 simplify map/filter 2016-04-30 17:58:37 +01:00
Daniel Kolesa e33797e571 pipeable foldl/foldr func variant 2016-04-29 17:47:04 +01:00
Daniel Kolesa fcd0616f4d fix naming 2016-04-29 17:45:06 +01:00
Daniel Kolesa 551dc8bc15 return range from sort and make it pipeable 2016-04-29 17:34:46 +01:00
Daniel Kolesa 62fdbc74ad add missing pipeable algorithms and suffix funcs that use comparators 2016-04-29 17:30:32 +01:00
Daniel Kolesa ab22ba910a remove mutable where unnecessary + capture join/zip by ref instead of copy 2016-04-27 18:42:51 +01:00
Daniel Kolesa 878476a397 use int for sdl1 mode and report size 2016-04-27 01:18:04 +01:00
Daniel Kolesa c5a9d535f5 fixes 2016-04-27 01:11:03 +01:00
Daniel Kolesa e51fe5a348 add an extensions directory and first extension, sdl rwops stream integration 2016-04-27 01:08:59 +01:00
Daniel Kolesa 288526e7db capture by references more (the objects live long enough to be safe) 2016-04-27 00:29:55 +01:00
Daniel Kolesa e7dd08d884 piping for nearly all algorithms 2016-04-26 22:25:46 +01:00
Daniel Kolesa 5604df9625 make core range funcs methods on InputRange + initial support for piping 2016-04-26 22:05:07 +01:00
Daniel Kolesa 2d399a2ed3 fix RangeValue for ZipRange 2016-03-30 20:41:59 +01:00
Daniel Kolesa 6c840ad830 implement zip and tuple ToString 2016-03-27 23:49:57 +01:00
Daniel Kolesa f651940570 add initial implementation of range joiner (join any type-compatible ranges into one) 2016-03-27 21:06:00 +01:00
Daniel Kolesa 59551e0aee fix the StreamMode enum 2016-03-26 17:26:37 +00:00
Daniel Kolesa ce42683c99 default to read mode in filestreams 2016-03-26 15:19:00 +00:00
Daniel Kolesa 54789177e2 no need for a typedef 2016-03-24 21:52:16 +00:00
Daniel Kolesa 60a04937c6 string range optimizations 2016-03-23 22:32:30 +00:00
Daniel Kolesa a31ddba522 range fixes 2016-03-23 22:27:46 +00:00
Daniel Kolesa 9de9d99d4d fixes 2016-03-22 01:13:43 +00:00
Daniel Kolesa 5b4ea576b7 change to RemoveConst 2016-03-21 21:25:23 +00:00
Daniel Kolesa e48642659d generalize temp cstrings for any range type 2016-03-21 21:21:41 +00:00
Daniel Kolesa 4854242918 typo fix 2016-03-20 20:23:26 +00:00
Daniel Kolesa 6c4fd3d8ae this doesn't actually happen 2016-03-19 20:23:46 +00:00
Daniel Kolesa a63cf1edb1 add experimental api to turn unterminated string ranges to terminated c strings 2016-03-19 19:52:46 +00:00
Daniel Kolesa 40746de1c3 add environment funcs (environ.hh) and update test runner code (less verbose/cleaner) 2016-03-13 01:28:39 +00:00
Daniel Kolesa b66c684add add trailing newlines 2016-02-07 21:19:20 +00:00
Daniel Kolesa dfc867bd48 remove unused file 2016-02-05 21:29:27 +00:00
Daniel Kolesa 3495d6ea2f remove platform.hh include 2016-01-28 18:36:48 +00:00
Daniel Kolesa 0580638905 move windows.h include into its own header (to define LEAN_AND_MEAN and NOMINMAX in all places) 2016-01-27 19:35:11 +00:00
Daniel Kolesa 62d7836f32 header fixes 2016-01-26 19:01:27 +00:00
Daniel Kolesa e5dc50b0dd support hardware_concurrency static method like c++ std::thread (also replaces cpu_count_get) 2016-01-26 18:58:16 +00:00
Daniel Kolesa 5192ea4977 small cleanup 2016-01-24 16:59:44 +00:00
Daniel Kolesa 4b9faefa5c convert locking/cond code to pthreads to get rid of awful c11 api 2016-01-24 15:33:15 +00:00
Daniel Kolesa 86170b75c4 convert thread.hh to phreads (c11 threads api is awful) 2016-01-24 15:22:51 +00:00
Daniel Kolesa 4eb03ad017 lock fixes 2016-01-23 22:38:30 +00:00
Daniel Kolesa 98eeb765fd initial implementation of locking primitives and conditions 2016-01-23 22:16:10 +00:00
Daniel Kolesa bf647c100e re-add iter for arrays of const 2016-01-23 17:38:41 +00:00
Daniel Kolesa 46fb6ced30 support for extra args for thread constructor 2016-01-23 17:26:42 +00:00
Daniel Kolesa b84eb137da initial portable ostd::Thread interface (on top of C11 threads) 2016-01-23 16:54:27 +00:00
Daniel Kolesa d1feaafb5e change style for constants 2016-01-22 18:12:39 +00:00
Daniel Kolesa eaaddb0d0b redefine some stuff without macros 2016-01-22 18:10:13 +00:00
Daniel Kolesa 305d3e54f6 cleanups 2016-01-21 17:58:51 +00:00
Daniel Kolesa 5902299a1d convert the remaining usage of Constant and all the remaining public traits 2016-01-20 19:05:11 +00:00
Daniel Kolesa 8a1671f6ea convert most of the rest to template vars 2016-01-20 18:42:29 +00:00
Daniel Kolesa 7802efa1a1 use constexpr bool for IsTupleLike 2016-01-20 18:09:44 +00:00
Daniel Kolesa 2c4d6fee09 convert TupleSize to template var 2016-01-19 19:14:02 +00:00
Daniel Kolesa 29bf432800 remove bad file 2016-01-18 18:05:04 +00:00
Daniel Kolesa bc0c3f7577 convert some stuff to variable templates 2016-01-16 18:45:55 +00:00
Daniel Kolesa 460cded195 add BoolConstant 2016-01-16 18:33:52 +00:00
Daniel Kolesa 9e4d475488 rename IntegralConstant to Constant 2016-01-16 18:31:58 +00:00
Daniel Kolesa 31a46ef07d more trait cleanups 2016-01-14 21:16:42 +00:00
Daniel Kolesa 37059e505b remove some unnecessary code 2016-01-14 19:32:22 +00:00
Daniel Kolesa f578bd71f6 simplify range traits tests 2016-01-14 19:15:50 +00:00
Daniel Kolesa 8152173c39 convert more traits 2016-01-14 19:11:52 +00:00
Daniel Kolesa abde607016 remove most IntegralConstant usages from type_traits 2016-01-14 19:03:22 +00:00
Daniel Kolesa 7d52a75348 convert some traits to cleaner syntax 2016-01-14 18:49:38 +00:00
Daniel Kolesa 1c5ba28f35 replace some traits with c++14 style nice definitions 2016-01-13 20:46:16 +00:00
Daniel Kolesa 41174195bb drop static in constexpr template vars 2016-01-13 20:40:59 +00:00
Daniel Kolesa 818cbe376a convert the remaining type_traits.hh checking traits to constexpr bools 2016-01-13 18:09:21 +00:00
Daniel Kolesa a6744105dc convert range checks to template vars 2016-01-13 17:42:37 +00:00
Daniel Kolesa 9b11c1d319 convert IsSame to template variable 2016-01-12 22:24:40 +00:00
Daniel Kolesa 7edf3e1d4a more template var conversions 2016-01-12 22:09:40 +00:00
Daniel Kolesa 697b135157 remove unneeded forward decl 2016-01-12 21:56:17 +00:00
Daniel Kolesa d53556d336 convert a part of type traits to template variables (reduces verbosity in a lot of places) 2016-01-12 21:45:26 +00:00
Daniel Kolesa 02e7ae76a2 add ostd::starts_with to string library 2015-12-31 16:36:41 +01:00
Daniel Kolesa 31d3182a4a fix shadow warnings 2015-12-30 15:13:07 +01:00
Daniel Kolesa b3a12884be forgot endif 2015-09-30 19:18:09 +01:00
Daniel Kolesa 561b6d01fa symbol visibility support in platform.hh 2015-09-30 18:49:30 +01:00
Daniel Kolesa c9c4ca4f77 add ostd::cpu_count_get in platform.hh 2015-09-25 19:42:34 +01:00
Daniel Kolesa 0c09c709b5 add argparse.hh initial skeleton 2015-09-22 20:23:59 +01:00
Daniel Kolesa 0c26f0c94e simple api to change dir 2015-09-14 01:31:31 +01:00
Daniel Kolesa f78aac9040 fix multiple method definitions 2015-09-10 18:54:47 +01:00
Daniel Kolesa d1912c4237 fix directory rewind on unix 2015-09-08 01:17:28 +01:00
Daniel Kolesa 9648d5e011 experimental complete win32 support in filesystem.hh 2015-09-08 01:03:56 +01:00
Daniel Kolesa d163028054 directory stream optimization 2015-09-08 00:49:50 +01:00
Daniel Kolesa 80b6aa588b empty() public on DirectoryStream 2015-09-07 19:34:55 +01:00
Daniel Kolesa a31fbdbe32 cleanup 2015-09-06 17:39:09 +01:00
Daniel Kolesa 1c48de0ccd try to get the dirent.h stuff right at last 2015-09-06 17:11:15 +01:00
Daniel Kolesa c5fb814bb3 remove the owned stuff from filesystem module 2015-09-06 16:20:51 +01:00
Daniel Kolesa 60aba3a82b some initial win32 bits for filesystem module 2015-09-06 16:09:03 +01:00
Daniel Kolesa baaa1e790d filesystem module enhancements 2015-09-05 03:35:07 +01:00
Daniel Kolesa d0662f2b08 better type names 2015-09-04 18:57:14 +01:00
Daniel Kolesa c33fb68d89 fix algorithm::find_last + filesystem module fixes 2015-09-04 18:46:28 +01:00
Daniel Kolesa 75a9f284a4 initial experimental filesystem API 2015-09-04 18:25:17 +01:00
Daniel Kolesa d9120a0015 new predefined operations for input ranges (defined for all without need for custom impl) 2015-08-31 14:47:19 +01:00
Daniel Kolesa eb3c273376 add algorithm::find_last 2015-08-16 11:35:06 -07:00
Daniel Kolesa 0a55b0326e add algorithm::slice_until (slice1 range from the beginning until range2 not-inclusive) 2015-08-13 23:25:39 +01:00
Daniel Kolesa 1a6d95580f add algorithm::find_one_of (finds the first occurence of any value in the second range in the first range, then returns the range) 2015-08-11 01:32:24 +01:00
Daniel Kolesa 0fae09907e string fixes + add advance() 2015-08-07 03:12:00 +01:00
Daniel Kolesa 0be81997af new iter utils for pointer ranges 2015-08-07 02:36:58 +01:00
Daniel Kolesa 44d2600067 fix warning when passing nullptr constant 2015-08-07 00:08:59 +01:00
Daniel Kolesa 661bd5244e null checks 2015-08-06 23:57:40 +01:00
Daniel Kolesa 8ba91c12fe string clear check 2015-08-05 21:58:06 +01:00
Daniel Kolesa 4f23017594 keyset: allow get_key to return by value (still use reference where possible) 2015-08-05 20:05:03 +01:00
Daniel Kolesa 50a8562d20 ensure correct ctor overload resolution on char/pointer range for two pointers vs pointer plus size when passed int (or similar) 2015-08-05 02:09:44 +01:00
Daniel Kolesa da4c3a0947 add ostd::Keyset - an associative array that stores keys inside of their elements 2015-08-02 15:57:09 +01:00
Daniel Kolesa 9729ce1bbc simplify and fix multimap/multiset emplace 2015-08-02 15:08:42 +01:00
Daniel Kolesa 770f5ea0f2 use the new functor as default cmp in hashtables 2015-08-02 14:58:49 +01:00
Daniel Kolesa 65fb75d8ab add function object EqualWithCstr to consider char pointers strings 2015-08-02 14:56:10 +01:00
Daniel Kolesa 74b233d5d1 add Vector::advance 2015-08-01 20:25:02 +01:00
Daniel Kolesa e89448af70 add vector push_n 2015-08-01 20:16:03 +01:00
Daniel Kolesa ef5951577d fix tuple (why did that compile?) 2015-08-01 18:34:53 +01:00
Daniel Kolesa bcb5f64250 str fixes 2015-08-01 04:29:26 +01:00
Daniel Kolesa 49af758238 explicit overloads of operator= on string for ptr/array because c++ type system blows 2015-08-01 04:19:37 +01:00
Daniel Kolesa bc2bd9ca3b hashtable fixes 2015-08-01 04:11:03 +01:00
Daniel Kolesa c66fa7c7bf forgot inline 2015-08-01 03:08:11 +01:00
Daniel Kolesa 0ceada8629 allow default ctor on PointerRange 2015-07-29 01:37:22 +01:00
Daniel Kolesa df4b169aa8 better range constraints 2015-07-28 02:40:24 +01:00
Daniel Kolesa bf8be04b01 actual warning fix 2015-07-26 19:08:47 +01:00
Daniel Kolesa 3fbaedbfc2 prevent compiler warnings on 32bit (code is not reached, but compilers complain) 2015-07-26 18:57:23 +01:00
Daniel Kolesa 5cf1c9feff more versions of vec operators 2015-07-26 15:26:52 +01:00
Daniel Kolesa f96e74902a more vector stuff 2015-07-26 15:18:41 +01:00
Daniel Kolesa b4619085b7 basic vector operations 2015-07-26 15:05:12 +01:00
Daniel Kolesa ea024ea80e vecmath constructors and relational operators 2015-07-26 14:53:09 +01:00
Daniel Kolesa 431bfa4dc8 initial skeleton for octastd vector math lib 2015-07-26 04:03:13 +01:00
Daniel Kolesa 841000d4d8 better string append() and operator+= (easy ranged append) 2015-07-25 02:34:07 +01:00
Daniel Kolesa 6c28e6dd66 fixed typo 2015-07-25 02:07:51 +01:00
Daniel Kolesa 178e6d2ae2 remove AnyString 2015-07-25 01:35:36 +01:00
Daniel Kolesa 90bc301487 reliable and simple string relational operators that work on ConstCharRange 2015-07-24 19:43:39 +01:00
Daniel Kolesa 7ede73f4dc sink based concat() (no allocation in-func) 2015-07-23 02:05:08 +01:00
Daniel Kolesa 287bdbd312 contiguous ranges provide the data() method to retrieve a pointer to the sequence 2015-07-23 01:32:22 +01:00
Daniel Kolesa 7fc4ce0a3a new range category: ContiguousRange (guaranteed to be backed by contiguous memory) 2015-07-23 01:28:25 +01:00
Daniel Kolesa 0e0ba19ead stricter to_format check 2015-07-23 00:48:32 +01:00
Daniel Kolesa ad2d69e83d use a sink for to_string methods on objects (no extra allocs) 2015-07-23 00:44:23 +01:00
Daniel Kolesa 9446470f3c use ConstCharRange for concat separator 2015-07-22 21:10:04 +01:00
Daniel Kolesa 13ca140b63 string ctor for pointer and literal because c++ semantics suck 2015-07-22 21:01:02 +01:00
Daniel Kolesa 161ab5be85 cleaned up constructors/assign ops for string and vector 2015-07-22 20:51:12 +01:00
Daniel Kolesa b9edc0c568 rewritten and simplified write(f/ln) on stream objects 2015-07-22 02:06:36 +01:00
Daniel Kolesa debbddc8da format cleanups (and add convenience method put_string to the to_format range) 2015-07-22 01:53:55 +01:00
Daniel Kolesa b2d656e481 use ConstCharRange when formatting strings 2015-07-22 01:30:23 +01:00
Daniel Kolesa 5786fc5fb7 user defined literal for const char ranges 2015-07-22 00:13:44 +01:00
Daniel Kolesa 458e0b8b87 use ConstCharRange for streams 2015-07-21 22:30:53 +01:00
Daniel Kolesa a84142474c io.hh cleanup 2015-07-21 22:21:54 +01:00
Daniel Kolesa 7a2f8581d7 StringRange -> CharRange 2015-07-21 22:06:23 +01:00
Daniel Kolesa f2082d17cd use string ranges everywhere else in format 2015-07-21 22:03:57 +01:00
Daniel Kolesa 874f8a3c14 use string ranges in format 2015-07-21 21:45:04 +01:00
Daniel Kolesa 7a0237788f ConstStringRange ToString specialization 2015-07-21 20:25:09 +01:00
Daniel Kolesa aa9bdb3ec2 better StringRange from-string ctor (allows for non-const to const conv semantics) 2015-07-21 20:23:31 +01:00
Daniel Kolesa 5d36b5663c StringRange - differentiate between arrays and pointer constructors 2015-07-21 20:19:27 +01:00
Daniel Kolesa 852ae9ea37 better hashtable erase 2015-07-21 02:11:53 +01:00
Daniel Kolesa 71f5df79ce better multihash insertion strategy (make sure elements with equal keys always form a sequence in a bucket) 2015-07-21 01:37:02 +01:00
Daniel Kolesa 8e40fca1ce hash fixes/cleanups and make at() return a pointer 2015-07-20 22:04:52 +01:00
Daniel Kolesa 56629ff358 bucket list cleanup 2015-07-20 21:56:56 +01:00
Daniel Kolesa 0421e7b3c8 use calls to bucket() to get hashes 2015-07-20 21:08:49 +01:00
Daniel Kolesa 0c297af0bd hash chunk cache line boundary alignment optimization 2015-07-20 18:51:16 +01:00
Daniel Kolesa cc0fccb8cf use fnv-1a hashing instead of djb2 2015-07-20 02:20:35 +01:00
Daniel Kolesa a048a5384c use mem_hash for hashing strings 2015-07-20 02:15:12 +01:00
Daniel Kolesa 453b463ce6 optimize hashtable to use small ranges (but larger nodes) 2015-07-20 02:08:30 +01:00
Daniel Kolesa 3613af3daa alloc an extra bucket ptr as trailing sentinel value (for later usage) 2015-07-20 00:50:31 +01:00
Daniel Kolesa d7c789195a string fixes 2015-07-18 17:01:11 +01:00
Daniel Kolesa 53e292cdb0 _s literal for strings 2015-07-18 01:02:13 +01:00
Daniel Kolesa a6584020a3 signal.hh -> event.hh, Event -> Signal 2015-07-17 19:00:25 +01:00
Daniel Kolesa e9cf0c67ed more signal functionality 2015-07-16 20:49:12 +01:00
Daniel Kolesa 58cbe3873c recycle signal slots 2015-07-16 19:21:51 +01:00
Daniel Kolesa 8327022c67 signal const correctness 2015-07-16 18:55:21 +01:00
Daniel Kolesa b22baaf5fd const for emit 2015-07-16 01:42:35 +01:00
Daniel Kolesa b20e32a8b6 add Event::clear 2015-07-16 01:40:58 +01:00
Daniel Kolesa 01ebb0063c add new signal API 2015-07-16 01:37:37 +01:00
Daniel Kolesa 267e14c1c2 Maybe fix 2015-07-15 22:03:51 +01:00
Daniel Kolesa 1c4f04757d mv the octa directory too 2015-07-13 20:10:29 +01:00