Peerplays Fast Compile Library
Find a file
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
CMakeModules Fix build with older cmake 2019-08-17 10:23:15 +02:00
GitVersionGen Collect time of git commit for display in Keyhotee, add function for pretty-printing times 2014-03-31 16:10:52 -04:00
include/fc Improve reflection system and static_variant 2019-08-30 14:21:36 -05:00
src Improve reflection system and static_variant 2019-08-30 14:21:36 -05:00
tests Improve reflection system and static_variant 2019-08-30 14:21:36 -05:00
vendor bump websocketpp for Boost 1.70 2019-08-05 10:24:12 -05:00
.gitignore Pulled CMake check for -latomic 2019-04-23 16:45:44 +02:00
.gitmodules Update websocketpp to a forked and patched version 2018-03-06 16:28:20 +00:00
.travis.yml Roll API tests into all_tests 2019-05-13 17:24:11 -05:00
CMakeLists.txt Merge pull request #151 from pmconrad/1948_fix_editline 2019-08-21 14:10:19 +02:00
Doxyfile Add Doxyfile 2018-02-06 18:36:07 -03:00
fc.natvis Removed unused stuff 2019-04-04 17:59:51 +02:00
README-ecc.md Created tests/* subfolders 2015-07-27 21:23:15 +02:00
README.md add travis build status 2018-03-22 20:44:40 -03:00
sonar-project.properties Modifications to run sonar-scanner during travis build 2018-05-11 21:57:19 +02:00

fc

NOTE: This fork reverts upstream commit a421e28048 to avoid changing the BitShares API.

FC stands for fast-compiling c++ library and provides a set of utility libraries useful for the development of asynchronous libraries. Some of the highlights include:

  • Cooperative Multi-Tasking Library with support for Futures, mutexes, signals.
  • Wrapper on Boost ASIO for handling async opperations cooperatively with easy to code synchronous style.
  • Reflection for C++ allowing automatic serialization in Json & Binary of C++ Structs
  • Automatic generation of client / server stubs for reflected interfaces with support for JSON-RPC
  • Cryptographic Primitives for a variaty of hashes and encryption algorithms
  • Logging Infrastructure
  • Wraps many Boost APIs, such as boost::filesystem, boost::thread, and boost::exception to acceleate compiles
  • Support for unofficial Boost.Process library.