peerplays-fc/include/fc
Nathan Hourt c69ea32613 Improve reflection system and static_variant
Previously, fc reflection generated visitor infrastructure capable of
visiting each field of a struct; however, this is only useful for run-
time operations on structures. No compile-time information was preserved
about the fields of a struct, making compile-time introspection of types
impossible.

Now FC reflection generates rich compile-time information about the
members of structs, including types, names, and structure, allowing
code to be written to explore types in detail at compile-time and fetch
arbitrary fields at runtime without needing to iterate over the unwanted
fields.

To make this a reality, a new `typelist` type was added to store this
compile-time information. This type is also useful within the context of
`static_variant`, as SV previously used implementation detail types in a
private namespace to provide this functionality. Now `static_variant`
uses the reusable functionality of `typelist` to operate, dramatically
reducing the amount of code dedicated to `static_variant` and also
making `static_variant` types more flexible to work with since their
infrastructure is now based on the `typelist` public interface.
2019-08-30 14:21:36 -05:00
..
compress Removed unused stuff 2019-04-04 17:59:51 +02:00
container Removed unused stuff 2019-04-04 17:59:51 +02:00
crypto Make data_size static in hash classes 2019-06-10 23:24:09 +02:00
exception Replace NO_RETURN with [[noreturn]] standard attribute 2019-06-06 14:41:47 +02:00
interprocess Merge pull request #119 from bitshares/shared-ws-client-ptr 2019-05-10 15:24:15 +02:00
io Use common inline functions for splitting/combining uint128 to/from two uint64 values 2019-06-11 08:51:59 +02:00
log Fix warnings 2019-08-29 11:26:34 -05:00
network Fix core #1935 2019-08-19 12:09:53 +02:00
reflect Improve reflection system and static_variant 2019-08-30 14:21:36 -05:00
rpc Merge pull request #145 from nathanhourt/bts_1898 2019-08-13 19:24:18 +02:00
thread Make task internal storage private 2019-06-19 17:40:22 +02:00
api.hpp Ref #126: Cleanup/revert unwanted changes 2019-05-13 17:25:49 -05:00
asio.hpp Replace one more "new promise" with "promise::create" 2019-07-26 15:02:17 +02:00
bloom_filter.hpp Added constexpr where applicable 2019-06-06 14:41:47 +02:00
config.hpp Changed MAX_PREALLOC_SIZE to 2^8 2019-01-07 19:01:33 +01:00
filesystem.hpp Removed unused stuff 2019-04-04 17:59:51 +02:00
fwd.hpp Removed unused stuff 2019-04-04 17:59:51 +02:00
fwd_impl.hpp Replaced fc::forward with std::forward 2019-06-06 14:41:47 +02:00
git_revision.hpp Move/rename git revision info compiled into FC to be more self-explanatory 2014-05-20 18:02:20 -04:00
optional.hpp Replaced fc::forward with std::forward 2019-06-06 14:41:47 +02:00
platform_independence.hpp Untested popcnt code for Windows 2013-09-22 14:10:40 -04:00
popcount.hpp Replace fc::uint128 with boost::multiprecision::uint128_t 2019-06-06 14:41:09 +02:00
safe.hpp Added constexpr where applicable 2019-06-06 14:41:47 +02:00
signals.hpp Intermediate 2019-06-06 14:39:14 +02:00
stacktrace.hpp Added boost stacktrace to segfault handler 2018-04-09 08:11:38 -05:00
static_variant.hpp Improve reflection system and static_variant 2019-08-30 14:21:36 -05:00
string.hpp support openbsd // make code compliant with clang 2019-08-15 12:22:54 +02:00
time.hpp Removed unused stuff 2019-04-04 17:59:51 +02:00
uint128.hpp Use common inline functions for splitting/combining uint128 to/from two uint64 values 2019-06-11 08:51:59 +02:00
utf8.hpp Update a comment to avoid confusing doxygen 2019-07-18 23:15:22 +02:00
variant.hpp support openbsd // make code compliant with clang 2019-08-15 12:22:54 +02:00
variant_object.hpp Replaced fc::forward with std::forward 2019-06-06 14:41:47 +02:00