├── .gitattributes
├── docs
├── doc.png
├── bc_s.png
├── bdwn.png
├── nav_f.png
├── nav_g.png
├── nav_h.png
├── open.png
├── tab_a.png
├── tab_b.png
├── tab_h.png
├── tab_s.png
├── closed.png
├── doxygen.png
├── splitbar.png
├── sync_off.png
├── sync_on.png
├── folderopen.png
├── folderclosed.png
├── search
│ ├── close.png
│ ├── mag_sel.png
│ ├── search_l.png
│ ├── search_m.png
│ ├── search_r.png
│ ├── pages_3.js
│ ├── pages_1.js
│ ├── classes_3.js
│ ├── files_1.js
│ ├── classes_c.js
│ ├── classes_1.js
│ ├── pages_2.js
│ ├── typedefs_5.js
│ ├── typedefs_b.js
│ ├── all_12.js
│ ├── typedefs_2.js
│ ├── typedefs_9.js
│ ├── typedefs_d.js
│ ├── variables_b.js
│ ├── files_2.js
│ ├── functions_d.js
│ ├── variables_5.js
│ ├── variables_a.js
│ ├── variables_3.js
│ ├── variables_1.js
│ ├── variables_6.js
│ ├── typedefs_1.js
│ ├── typedefs_e.js
│ ├── files_0.js
│ ├── classes_5.js
│ ├── classes_9.js
│ ├── classes_a.js
│ ├── pages_0.js
│ ├── typedefs_6.js
│ ├── functions_c.js
│ ├── classes_8.js
│ ├── functions_b.js
│ ├── all_11.js
│ ├── variables_0.js
│ ├── all_10.js
│ ├── typedefs_4.js
│ ├── typedefs_7.js
│ ├── variables_9.js
│ ├── all_1.js
│ ├── functions_9.js
│ ├── variables_8.js
│ ├── all_a.js
│ ├── variables_7.js
│ ├── classes_b.js
│ ├── classes_7.js
│ ├── functions_0.js
│ ├── nomatches.html
│ ├── all_8.js
│ ├── all_6.js
│ ├── functions_5.js
│ ├── classes_0.js
│ ├── typedefs_a.js
│ ├── functions_3.js
│ ├── namespaces_0.js
│ ├── variables_4.js
│ ├── variables_2.js
│ ├── searchdata.js
│ ├── typedefs_3.js
│ ├── typedefs_0.js
│ ├── functions_a.js
│ ├── typedefs_8.js
│ ├── classes_4.js
│ ├── functions_2.js
│ ├── functions_7.js
│ ├── all_e.js
│ ├── defines_0.js
│ ├── all_c.js
│ ├── all_0.html
│ ├── all_1.html
│ ├── all_10.html
│ ├── all_11.html
│ ├── all_12.html
│ ├── all_2.html
│ ├── all_3.html
│ ├── all_4.html
│ ├── all_5.html
│ ├── all_6.html
│ ├── all_7.html
│ ├── all_8.html
│ ├── all_9.html
│ ├── all_a.html
│ ├── all_b.html
│ ├── all_c.html
│ ├── all_d.html
│ ├── all_e.html
│ ├── all_f.html
│ ├── files_0.html
│ ├── files_1.html
│ ├── files_2.html
│ ├── pages_0.html
│ ├── pages_1.html
│ ├── pages_2.html
│ ├── pages_3.html
│ ├── classes_0.html
│ ├── classes_1.html
│ ├── classes_2.html
│ ├── classes_3.html
│ ├── classes_4.html
│ ├── classes_5.html
│ ├── classes_6.html
│ ├── classes_7.html
│ ├── classes_8.html
│ ├── classes_9.html
│ ├── classes_a.html
│ ├── classes_b.html
│ ├── classes_c.html
│ ├── defines_0.html
│ ├── functions_0.html
│ ├── functions_1.html
│ ├── functions_2.html
│ ├── functions_3.html
│ ├── functions_4.html
│ ├── functions_5.html
│ ├── functions_6.html
│ ├── functions_7.html
│ ├── functions_8.html
│ ├── functions_9.html
│ ├── functions_a.html
│ ├── functions_b.html
│ ├── functions_c.html
│ ├── functions_d.html
│ ├── namespaces_0.html
│ ├── typedefs_0.html
│ ├── typedefs_1.html
│ ├── typedefs_2.html
│ ├── typedefs_3.html
│ ├── typedefs_4.html
│ ├── typedefs_5.html
│ ├── typedefs_6.html
│ ├── typedefs_7.html
│ ├── typedefs_8.html
│ ├── typedefs_9.html
│ ├── typedefs_a.html
│ ├── typedefs_b.html
│ ├── typedefs_c.html
│ ├── typedefs_d.html
│ ├── typedefs_e.html
│ ├── variables_0.html
│ ├── variables_1.html
│ ├── variables_2.html
│ ├── variables_3.html
│ ├── variables_4.html
│ ├── variables_5.html
│ ├── variables_6.html
│ ├── variables_7.html
│ ├── variables_8.html
│ ├── variables_9.html
│ ├── variables_a.html
│ ├── variables_b.html
│ ├── classes_2.js
│ ├── functions_1.js
│ ├── typedefs_c.js
│ ├── all_4.js
│ ├── functions_6.js
│ ├── all_0.js
│ ├── classes_6.js
│ ├── all_9.js
│ ├── all_b.js
│ ├── functions_8.js
│ ├── all_3.js
│ └── all_f.js
├── annotated_dup.js
├── namespaces_dup.js
├── dir_d44c64559bbebec7f509842c48db8b23.js
├── files_dup.js
├── namespacerefl_1_1runtime.js
├── structrefl_1_1attr_1_1base__types.js
├── namespacerefl_1_1member.js
├── structrefl_1_1trait_1_1remove__qualifiers.js
├── structrefl_1_1util_1_1type__list_3_01_t_01_4.js
├── structrefl_1_1attr_1_1debug.js
├── structrefl_1_1trait_1_1as__tuple_3_01_t_3_01_ts_8_8_8_01_4_01_4.js
├── structrefl_1_1runtime_1_1proxy.js
├── structrefl_1_1trait_1_1as__type__list_3_01_t_3_01_ts_8_8_8_01_4_01_4.js
├── structrefl_1_1trait_1_1map_3_01_mapper_00_01type__list_3_01_ts_8_8_8_01_4_01_4.js
├── structrefl_1_1trait_1_1filter_3_01_predicate_00_01type__list_3_01_ts_8_8_8_01_4_01_4.js
├── classrefl_1_1descriptor_1_1field__descriptor.js
├── classrefl_1_1descriptor_1_1function__descriptor.js
├── namespacerefl_1_1util.js
├── structrefl_1_1attr_1_1property.js
├── namespacerefl_1_1attr_1_1usage.js
├── namespacerefl_1_1attr.js
├── namespacerefl.js
├── classrefl_1_1descriptor_1_1member__descriptor__base.js
├── namespacerefl_1_1descriptor.js
├── classrefl_1_1descriptor_1_1type__descriptor.js
└── structrefl_1_1util_1_1const__string.js
├── screenshots
├── builders.png
└── introspection.png
├── test
├── 010-TestCase.cpp
├── 030-TypeList.hpp
├── CMakeLists.txt
├── 080-Runtime.hpp
├── 020-ConstString.hpp
└── 090-StdTypes.hpp
├── cmake
├── in-source-guard.cmake
├── variables.cmake
└── install-rules.cmake
├── bench
└── CMakeLists.txt
├── examples
├── CMakeLists.txt
└── example-inheritance.cpp
├── .gitignore
├── .github
└── FUNDING.yml
├── LICENSE
├── CMakeLists.txt
└── .circleci
└── config.yml
/.gitattributes:
--------------------------------------------------------------------------------
1 | * text=auto
2 | docs/** binary
3 |
--------------------------------------------------------------------------------
/docs/doc.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/veselink1/refl-cpp/HEAD/docs/doc.png
--------------------------------------------------------------------------------
/docs/bc_s.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/veselink1/refl-cpp/HEAD/docs/bc_s.png
--------------------------------------------------------------------------------
/docs/bdwn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/veselink1/refl-cpp/HEAD/docs/bdwn.png
--------------------------------------------------------------------------------
/docs/nav_f.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/veselink1/refl-cpp/HEAD/docs/nav_f.png
--------------------------------------------------------------------------------
/docs/nav_g.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/veselink1/refl-cpp/HEAD/docs/nav_g.png
--------------------------------------------------------------------------------
/docs/nav_h.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/veselink1/refl-cpp/HEAD/docs/nav_h.png
--------------------------------------------------------------------------------
/docs/open.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/veselink1/refl-cpp/HEAD/docs/open.png
--------------------------------------------------------------------------------
/docs/tab_a.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/veselink1/refl-cpp/HEAD/docs/tab_a.png
--------------------------------------------------------------------------------
/docs/tab_b.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/veselink1/refl-cpp/HEAD/docs/tab_b.png
--------------------------------------------------------------------------------
/docs/tab_h.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/veselink1/refl-cpp/HEAD/docs/tab_h.png
--------------------------------------------------------------------------------
/docs/tab_s.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/veselink1/refl-cpp/HEAD/docs/tab_s.png
--------------------------------------------------------------------------------
/docs/closed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/veselink1/refl-cpp/HEAD/docs/closed.png
--------------------------------------------------------------------------------
/docs/doxygen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/veselink1/refl-cpp/HEAD/docs/doxygen.png
--------------------------------------------------------------------------------
/docs/splitbar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/veselink1/refl-cpp/HEAD/docs/splitbar.png
--------------------------------------------------------------------------------
/docs/sync_off.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/veselink1/refl-cpp/HEAD/docs/sync_off.png
--------------------------------------------------------------------------------
/docs/sync_on.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/veselink1/refl-cpp/HEAD/docs/sync_on.png
--------------------------------------------------------------------------------
/docs/folderopen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/veselink1/refl-cpp/HEAD/docs/folderopen.png
--------------------------------------------------------------------------------
/docs/folderclosed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/veselink1/refl-cpp/HEAD/docs/folderclosed.png
--------------------------------------------------------------------------------
/docs/search/close.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/veselink1/refl-cpp/HEAD/docs/search/close.png
--------------------------------------------------------------------------------
/docs/search/mag_sel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/veselink1/refl-cpp/HEAD/docs/search/mag_sel.png
--------------------------------------------------------------------------------
/docs/search/search_l.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/veselink1/refl-cpp/HEAD/docs/search/search_l.png
--------------------------------------------------------------------------------
/docs/search/search_m.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/veselink1/refl-cpp/HEAD/docs/search/search_m.png
--------------------------------------------------------------------------------
/docs/search/search_r.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/veselink1/refl-cpp/HEAD/docs/search/search_r.png
--------------------------------------------------------------------------------
/screenshots/builders.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/veselink1/refl-cpp/HEAD/screenshots/builders.png
--------------------------------------------------------------------------------
/docs/annotated_dup.js:
--------------------------------------------------------------------------------
1 | var annotated_dup =
2 | [
3 | [ "refl", "namespacerefl.html", "namespacerefl" ]
4 | ];
--------------------------------------------------------------------------------
/docs/namespaces_dup.js:
--------------------------------------------------------------------------------
1 | var namespaces_dup =
2 | [
3 | [ "refl", "namespacerefl.html", "namespacerefl" ]
4 | ];
--------------------------------------------------------------------------------
/screenshots/introspection.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/veselink1/refl-cpp/HEAD/screenshots/introspection.png
--------------------------------------------------------------------------------
/docs/search/pages_3.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['readme_413',['README',['../md__r_e_a_d_m_e.html',1,'']]]
4 | ];
5 |
--------------------------------------------------------------------------------
/docs/search/pages_1.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['deprecated_20list_411',['Deprecated List',['../deprecated.html',1,'']]]
4 | ];
5 |
--------------------------------------------------------------------------------
/docs/search/classes_3.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['debug_212',['debug',['../structrefl_1_1attr_1_1debug.html',1,'refl::attr']]]
4 | ];
5 |
--------------------------------------------------------------------------------
/docs/search/files_1.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['introduction_2emd_258',['Introduction.md',['../_introduction_8md.html',1,'']]]
4 | ];
5 |
--------------------------------------------------------------------------------
/docs/search/classes_c.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['unique_247',['unique',['../structrefl_1_1trait_1_1unique.html',1,'refl::trait']]]
4 | ];
5 |
--------------------------------------------------------------------------------
/docs/dir_d44c64559bbebec7f509842c48db8b23.js:
--------------------------------------------------------------------------------
1 | var dir_d44c64559bbebec7f509842c48db8b23 =
2 | [
3 | [ "refl.hpp", "refl_8hpp.html", "refl_8hpp" ]
4 | ];
--------------------------------------------------------------------------------
/docs/files_dup.js:
--------------------------------------------------------------------------------
1 | var files_dup =
2 | [
3 | [ "include", "dir_d44c64559bbebec7f509842c48db8b23.html", "dir_d44c64559bbebec7f509842c48db8b23" ]
4 | ];
--------------------------------------------------------------------------------
/docs/search/classes_1.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['base_5ftypes_203',['base_types',['../structrefl_1_1attr_1_1base__types.html',1,'refl::attr']]]
4 | ];
5 |
--------------------------------------------------------------------------------
/docs/search/pages_2.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['introduction_20to_20refl_2dcpp_412',['Introduction to refl-cpp',['../md__introduction.html',1,'']]]
4 | ];
5 |
--------------------------------------------------------------------------------
/docs/namespacerefl_1_1runtime.js:
--------------------------------------------------------------------------------
1 | var namespacerefl_1_1runtime =
2 | [
3 | [ "proxy", "structrefl_1_1runtime_1_1proxy.html", "structrefl_1_1runtime_1_1proxy" ]
4 | ];
--------------------------------------------------------------------------------
/docs/search/typedefs_5.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['get_5ft_374',['get_t',['../namespacerefl_1_1trait.html#a90fc62b3597ebdeda8040ff78c0628c3',1,'refl::trait']]]
4 | ];
5 |
--------------------------------------------------------------------------------
/docs/search/typedefs_b.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['skip_5ft_390',['skip_t',['../namespacerefl_1_1trait.html#a5cfe5ce0bb235343bab9b69d5115a738',1,'refl::trait']]]
4 | ];
5 |
--------------------------------------------------------------------------------
/docs/search/all_12.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['write_198',['write',['../structrefl_1_1attr_1_1debug.html#a58a9c166189b75b1d482fc2f7e0336d9',1,'refl::attr::debug']]]
4 | ];
5 |
--------------------------------------------------------------------------------
/docs/search/typedefs_2.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['concat_5ft_366',['concat_t',['../namespacerefl_1_1trait.html#a7cb4edd88d696f71ecbdc82783c6ded2',1,'refl::trait']]]
4 | ];
5 |
--------------------------------------------------------------------------------
/docs/search/typedefs_9.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['prepend_5ft_385',['prepend_t',['../namespacerefl_1_1trait.html#ab8b29546446a5c8334ee733b161e6f3e',1,'refl::trait']]]
4 | ];
5 |
--------------------------------------------------------------------------------
/docs/search/typedefs_d.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['unique_5ft_398',['unique_t',['../namespacerefl_1_1trait.html#ace2b39ac60915978d350f5921c7e5a47',1,'refl::trait']]]
4 | ];
5 |
--------------------------------------------------------------------------------
/docs/search/variables_b.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['write_360',['write',['../structrefl_1_1attr_1_1debug.html#a58a9c166189b75b1d482fc2f7e0336d9',1,'refl::attr::debug']]]
4 | ];
5 |
--------------------------------------------------------------------------------
/docs/search/files_2.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['readme_2emd_259',['README.md',['../_r_e_a_d_m_e_8md.html',1,'']]],
4 | ['refl_2ehpp_260',['refl.hpp',['../refl_8hpp.html',1,'']]]
5 | ];
6 |
--------------------------------------------------------------------------------
/docs/search/functions_d.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['unreflect_5ftypes_340',['unreflect_types',['../namespacerefl_1_1util.html#ad67a3c06ac31131661f1fb1cee670fbc',1,'refl::util']]]
4 | ];
5 |
--------------------------------------------------------------------------------
/docs/search/variables_5.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['list_352',['list',['../structrefl_1_1attr_1_1base__types.html#a1de0c6ee5fa8bf39070b6163ad6ea29d',1,'refl::attr::base_types']]]
4 | ];
5 |
--------------------------------------------------------------------------------
/docs/search/variables_a.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['value_359',['value',['../structrefl_1_1trait_1_1is__proxy.html#a50e3e48d3a4a9893b363b731d02be31e',1,'refl::trait::is_proxy']]]
4 | ];
5 |
--------------------------------------------------------------------------------
/docs/structrefl_1_1attr_1_1base__types.js:
--------------------------------------------------------------------------------
1 | var structrefl_1_1attr_1_1base__types =
2 | [
3 | [ "list_type", "structrefl_1_1attr_1_1base__types.html#a5bf13a7cf1300a7fec27ea0918a86adc", null ]
4 | ];
--------------------------------------------------------------------------------
/docs/namespacerefl_1_1member.js:
--------------------------------------------------------------------------------
1 | var namespacerefl_1_1member =
2 | [
3 | [ "field", "structrefl_1_1member_1_1field.html", null ],
4 | [ "function", "structrefl_1_1member_1_1function.html", null ]
5 | ];
--------------------------------------------------------------------------------
/docs/search/variables_3.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['friendly_5fname_347',['friendly_name',['../structrefl_1_1attr_1_1property.html#a8c45f77ef5159115250f2294bd37d296',1,'refl::attr::property']]]
4 | ];
5 |
--------------------------------------------------------------------------------
/docs/search/variables_1.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['bases_342',['bases',['../classrefl_1_1descriptor_1_1type__descriptor.html#a49cb64fdc7142034426db38142cfa67b',1,'refl::descriptor::type_descriptor']]]
4 | ];
5 |
--------------------------------------------------------------------------------
/docs/structrefl_1_1trait_1_1remove__qualifiers.js:
--------------------------------------------------------------------------------
1 | var structrefl_1_1trait_1_1remove__qualifiers =
2 | [
3 | [ "type", "structrefl_1_1trait_1_1remove__qualifiers.html#a39800dbc8004ea52c246cdda69f4d409", null ]
4 | ];
--------------------------------------------------------------------------------
/docs/search/variables_6.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['members_353',['members',['../classrefl_1_1descriptor_1_1type__descriptor.html#a48f1fddd822d40866a30bf1ebd60fa1a',1,'refl::descriptor::type_descriptor']]]
4 | ];
5 |
--------------------------------------------------------------------------------
/docs/search/typedefs_1.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['base_5ftypes_365',['base_types',['../classrefl_1_1descriptor_1_1type__descriptor.html#ab2c94fbeba96fd5d7259ee3843e5ddbe',1,'refl::descriptor::type_descriptor']]]
4 | ];
5 |
--------------------------------------------------------------------------------
/docs/structrefl_1_1util_1_1type__list_3_01_t_01_4.js:
--------------------------------------------------------------------------------
1 | var structrefl_1_1util_1_1type__list_3_01_t_01_4 =
2 | [
3 | [ "type", "structrefl_1_1util_1_1type__list_3_01_t_01_4.html#a5b8f143671b0f6ce8c7675b5b905817c", null ]
4 | ];
--------------------------------------------------------------------------------
/docs/search/typedefs_e.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['value_5ftype_399',['value_type',['../classrefl_1_1descriptor_1_1field__descriptor.html#afcc7c5c7e2ee1a67cab3a6b526d092d2',1,'refl::descriptor::field_descriptor']]]
4 | ];
5 |
--------------------------------------------------------------------------------
/docs/search/files_0.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['changelog_2emd_256',['CHANGELOG.md',['../_c_h_a_n_g_e_l_o_g_8md.html',1,'']]],
4 | ['code_5fof_5fconduct_2emd_257',['CODE_OF_CONDUCT.md',['../_c_o_d_e___o_f___c_o_n_d_u_c_t_8md.html',1,'']]]
5 | ];
6 |
--------------------------------------------------------------------------------
/docs/search/classes_5.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['get_3c_20n_2c_20type_5flist_3c_20ts_2e_2e_2e_20_3e_20_3e_218',['get< N, type_list< Ts... > >',['../structrefl_1_1trait_1_1get_3_01_n_00_01type__list_3_01_ts_8_8_8_01_4_01_4.html',1,'refl::trait']]]
4 | ];
5 |
--------------------------------------------------------------------------------
/docs/search/classes_9.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['remove_5fqualifiers_240',['remove_qualifiers',['../structrefl_1_1trait_1_1remove__qualifiers.html',1,'refl::trait']]],
4 | ['reverse_241',['reverse',['../structrefl_1_1trait_1_1reverse.html',1,'refl::trait']]]
5 | ];
6 |
--------------------------------------------------------------------------------
/docs/search/classes_a.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['skip_3c_20n_2c_20type_5flist_3c_20ts_2e_2e_2e_20_3e_20_3e_242',['skip< N, type_list< Ts... > >',['../structrefl_1_1trait_1_1skip_3_01_n_00_01type__list_3_01_ts_8_8_8_01_4_01_4.html',1,'refl::trait']]]
4 | ];
5 |
--------------------------------------------------------------------------------
/docs/structrefl_1_1attr_1_1debug.js:
--------------------------------------------------------------------------------
1 | var structrefl_1_1attr_1_1debug =
2 | [
3 | [ "debug", "structrefl_1_1attr_1_1debug.html#a728cae0e89dc7148a607ffa66b12bbb3", null ],
4 | [ "write", "structrefl_1_1attr_1_1debug.html#a58a9c166189b75b1d482fc2f7e0336d9", null ]
5 | ];
--------------------------------------------------------------------------------
/docs/search/pages_0.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['changelog_409',['Changelog',['../md__c_h_a_n_g_e_l_o_g.html',1,'']]],
4 | ['contributor_20covenant_20code_20of_20conduct_410',['Contributor Covenant Code of Conduct',['../md__c_o_d_e__o_f__c_o_n_d_u_c_t.html',1,'']]]
5 | ];
6 |
--------------------------------------------------------------------------------
/test/010-TestCase.cpp:
--------------------------------------------------------------------------------
1 | #include "020-ConstString.hpp"
2 | #include "030-TypeList.hpp"
3 | #include "040-TypeTraits.hpp"
4 | #include "050-Attributes.hpp"
5 | #include "060-Utils.hpp"
6 | #include "070-Descriptors.hpp"
7 | #include "080-Runtime.hpp"
8 | #include "090-StdTypes.hpp"
9 |
--------------------------------------------------------------------------------
/docs/structrefl_1_1trait_1_1as__tuple_3_01_t_3_01_ts_8_8_8_01_4_01_4.js:
--------------------------------------------------------------------------------
1 | var structrefl_1_1trait_1_1as__tuple_3_01_t_3_01_ts_8_8_8_01_4_01_4 =
2 | [
3 | [ "type", "structrefl_1_1trait_1_1as__tuple_3_01_t_3_01_ts_8_8_8_01_4_01_4.html#a3e95f7ce1f7fc859ecf26fc145926995", null ]
4 | ];
--------------------------------------------------------------------------------
/docs/search/typedefs_6.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['init_375',['init',['../namespacerefl_1_1trait.html#ae0240bb2e53db6d575271a9d5ebb8e85',1,'refl::trait']]],
4 | ['init_5ft_376',['init_t',['../namespacerefl_1_1trait.html#a73d3d356c430a7247749d0fb7fb037af',1,'refl::trait']]]
5 | ];
6 |
--------------------------------------------------------------------------------
/docs/structrefl_1_1runtime_1_1proxy.js:
--------------------------------------------------------------------------------
1 | var structrefl_1_1runtime_1_1proxy =
2 | [
3 | [ "target_type", "structrefl_1_1runtime_1_1proxy.html#a81d8bc1490cfcbfc4ac3cbbcbb299393", null ],
4 | [ "proxy", "structrefl_1_1runtime_1_1proxy.html#aa35d06ce63700a4bde6f31cd640fcc5f", null ]
5 | ];
--------------------------------------------------------------------------------
/docs/search/functions_c.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['to_5farray_338',['to_array',['../namespacerefl_1_1util.html#a6ebcdc8886ed6cf62bd914eb9566882a',1,'refl::util']]],
4 | ['to_5ftuple_339',['to_tuple',['../namespacerefl_1_1util.html#af7db9918de2fd9e0d34caf4b6a5c1f77',1,'refl::util']]]
5 | ];
6 |
--------------------------------------------------------------------------------
/docs/structrefl_1_1trait_1_1as__type__list_3_01_t_3_01_ts_8_8_8_01_4_01_4.js:
--------------------------------------------------------------------------------
1 | var structrefl_1_1trait_1_1as__type__list_3_01_t_3_01_ts_8_8_8_01_4_01_4 =
2 | [
3 | [ "type", "structrefl_1_1trait_1_1as__type__list_3_01_t_3_01_ts_8_8_8_01_4_01_4.html#a83bf2f383c12d5294c40d3f91400f118", null ]
4 | ];
--------------------------------------------------------------------------------
/cmake/in-source-guard.cmake:
--------------------------------------------------------------------------------
1 | if(CMAKE_SOURCE_DIR STREQUAL CMAKE_BINARY_DIR)
2 | message(FATAL_ERROR "\
3 | FATAL: In-source builds are not supported. \n\
4 | Make a new directory (e.g., 'build/'), and run CMake from there. \
5 | You may need to delete 'CMakeCache.txt' and 'CMakeFiles/'.")
6 | endif()
7 |
--------------------------------------------------------------------------------
/docs/structrefl_1_1trait_1_1map_3_01_mapper_00_01type__list_3_01_ts_8_8_8_01_4_01_4.js:
--------------------------------------------------------------------------------
1 | var structrefl_1_1trait_1_1map_3_01_mapper_00_01type__list_3_01_ts_8_8_8_01_4_01_4 =
2 | [
3 | [ "type", "structrefl_1_1trait_1_1map_3_01_mapper_00_01type__list_3_01_ts_8_8_8_01_4_01_4.html#aadf599e0604372e946f11d1b00f657d1", null ]
4 | ];
--------------------------------------------------------------------------------
/docs/search/classes_8.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['prepend_237',['prepend',['../structrefl_1_1trait_1_1prepend.html',1,'refl::trait']]],
4 | ['property_238',['property',['../structrefl_1_1attr_1_1property.html',1,'refl::attr']]],
5 | ['proxy_239',['proxy',['../structrefl_1_1runtime_1_1proxy.html',1,'refl::runtime']]]
6 | ];
7 |
--------------------------------------------------------------------------------
/docs/search/functions_b.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['str_336',['str',['../structrefl_1_1util_1_1const__string.html#a25bdf3f17b20a34f25f4bd7b624c6aa7',1,'refl::util::const_string']]],
4 | ['substr_337',['substr',['../structrefl_1_1util_1_1const__string.html#ac43d0430fdf61b1fb9fe62bb61457d68',1,'refl::util::const_string']]]
5 | ];
6 |
--------------------------------------------------------------------------------
/docs/structrefl_1_1trait_1_1filter_3_01_predicate_00_01type__list_3_01_ts_8_8_8_01_4_01_4.js:
--------------------------------------------------------------------------------
1 | var structrefl_1_1trait_1_1filter_3_01_predicate_00_01type__list_3_01_ts_8_8_8_01_4_01_4 =
2 | [
3 | [ "type", "structrefl_1_1trait_1_1filter_3_01_predicate_00_01type__list_3_01_ts_8_8_8_01_4_01_4.html#adb3370c903a75a6e3cc0d41fdc3c70bc", null ]
4 | ];
--------------------------------------------------------------------------------
/docs/classrefl_1_1descriptor_1_1field__descriptor.js:
--------------------------------------------------------------------------------
1 | var classrefl_1_1descriptor_1_1field__descriptor =
2 | [
3 | [ "value_type", "classrefl_1_1descriptor_1_1field__descriptor.html#afcc7c5c7e2ee1a67cab3a6b526d092d2", null ],
4 | [ "operator()", "classrefl_1_1descriptor_1_1field__descriptor.html#af003db500839f3ca03b9408bcf76b009", null ]
5 | ];
--------------------------------------------------------------------------------
/docs/search/all_11.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['value_196',['value',['../structrefl_1_1trait_1_1is__proxy.html#a50e3e48d3a4a9893b363b731d02be31e',1,'refl::trait::is_proxy']]],
4 | ['value_5ftype_197',['value_type',['../classrefl_1_1descriptor_1_1field__descriptor.html#afcc7c5c7e2ee1a67cab3a6b526d092d2',1,'refl::descriptor::field_descriptor']]]
5 | ];
6 |
--------------------------------------------------------------------------------
/docs/classrefl_1_1descriptor_1_1function__descriptor.js:
--------------------------------------------------------------------------------
1 | var classrefl_1_1descriptor_1_1function__descriptor =
2 | [
3 | [ "return_type", "classrefl_1_1descriptor_1_1function__descriptor.html#a7f6f665c1d51087c1aa253eaf3edbeae", null ],
4 | [ "operator()", "classrefl_1_1descriptor_1_1function__descriptor.html#a2b9b03211b3a7c0f0fcd1c760579008e", null ]
5 | ];
--------------------------------------------------------------------------------
/docs/namespacerefl_1_1util.js:
--------------------------------------------------------------------------------
1 | var namespacerefl_1_1util =
2 | [
3 | [ "const_string", "structrefl_1_1util_1_1const__string.html", "structrefl_1_1util_1_1const__string" ],
4 | [ "type_list", "structrefl_1_1util_1_1type__list.html", null ],
5 | [ "type_list< T >", "structrefl_1_1util_1_1type__list_3_01_t_01_4.html", "structrefl_1_1util_1_1type__list_3_01_t_01_4" ]
6 | ];
--------------------------------------------------------------------------------
/docs/search/variables_0.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['attributes_341',['attributes',['../classrefl_1_1descriptor_1_1member__descriptor__base.html#a410121cb42388625a57cfb910d31cdb7',1,'refl::descriptor::member_descriptor_base::attributes()'],['../classrefl_1_1descriptor_1_1type__descriptor.html#ad71db44823dc75bcdd6bcd98449bab31',1,'refl::descriptor::type_descriptor::attributes()']]]
4 | ];
5 |
--------------------------------------------------------------------------------
/docs/structrefl_1_1attr_1_1property.js:
--------------------------------------------------------------------------------
1 | var structrefl_1_1attr_1_1property =
2 | [
3 | [ "property", "structrefl_1_1attr_1_1property.html#a9d0c531c6eead628be9a0c3789d0c73c", null ],
4 | [ "property", "structrefl_1_1attr_1_1property.html#aeb55e70be282efc6f9d33718378b3e60", null ],
5 | [ "friendly_name", "structrefl_1_1attr_1_1property.html#a8c45f77ef5159115250f2294bd37d296", null ]
6 | ];
--------------------------------------------------------------------------------
/docs/search/all_10.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['unique_193',['unique',['../structrefl_1_1trait_1_1unique.html',1,'refl::trait']]],
4 | ['unique_5ft_194',['unique_t',['../namespacerefl_1_1trait.html#ace2b39ac60915978d350f5921c7e5a47',1,'refl::trait']]],
5 | ['unreflect_5ftypes_195',['unreflect_types',['../namespacerefl_1_1util.html#ad67a3c06ac31131661f1fb1cee670fbc',1,'refl::util']]]
6 | ];
7 |
--------------------------------------------------------------------------------
/docs/search/typedefs_4.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['filter_5ft_371',['filter_t',['../namespacerefl_1_1trait.html#afb7c8b735416e75efa6443d59fe46493',1,'refl::trait']]],
4 | ['first_372',['first',['../namespacerefl_1_1trait.html#ab4aae36e6ff8c6d3adb2cc91ba985e80',1,'refl::trait']]],
5 | ['first_5ft_373',['first_t',['../namespacerefl_1_1trait.html#a8c142f0b5a366ee8b67c0009fa01c9d2',1,'refl::trait']]]
6 | ];
7 |
--------------------------------------------------------------------------------
/docs/search/typedefs_7.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['last_377',['last',['../namespacerefl_1_1trait.html#a11002f7ba1b41398115b0b102c0bacf0',1,'refl::trait']]],
4 | ['last_5ft_378',['last_t',['../namespacerefl_1_1trait.html#a2260f346ec8347a51e5f40c626bb0e07',1,'refl::trait']]],
5 | ['list_5ftype_379',['list_type',['../structrefl_1_1attr_1_1base__types.html#a5bf13a7cf1300a7fec27ea0918a86adc',1,'refl::attr::base_types']]]
6 | ];
7 |
--------------------------------------------------------------------------------
/docs/namespacerefl_1_1attr_1_1usage.js:
--------------------------------------------------------------------------------
1 | var namespacerefl_1_1attr_1_1usage =
2 | [
3 | [ "any", "structrefl_1_1attr_1_1usage_1_1any.html", null ],
4 | [ "field", "structrefl_1_1attr_1_1usage_1_1field.html", null ],
5 | [ "function", "structrefl_1_1attr_1_1usage_1_1function.html", null ],
6 | [ "member", "structrefl_1_1attr_1_1usage_1_1member.html", null ],
7 | [ "type", "structrefl_1_1attr_1_1usage_1_1type.html", null ]
8 | ];
--------------------------------------------------------------------------------
/docs/namespacerefl_1_1attr.js:
--------------------------------------------------------------------------------
1 | var namespacerefl_1_1attr =
2 | [
3 | [ "usage", "namespacerefl_1_1attr_1_1usage.html", "namespacerefl_1_1attr_1_1usage" ],
4 | [ "base_types", "structrefl_1_1attr_1_1base__types.html", "structrefl_1_1attr_1_1base__types" ],
5 | [ "debug", "structrefl_1_1attr_1_1debug.html", "structrefl_1_1attr_1_1debug" ],
6 | [ "property", "structrefl_1_1attr_1_1property.html", "structrefl_1_1attr_1_1property" ]
7 | ];
--------------------------------------------------------------------------------
/docs/search/variables_9.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['size_358',['size',['../structrefl_1_1util_1_1const__string.html#a426d87f33a7778a82e1169bd9de752e0',1,'refl::util::const_string::size()'],['../structrefl_1_1util_1_1type__list.html#ac0814fc38f041e46d2ab9258213910f3',1,'refl::util::type_list::size()'],['../structrefl_1_1util_1_1type__list_3_01_t_01_4.html#a2c3cf22f32a610a070a248353cb8e89e',1,'refl::util::type_list< T >::size()']]]
4 | ];
5 |
--------------------------------------------------------------------------------
/docs/search/all_1.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['base_5ftypes_13',['base_types',['../structrefl_1_1attr_1_1base__types.html',1,'refl::attr::base_types< Ts >'],['../classrefl_1_1descriptor_1_1type__descriptor.html#ab2c94fbeba96fd5d7259ee3843e5ddbe',1,'refl::descriptor::type_descriptor::base_types()']]],
4 | ['bases_14',['bases',['../classrefl_1_1descriptor_1_1type__descriptor.html#a49cb64fdc7142034426db38142cfa67b',1,'refl::descriptor::type_descriptor']]]
5 | ];
6 |
--------------------------------------------------------------------------------
/docs/search/functions_9.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['property_330',['property',['../structrefl_1_1attr_1_1property.html#a9d0c531c6eead628be9a0c3789d0c73c',1,'refl::attr::property::property() noexcept'],['../structrefl_1_1attr_1_1property.html#aeb55e70be282efc6f9d33718378b3e60',1,'refl::attr::property::property(const char *friendly_name) noexcept']]],
4 | ['proxy_331',['proxy',['../structrefl_1_1runtime_1_1proxy.html#aa35d06ce63700a4bde6f31cd640fcc5f',1,'refl::runtime::proxy']]]
5 | ];
6 |
--------------------------------------------------------------------------------
/docs/search/variables_8.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['pointer_356',['pointer',['../classrefl_1_1descriptor_1_1field__descriptor.html#ad5a2424645cac6591a1e9cdd66a4a994',1,'refl::descriptor::field_descriptor::pointer()'],['../classrefl_1_1descriptor_1_1function__descriptor.html#a6e18ad19be31eb26acfe1e84fd320c36',1,'refl::descriptor::function_descriptor::pointer()']]],
4 | ['proxy_357',['proxy',['../namespacerefl_1_1runtime.html#a10ea7c32cad8eb5cc0512f774a65da04',1,'refl::runtime']]]
5 | ];
6 |
--------------------------------------------------------------------------------
/docs/search/all_a.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['name_132',['name',['../classrefl_1_1descriptor_1_1member__descriptor__base.html#a5d009e0abbaad1707d6cdb5cf743f18b',1,'refl::descriptor::member_descriptor_base::name()'],['../classrefl_1_1descriptor_1_1type__descriptor.html#a2593e5ff02d41a4a4c0d45194c21ac6b',1,'refl::descriptor::type_descriptor::name()']]],
4 | ['npos_133',['npos',['../structrefl_1_1util_1_1const__string.html#abad5b68a7c03fcccc05acb4468edb0e6',1,'refl::util::const_string']]]
5 | ];
6 |
--------------------------------------------------------------------------------
/docs/search/variables_7.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['name_354',['name',['../classrefl_1_1descriptor_1_1member__descriptor__base.html#a5d009e0abbaad1707d6cdb5cf743f18b',1,'refl::descriptor::member_descriptor_base::name()'],['../classrefl_1_1descriptor_1_1type__descriptor.html#a2593e5ff02d41a4a4c0d45194c21ac6b',1,'refl::descriptor::type_descriptor::name()']]],
4 | ['npos_355',['npos',['../structrefl_1_1util_1_1const__string.html#abad5b68a7c03fcccc05acb4468edb0e6',1,'refl::util::const_string']]]
5 | ];
6 |
--------------------------------------------------------------------------------
/docs/search/classes_b.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['type_243',['type',['../structrefl_1_1attr_1_1usage_1_1type.html',1,'refl::attr::usage']]],
4 | ['type_5fdescriptor_244',['type_descriptor',['../classrefl_1_1descriptor_1_1type__descriptor.html',1,'refl::descriptor']]],
5 | ['type_5flist_245',['type_list',['../structrefl_1_1util_1_1type__list.html',1,'refl::util']]],
6 | ['type_5flist_3c_20t_20_3e_246',['type_list< T >',['../structrefl_1_1util_1_1type__list_3_01_t_01_4.html',1,'refl::util']]]
7 | ];
8 |
--------------------------------------------------------------------------------
/bench/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | cmake_minimum_required(VERSION 3.14)
2 |
3 | project(refl-cpp-bench CXX)
4 |
5 | if(refl-cpp_EXAMPLES_USE_INSTALLED)
6 | find_package(refl-cpp REQUIRED)
7 | endif()
8 |
9 | set(
10 | benches
11 | large-pod
12 | large-pod-search
13 | )
14 |
15 | foreach(bench IN LISTS benches)
16 | add_executable("${bench}" "bench-${bench}.cpp")
17 | target_link_libraries("${bench}" PRIVATE refl-cpp::refl-cpp)
18 | target_compile_features("${bench}" PRIVATE cxx_std_17)
19 | endforeach()
20 |
--------------------------------------------------------------------------------
/docs/namespacerefl.js:
--------------------------------------------------------------------------------
1 | var namespacerefl =
2 | [
3 | [ "attr", "namespacerefl_1_1attr.html", "namespacerefl_1_1attr" ],
4 | [ "descriptor", "namespacerefl_1_1descriptor.html", "namespacerefl_1_1descriptor" ],
5 | [ "member", "namespacerefl_1_1member.html", "namespacerefl_1_1member" ],
6 | [ "runtime", "namespacerefl_1_1runtime.html", "namespacerefl_1_1runtime" ],
7 | [ "trait", "namespacerefl_1_1trait.html", "namespacerefl_1_1trait" ],
8 | [ "util", "namespacerefl_1_1util.html", "namespacerefl_1_1util" ]
9 | ];
--------------------------------------------------------------------------------
/docs/search/classes_7.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['map_3c_20mapper_2c_20type_5flist_3c_20ts_2e_2e_2e_20_3e_20_3e_234',['map< Mapper, type_list< Ts... > >',['../structrefl_1_1trait_1_1map_3_01_mapper_00_01type__list_3_01_ts_8_8_8_01_4_01_4.html',1,'refl::trait']]],
4 | ['member_235',['member',['../structrefl_1_1attr_1_1usage_1_1member.html',1,'refl::attr::usage']]],
5 | ['member_5fdescriptor_5fbase_236',['member_descriptor_base',['../classrefl_1_1descriptor_1_1member__descriptor__base.html',1,'refl::descriptor']]]
6 | ];
7 |
--------------------------------------------------------------------------------
/docs/search/functions_0.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['accumulate_261',['accumulate',['../namespacerefl_1_1util.html#a75e4295de1bf1350238fe01eb71d9cc1',1,'refl::util']]],
4 | ['apply_262',['apply',['../namespacerefl_1_1util.html#ab5d05c1c63f4794ce67cbdd71f322ae6',1,'refl::util']]],
5 | ['as_5ftuple_263',['as_tuple',['../namespacerefl_1_1util.html#a2eef47de6755754bb8666bf61b118014',1,'refl::util']]],
6 | ['as_5ftype_5flist_264',['as_type_list',['../namespacerefl_1_1util.html#a17fc91d7a4e148a502003f8ce4edeeef',1,'refl::util']]]
7 | ];
8 |
--------------------------------------------------------------------------------
/docs/search/nomatches.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/docs/search/all_8.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['last_116',['last',['../namespacerefl_1_1trait.html#a11002f7ba1b41398115b0b102c0bacf0',1,'refl::trait']]],
4 | ['last_5ft_117',['last_t',['../namespacerefl_1_1trait.html#a2260f346ec8347a51e5f40c626bb0e07',1,'refl::trait']]],
5 | ['list_118',['list',['../structrefl_1_1attr_1_1base__types.html#a1de0c6ee5fa8bf39070b6163ad6ea29d',1,'refl::attr::base_types']]],
6 | ['list_5ftype_119',['list_type',['../structrefl_1_1attr_1_1base__types.html#a5bf13a7cf1300a7fec27ea0918a86adc',1,'refl::attr::base_types']]]
7 | ];
8 |
--------------------------------------------------------------------------------
/test/030-TypeList.hpp:
--------------------------------------------------------------------------------
1 | #include "refl.hpp"
2 | #include "extern/catch2/catch.hpp"
3 |
4 | using namespace refl;
5 |
6 | TEST_CASE( "type list" ) {
7 |
8 | SECTION( "basic properties" ) {
9 | REQUIRE( type_list<>::size == 0 );
10 | REQUIRE( type_list::size == 1 );
11 | REQUIRE( type_list::size == 2 );
12 |
13 | REQUIRE( type_tag::size == 1 );
14 | REQUIRE( std::is_same_v, type_list> );
15 | REQUIRE( std::is_same_v::type, int> );
16 | }
17 |
18 | }
--------------------------------------------------------------------------------
/docs/search/all_6.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['has_5fattribute_84',['has_attribute',['../namespacerefl_1_1descriptor.html#a024d98e2fa7e18a1d7ece243549cde68',1,'refl::descriptor']]],
4 | ['has_5fbases_85',['has_bases',['../namespacerefl_1_1descriptor.html#ac00126ab409dbc1a5445d37832876fe2',1,'refl::descriptor']]],
5 | ['has_5freader_86',['has_reader',['../namespacerefl_1_1descriptor.html#a3d943ef351c700532badfa3c5d4ba953',1,'refl::descriptor']]],
6 | ['has_5fwriter_87',['has_writer',['../namespacerefl_1_1descriptor.html#a3677023906e7fb31d6267d4afdaeffde',1,'refl::descriptor']]]
7 | ];
8 |
--------------------------------------------------------------------------------
/docs/search/functions_5.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['has_5fattribute_302',['has_attribute',['../namespacerefl_1_1descriptor.html#a024d98e2fa7e18a1d7ece243549cde68',1,'refl::descriptor']]],
4 | ['has_5fbases_303',['has_bases',['../namespacerefl_1_1descriptor.html#ac00126ab409dbc1a5445d37832876fe2',1,'refl::descriptor']]],
5 | ['has_5freader_304',['has_reader',['../namespacerefl_1_1descriptor.html#a3d943ef351c700532badfa3c5d4ba953',1,'refl::descriptor']]],
6 | ['has_5fwriter_305',['has_writer',['../namespacerefl_1_1descriptor.html#a3677023906e7fb31d6267d4afdaeffde',1,'refl::descriptor']]]
7 | ];
8 |
--------------------------------------------------------------------------------
/docs/classrefl_1_1descriptor_1_1member__descriptor__base.js:
--------------------------------------------------------------------------------
1 | var classrefl_1_1descriptor_1_1member__descriptor__base =
2 | [
3 | [ "attribute_types", "classrefl_1_1descriptor_1_1member__descriptor__base.html#ae8eb41df4e6d17f6e223f8ed5abe581d", null ],
4 | [ "declaring_type", "classrefl_1_1descriptor_1_1member__descriptor__base.html#af70beb1e0da54d076535cd8fb3dd5381", null ],
5 | [ "member", "classrefl_1_1descriptor_1_1member__descriptor__base.html#a04376d3b487a104c34065345ce477e88", null ],
6 | [ "member_type", "classrefl_1_1descriptor_1_1member__descriptor__base.html#a098cba21d2e91ee593b59573295b04d4", null ]
7 | ];
--------------------------------------------------------------------------------
/docs/namespacerefl_1_1descriptor.js:
--------------------------------------------------------------------------------
1 | var namespacerefl_1_1descriptor =
2 | [
3 | [ "field_descriptor", "classrefl_1_1descriptor_1_1field__descriptor.html", "classrefl_1_1descriptor_1_1field__descriptor" ],
4 | [ "function_descriptor", "classrefl_1_1descriptor_1_1function__descriptor.html", "classrefl_1_1descriptor_1_1function__descriptor" ],
5 | [ "member_descriptor_base", "classrefl_1_1descriptor_1_1member__descriptor__base.html", "classrefl_1_1descriptor_1_1member__descriptor__base" ],
6 | [ "type_descriptor", "classrefl_1_1descriptor_1_1type__descriptor.html", "classrefl_1_1descriptor_1_1type__descriptor" ]
7 | ];
--------------------------------------------------------------------------------
/docs/search/classes_0.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['any_199',['any',['../structrefl_1_1attr_1_1usage_1_1any.html',1,'refl::attr::usage']]],
4 | ['append_200',['append',['../structrefl_1_1trait_1_1append.html',1,'refl::trait']]],
5 | ['as_5ftuple_3c_20t_3c_20ts_2e_2e_2e_20_3e_20_3e_201',['as_tuple< T< Ts... > >',['../structrefl_1_1trait_1_1as__tuple_3_01_t_3_01_ts_8_8_8_01_4_01_4.html',1,'refl::trait']]],
6 | ['as_5ftype_5flist_3c_20t_3c_20ts_2e_2e_2e_20_3e_20_3e_202',['as_type_list< T< Ts... > >',['../structrefl_1_1trait_1_1as__type__list_3_01_t_3_01_ts_8_8_8_01_4_01_4.html',1,'refl::trait']]]
7 | ];
8 |
--------------------------------------------------------------------------------
/docs/search/typedefs_a.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['remove_5fqualifiers_5ft_386',['remove_qualifiers_t',['../namespacerefl_1_1trait.html#a281a1cb4e19fe3ff645e48867aa8daf1',1,'refl::trait']]],
4 | ['result_5ftype_387',['result_type',['../namespacerefl_1_1descriptor.html#a99b739222556b1550c354fe00fe7ed38',1,'refl::descriptor']]],
5 | ['return_5ftype_388',['return_type',['../classrefl_1_1descriptor_1_1function__descriptor.html#a7f6f665c1d51087c1aa253eaf3edbeae',1,'refl::descriptor::function_descriptor']]],
6 | ['reverse_5ft_389',['reverse_t',['../namespacerefl_1_1trait.html#a07f78f44c53134d640b52d34ca1d9031',1,'refl::trait']]]
7 | ];
8 |
--------------------------------------------------------------------------------
/docs/search/functions_3.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['filter_276',['filter',['../namespacerefl_1_1util.html#a097549e41bac7745db61442f94135c41',1,'refl::util']]],
4 | ['find_277',['find',['../structrefl_1_1util_1_1const__string.html#a90d93009e7ae4bccec928c9342b197af',1,'refl::util::const_string']]],
5 | ['find_5ffirst_278',['find_first',['../namespacerefl_1_1util.html#ad1d30e9de0766352287491f18da067c0',1,'refl::util']]],
6 | ['find_5fone_279',['find_one',['../namespacerefl_1_1util.html#a6685e65aeb830a5e27dc8e4f2085ce27',1,'refl::util']]],
7 | ['for_5feach_280',['for_each',['../namespacerefl_1_1util.html#a19919596cdd45c858d891c91a7826b22',1,'refl::util']]]
8 | ];
9 |
--------------------------------------------------------------------------------
/docs/search/namespaces_0.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['attr_248',['attr',['../namespacerefl_1_1attr.html',1,'refl']]],
4 | ['descriptor_249',['descriptor',['../namespacerefl_1_1descriptor.html',1,'refl']]],
5 | ['member_250',['member',['../namespacerefl_1_1member.html',1,'refl']]],
6 | ['refl_251',['refl',['../namespacerefl.html',1,'']]],
7 | ['runtime_252',['runtime',['../namespacerefl_1_1runtime.html',1,'refl']]],
8 | ['trait_253',['trait',['../namespacerefl_1_1trait.html',1,'refl']]],
9 | ['usage_254',['usage',['../namespacerefl_1_1attr_1_1usage.html',1,'refl::attr']]],
10 | ['util_255',['util',['../namespacerefl_1_1util.html',1,'refl']]]
11 | ];
12 |
--------------------------------------------------------------------------------
/cmake/variables.cmake:
--------------------------------------------------------------------------------
1 | string(
2 | COMPARE EQUAL
3 | "${CMAKE_SOURCE_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}"
4 | PROJECT_IS_TOP_LEVEL
5 | )
6 |
7 | # ---- Developer mode ----
8 |
9 | if(PROJECT_IS_TOP_LEVEL)
10 | option(refl-cpp_DEVELOPER_MODE "Enable developer mode" OFF)
11 |
12 | if("$ENV{CI}")
13 | set(refl-cpp_DEVELOPER_MODE ON CACHE INTERNAL "")
14 | endif()
15 | endif()
16 |
17 | # ---- Warning guard ----
18 |
19 | # Protect dependents from this project's warnings if the guard isn't disabled
20 | set(refl-cpp_warning_guard SYSTEM)
21 | if(PROJECT_IS_TOP_LEVEL OR refl-cpp_INCLUDE_WITHOUT_SYSTEM)
22 | set(refl-cpp_warning_guard "")
23 | endif()
24 |
--------------------------------------------------------------------------------
/examples/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | cmake_minimum_required(VERSION 3.14)
2 |
3 | project(refl-cpp-examples CXX)
4 |
5 | if(refl-cpp_EXAMPLES_USE_INSTALLED)
6 | find_package(refl-cpp REQUIRED)
7 | endif()
8 |
9 | set(
10 | examples
11 | binding
12 | builders
13 | custom-rtti
14 | dao
15 | inheritance
16 | # macro
17 | partials
18 | proxy
19 | serialization
20 | struct-of-arrays
21 | )
22 |
23 | foreach(example IN LISTS examples)
24 | add_executable("${example}" "example-${example}.cpp")
25 | target_link_libraries("${example}" PRIVATE refl-cpp::refl-cpp)
26 | target_compile_features("${example}" PRIVATE cxx_std_17)
27 | endforeach()
28 |
--------------------------------------------------------------------------------
/docs/search/variables_4.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['is_5fresolved_348',['is_resolved',['../classrefl_1_1descriptor_1_1function__descriptor.html#a338ea7515da170e4f31c77b2c6857b45',1,'refl::descriptor::function_descriptor']]],
4 | ['is_5fstatic_349',['is_static',['../classrefl_1_1descriptor_1_1field__descriptor.html#a955e6c913b0427ccfaf99716d22b4f5b',1,'refl::descriptor::field_descriptor']]],
5 | ['is_5ftype_5fv_350',['is_type_v',['../namespacerefl_1_1trait.html#a9c31605a5aef99561286104c9a3da628',1,'refl::trait']]],
6 | ['is_5fwritable_351',['is_writable',['../classrefl_1_1descriptor_1_1field__descriptor.html#a637571eacbfda7d622f4b9b2a555b7cd',1,'refl::descriptor::field_descriptor']]]
7 | ];
8 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Prerequisites
2 | *.d
3 |
4 | # Compiled Object files
5 | *.slo
6 | *.lo
7 | *.o
8 | *.obj
9 |
10 | # Precompiled Headers
11 | *.gch
12 | *.pch
13 |
14 | # Compiled Dynamic libraries
15 | *.so
16 | *.dylib
17 | *.dll
18 |
19 | # Fortran module files
20 | *.mod
21 | *.smod
22 |
23 | # Compiled Static libraries
24 | *.lai
25 | *.la
26 | *.a
27 | *.lib
28 |
29 | # Executables
30 | *.exe
31 | *.out
32 | *.app
33 |
34 | # Annoying OS Generated Files
35 | .DS_Store
36 | .DS_Store?
37 | ._*
38 | .Spotlight-V100
39 | .Trashes
40 | ehthumbs.db
41 | Thumbs.db
42 | .directory
43 | *~
44 |
45 | # IDE files
46 | .vs/
47 | .idea/
48 | .vscode/
49 | language.settings.xml
50 | **/**.swp
51 |
--------------------------------------------------------------------------------
/docs/search/variables_2.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['data_343',['data',['../structrefl_1_1util_1_1const__string.html#a8ee1a2f4b8fd6d71b7556661f379426a',1,'refl::util::const_string']]],
4 | ['declarator_344',['declarator',['../classrefl_1_1descriptor_1_1member__descriptor__base.html#a80719a0106e9f454c29c8363c0e694e4',1,'refl::descriptor::member_descriptor_base']]],
5 | ['declared_5fbases_345',['declared_bases',['../classrefl_1_1descriptor_1_1type__descriptor.html#a47c4ff48babd4b3c949a9f20fd4cfca2',1,'refl::descriptor::type_descriptor']]],
6 | ['declared_5fmembers_346',['declared_members',['../classrefl_1_1descriptor_1_1type__descriptor.html#a49d984bc4bcb37717d3dc95a1815a4ba',1,'refl::descriptor::type_descriptor']]]
7 | ];
8 |
--------------------------------------------------------------------------------
/.github/FUNDING.yml:
--------------------------------------------------------------------------------
1 | # These are supported funding model platforms
2 |
3 | github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
4 | patreon: # Replace with a single Patreon username
5 | open_collective: # Replace with a single Open Collective username
6 | ko_fi: # Replace with a single Ko-fi username
7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
9 | liberapay: # veselink1
10 | issuehunt: # Replace with a single IssueHunt username
11 | otechie: # Replace with a single Otechie username
12 | custom: ['https://www.paypal.com/donate/?hosted_button_id=TTR5538T85QJE']
13 |
--------------------------------------------------------------------------------
/docs/search/searchdata.js:
--------------------------------------------------------------------------------
1 | var indexSectionsWithContent =
2 | {
3 | 0: "abcdfghilmnoprstuvw",
4 | 1: "abcdfgimprstu",
5 | 2: "r",
6 | 3: "cir",
7 | 4: "acdfghimoprstu",
8 | 5: "abdfilmnpsvw",
9 | 6: "abcdfgilmprstuv",
10 | 7: "r",
11 | 8: "cdir"
12 | };
13 |
14 | var indexSectionNames =
15 | {
16 | 0: "all",
17 | 1: "classes",
18 | 2: "namespaces",
19 | 3: "files",
20 | 4: "functions",
21 | 5: "variables",
22 | 6: "typedefs",
23 | 7: "defines",
24 | 8: "pages"
25 | };
26 |
27 | var indexSectionLabels =
28 | {
29 | 0: "All",
30 | 1: "Classes",
31 | 2: "Namespaces",
32 | 3: "Files",
33 | 4: "Functions",
34 | 5: "Variables",
35 | 6: "Typedefs",
36 | 7: "Macros",
37 | 8: "Pages"
38 | };
39 |
40 |
--------------------------------------------------------------------------------
/docs/search/typedefs_3.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['declared_5fbase_5ftypes_367',['declared_base_types',['../classrefl_1_1descriptor_1_1type__descriptor.html#ac15c7097cb5c702c83802465cd364c3c',1,'refl::descriptor::type_descriptor']]],
4 | ['declared_5fmember_5flist_368',['declared_member_list',['../namespacerefl_1_1descriptor.html#a8c50bc8b2fa157709ed2453246d0f9a0',1,'refl::descriptor']]],
5 | ['declared_5fmember_5ftypes_369',['declared_member_types',['../classrefl_1_1descriptor_1_1type__descriptor.html#a0974752f92b74a055bc9d8335d493fdf',1,'refl::descriptor::type_descriptor']]],
6 | ['declaring_5ftype_370',['declaring_type',['../classrefl_1_1descriptor_1_1member__descriptor__base.html#af70beb1e0da54d076535cd8fb3dd5381',1,'refl::descriptor::member_descriptor_base']]]
7 | ];
8 |
--------------------------------------------------------------------------------
/docs/search/typedefs_0.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['append_5ft_361',['append_t',['../namespacerefl_1_1trait.html#a644910ba9f353221e50e2541a492e5cc',1,'refl::trait']]],
4 | ['as_5ftuple_5ft_362',['as_tuple_t',['../namespacerefl_1_1trait.html#a7528d00a7777f3ea5bae8b6bb2814b26',1,'refl::trait']]],
5 | ['as_5ftype_5flist_5ft_363',['as_type_list_t',['../namespacerefl_1_1trait.html#ae2279db43338368acb8af9ade961a504',1,'refl::trait']]],
6 | ['attribute_5ftypes_364',['attribute_types',['../classrefl_1_1descriptor_1_1member__descriptor__base.html#ae8eb41df4e6d17f6e223f8ed5abe581d',1,'refl::descriptor::member_descriptor_base::attribute_types()'],['../classrefl_1_1descriptor_1_1type__descriptor.html#a0b45390046a31d03e076aa44899005a4',1,'refl::descriptor::type_descriptor::attribute_types()']]]
7 | ];
8 |
--------------------------------------------------------------------------------
/docs/classrefl_1_1descriptor_1_1type__descriptor.js:
--------------------------------------------------------------------------------
1 | var classrefl_1_1descriptor_1_1type__descriptor =
2 | [
3 | [ "attribute_types", "classrefl_1_1descriptor_1_1type__descriptor.html#a0b45390046a31d03e076aa44899005a4", null ],
4 | [ "base_types", "classrefl_1_1descriptor_1_1type__descriptor.html#ab2c94fbeba96fd5d7259ee3843e5ddbe", null ],
5 | [ "declared_base_types", "classrefl_1_1descriptor_1_1type__descriptor.html#ac15c7097cb5c702c83802465cd364c3c", null ],
6 | [ "declared_member_types", "classrefl_1_1descriptor_1_1type__descriptor.html#a0974752f92b74a055bc9d8335d493fdf", null ],
7 | [ "member_types", "classrefl_1_1descriptor_1_1type__descriptor.html#abced96d86e87fce0968b1a9c9c2df561", null ],
8 | [ "type", "classrefl_1_1descriptor_1_1type__descriptor.html#a38599f7e777bda08453cdc4387c03708", null ]
9 | ];
--------------------------------------------------------------------------------
/docs/search/functions_a.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['reflect_332',['reflect',['../namespacerefl.html#ae95fbc2d63a7db5ce4d8a4dcca3d637e',1,'refl::reflect() noexcept'],['../namespacerefl.html#a5a70ee908d690769979f0aa9f57eb3e9',1,'refl::reflect(const T &) noexcept']]],
4 | ['reflect_5ftypes_333',['reflect_types',['../namespacerefl_1_1util.html#a7dfb7f94fdcfc69947d40143b3a07d65',1,'refl::util']]],
5 | ['resolve_334',['resolve',['../classrefl_1_1descriptor_1_1function__descriptor.html#a7f8b63e35466c3c2887f601272d9f0a0',1,'refl::descriptor::function_descriptor::resolve()'],['../namespacerefl_1_1descriptor.html#a1a0a7b34d1892fffb8355aaeff29c750',1,'refl::descriptor::resolve()']]],
6 | ['rfind_335',['rfind',['../structrefl_1_1util_1_1const__string.html#a7c2eae7ebfae9fcc1716d7872ebb2574',1,'refl::util::const_string']]]
7 | ];
8 |
--------------------------------------------------------------------------------
/docs/search/typedefs_8.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['map_5ft_380',['map_t',['../namespacerefl_1_1trait.html#a27b580a856a2aedc8487f28a4ded1c03',1,'refl::trait']]],
4 | ['member_381',['member',['../classrefl_1_1descriptor_1_1member__descriptor__base.html#a04376d3b487a104c34065345ce477e88',1,'refl::descriptor::member_descriptor_base']]],
5 | ['member_5flist_382',['member_list',['../namespacerefl_1_1descriptor.html#a50b88518840c2acd134a2171795bd7c3',1,'refl::descriptor']]],
6 | ['member_5ftype_383',['member_type',['../classrefl_1_1descriptor_1_1member__descriptor__base.html#a098cba21d2e91ee593b59573295b04d4',1,'refl::descriptor::member_descriptor_base']]],
7 | ['member_5ftypes_384',['member_types',['../classrefl_1_1descriptor_1_1type__descriptor.html#abced96d86e87fce0968b1a9c9c2df561',1,'refl::descriptor::type_descriptor']]]
8 | ];
9 |
--------------------------------------------------------------------------------
/docs/search/classes_4.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['field_213',['field',['../structrefl_1_1member_1_1field.html',1,'refl::member::field'],['../structrefl_1_1attr_1_1usage_1_1field.html',1,'refl::attr::usage::field']]],
4 | ['field_5fdescriptor_214',['field_descriptor',['../classrefl_1_1descriptor_1_1field__descriptor.html',1,'refl::descriptor']]],
5 | ['filter_3c_20predicate_2c_20type_5flist_3c_20ts_2e_2e_2e_20_3e_20_3e_215',['filter< Predicate, type_list< Ts... > >',['../structrefl_1_1trait_1_1filter_3_01_predicate_00_01type__list_3_01_ts_8_8_8_01_4_01_4.html',1,'refl::trait']]],
6 | ['function_216',['function',['../structrefl_1_1attr_1_1usage_1_1function.html',1,'refl::attr::usage::function'],['../structrefl_1_1member_1_1function.html',1,'refl::member::function']]],
7 | ['function_5fdescriptor_217',['function_descriptor',['../classrefl_1_1descriptor_1_1function__descriptor.html',1,'refl::descriptor']]]
8 | ];
9 |
--------------------------------------------------------------------------------
/docs/search/functions_2.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['debug_272',['debug',['../structrefl_1_1attr_1_1debug.html#a728cae0e89dc7148a607ffa66b12bbb3',1,'refl::attr::debug::debug()'],['../namespacerefl_1_1runtime.html#a06e1996b05966eac4f282b6656169d6a',1,'refl::runtime::debug(std::basic_ostream< CharT > &os, const T &value, bool compact=false)'],['../namespacerefl_1_1runtime.html#ad3ba25f8e5e09bd30234c28839ec6d7c',1,'refl::runtime::debug(std::basic_ostream< CharT > &os, const T &value, [[maybe_unused]] bool compact)']]],
4 | ['debug_5fall_273',['debug_all',['../namespacerefl_1_1runtime.html#ab63a0044074e3c5a78f8e8a2662783aa',1,'refl::runtime']]],
5 | ['debug_5fall_5fstr_274',['debug_all_str',['../namespacerefl_1_1runtime.html#a57bcab18d57d392f64fea2a46717d47b',1,'refl::runtime']]],
6 | ['debug_5fstr_275',['debug_str',['../namespacerefl_1_1runtime.html#add62a33c7bf6980c9e6d6e5a8977540e',1,'refl::runtime']]]
7 | ];
8 |
--------------------------------------------------------------------------------
/test/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | cmake_minimum_required(VERSION 3.14)
2 |
3 | project(refl-cpp-tests CXX)
4 |
5 | if(refl-cpp_TEST_USE_INSTALLED)
6 | find_package(refl-cpp REQUIRED)
7 | endif()
8 |
9 | # ---- Test ----
10 |
11 | enable_testing()
12 |
13 | set(
14 | sources
15 | 010-TestCase.cpp
16 | 020-ConstString.hpp
17 | 030-TypeList.hpp
18 | 040-TypeTraits.hpp
19 | 050-Attributes.hpp
20 | 060-Utils.hpp
21 | 070-Descriptors.hpp
22 | 080-Runtime.hpp
23 | 090-StdTypes.hpp
24 | extern/catch2/catch.hpp
25 | )
26 |
27 | add_executable(refl-cpp-test ${sources})
28 | target_link_libraries(refl-cpp-test PRIVATE refl-cpp::refl-cpp)
29 | target_compile_features(refl-cpp-test PRIVATE cxx_std_17)
30 | target_include_directories(refl-cpp-test PRIVATE "${PROJECT_SOURCE_DIR}")
31 | set_property(
32 | SOURCE 010-TestCase.cpp
33 | APPEND PROPERTY
34 | COMPILE_DEFINITIONS CATCH_CONFIG_MAIN
35 | )
36 |
37 | add_test(NAME all_tests COMMAND refl-cpp-test)
38 |
--------------------------------------------------------------------------------
/docs/search/functions_7.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['make_5fconst_319',['make_const',['../namespacerefl_1_1util.html#ab419efb086dd5940b0f032810610e2fa',1,'refl::util::make_const(const T &value) noexcept'],['../namespacerefl_1_1util.html#a5acb0bd0c244bac6c75250660d0f37bd',1,'refl::util::make_const(T &value) noexcept']]],
4 | ['make_5fconst_5fstring_320',['make_const_string',['../namespacerefl_1_1util.html#a4902f2250ab00bb4884b348893fb7641',1,'refl::util::make_const_string() noexcept'],['../namespacerefl_1_1util.html#ad79e9e7d64a8511211dc01f0b74e4e17',1,'refl::util::make_const_string(const char(&str)[N]) noexcept'],['../namespacerefl_1_1util.html#af82b6c46a048b294ba533f7552d59bbf',1,'refl::util::make_const_string(char ch) noexcept']]],
5 | ['map_5fto_5farray_321',['map_to_array',['../namespacerefl_1_1util.html#af69ca2ba2b0353b7d3433f6a77b62902',1,'refl::util']]],
6 | ['map_5fto_5ftuple_322',['map_to_tuple',['../namespacerefl_1_1util.html#adb5bb478ef1cc5966e9df7c9b10b5dd3',1,'refl::util']]]
7 | ];
8 |
--------------------------------------------------------------------------------
/docs/search/all_e.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['size_176',['size',['../structrefl_1_1util_1_1const__string.html#a426d87f33a7778a82e1169bd9de752e0',1,'refl::util::const_string::size()'],['../structrefl_1_1util_1_1type__list.html#ac0814fc38f041e46d2ab9258213910f3',1,'refl::util::type_list::size()'],['../structrefl_1_1util_1_1type__list_3_01_t_01_4.html#a2c3cf22f32a610a070a248353cb8e89e',1,'refl::util::type_list< T >::size()']]],
4 | ['skip_3c_20n_2c_20type_5flist_3c_20ts_2e_2e_2e_20_3e_20_3e_177',['skip< N, type_list< Ts... > >',['../structrefl_1_1trait_1_1skip_3_01_n_00_01type__list_3_01_ts_8_8_8_01_4_01_4.html',1,'refl::trait']]],
5 | ['skip_5ft_178',['skip_t',['../namespacerefl_1_1trait.html#a5cfe5ce0bb235343bab9b69d5115a738',1,'refl::trait']]],
6 | ['str_179',['str',['../structrefl_1_1util_1_1const__string.html#a25bdf3f17b20a34f25f4bd7b624c6aa7',1,'refl::util::const_string']]],
7 | ['substr_180',['substr',['../structrefl_1_1util_1_1const__string.html#ac43d0430fdf61b1fb9fe62bb61457d68',1,'refl::util::const_string']]]
8 | ];
9 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2019 Veselin Karaganev
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/docs/search/defines_0.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['refl_5fdetail_5fattributes_400',['REFL_DETAIL_ATTRIBUTES',['../refl_8hpp.html#ad77fb25bb894a5f1f091a4a94fa67b3f',1,'refl.hpp']]],
4 | ['refl_5fdetail_5fforce_5febo_401',['REFL_DETAIL_FORCE_EBO',['../refl_8hpp.html#adc29b89a87a223da5f194d5918ba94f5',1,'refl.hpp']]],
5 | ['refl_5fdetail_5fgroup_402',['REFL_DETAIL_GROUP',['../refl_8hpp.html#a4e6ab98a732ec684223ddfd0734f260f',1,'refl.hpp']]],
6 | ['refl_5fdetail_5fstr_403',['REFL_DETAIL_STR',['../refl_8hpp.html#ac16abdfd738e4366eb239e904b90e930',1,'refl.hpp']]],
7 | ['refl_5fdetail_5fstr_5fimpl_404',['REFL_DETAIL_STR_IMPL',['../refl_8hpp.html#a3eb9f0fdea25c64045020adb97393613',1,'refl.hpp']]],
8 | ['refl_5fdetail_5ftype_5fbody_405',['REFL_DETAIL_TYPE_BODY',['../refl_8hpp.html#ac7f8b46b069c2311101168d841a71b37',1,'refl.hpp']]],
9 | ['refl_5fmake_5fconst_5fstring_406',['REFL_MAKE_CONST_STRING',['../refl_8hpp.html#a2cb939da062920a29a38dff73aaf0968',1,'refl.hpp']]],
10 | ['refl_5ftemplate_407',['REFL_TEMPLATE',['../refl_8hpp.html#a832b795bfa32d4130b04e9e33635c507',1,'refl.hpp']]],
11 | ['refl_5ftype_408',['REFL_TYPE',['../refl_8hpp.html#a2d90ffbabd9fc8cc17579fc33d919d71',1,'refl.hpp']]]
12 | ];
13 |
--------------------------------------------------------------------------------
/docs/search/all_c.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['pointer_141',['pointer',['../classrefl_1_1descriptor_1_1field__descriptor.html#ad5a2424645cac6591a1e9cdd66a4a994',1,'refl::descriptor::field_descriptor::pointer()'],['../classrefl_1_1descriptor_1_1function__descriptor.html#a6e18ad19be31eb26acfe1e84fd320c36',1,'refl::descriptor::function_descriptor::pointer()']]],
4 | ['prepend_142',['prepend',['../structrefl_1_1trait_1_1prepend.html',1,'refl::trait']]],
5 | ['prepend_5ft_143',['prepend_t',['../namespacerefl_1_1trait.html#ab8b29546446a5c8334ee733b161e6f3e',1,'refl::trait']]],
6 | ['property_144',['property',['../structrefl_1_1attr_1_1property.html',1,'refl::attr::property'],['../structrefl_1_1attr_1_1property.html#a9d0c531c6eead628be9a0c3789d0c73c',1,'refl::attr::property::property() noexcept'],['../structrefl_1_1attr_1_1property.html#aeb55e70be282efc6f9d33718378b3e60',1,'refl::attr::property::property(const char *friendly_name) noexcept']]],
7 | ['proxy_145',['proxy',['../structrefl_1_1runtime_1_1proxy.html',1,'refl::runtime::proxy< Derived, Target >'],['../structrefl_1_1runtime_1_1proxy.html#aa35d06ce63700a4bde6f31cd640fcc5f',1,'refl::runtime::proxy::proxy()'],['../namespacerefl_1_1runtime.html#a10ea7c32cad8eb5cc0512f774a65da04',1,'refl::runtime::proxy()']]]
8 | ];
9 |
--------------------------------------------------------------------------------
/docs/structrefl_1_1util_1_1const__string.js:
--------------------------------------------------------------------------------
1 | var structrefl_1_1util_1_1const__string =
2 | [
3 | [ "const_string", "structrefl_1_1util_1_1const__string.html#ac378ca52c38cc6ccc04cab0b73b1f805", null ],
4 | [ "const_string", "structrefl_1_1util_1_1const__string.html#a5ae4b17a4b57f0542f63ae01734f1d86", null ],
5 | [ "const_string", "structrefl_1_1util_1_1const__string.html#abd5ad22466e3c3513257bde29683e0e4", null ],
6 | [ "c_str", "structrefl_1_1util_1_1const__string.html#a465086c5ae8e245358ce44ed8154c986", null ],
7 | [ "find", "structrefl_1_1util_1_1const__string.html#a90d93009e7ae4bccec928c9342b197af", null ],
8 | [ "operator const char *", "structrefl_1_1util_1_1const__string.html#a8f8b7b47319025b4007367b285849fbd", null ],
9 | [ "operator std::string", "structrefl_1_1util_1_1const__string.html#a824c47b1e7641a471b30a519d0a99f74", null ],
10 | [ "rfind", "structrefl_1_1util_1_1const__string.html#a7c2eae7ebfae9fcc1716d7872ebb2574", null ],
11 | [ "str", "structrefl_1_1util_1_1const__string.html#a25bdf3f17b20a34f25f4bd7b624c6aa7", null ],
12 | [ "substr", "structrefl_1_1util_1_1const__string.html#ac43d0430fdf61b1fb9fe62bb61457d68", null ],
13 | [ "data", "structrefl_1_1util_1_1const__string.html#a8ee1a2f4b8fd6d71b7556661f379426a", null ]
14 | ];
--------------------------------------------------------------------------------
/cmake/install-rules.cmake:
--------------------------------------------------------------------------------
1 | if(PROJECT_IS_TOP_LEVEL)
2 | set(CMAKE_INSTALL_INCLUDEDIR include/refl-cpp CACHE PATH "")
3 | endif()
4 |
5 | include(CMakePackageConfigHelpers)
6 | include(GNUInstallDirs)
7 |
8 | install(
9 | DIRECTORY "${PROJECT_SOURCE_DIR}/include/"
10 | DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
11 | COMPONENT refl-cpp_Development
12 | )
13 |
14 | install(
15 | TARGETS refl-cpp
16 | EXPORT refl-cppTargets
17 | INCLUDES DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
18 | )
19 |
20 | write_basic_package_version_file(
21 | refl-cpp-config-version.cmake
22 | COMPATIBILITY SameMajorVersion
23 | ARCH_INDEPENDENT
24 | )
25 |
26 | set(
27 | refl-cpp_INSTALL_CMAKEDIR "${CMAKE_INSTALL_LIBDIR}/cmake/refl-cpp"
28 | CACHE STRING "CMake package config location relative to the install prefix"
29 | )
30 | mark_as_advanced(refl-cpp_INSTALL_CMAKEDIR)
31 |
32 | install(
33 | FILES "${PROJECT_BINARY_DIR}/refl-cpp-config-version.cmake"
34 | DESTINATION "${refl-cpp_INSTALL_CMAKEDIR}"
35 | COMPONENT refl-cpp_Development
36 | )
37 |
38 | install(
39 | EXPORT refl-cppTargets
40 | FILE refl-cpp-config.cmake
41 | NAMESPACE refl-cpp::
42 | DESTINATION "${refl-cpp_INSTALL_CMAKEDIR}"
43 | COMPONENT refl-cpp_Development
44 | )
45 |
46 | if(PROJECT_IS_TOP_LEVEL)
47 | include(CPack)
48 | endif()
49 |
--------------------------------------------------------------------------------
/docs/search/all_0.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/all_1.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/all_10.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/all_11.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/all_12.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/all_2.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/all_3.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/all_4.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/all_5.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/all_6.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/all_7.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/all_8.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/all_9.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/all_a.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/all_b.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/all_c.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/all_d.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/all_e.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/all_f.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/files_0.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/files_1.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/files_2.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/pages_0.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/pages_1.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/pages_2.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/pages_3.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/classes_0.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/classes_1.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/classes_2.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/classes_3.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/classes_4.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/classes_5.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/classes_6.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/classes_7.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/classes_8.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/classes_9.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/classes_a.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/classes_b.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/classes_c.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/defines_0.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/functions_0.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/functions_1.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/functions_2.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/functions_3.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/functions_4.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/functions_5.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/functions_6.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/functions_7.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/functions_8.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/functions_9.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/functions_a.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/functions_b.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/functions_c.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/functions_d.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/namespaces_0.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/typedefs_0.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/typedefs_1.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/typedefs_2.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/typedefs_3.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/typedefs_4.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/typedefs_5.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/typedefs_6.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/typedefs_7.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/typedefs_8.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/typedefs_9.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/typedefs_a.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/typedefs_b.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/typedefs_c.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/typedefs_d.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/typedefs_e.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/variables_0.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/variables_1.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/variables_2.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/variables_3.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/variables_4.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/variables_5.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/variables_6.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/variables_7.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/variables_8.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/variables_9.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/variables_a.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/variables_b.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | cmake_minimum_required(VERSION 3.14)
2 |
3 | project(
4 | refl-cpp
5 | VERSION 0.12.1
6 | DESCRIPTION "A modern compile-time reflection library for C++ with support for overloads, templates, attributes and proxies"
7 | HOMEPAGE_URL "https://github.com/veselink1/refl-cpp"
8 | LANGUAGES CXX
9 | )
10 |
11 | include(cmake/in-source-guard.cmake)
12 | include(cmake/variables.cmake)
13 |
14 | # ---- Declare library ----
15 |
16 | add_library(refl-cpp INTERFACE)
17 | add_library(refl-cpp::refl-cpp ALIAS refl-cpp)
18 |
19 | target_include_directories(
20 | refl-cpp
21 | ${refl-cpp_warning_guard}
22 | INTERFACE
23 | "$"
24 | )
25 |
26 | target_compile_features(refl-cpp INTERFACE cxx_std_17)
27 | if (MSVC)
28 | add_compile_options(/W4)
29 | else()
30 | add_compile_options(-Wall -Wextra -pedantic)
31 | endif()
32 | # ---- Install ----
33 |
34 | include(cmake/install-rules.cmake)
35 |
36 | # ---- Developer mode ----
37 |
38 | if(NOT refl-cpp_DEVELOPER_MODE)
39 | return()
40 | elseif(NOT PROJECT_IS_TOP_LEVEL)
41 | message(AUTHOR_WARNING "Developer mode is for developers of refl-cpp")
42 | endif()
43 |
44 | include(CTest)
45 | if(BUILD_TESTING)
46 | add_subdirectory(test)
47 | endif()
48 |
49 | option(BUILD_EXAMPLES "Build the examples tree." ON)
50 | if(BUILD_EXAMPLES)
51 | add_subdirectory(examples)
52 | endif()
53 |
54 | option(BUILD_BENCHES "Build the bench tree." OFF)
55 | if(BUILD_BENCHES)
56 | add_subdirectory(bench)
57 | endif()
58 |
--------------------------------------------------------------------------------
/docs/search/classes_2.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['concat_204',['concat',['../structrefl_1_1trait_1_1concat.html',1,'refl::trait']]],
4 | ['concat_3c_20concat_3c_20typelist1_2c_20typelist2_20_3e_3a_3atype_2c_20typelists_2e_2e_2e_20_3e_205',['concat< concat< TypeList1, TypeList2 >::type, TypeLists... >',['../structrefl_1_1trait_1_1concat.html',1,'refl::trait']]],
5 | ['concat_3c_20typelist_2c_20type_5flist_3c_20t_20_3e_20_3e_206',['concat< TypeList, type_list< T > >',['../structrefl_1_1trait_1_1concat.html',1,'refl::trait']]],
6 | ['concat_3c_20typelists_2e_2e_2e_20_3e_207',['concat< TypeLists... >',['../structrefl_1_1trait_1_1concat.html',1,'refl::trait']]],
7 | ['const_5fstring_208',['const_string',['../structrefl_1_1util_1_1const__string.html',1,'refl::util']]],
8 | ['contains_3c_20t_2c_20type_5flist_3c_20ts_2e_2e_2e_20_3e_20_3e_209',['contains< T, type_list< Ts... > >',['../structrefl_1_1trait_1_1contains_3_01_t_00_01type__list_3_01_ts_8_8_8_01_4_01_4.html',1,'refl::trait']]],
9 | ['contains_5fbase_3c_20t_2c_20type_5flist_3c_20ts_2e_2e_2e_20_3e_20_3e_210',['contains_base< T, type_list< Ts... > >',['../structrefl_1_1trait_1_1contains__base_3_01_t_00_01type__list_3_01_ts_8_8_8_01_4_01_4.html',1,'refl::trait']]],
10 | ['contains_5finstance_3c_20t_2c_20type_5flist_3c_20ts_2e_2e_2e_20_3e_20_3e_211',['contains_instance< T, type_list< Ts... > >',['../structrefl_1_1trait_1_1contains__instance_3_01_t_00_01type__list_3_01_ts_8_8_8_01_4_01_4.html',1,'refl::trait']]]
11 | ];
12 |
--------------------------------------------------------------------------------
/docs/search/functions_1.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['c_5fstr_265',['c_str',['../structrefl_1_1util_1_1const__string.html#a465086c5ae8e245358ce44ed8154c986',1,'refl::util::const_string']]],
4 | ['can_5fresolve_266',['can_resolve',['../classrefl_1_1descriptor_1_1function__descriptor.html#a892b6413e06e59040945548bc45cc29c',1,'refl::descriptor::function_descriptor::can_resolve()'],['../namespacerefl_1_1descriptor.html#ad3d6702622d06d0e2f5792f903626790',1,'refl::descriptor::can_resolve()']]],
5 | ['const_5fstring_267',['const_string',['../structrefl_1_1util_1_1const__string.html#ac378ca52c38cc6ccc04cab0b73b1f805',1,'refl::util::const_string::const_string() noexcept'],['../structrefl_1_1util_1_1const__string.html#a5ae4b17a4b57f0542f63ae01734f1d86',1,'refl::util::const_string::const_string(const const_string< N > &other) noexcept'],['../structrefl_1_1util_1_1const__string.html#abd5ad22466e3c3513257bde29683e0e4',1,'refl::util::const_string::const_string(const char(&data)[N+1]) noexcept']]],
6 | ['contains_268',['contains',['../namespacerefl_1_1util.html#a9b7d50e103a976d8b4baa9a4e6da67be',1,'refl::util::contains(type_list< Ts... > list, F &&f)'],['../namespacerefl_1_1util.html#adbae658ac1fcf49ae57d8a20a3818ca1',1,'refl::util::contains(type_list< Ts... >)']]],
7 | ['contains_5fbase_269',['contains_base',['../namespacerefl_1_1util.html#ad3f02ce0f4526972a86b23ac8e98678f',1,'refl::util']]],
8 | ['contains_5finstance_270',['contains_instance',['../namespacerefl_1_1util.html#a43d13ecc025c0703aabde8c9489deb34',1,'refl::util']]],
9 | ['count_5fif_271',['count_if',['../namespacerefl_1_1util.html#aea0417f0fd0129f2cf1ee5fa055d9c20',1,'refl::util']]]
10 | ];
11 |
--------------------------------------------------------------------------------
/docs/search/typedefs_c.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['tail_391',['tail',['../namespacerefl_1_1trait.html#a38acd7e400afcfd16d25d5c6ae09e65a',1,'refl::trait']]],
4 | ['tail_5ft_392',['tail_t',['../namespacerefl_1_1trait.html#a96df3c32bb1b2672b5909aa9cca42cf9',1,'refl::trait']]],
5 | ['take_393',['take',['../namespacerefl_1_1trait.html#ab9ae2dbbb031faf63f04ffd59f476140',1,'refl::trait']]],
6 | ['take_5ft_394',['take_t',['../namespacerefl_1_1trait.html#a08a7c33d3ef1f336360a68af8f14bc44',1,'refl::trait']]],
7 | ['target_5ftype_395',['target_type',['../structrefl_1_1runtime_1_1proxy.html#a81d8bc1490cfcbfc4ac3cbbcbb299393',1,'refl::runtime::proxy']]],
8 | ['type_396',['type',['../structrefl_1_1util_1_1type__list_3_01_t_01_4.html#a5b8f143671b0f6ce8c7675b5b905817c',1,'refl::util::type_list< T >::type()'],['../structrefl_1_1trait_1_1remove__qualifiers.html#a39800dbc8004ea52c246cdda69f4d409',1,'refl::trait::remove_qualifiers::type()'],['../structrefl_1_1trait_1_1as__type__list_3_01_t_3_01_ts_8_8_8_01_4_01_4.html#a83bf2f383c12d5294c40d3f91400f118',1,'refl::trait::as_type_list< T< Ts... > >::type()'],['../structrefl_1_1trait_1_1as__tuple_3_01_t_3_01_ts_8_8_8_01_4_01_4.html#a3e95f7ce1f7fc859ecf26fc145926995',1,'refl::trait::as_tuple< T< Ts... > >::type()'],['../structrefl_1_1trait_1_1filter_3_01_predicate_00_01type__list_3_01_ts_8_8_8_01_4_01_4.html#adb3370c903a75a6e3cc0d41fdc3c70bc',1,'refl::trait::filter< Predicate, type_list< Ts... > >::type()'],['../structrefl_1_1trait_1_1map_3_01_mapper_00_01type__list_3_01_ts_8_8_8_01_4_01_4.html#aadf599e0604372e946f11d1b00f657d1',1,'refl::trait::map< Mapper, type_list< Ts... > >::type()'],['../classrefl_1_1descriptor_1_1type__descriptor.html#a38599f7e777bda08453cdc4387c03708',1,'refl::descriptor::type_descriptor::type()']]],
9 | ['type_5ftag_397',['type_tag',['../namespacerefl_1_1util.html#ae902b69e9d164cdf4b6ba5c76eed1825',1,'refl::util']]]
10 | ];
11 |
--------------------------------------------------------------------------------
/docs/search/all_4.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['field_47',['field',['../structrefl_1_1member_1_1field.html',1,'refl::member::field'],['../structrefl_1_1attr_1_1usage_1_1field.html',1,'refl::attr::usage::field']]],
4 | ['field_5fdescriptor_48',['field_descriptor',['../classrefl_1_1descriptor_1_1field__descriptor.html',1,'refl::descriptor']]],
5 | ['filter_49',['filter',['../namespacerefl_1_1util.html#a097549e41bac7745db61442f94135c41',1,'refl::util']]],
6 | ['filter_3c_20predicate_2c_20type_5flist_3c_20ts_2e_2e_2e_20_3e_20_3e_50',['filter< Predicate, type_list< Ts... > >',['../structrefl_1_1trait_1_1filter_3_01_predicate_00_01type__list_3_01_ts_8_8_8_01_4_01_4.html',1,'refl::trait']]],
7 | ['filter_5ft_51',['filter_t',['../namespacerefl_1_1trait.html#afb7c8b735416e75efa6443d59fe46493',1,'refl::trait']]],
8 | ['find_52',['find',['../structrefl_1_1util_1_1const__string.html#a90d93009e7ae4bccec928c9342b197af',1,'refl::util::const_string']]],
9 | ['find_5ffirst_53',['find_first',['../namespacerefl_1_1util.html#ad1d30e9de0766352287491f18da067c0',1,'refl::util']]],
10 | ['find_5fone_54',['find_one',['../namespacerefl_1_1util.html#a6685e65aeb830a5e27dc8e4f2085ce27',1,'refl::util']]],
11 | ['first_55',['first',['../namespacerefl_1_1trait.html#ab4aae36e6ff8c6d3adb2cc91ba985e80',1,'refl::trait']]],
12 | ['first_5ft_56',['first_t',['../namespacerefl_1_1trait.html#a8c142f0b5a366ee8b67c0009fa01c9d2',1,'refl::trait']]],
13 | ['for_5feach_57',['for_each',['../namespacerefl_1_1util.html#a19919596cdd45c858d891c91a7826b22',1,'refl::util']]],
14 | ['friendly_5fname_58',['friendly_name',['../structrefl_1_1attr_1_1property.html#a8c45f77ef5159115250f2294bd37d296',1,'refl::attr::property']]],
15 | ['function_59',['function',['../structrefl_1_1attr_1_1usage_1_1function.html',1,'refl::attr::usage::function'],['../structrefl_1_1member_1_1function.html',1,'refl::member::function']]],
16 | ['function_5fdescriptor_60',['function_descriptor',['../classrefl_1_1descriptor_1_1function__descriptor.html',1,'refl::descriptor']]]
17 | ];
18 |
--------------------------------------------------------------------------------
/test/080-Runtime.hpp:
--------------------------------------------------------------------------------
1 | #include "refl.hpp"
2 | #include "extern/catch2/catch.hpp"
3 |
4 | using namespace refl;
5 |
6 | struct Bar {
7 | int x;
8 | float* y;
9 | const char z;
10 |
11 | void f() {}
12 | void f(int) {}
13 | int g(int) { return 0; }
14 | };
15 |
16 | REFL_TYPE(Bar)
17 | REFL_FIELD(x)
18 | REFL_FIELD(y)
19 | REFL_FIELD(z)
20 |
21 | REFL_FUNC(f)
22 | REFL_FUNC(g)
23 | REFL_END
24 |
25 | struct BarBar {
26 | Bar bar{};
27 | void* vp{nullptr};
28 | int* ip = new int(0);
29 | std::string str = "Hi!";
30 | std::vector bars{ {}, {} };
31 | };
32 |
33 | REFL_TYPE(BarBar)
34 | REFL_FIELD(bar)
35 | REFL_FIELD(vp)
36 | REFL_FIELD(ip)
37 | REFL_FIELD(str)
38 | REFL_FIELD(bars)
39 | REFL_END
40 |
41 | template
42 | struct dummy_proxy : refl::runtime::proxy, T>
43 | {
44 | constexpr dummy_proxy() {}
45 |
46 | template
47 | static constexpr int invoke_impl(...)
48 | {
49 | return 0;
50 | }
51 | };
52 |
53 | TEST_CASE( "runtime utils" ) {
54 |
55 | SECTION( "proxies" ) {
56 | dummy_proxy pa;
57 | REQUIRE( pa.y() == 0 );
58 | REQUIRE( pa.f(1) == 0 );
59 | REQUIRE( util::make_const(pa).f(1) == 0 );
60 |
61 | REQUIRE( trait::is_proxy_v> );
62 | REQUIRE( !trait::is_proxy_v );
63 |
64 | dummy_proxy sb;
65 | dummy_proxy sd;
66 |
67 | ShadowingDerived{}.foo();
68 | sd.foo();
69 | sd.baz();
70 | }
71 |
72 | SECTION( "debug" ) {
73 | REQUIRE( runtime::debug_str(Bar{}).find("x = ") != std::string::npos );
74 | REQUIRE( runtime::debug_str(Bar{}).find("y = ") != std::string::npos );
75 | REQUIRE( runtime::debug_str(Bar{}).find("y = ") != std::string::npos );
76 | }
77 |
78 | SECTION( "invoke" ) {
79 | REQUIRE( runtime::invoke(Bar{}, "x", 1) == 1 );
80 | runtime::invoke(Bar{}, "f");
81 | }
82 |
83 | }
--------------------------------------------------------------------------------
/examples/example-inheritance.cpp:
--------------------------------------------------------------------------------
1 |
2 | /**
3 | * ***README***
4 | * This example showcases the new inheritance-related features introduced in v0.11.0.
5 | * Here we have a simple single-inheritance heirarchy (but multiple inheritance is also supported).
6 | * The base type Animal, defined a function in its metadata declaration. This metadata is then inherited
7 | * by the derived classes of the Animal class. The base class of a class is specified with a bases<> attribute.
8 | */
9 | #include
10 | #include "refl.hpp"
11 |
12 | class Animal
13 | {
14 | public:
15 | virtual std::string get_species() const = 0;
16 | };
17 |
18 | REFL_AUTO(
19 | type(Animal),
20 | func(get_species, property())
21 | )
22 |
23 | class Wolf : public Animal
24 | {
25 | public:
26 | std::string get_species() const override
27 | {
28 | return "Canis lupus";
29 | }
30 | };
31 |
32 | REFL_AUTO(type(Wolf, bases))
33 |
34 | class Dog : public Wolf
35 | {
36 | public:
37 | std::string get_species() const override
38 | {
39 | return "Canis lupus familiaris";
40 | }
41 | };
42 |
43 | REFL_AUTO(type(Dog, bases))
44 |
45 | template
46 | void print_bases()
47 | {
48 | constexpr auto type = refl::reflect();
49 | std::cout << type.name << " inherits from ";
50 |
51 | if constexpr (type.declared_bases.size)
52 | {
53 | for_each(reflect_types(type.declared_bases), [](auto t)
54 | {
55 | std::cout << t.name << " ";
56 | });
57 | std::cout << '\n';
58 | }
59 | else
60 | {
61 | std::cout << "nothing\n";
62 | }
63 | }
64 |
65 | int main()
66 | {
67 | print_bases();
68 | print_bases();
69 | print_bases();
70 |
71 | Dog d{};
72 | std::cout << "type Dog:\n";
73 | for_each(refl::reflect().members, [&](auto member) {
74 | std::cout << " " << get_display_name(member) << " (" << member.name << ") = ";
75 | refl::runtime::debug(std::cout, member(d));
76 | std::cout << "\n";
77 | });
78 | }
--------------------------------------------------------------------------------
/docs/search/functions_6.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['identity_306',['identity',['../namespacerefl_1_1util.html#aa9940e0488744c7466f3410f6acce07b',1,'refl::util']]],
4 | ['ignore_307',['ignore',['../namespacerefl_1_1util.html#a9ddab8c6121c2ff87a0694fe48e62914',1,'refl::util']]],
5 | ['invoke_308',['invoke',['../classrefl_1_1descriptor_1_1function__descriptor.html#a5f6c4091c03a8fb9d5f6459c686ea655',1,'refl::descriptor::function_descriptor::invoke()'],['../namespacerefl_1_1descriptor.html#ab17264f6fe5ef2e6f10a67304cb40e83',1,'refl::descriptor::invoke()'],['../namespacerefl_1_1runtime.html#a0831da0114fa506579224ce219d0ab50',1,'refl::runtime::invoke()']]],
6 | ['is_5fconst_309',['is_const',['../namespacerefl_1_1descriptor.html#a6127ab327b1e8f31062e9d0e2440a757',1,'refl::descriptor']]],
7 | ['is_5ffield_310',['is_field',['../namespacerefl_1_1descriptor.html#a1454a5c8702f245ceafaa9731026f7fe',1,'refl::descriptor']]],
8 | ['is_5ffunction_311',['is_function',['../namespacerefl_1_1descriptor.html#a76608e349f1f11d8e7eb5ccb759806a6',1,'refl::descriptor']]],
9 | ['is_5fproperty_312',['is_property',['../namespacerefl_1_1descriptor.html#a288a833843be97b2d80b51b1de886f99',1,'refl::descriptor']]],
10 | ['is_5freadable_313',['is_readable',['../namespacerefl_1_1descriptor.html#aa68bedab33d684ee5ee4ead24c5586ab',1,'refl::descriptor']]],
11 | ['is_5freflectable_314',['is_reflectable',['../namespacerefl.html#a12e0f11daf60216683e454102d247300',1,'refl::is_reflectable() noexcept'],['../namespacerefl.html#a988e607c536b5e75698d9f086909246c',1,'refl::is_reflectable(const T &) noexcept']]],
12 | ['is_5fresolved_315',['is_resolved',['../namespacerefl_1_1descriptor.html#a8d2afa6e939c641de9a9f184388341da',1,'refl::descriptor']]],
13 | ['is_5fstatic_316',['is_static',['../namespacerefl_1_1descriptor.html#a19a133a31fb133920609bba17fad68b2',1,'refl::descriptor']]],
14 | ['is_5ftype_317',['is_type',['../namespacerefl_1_1descriptor.html#abe2665e32dba32044036fa66303c12aa',1,'refl::descriptor']]],
15 | ['is_5fwritable_318',['is_writable',['../namespacerefl_1_1descriptor.html#a925e8cb99d6199fe03edeb5109958f8d',1,'refl::descriptor']]]
16 | ];
17 |
--------------------------------------------------------------------------------
/docs/search/all_0.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['accumulate_0',['accumulate',['../namespacerefl_1_1util.html#a75e4295de1bf1350238fe01eb71d9cc1',1,'refl::util']]],
4 | ['any_1',['any',['../structrefl_1_1attr_1_1usage_1_1any.html',1,'refl::attr::usage']]],
5 | ['append_2',['append',['../structrefl_1_1trait_1_1append.html',1,'refl::trait']]],
6 | ['append_5ft_3',['append_t',['../namespacerefl_1_1trait.html#a644910ba9f353221e50e2541a492e5cc',1,'refl::trait']]],
7 | ['apply_4',['apply',['../namespacerefl_1_1util.html#ab5d05c1c63f4794ce67cbdd71f322ae6',1,'refl::util']]],
8 | ['as_5ftuple_5',['as_tuple',['../namespacerefl_1_1util.html#a2eef47de6755754bb8666bf61b118014',1,'refl::util']]],
9 | ['as_5ftuple_3c_20t_3c_20ts_2e_2e_2e_20_3e_20_3e_6',['as_tuple< T< Ts... > >',['../structrefl_1_1trait_1_1as__tuple_3_01_t_3_01_ts_8_8_8_01_4_01_4.html',1,'refl::trait']]],
10 | ['as_5ftuple_5ft_7',['as_tuple_t',['../namespacerefl_1_1trait.html#a7528d00a7777f3ea5bae8b6bb2814b26',1,'refl::trait']]],
11 | ['as_5ftype_5flist_8',['as_type_list',['../namespacerefl_1_1util.html#a17fc91d7a4e148a502003f8ce4edeeef',1,'refl::util']]],
12 | ['as_5ftype_5flist_3c_20t_3c_20ts_2e_2e_2e_20_3e_20_3e_9',['as_type_list< T< Ts... > >',['../structrefl_1_1trait_1_1as__type__list_3_01_t_3_01_ts_8_8_8_01_4_01_4.html',1,'refl::trait']]],
13 | ['as_5ftype_5flist_5ft_10',['as_type_list_t',['../namespacerefl_1_1trait.html#ae2279db43338368acb8af9ade961a504',1,'refl::trait']]],
14 | ['attribute_5ftypes_11',['attribute_types',['../classrefl_1_1descriptor_1_1member__descriptor__base.html#ae8eb41df4e6d17f6e223f8ed5abe581d',1,'refl::descriptor::member_descriptor_base::attribute_types()'],['../classrefl_1_1descriptor_1_1type__descriptor.html#a0b45390046a31d03e076aa44899005a4',1,'refl::descriptor::type_descriptor::attribute_types()']]],
15 | ['attributes_12',['attributes',['../classrefl_1_1descriptor_1_1member__descriptor__base.html#a410121cb42388625a57cfb910d31cdb7',1,'refl::descriptor::member_descriptor_base::attributes()'],['../classrefl_1_1descriptor_1_1type__descriptor.html#ad71db44823dc75bcdd6bcd98449bab31',1,'refl::descriptor::type_descriptor::attributes()']]]
16 | ];
17 |
--------------------------------------------------------------------------------
/docs/search/classes_6.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['index_5fof_3c_20t_2c_20type_5flist_3c_20ts_2e_2e_2e_20_3e_20_3e_219',['index_of< T, type_list< Ts... > >',['../structrefl_1_1trait_1_1index__of_3_01_t_00_01type__list_3_01_ts_8_8_8_01_4_01_4.html',1,'refl::trait']]],
4 | ['index_5fof_5fbase_3c_20t_2c_20type_5flist_3c_20ts_2e_2e_2e_20_3e_20_3e_220',['index_of_base< T, type_list< Ts... > >',['../structrefl_1_1trait_1_1index__of__base_3_01_t_00_01type__list_3_01_ts_8_8_8_01_4_01_4.html',1,'refl::trait']]],
5 | ['index_5fof_5finstance_3c_20t_2c_20type_5flist_3c_20ts_2e_2e_2e_20_3e_20_3e_221',['index_of_instance< T, type_list< Ts... > >',['../structrefl_1_1trait_1_1index__of__instance_3_01_t_00_01type__list_3_01_ts_8_8_8_01_4_01_4.html',1,'refl::trait']]],
6 | ['is_5fcontainer_222',['is_container',['../structrefl_1_1trait_1_1is__container.html',1,'refl::trait']]],
7 | ['is_5fdescriptor_223',['is_descriptor',['../structrefl_1_1trait_1_1is__descriptor.html',1,'refl::trait']]],
8 | ['is_5ffield_224',['is_field',['../structrefl_1_1trait_1_1is__field.html',1,'refl::trait']]],
9 | ['is_5ffunction_225',['is_function',['../structrefl_1_1trait_1_1is__function.html',1,'refl::trait']]],
10 | ['is_5finstance_226',['is_instance',['../structrefl_1_1trait_1_1is__instance.html',1,'refl::trait']]],
11 | ['is_5finstance_5fof_227',['is_instance_of',['../structrefl_1_1trait_1_1is__instance__of.html',1,'refl::trait']]],
12 | ['is_5finstance_5fof_3c_20descriptor_3a_3atype_5fdescriptor_2c_20t_20_3e_228',['is_instance_of< descriptor::type_descriptor, T >',['../structrefl_1_1trait_1_1is__instance__of.html',1,'refl::trait']]],
13 | ['is_5fmember_229',['is_member',['../structrefl_1_1trait_1_1is__member.html',1,'refl::trait']]],
14 | ['is_5fproperty_230',['is_property',['../structrefl_1_1trait_1_1is__property.html',1,'refl::trait']]],
15 | ['is_5fproxy_231',['is_proxy',['../structrefl_1_1trait_1_1is__proxy.html',1,'refl::trait']]],
16 | ['is_5freflectable_232',['is_reflectable',['../structrefl_1_1trait_1_1is__reflectable.html',1,'refl::trait']]],
17 | ['is_5ftype_233',['is_type',['../structrefl_1_1trait_1_1is__type.html',1,'refl::trait']]]
18 | ];
19 |
--------------------------------------------------------------------------------
/test/020-ConstString.hpp:
--------------------------------------------------------------------------------
1 | #include
2 | #include "refl.hpp"
3 | #include "extern/catch2/catch.hpp"
4 |
5 | using namespace refl;
6 |
7 | TEST_CASE( "const string" ) {
8 |
9 | const_string<5> hello {"Hello"};
10 |
11 | SECTION( "basic properties" ) {
12 | REQUIRE( const_string<0>::npos == std::string::npos );
13 | REQUIRE( hello.size == 5 );
14 | REQUIRE( hello.c_str() == std::string("Hello") );
15 | REQUIRE( hello.str() == "Hello" );
16 | }
17 |
18 | SECTION( "comparison operators" ) {
19 | REQUIRE( hello == const_string<5>{"Hello"} );
20 | REQUIRE( hello != const_string<5>{"elloH"} );
21 | REQUIRE( hello != const_string<4>{"Hell"} );
22 | }
23 |
24 | SECTION( "creating const_strings from sized literals" ) {
25 | REQUIRE( make_const_string() == "" );
26 | REQUIRE( make_const_string("Hello") == hello );
27 | }
28 |
29 | constexpr const char* HELLO = "Hello";
30 |
31 | SECTION( "creating const_strings from char*" ) {
32 | constexpr auto str = REFL_MAKE_CONST_STRING(HELLO);
33 | REQUIRE( str.size == 5 );
34 | REQUIRE( str == "Hello" );
35 | REQUIRE( str != "Hell" );
36 | }
37 |
38 | SECTION( "creating substrings" ) {
39 | REQUIRE( make_const_string().template substr<0>() == "" );
40 | REQUIRE( make_const_string().template substr<0, 0>() == "" );
41 | REQUIRE( make_const_string().template substr<0, 50>() == "" );
42 | REQUIRE( make_const_string("Hello").template substr<1>() == "ello" );
43 | REQUIRE( make_const_string("Hello").template substr<1, 3>() == "ell" );
44 | }
45 |
46 | SECTION( "searching" ) {
47 | REQUIRE( make_const_string("Hello").find('e') == 1 );
48 | REQUIRE( make_const_string("Hello").find('l') == 2 );
49 | REQUIRE( make_const_string("Hello").find('w') == static_cast(-1) );
50 | REQUIRE( make_const_string("Hello").find('l', 3) == 3 );
51 |
52 | REQUIRE( make_const_string("Hello").rfind('e') == 1 );
53 | REQUIRE( make_const_string("Hello").rfind('l') == 3 );
54 | REQUIRE( make_const_string("Hello").rfind('w') == static_cast(-1) );
55 | REQUIRE( make_const_string("Hello").rfind('l', 3) == 3 );
56 | }
57 |
58 | }
--------------------------------------------------------------------------------
/docs/search/all_9.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['make_5fconst_120',['make_const',['../namespacerefl_1_1util.html#ab419efb086dd5940b0f032810610e2fa',1,'refl::util::make_const(const T &value) noexcept'],['../namespacerefl_1_1util.html#a5acb0bd0c244bac6c75250660d0f37bd',1,'refl::util::make_const(T &value) noexcept']]],
4 | ['make_5fconst_5fstring_121',['make_const_string',['../namespacerefl_1_1util.html#a4902f2250ab00bb4884b348893fb7641',1,'refl::util::make_const_string() noexcept'],['../namespacerefl_1_1util.html#ad79e9e7d64a8511211dc01f0b74e4e17',1,'refl::util::make_const_string(const char(&str)[N]) noexcept'],['../namespacerefl_1_1util.html#af82b6c46a048b294ba533f7552d59bbf',1,'refl::util::make_const_string(char ch) noexcept']]],
5 | ['map_3c_20mapper_2c_20type_5flist_3c_20ts_2e_2e_2e_20_3e_20_3e_122',['map< Mapper, type_list< Ts... > >',['../structrefl_1_1trait_1_1map_3_01_mapper_00_01type__list_3_01_ts_8_8_8_01_4_01_4.html',1,'refl::trait']]],
6 | ['map_5ft_123',['map_t',['../namespacerefl_1_1trait.html#a27b580a856a2aedc8487f28a4ded1c03',1,'refl::trait']]],
7 | ['map_5fto_5farray_124',['map_to_array',['../namespacerefl_1_1util.html#af69ca2ba2b0353b7d3433f6a77b62902',1,'refl::util']]],
8 | ['map_5fto_5ftuple_125',['map_to_tuple',['../namespacerefl_1_1util.html#adb5bb478ef1cc5966e9df7c9b10b5dd3',1,'refl::util']]],
9 | ['member_126',['member',['../structrefl_1_1attr_1_1usage_1_1member.html',1,'refl::attr::usage::member'],['../classrefl_1_1descriptor_1_1member__descriptor__base.html#a04376d3b487a104c34065345ce477e88',1,'refl::descriptor::member_descriptor_base::member()']]],
10 | ['member_5fdescriptor_5fbase_127',['member_descriptor_base',['../classrefl_1_1descriptor_1_1member__descriptor__base.html',1,'refl::descriptor']]],
11 | ['member_5flist_128',['member_list',['../namespacerefl_1_1descriptor.html#a50b88518840c2acd134a2171795bd7c3',1,'refl::descriptor']]],
12 | ['member_5ftype_129',['member_type',['../classrefl_1_1descriptor_1_1member__descriptor__base.html#a098cba21d2e91ee593b59573295b04d4',1,'refl::descriptor::member_descriptor_base']]],
13 | ['member_5ftypes_130',['member_types',['../classrefl_1_1descriptor_1_1type__descriptor.html#abced96d86e87fce0968b1a9c9c2df561',1,'refl::descriptor::type_descriptor']]],
14 | ['members_131',['members',['../classrefl_1_1descriptor_1_1type__descriptor.html#a48f1fddd822d40866a30bf1ebd60fa1a',1,'refl::descriptor::type_descriptor']]]
15 | ];
16 |
--------------------------------------------------------------------------------
/docs/search/all_b.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['operator_20const_20char_20_2a_134',['operator const char *',['../structrefl_1_1util_1_1const__string.html#a8f8b7b47319025b4007367b285849fbd',1,'refl::util::const_string']]],
4 | ['operator_21_3d_135',['operator!=',['../namespacerefl_1_1util.html#a44df4cd5b930d0ee80b2830097f213d7',1,'refl::util::operator!=(const const_string< N > &a, const const_string< M > &b) noexcept'],['../namespacerefl_1_1util.html#a28729c6245c3fec57d783ee3eb5dc6cd',1,'refl::util::operator!=(const const_string< N > &a, const char(&b)[M]) noexcept'],['../namespacerefl_1_1util.html#aad1d1867818badb7888668e7756c76be',1,'refl::util::operator!=(const char(&a)[N], const const_string< M > &b) noexcept']]],
5 | ['operator_28_29_136',['operator()',['../classrefl_1_1descriptor_1_1field__descriptor.html#af003db500839f3ca03b9408bcf76b009',1,'refl::descriptor::field_descriptor::operator()()'],['../classrefl_1_1descriptor_1_1function__descriptor.html#a2b9b03211b3a7c0f0fcd1c760579008e',1,'refl::descriptor::function_descriptor::operator()()']]],
6 | ['operator_2b_137',['operator+',['../namespacerefl_1_1util.html#aeb53039f8928d4e4a207407a865034f0',1,'refl::util::operator+(const const_string< N > &a, const const_string< M > &b) noexcept'],['../namespacerefl_1_1util.html#aa16ab2db12eb07f30ea39f2d94787486',1,'refl::util::operator+(const const_string< N > &a, const char(&b)[M]) noexcept'],['../namespacerefl_1_1util.html#a199ad5af9e6ac09eba8eaa6a159b8209',1,'refl::util::operator+(const char(&a)[N], const const_string< M > &b) noexcept']]],
7 | ['operator_3c_3c_138',['operator<<',['../namespacerefl_1_1util.html#a6f75b02aaddfc2beafcbf1fadedae865',1,'refl::util']]],
8 | ['operator_3d_3d_139',['operator==',['../namespacerefl_1_1util.html#ae0b3daa04427017785fc8f2c793837af',1,'refl::util::operator==(const const_string< N > &a, const const_string< M > &b) noexcept'],['../namespacerefl_1_1util.html#a7ca109d4c938be71f874a416712ddcc6',1,'refl::util::operator==(const const_string< N > &a, const char(&b)[M]) noexcept'],['../namespacerefl_1_1util.html#a1d84159539d36286560bb12d8bb96dc0',1,'refl::util::operator==(const char(&a)[N], const const_string< M > &b) noexcept']]],
9 | ['string_140',['string',['../structrefl_1_1util_1_1const__string.html#a824c47b1e7641a471b30a519d0a99f74',1,'refl::util::const_string']]]
10 | ];
11 |
--------------------------------------------------------------------------------
/docs/search/functions_8.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['operator_20const_20char_20_2a_323',['operator const char *',['../structrefl_1_1util_1_1const__string.html#a8f8b7b47319025b4007367b285849fbd',1,'refl::util::const_string']]],
4 | ['operator_21_3d_324',['operator!=',['../namespacerefl_1_1util.html#a44df4cd5b930d0ee80b2830097f213d7',1,'refl::util::operator!=(const const_string< N > &a, const const_string< M > &b) noexcept'],['../namespacerefl_1_1util.html#a28729c6245c3fec57d783ee3eb5dc6cd',1,'refl::util::operator!=(const const_string< N > &a, const char(&b)[M]) noexcept'],['../namespacerefl_1_1util.html#aad1d1867818badb7888668e7756c76be',1,'refl::util::operator!=(const char(&a)[N], const const_string< M > &b) noexcept']]],
5 | ['operator_28_29_325',['operator()',['../classrefl_1_1descriptor_1_1field__descriptor.html#af003db500839f3ca03b9408bcf76b009',1,'refl::descriptor::field_descriptor::operator()()'],['../classrefl_1_1descriptor_1_1function__descriptor.html#a2b9b03211b3a7c0f0fcd1c760579008e',1,'refl::descriptor::function_descriptor::operator()()']]],
6 | ['operator_2b_326',['operator+',['../namespacerefl_1_1util.html#aeb53039f8928d4e4a207407a865034f0',1,'refl::util::operator+(const const_string< N > &a, const const_string< M > &b) noexcept'],['../namespacerefl_1_1util.html#aa16ab2db12eb07f30ea39f2d94787486',1,'refl::util::operator+(const const_string< N > &a, const char(&b)[M]) noexcept'],['../namespacerefl_1_1util.html#a199ad5af9e6ac09eba8eaa6a159b8209',1,'refl::util::operator+(const char(&a)[N], const const_string< M > &b) noexcept']]],
7 | ['operator_3c_3c_327',['operator<<',['../namespacerefl_1_1util.html#a6f75b02aaddfc2beafcbf1fadedae865',1,'refl::util']]],
8 | ['operator_3d_3d_328',['operator==',['../namespacerefl_1_1util.html#ae0b3daa04427017785fc8f2c793837af',1,'refl::util::operator==(const const_string< N > &a, const const_string< M > &b) noexcept'],['../namespacerefl_1_1util.html#a7ca109d4c938be71f874a416712ddcc6',1,'refl::util::operator==(const const_string< N > &a, const char(&b)[M]) noexcept'],['../namespacerefl_1_1util.html#a1d84159539d36286560bb12d8bb96dc0',1,'refl::util::operator==(const char(&a)[N], const const_string< M > &b) noexcept']]],
9 | ['string_329',['string',['../structrefl_1_1util_1_1const__string.html#a824c47b1e7641a471b30a519d0a99f74',1,'refl::util::const_string']]]
10 | ];
11 |
--------------------------------------------------------------------------------
/docs/search/all_3.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['data_34',['data',['../structrefl_1_1util_1_1const__string.html#a8ee1a2f4b8fd6d71b7556661f379426a',1,'refl::util::const_string']]],
4 | ['debug_35',['debug',['../structrefl_1_1attr_1_1debug.html',1,'refl::attr::debug< F >'],['../structrefl_1_1attr_1_1debug.html#a728cae0e89dc7148a607ffa66b12bbb3',1,'refl::attr::debug::debug()'],['../namespacerefl_1_1runtime.html#a06e1996b05966eac4f282b6656169d6a',1,'refl::runtime::debug(std::basic_ostream< CharT > &os, const T &value, bool compact=false)'],['../namespacerefl_1_1runtime.html#ad3ba25f8e5e09bd30234c28839ec6d7c',1,'refl::runtime::debug(std::basic_ostream< CharT > &os, const T &value, [[maybe_unused]] bool compact)']]],
5 | ['debug_5fall_36',['debug_all',['../namespacerefl_1_1runtime.html#ab63a0044074e3c5a78f8e8a2662783aa',1,'refl::runtime']]],
6 | ['debug_5fall_5fstr_37',['debug_all_str',['../namespacerefl_1_1runtime.html#a57bcab18d57d392f64fea2a46717d47b',1,'refl::runtime']]],
7 | ['debug_5fstr_38',['debug_str',['../namespacerefl_1_1runtime.html#add62a33c7bf6980c9e6d6e5a8977540e',1,'refl::runtime']]],
8 | ['declarator_39',['declarator',['../classrefl_1_1descriptor_1_1member__descriptor__base.html#a80719a0106e9f454c29c8363c0e694e4',1,'refl::descriptor::member_descriptor_base']]],
9 | ['declared_5fbase_5ftypes_40',['declared_base_types',['../classrefl_1_1descriptor_1_1type__descriptor.html#ac15c7097cb5c702c83802465cd364c3c',1,'refl::descriptor::type_descriptor']]],
10 | ['declared_5fbases_41',['declared_bases',['../classrefl_1_1descriptor_1_1type__descriptor.html#a47c4ff48babd4b3c949a9f20fd4cfca2',1,'refl::descriptor::type_descriptor']]],
11 | ['declared_5fmember_5flist_42',['declared_member_list',['../namespacerefl_1_1descriptor.html#a8c50bc8b2fa157709ed2453246d0f9a0',1,'refl::descriptor']]],
12 | ['declared_5fmember_5ftypes_43',['declared_member_types',['../classrefl_1_1descriptor_1_1type__descriptor.html#a0974752f92b74a055bc9d8335d493fdf',1,'refl::descriptor::type_descriptor']]],
13 | ['declared_5fmembers_44',['declared_members',['../classrefl_1_1descriptor_1_1type__descriptor.html#a49d984bc4bcb37717d3dc95a1815a4ba',1,'refl::descriptor::type_descriptor']]],
14 | ['declaring_5ftype_45',['declaring_type',['../classrefl_1_1descriptor_1_1member__descriptor__base.html#af70beb1e0da54d076535cd8fb3dd5381',1,'refl::descriptor::member_descriptor_base']]],
15 | ['deprecated_20list_46',['Deprecated List',['../deprecated.html',1,'']]]
16 | ];
17 |
--------------------------------------------------------------------------------
/test/090-StdTypes.hpp:
--------------------------------------------------------------------------------
1 | #include "refl.hpp"
2 | #include "extern/catch2/catch.hpp"
3 |
4 | #include
5 | #include
6 | #include
7 | #include
8 | #include
9 |
10 | using namespace refl;
11 |
12 | TEST_CASE( "built-in support for standard types" ) {
13 |
14 | SECTION( "std::exception" ) {
15 | REQUIRE(is_reflectable());
16 | constexpr auto members = reflect().members;
17 | REQUIRE(members.size >= 1); // what
18 | }
19 |
20 | SECTION( "std::string" ) {
21 | REQUIRE(is_reflectable());
22 | REQUIRE(is_reflectable());
23 | constexpr auto members = reflect().members;
24 | REQUIRE(members.size >= 2); // size + data
25 | REQUIRE(runtime::debug_str(std::string("xyz")) == "\"xyz\"");
26 | }
27 |
28 | SECTION( "std::wstring" ) {
29 | REQUIRE(runtime::debug_str(std::wstring(L"xyz")) == L"\"xyz\"");
30 | }
31 |
32 | SECTION( "std::string_view" ) {
33 | REQUIRE(is_reflectable());
34 | REQUIRE(is_reflectable());
35 | constexpr auto members = reflect().members;
36 | REQUIRE(members.size >= 2); // size + data
37 | REQUIRE(runtime::debug_str(std::string_view("xyz")) == "\"xyz\"");
38 | }
39 |
40 | SECTION( "std::wstring_view" ) {
41 | REQUIRE(runtime::debug_str(std::wstring_view(L"xyz")) == L"\"xyz\"");
42 | }
43 |
44 | SECTION( "std::tuple" ) {
45 | REQUIRE(is_reflectable>());
46 | REQUIRE(runtime::debug_str(std::tuple<>()) == "()");
47 | REQUIRE(runtime::debug_str(std::tuple(5)) == "(5)");
48 | REQUIRE(runtime::debug_str(std::tuple(5, "xyz")) == "(5, \"xyz\")");
49 | }
50 |
51 | SECTION( "std::pair" ) {
52 | REQUIRE(is_reflectable>());
53 | REQUIRE(runtime::debug_str(std::pair(5, "xyz")) == "(5, \"xyz\")");
54 | }
55 |
56 | SECTION( "std::unique_ptr" ) {
57 | REQUIRE(is_reflectable>());
58 | }
59 |
60 | SECTION( "std::shared_ptr" ) {
61 | REQUIRE(is_reflectable>());
62 | }
63 |
64 | SECTION( "std::complex" ) {
65 | REQUIRE(is_reflectable>());
66 | REQUIRE(runtime::debug_str(std::complex(5.0, 1.0)) == "5+1i");
67 | }
68 |
69 | }
--------------------------------------------------------------------------------
/docs/search/all_f.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['tail_181',['tail',['../namespacerefl_1_1trait.html#a38acd7e400afcfd16d25d5c6ae09e65a',1,'refl::trait']]],
4 | ['tail_5ft_182',['tail_t',['../namespacerefl_1_1trait.html#a96df3c32bb1b2672b5909aa9cca42cf9',1,'refl::trait']]],
5 | ['take_183',['take',['../namespacerefl_1_1trait.html#ab9ae2dbbb031faf63f04ffd59f476140',1,'refl::trait']]],
6 | ['take_5ft_184',['take_t',['../namespacerefl_1_1trait.html#a08a7c33d3ef1f336360a68af8f14bc44',1,'refl::trait']]],
7 | ['target_5ftype_185',['target_type',['../structrefl_1_1runtime_1_1proxy.html#a81d8bc1490cfcbfc4ac3cbbcbb299393',1,'refl::runtime::proxy']]],
8 | ['to_5farray_186',['to_array',['../namespacerefl_1_1util.html#a6ebcdc8886ed6cf62bd914eb9566882a',1,'refl::util']]],
9 | ['to_5ftuple_187',['to_tuple',['../namespacerefl_1_1util.html#af7db9918de2fd9e0d34caf4b6a5c1f77',1,'refl::util']]],
10 | ['type_188',['type',['../structrefl_1_1attr_1_1usage_1_1type.html',1,'refl::attr::usage::type'],['../structrefl_1_1util_1_1type__list_3_01_t_01_4.html#a5b8f143671b0f6ce8c7675b5b905817c',1,'refl::util::type_list< T >::type()'],['../structrefl_1_1trait_1_1remove__qualifiers.html#a39800dbc8004ea52c246cdda69f4d409',1,'refl::trait::remove_qualifiers::type()'],['../structrefl_1_1trait_1_1as__type__list_3_01_t_3_01_ts_8_8_8_01_4_01_4.html#a83bf2f383c12d5294c40d3f91400f118',1,'refl::trait::as_type_list< T< Ts... > >::type()'],['../structrefl_1_1trait_1_1as__tuple_3_01_t_3_01_ts_8_8_8_01_4_01_4.html#a3e95f7ce1f7fc859ecf26fc145926995',1,'refl::trait::as_tuple< T< Ts... > >::type()'],['../structrefl_1_1trait_1_1filter_3_01_predicate_00_01type__list_3_01_ts_8_8_8_01_4_01_4.html#adb3370c903a75a6e3cc0d41fdc3c70bc',1,'refl::trait::filter< Predicate, type_list< Ts... > >::type()'],['../structrefl_1_1trait_1_1map_3_01_mapper_00_01type__list_3_01_ts_8_8_8_01_4_01_4.html#aadf599e0604372e946f11d1b00f657d1',1,'refl::trait::map< Mapper, type_list< Ts... > >::type()'],['../classrefl_1_1descriptor_1_1type__descriptor.html#a38599f7e777bda08453cdc4387c03708',1,'refl::descriptor::type_descriptor::type()']]],
11 | ['type_5fdescriptor_189',['type_descriptor',['../classrefl_1_1descriptor_1_1type__descriptor.html',1,'refl::descriptor']]],
12 | ['type_5flist_190',['type_list',['../structrefl_1_1util_1_1type__list.html',1,'refl::util']]],
13 | ['type_5flist_3c_20t_20_3e_191',['type_list< T >',['../structrefl_1_1util_1_1type__list_3_01_t_01_4.html',1,'refl::util']]],
14 | ['type_5ftag_192',['type_tag',['../namespacerefl_1_1util.html#ae902b69e9d164cdf4b6ba5c76eed1825',1,'refl::util']]]
15 | ];
16 |
--------------------------------------------------------------------------------
/.circleci/config.yml:
--------------------------------------------------------------------------------
1 | version: 2.1
2 |
3 | executors:
4 | gcc8:
5 | docker:
6 | - image: ubuntu:18.04
7 | environment:
8 | CXX_PACKAGE: g++-8
9 | CXX: /usr/bin/g++-8
10 | CC: /usr/bin/gcc-8
11 | gcc7:
12 | docker:
13 | - image: ubuntu:18.04
14 | environment:
15 | CXX_PACKAGE: g++-7
16 | CXX: /usr/bin/g++-7
17 | CC: /usr/bin/gcc-7
18 | clang10:
19 | docker:
20 | - image: ubuntu:18.04
21 | environment:
22 | CXX_PACKAGE: clang-10
23 | CXX: clang++-10
24 | CC: clang-10
25 | CONFIG_FLAGS: -D CMAKE_CXX_EXTENSIONS=OFF
26 | clang5:
27 | docker:
28 | - image: ubuntu:18.04
29 | environment:
30 | CXX_PACKAGE: clang-5.0
31 | CXX: clang++-5.0
32 | CC: clang-5.0
33 | CONFIG_FLAGS: -D CMAKE_CXX_EXTENSIONS=OFF
34 |
35 | commands:
36 | install_core_packages:
37 | steps:
38 | - run: apt-get update -qq
39 | - run: apt-get install -y --no-install-recommends git lsb-release
40 | apt-transport-https ca-certificates gnupg software-properties-common
41 | wget
42 | add_cmake_apt_repo:
43 | steps:
44 | - run: wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc
45 | 2>/dev/null | gpg --dearmor - > /etc/apt/trusted.gpg.d/kitware.gpg
46 | - run: apt-add-repository
47 | "deb https://apt.kitware.com/ubuntu/ $(lsb_release -sc) main"
48 | install_build_packages:
49 | steps:
50 | - run: apt-get install -y --no-install-recommends $CXX_PACKAGE cmake
51 | ninja-build
52 |
53 | configure:
54 | parameters:
55 | build_type: { type: string }
56 | steps:
57 | - run: cmake -S . -B build -G Ninja $CONFIG_FLAGS
58 | -D CMAKE_BUILD_TYPE=<>
59 | build:
60 | steps:
61 | - run: cmake --build build
62 | test:
63 | steps:
64 | - run:
65 | command: ctest --output-on-failure
66 | working_directory: build
67 |
68 | jobs:
69 | build_latest_cpp17:
70 | parameters:
71 | docker: { type: string }
72 | build_type: { type: string }
73 | executor: <>
74 | steps:
75 | - install_core_packages
76 | - add_cmake_apt_repo
77 | - install_build_packages
78 | - checkout
79 | - configure: { build_type: <> }
80 | - build
81 | - test
82 |
83 | workflows:
84 | build_and_test:
85 | jobs:
86 | - build_latest_cpp17:
87 | matrix:
88 | parameters:
89 | docker: [gcc7, gcc8, clang5, clang10]
90 | build_type: [Release]
91 |
--------------------------------------------------------------------------------