A cross-platform C++17 runtime reflection library with a code generator and dynamic library API.
Refureku is a cross-platform C++17 runtime reflection library that provides dynamic introspection capabilities for C++ applications. It solves the problem of manual, error-prone reflection by automating code generation through its Kodgen module, allowing developers to inspect and manipulate types, fields, methods, and classes at runtime. The library enables features like instantiating objects without static type knowledge, calling reflected methods, and attaching custom metadata via a property system.
C++ developers working on large-scale projects requiring runtime reflection, such as game engines, tools with plugin systems, or applications needing dynamic type inspection and serialization. It is particularly suited for teams prioritizing automation and flexibility in their reflection setup.
Developers choose Refureku for its automated, file-change-driven code generation that eliminates manual reflection efforts, its customizable macro syntax that integrates seamlessly into any codebase, and its extensible property system inspired by C# attributes. Its design for cross-platform compatibility and support for dynamic libraries makes it a robust choice for complex C++ projects.
Cross-platform C++17 Runtime Reflection Library
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Incremental regeneration only when source files change eliminates manual reflection efforts and reduces errors, as highlighted in the design goals.
Users define their own macros for marking entities, allowing seamless integration into any project without imposed third-party syntax.
Supports reflection of namespaces, classes, methods, fields, enums, templates, and multiple inheritance, making it versatile for complex C++ codebases.
Manages reflection for runtime-loaded/unloaded libraries, essential for plugin systems and game engine development as per the design goals.
MSVC has known issues with template template parameters and nested class templates, which can break reflection in certain scenarios as noted in the README.
Requires integrating and maintaining the Kodgen code generator, adding setup overhead and potential dependency management challenges.
As a runtime reflection library, it introduces costs for type lookups, method invocations, and field access compared to compile-time alternatives.