Peerplays Fast Compile Library
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. |
||
|---|---|---|
| CMakeModules | ||
| GitVersionGen | ||
| include/fc | ||
| src | ||
| tests | ||
| vendor | ||
| .gitignore | ||
| .gitmodules | ||
| .travis.yml | ||
| CMakeLists.txt | ||
| Doxyfile | ||
| fc.natvis | ||
| README-ecc.md | ||
| README.md | ||
| sonar-project.properties | ||
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.