Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
bb24f6aa27
- [x] Add match() function which visits a callable on the contents.
2015-06-25 13:50:53 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
ca766c4894
- [x] If monad type is a callable, let the monad be callable.
...
- [x] Rename .then() to .next().
2015-06-25 10:56:17 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
fee843dd2e
Fixed option<bool> being silly large, and added unit testing to ensure it remains so.
2015-06-25 03:24:13 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
58b807469a
Finished porting code over to new policy based design.
2015-06-25 02:37:27 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
a6494320bd
Reenable unwrap()
2015-06-24 14:54:07 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
bdf09d6e01
Still need to restore unwrap(), then(), bind() and map() but ...
...
- [x] In addition to value_or(), error_or() etc add value_and(), error_and() etc.
- [x] Expose detail::value_storage such that it can be specialised for optimal space e.g. for bool.
- [x] Add null_exception_ptr, null_error_code.
- [x] Make how error_type is converted into exception_type configurable.
- [x] Add monad<void>.
- [x] Add template aliases for different configurations of monad<T> (one of maybe, result, holder, value, retval, potential, likely). Add two additional aliases, one for a monad without exception_ptr, and another for a monad with neither error_code nor exception_ptr (option<T>?).
2015-06-24 14:36:18 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
497ecc7757
Minor docs fix
2015-06-23 15:10:53 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
36586c6555
Make tribool nature of monad very explicit with an actual tribool.
2015-06-23 14:23:44 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
1bdef95a0f
Add tribool
2015-06-23 14:08:55 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
fd786656bf
Fixed bugs mentioned in boost-dev review. Added task list.
2015-06-22 01:08:08 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
4987f60e29
Fixed missing EOL for complexity guarantees
2015-06-19 17:48:35 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
6108ee3d06
Fixed missing bind example in docs.
2015-06-19 17:45:32 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
7a65330a1c
Now ready for Boost review.
2015-06-19 17:35:25 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
6f45787900
Added monad example for boost-dev review, unfortunately it fails to compile :)
2015-06-19 14:59:09 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
6f632d061e
Added opcodes for then() and bind()
2015-06-19 02:35:45 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
b3b4f95ee4
Added max and min constexpr tests for then and bind
2015-06-19 02:11:32 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
06fd8b0b8c
upd
2015-06-17 14:04:38 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
9e6020714d
Disable tests for VS2015 where the compiler is clearly suffering memory corruption internally.
2015-06-16 17:57:47 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
35a6ab7732
Try throwing ~monad fix on CI.
2015-06-16 17:40:53 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
0d1a435eef
map() and bind() fully working and passing all tests. Finally.
2015-06-16 17:33:14 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
0d241ff17f
bind() is nearly working. Currently it fails to detect an auto lambda which returns a monad, a problem I shall have to ponder how to solve as it isn't entirely straightforward.
2015-06-16 04:23:55 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
921dcb101d
wip
2015-06-15 19:00:30 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
fed48c3573
Forgot to update function_argument_form.
2015-06-15 11:31:08 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
45dbfb9a07
updated to match stackoverflow reduced example.
2015-06-15 11:25:01 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
8f58896bac
minor tidy
2015-06-15 04:43:15 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
01d0b3150d
Figured out the problem. Now working very well indeed. Next step tomorrow is to add the detection of callables taking not value_type, and in theory we are then feature complete.
2015-06-15 04:36:59 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
0b2e91fe6e
Added in rvalue detection traits. Working now, except that I am stuck on how to best detect when an implicit conversion is being done when calling the callable.
2015-06-15 04:23:48 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
ee7e43d1ba
Merge branch 'master' of github.com:ned14/boost.spinlock
2015-06-15 03:25:57 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
97e517a68f
Added acknowledgement of clever map and bind source.
2015-06-15 03:25:47 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
e184a75e83
Fixed clang breakage
2015-06-13 17:56:43 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
cfa36eec9a
Wrote docs for monadic operators. Now just need to finish implementing them!
2015-06-13 02:03:54 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
3dffba1beb
then(), bind() and map() all now working perfectly except that automatic move semantics isn't. Asked stackoverflow on that one.
2015-06-12 12:59:05 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
f6ec99c0a1
Added then() and bind() monadic operations.
2015-06-12 04:08:39 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
0c8d3347ab
Workaround GCC failure
2015-06-12 02:16:54 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
5b35f714a2
More minor warnings.
2015-06-12 01:59:33 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
1c9c063b83
Remove clang warnings.
2015-06-12 01:53:17 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
0d867577ba
Add unwrap().
2015-06-12 01:34:12 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
cbdd0b0af5
docs
2015-06-12 00:25:35 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
64d3b72dd9
docs.
2015-06-11 23:23:20 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
089ee51b51
try again
2015-06-11 14:43:40 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
dbd850034a
Added complexity guarantees.
2015-06-11 14:39:48 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
a5114cc144
Work around a noexcept weirdness in libstdc++
2015-06-11 13:34:57 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
6789930fee
Fix POSIX build breakage
2015-06-11 13:26:57 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
62bdae1f34
Relocate <future> include.
2015-06-11 10:16:45 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
9e6f70253c
Fixed snippets
2015-06-11 04:05:50 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
6a2b65715c
Use doxygen snippets
2015-06-11 04:01:12 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
e0743bf719
More minor docs fixes.
2015-06-11 03:27:27 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
f538c990a3
Missing header fix
2015-06-11 03:20:58 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
43ff504d66
Added test of monad as an optional.
2015-06-11 03:11:53 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
86060e14d8
Added test that swap() works.
2015-06-11 02:45:00 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
00c341d218
Added test for whether monad can hold a STL container and itself be inside a STL container.
2015-06-11 02:33:30 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
297c7013d1
Added noexcept and weird udt unit tests.
2015-06-11 02:19:23 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
a75a10531d
More docs updates
2015-06-11 00:59:25 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
330c9cc5ba
More doc fixes
2015-06-11 00:46:48 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
e2c4b22baf
docs update
2015-06-11 00:18:55 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
627ab95a15
typo
2015-06-10 15:05:10 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
8d1d58e6bb
Increase opcount counter loop timeout to 1000
2015-06-10 14:57:48 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
d7dcab1dd0
monad, promise and future all now take their error and exception types as template parameters.
...
monad now throws monad_error with monad_category by default.
2015-06-07 03:13:26 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
e1ff73f72c
Split future.hpp into monad.hpp
2015-06-07 00:32:29 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
1241e2c500
Disabled another failing test on gcc/clang.
2015-06-05 03:26:20 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
2f1039d851
typo
2015-06-05 03:16:51 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
e5a5a15f92
Added unit test for monad.
2015-06-05 03:14:24 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
d60d240bf1
Restore default monad move constructor
2015-06-05 01:37:46 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
01e6a82f61
More constexpr monad tests
2015-06-05 00:45:24 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
2243b0ceaa
Fixed excessive constexpr
2015-06-04 23:34:14 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
a6e4203bea
Fleshed out the monad class
2015-06-04 19:04:14 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
7a17c598a3
Wrote python script to parse assembler dump of lightweight future promise and construct an opcount.
...
Persuaded MSVC to constexpr fold almost all of the time.
2015-06-04 03:53:45 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
62c1f18278
Stamped out a few more APIs (commented out)
2015-05-27 10:48:16 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
00a70e09ae
Fixed constexpr folding failure caused by get()
2015-05-26 00:28:28 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
226e081f66
Broke monad out from future
2015-05-25 18:54:42 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
1e70caf8d8
Fixed bug in lack of constexpr reduction of future.
2015-05-25 04:38:13 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
4c8566ae18
Try putting back the unrestricted union
2015-05-25 04:27:01 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
c19899c200
more small changes
2015-05-25 04:10:15 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
6c70b8389b
Revert "Experimental replacement of promise future move constructors with intrusive variants."
...
This reverts commit 61313e3b30
.
2015-05-25 03:54:33 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
61313e3b30
Experimental replacement of promise future move constructors with intrusive variants.
2015-05-25 03:51:00 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
3da8d3bb2a
Small fixes.
2015-05-25 03:08:41 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
2fdd81e75e
Added constexpr folding for future, and future from promise.
2015-05-25 02:51:44 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
b8468a730d
Yay got it constexpr reducing on gcc yay!
2015-05-24 03:09:57 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
bd0b230ac7
Got lightweight future-promise working on VS2015. Still no joy on the constexpr reduction :(
2015-05-24 02:56:49 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
72045c4fe3
Added beginnings of assembler dump unit testing
2015-05-23 22:09:15 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
12a534d886
Added first edition of lightweight future-promise.
2015-05-23 21:27:08 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
ab682dff70
Fixed a failure to unlock buckets on failure to allocate new buckets in rehash. Thanks to Mikhail for reporting this.
2015-04-02 01:57:27 +01:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
8e09d8ae51
upd
2015-03-26 18:30:00 +00:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
c4a2903a88
upd
2015-03-26 18:22:55 +00:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
3b992806e8
Add atomic fences after every modification of std::vector holding bucket items. Almost certainly unnecessary, but no harm to have these.
2015-03-09 19:09:53 +00:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
0a27daf4e1
Try to see if I can see the cause of the suppressed _rehash() race reported by tsan.
2015-03-07 21:06:35 +00:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
47f2064952
upd
2015-03-06 01:37:59 +00:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
7305f31c86
upd
2015-02-26 03:03:27 +00:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
9a4646421a
Removed the dependency on Expected, and the expected_future as no longer needed.
2015-01-28 17:50:21 +00:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
c99466bc83
upd
2015-01-17 03:10:44 +00:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
98be366538
upd
2015-01-12 20:11:36 +00:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
b840973f7a
upd
2015-01-11 00:43:19 +00:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
b367ace54f
upd
2015-01-10 21:31:53 +00:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
10e68631e6
ups
2015-01-05 16:23:37 +00:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
6a88582f28
Workaround too good iterator checking under MSVC.
2015-01-03 18:10:58 +00:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
b00b283ea3
Added unit testing for tristate and pointer spinlocks.
2014-12-12 20:58:13 +00:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
b0e726af60
Don't pad buckets.
2014-12-12 00:56:09 +00:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
cf64f92943
upd
2014-12-11 23:58:13 +00:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
b2ecbdfcca
Replaced CATCH with BindLib unit testing.
2014-12-11 22:21:58 +00:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
051875b795
Fixed build failures. Added a FNV-1a hash implementation.
2014-12-11 21:28:17 +00:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
e5cc742ea5
Added a spinlock template parameter to concurrent_unordered_map.
...
Disabled noexcept destructor as it was ICEing GCC.
2014-12-10 20:34:24 +00:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
67df71f099
concurrent_unordered_map::iterator operators != and == were broken.
...
Added concurrent_unordered_map::visit().
2014-12-09 19:41:10 +00:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
99d17f1ee8
Fixes for mingw32
2014-12-07 01:51:50 +00:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
6cebcb7314
Disable constexpr on clang < 3.3
2014-12-06 19:00:41 +00:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
6b8e0c7cde
Apparently Boost doesn't define is_nothrow_destructible. Oh well.
2014-12-06 18:15:42 +00:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
a78136cbaa
Added missing include.
2014-12-06 18:12:25 +00:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
b71585e30e
Try again GCC 4.7 fix.
2014-12-06 18:06:06 +00:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
7cb221fc44
More workaround for GCC 4.7
2014-12-06 18:02:51 +00:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
6c73529c92
Fix for libstdc++ 4.7
2014-12-06 17:50:05 +00:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
10673d10c3
upd
2014-12-06 17:31:01 +00:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
0c5b52957d
upd
2014-12-06 16:37:41 +00:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
2dfceea3cd
Revert "Try skipping precheck on ARM"
...
This reverts commit 98d8a8715f
.
2014-12-04 14:18:19 +00:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
98d8a8715f
Try skipping precheck on ARM
2014-12-04 14:04:29 +00:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
00fcaf54c3
Only use XCHG instead of CMPXCHG on Intel only.
2014-12-04 13:40:59 +00:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
dff8efe464
Replaced consume precheck with relaxed precheck.
2014-12-04 13:10:58 +00:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
79e9d0ac47
Added a BOOST_SPINLOCK_USE_VOLATILE_READ_FOR_AVOIDING_CMPXCHG macro.
2014-12-03 23:24:56 +00:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
aa4999fc6e
Replace atomic acquire with volatile read on MSVC only.
2014-12-03 23:14:45 +00:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
a0e25e9729
Got it compiling under VS2013 again.
2014-12-03 23:04:26 +00:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
9700ccdf5c
Now working with improved BindLib.
2014-11-20 18:40:53 +00:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
dca8edd5c8
refresh bindlib
2014-11-10 19:39:02 +00:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
84c6a0adf9
Fixed missing inline.
2014-11-07 23:28:19 +00:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
0f00886f4c
Made standalone selectable.
2014-11-04 11:07:33 +00:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
991c79c627
Missed one in former commit
2014-10-30 18:25:47 +00:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
83e7f521bb
Stopped spinlock's valgrind use conflicting with anyone else's.
...
Fixed broken tsan suppression.
2014-10-30 18:21:36 +00:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
e1287e567c
Relocated bindlib and expected into includes
2014-10-29 20:05:58 +00:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
6f57b937c2
Reorged to match Boost library directory conventions.
...
concurrent_unordered_map now has its own header.
2014-10-29 19:51:30 +00:00